在 TeX Live 2012 中使用 xparse 更改 \baselinestretch

在 TeX Live 2012 中使用 xparse 更改 \baselinestretch

有没有一种首选的方法来更改\baselinestretch使用 TeX Live 2012 中包含的 xparse 包?(我相信这是 xparse 版本 3570,日期为 2012/04/23。)

如果我latex -output-format pdf document.tex在 Mac OS X 10.7.4 上运行并根据该文档创建 PDF——

\documentclass{minimal}
\usepackage{xparse}
\RenewDocumentCommand \baselinestretch {} {1}
\begin{document}
hello, world
\end{document}

—pdfTeX 永远不会退出。中断 pdfTeX 会产生此输出,这在很大程度上让我无法理解—

! Interruption.
\size@update ...relax \baselineskip \f@linespread 
                                                  \baselineskip \normalbasel...
l.4 \begin{document}

如果我替换\RenewDocumentCommand \baselinestretch {} {1}\renewcommand{\baselinestretch}{1}以获得-

\documentclass{minimal}
\usepackage{xparse}
\renewcommand{\baselinestretch}{1}
\begin{document}
hello, world
\end{document}

—然后 pdfTeX 完成并生成 PDF。此外,\RenewDocumentCommand在 xparse 版本 2219 (2011/04/08) 中使用似乎表现符合预期。

(我理解\baselinestretch默认值为 1;为了简单起见,我在示例中使用 1。)

答案1

LaTeX2e 将宏\baselinestretch用作变量,而不是“命令”。它用于需要 TeX 扩展的地方。函数xparse\RenewDocumentCommand等等)出于好的理由产生不可扩展的命令,但这不适用于变量。目前,没有用于设置这些变量的原生 LaTeX3 接口(事实上,目前还不清楚应该如何以系统的方式处理这些变量)。因此,您应该在 LaTeX2e 中使用\newcommand它来设置和类似的变量。\baselinestrech

相关内容