软件包争夺长度值

软件包争夺长度值

我最近编写了一些宏,用于排版语言学中使用的某些结构(话语表示结构)。我遇到了一个问题,即 svmono 类正在更改 \arraycolsep 的值,从而搞乱了排版。(参见svmono 数组填充。)我采用的解决方案是将其放在\setlength{\arraycolsep}{5pt}包含宏的文件的开头。但是……svmono 可能出于某种原因要更改\arraycolsep,所以我会干扰它。(根据一些阅读,我假设宏\arraycolsep在评估时使用的值,而不是在定义时使用的值。)

从某种意义上说,这是一个非常不令人满意的情况——我的包和 svmono 正在争夺\arraycolsep,无论哪个包输了都会有问题。有没有办法让我可以说,“我想将 的以下值用于\arraycolsep此包中定义的宏,而不影响其他包”?

答案1

据推测,springer 类减少了表格填充,因为它设计用于与典型的 a4/letter 草稿尺寸相比宽度较窄的期刊页面(至少这是通常的原因)

任何基于表格的环境都将使用当前值,\tabcolsep如果您希望自己的环境具有不同的参数,最简单的方法是

\newlength\mytabcolsep
\setlength\mytabcolsep{5in}

\newenvironment{myenvironment}
{\tabcolsep\mytabcolsep.....\begin{tabular}....}
{\end{tabular}.....}

这样, 的有效值\tabcolsep只会在您定义的环境中更改。(如果有任何嵌套tabular环境,它们也会获取新值,如果这是问题,您的环境可以\tabcolsep\mytabcolsep在处理用户提供的环境主体之前使用并恢复原始值。

相关内容