在环境中更改字体系列会导致 pdflatex 挂起

在环境中更改字体系列会导致 pdflatex 挂起

在一本书中,我对单个表进行了如下定义:

\newenvironment{tbl}[3]%
{%
  %\fontfamily{\sffamily}\selectfont
  % Caption
  \if\relax\detokenize{#2}\relax
    \newcommand{\tblcaption}{}
  \else
    \newcommand{\tblcaption}{\caption{#2}}
  \fi
  % Label
  \if\relax\detokenize{#3}\relax
    \newcommand{\tbllabel}{}
  \else
    \newcommand{\tbllabel}{\label{#3}}
  \fi
  \footnotesize
  \rowcolors{2}{white}{dark-green!5}
  \begin{longtable}[c]{#1}
}{%
    \hiderowcolors%
    \tblcaption%
    \tbllabel%
  \end{longtable}
  \normalsize
  %\fontfamily{\rmfamily}\selectfont
}

当我取消注释这两个\fontfamily语句时,pdflatex.exe它将永远运行。这与我使用的 TeX 编辑器和 TeX 发行版(TeX Live 和 MiKTeX)无关。

我猜测environment定义中的某些内容必定会导致该问题,但我无法弄清楚那可能是什么。

答案1

\rmfamily\sffamily\ttfamily独立的字体开关。您不需要\fontfamily\selectfont使用这些,并且它们不适合作为 的参数\selectfont

\fontfamily需要字体系列的名称phv,例如clm2djAnnSton。您不能为其提供一个本身就是字体切换宏的参数。

因此只需使用

\sffamily

\rmfamily

独自的。

如果您需要进一步的帮助,请发布我们可以编译以重现问题的最小文档代码。

相关内容