在一本书中,我对单个表进行了如下定义:
\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
,例如clm2dj
或AnnSton
。您不能为其提供一个本身就是字体切换宏的参数。
因此只需使用
\sffamily
和
\rmfamily
独自的。
如果您需要进一步的帮助,请发布我们可以编译以重现问题的最小文档代码。