[OS X TeX] Microtype Fix (from: Microtype mystery)

Ross Moore ross.moore at mq.edu.au
Mon Aug 30 19:24:31 EDT 2010

Hi Martin,

On 31/08/2010, at 8:00 AM, Martin Costabel wrote:

> Ross Moore wrote:
> []
>> Morten's suggestion of rebinding via
>>   \let\ifMT at inlist@\iftrue
>> does not fix the error that you are reporting.
> The reason is that if xetex is true, then the \makeatother in the \else clause is not executed,

Both Morten and I missed that aspect...

> and the scanning for \if-\fi clauses does not see the macro \ifMT at inlist@, but only \ifMT, which it does not know. Thus Morton's suggestion works if it is replaced by
> \let\ifMT\iftrue

   ...but it makes for a pretty ugly solution...
> This is, of course, not a good solution (incomprehensible, and it might interfere with other legitimate definitions.)

  ...for all these reasons.

> A simpler solution for the whole problem would be to not use "\fi" at all in Robert's fix, but "\csname fi\endcsname". Thus the lines would look like
> \makeatletter
> \def\MT at register@subst at font{\MT at exp@one at n\MT at in@clist\font at name\MT at font@list
> \ifMT at inlist@\else\xdef\MT at font@list{\MT at font@list\font at name,}\csname fi\endcsname}
> \makeatother
> This works inside the \ifxetex clause without further changes.
> The real solution is, of course, to put these lines, without the \makeatletter/other, into the microtype.sty.

Which is happening, so I believe.
For those who need a really quick fix, I'd just put
the original supplied fix within the preamble, or inside your 
own macro file, but *outside* of any conditionals.

> -- 
> Martin



Ross Moore                                       ross.moore at mq.edu.au 
Mathematics Department                           office: E7A-419      
Macquarie University                             tel: +61 (0)2 9850 8955
Sydney, Australia  2109                          fax: +61 (0)2 9850 8114

More information about the MacOSX-TeX mailing list