texlive 使用已安装的字体,不完整的 ifx

texlive 使用已安装的字体,不完整的 ifx

我在使用 LaTeX 中的字体时遇到问题。我通过脚本安装了字体installfont-tl,但无法使用它来创建文档。当我添加时,\usepackage{$fontname}我收到一个我无法真正解释的错误:

! LaTeX Error: Missing begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.9 n
 \expandafter\ifx\csname Sfpr@scale\endcsname\relaxn  \let\Sfpr@@scale\@...

You're in trouble here.  Try typing  <return>  to proceed.
If that doesn't work, type  X <return>  to quit.

)
! Incomplete ifx; all text was ignored after line 9.
<inserted text> 
            fi 
l.4 \begin{document}

The file ended while I was skipping conditional text.
This kind of error happens when you say `\if...' and forget
the matching `\fi'. I've inserted a `\fi'; this might work.

我尝试寻找解决方案,但却找不到。

(字体样式文件fingerpaint.sty)如下所示:

\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{fingerpaint}[2010/03/05 v1.0 FingerPaint-Regular]%
\RequirePackage{textcomp}%
\RequirePackage{xkeyval}%
\define@key{fingerpaint.sty}{scaled}[1.0]%
{%
  \def\Sfpr@scale{#1}%
}%
\define@key{fingerpaint.sty}{leading}[1.0]%
{%
  \linespread{#1}%
}%
\ExecuteOptionsX{scaled}%
\ProcessOptionsX\relax%
\renewcommand*{\rmdefault}{fpr}%
\newcommand\FFfpr{\fontfamily{fpr}\fontseries{m}\fontshape{n}\selectfont}%
\endinput%

希望有人能帮助我解决这个问题。

我这边的一些意见:我正在通过编辑脚本中的默认值来使用脚本,因为调用脚本时某些参数似乎被忽略了。因此,如果您无法使其工作,您可以直接编辑脚本文件本身中的默认值。这样就可以了。此外,如果您在转换文件时遇到问题,.ttf只需使用脚本自行处理即可ttf2pt1

ttf2pt1 -a -b -l adobestd $filename

答案1

.fd 文件中的 \relax 后面似乎多了一个字母“n”(ot1fpr.fd、t1fpr.fd,名称取决于使用的字体编码)。这可能是脚本中的错误installtl-font。版本 v1.6b(2012/01/25)似乎是正确的:

((STEP++))
echo -e "\n\n$STEP) Insert scale factor into the fd files"
cat >installfont.sed <<EOF
9 i\\
\\n\\\\expandafter\\\\ifx\\\\csname ${FONTSCALEPREFIX}@scale\\\\endcsname\\\\relax\\n  \\\\let\\\\${FONTSCALEPREFIX}@@scale\\\\@empty\\n\\\\else\\n  \\\\edef\\\\${FONTSCALEPREFIX}@@scale{s*[\\\\csname ${FONTSCALEPREFIX}@scale\\\\endcsname]}\\n\\\\fi\\n
s/<-> /<-> \\\\${FONTSCALEPREFIX}@@scale /
EOF

它包含“ \\\\endcsname\\\\relax\\n \\\\let”,也许您的版本只有一个反弹“ \\\\relax\n”。

相关内容