\baselinestretch
查看乳胶变量(如和)的值的程序是什么\parskip
。
宏,例如\baselinestretch): \show\baselinestretch
和针对某个维度的宏,\parskip): \showthe\parskip
已经有人向我建议过。
上述命令是否会显示在 Latex 文档中?
答案1
\baselinestretch
查看乳胶变量(如和)的值的程序是什么\parskip
。宏,例如
\baselinestretch): \show\baselinestretch
和针对某个维度的宏,\parskip): \showthe\parskip
已经有人向我建议过。上述命令是否会显示在 Latex 文档中?
这取决于变量的类型以及您希望在何处查看变量的值:
命令将出现在 .tex-input-file/包含文档的 .tex 源的文件中。
正如\show
所提到的,虽然\show
实际上并不是指“变量”的值,但是指标记的含义,我们需要指出的是,标记的含义与“变量”的值并不相同。
期限代币的含义指的是有关所讨论标记的类型的信息,以及取决于标记类型的其他信息。
即,所讨论的标记是否表示宏、寄存器、基元、字符或...。
如果标记是宏,您还可以获得有关谓词(如\long
、\outer
)\protected
以及参数文本和替换文本的信息。
该命令使 TeX 将有关所讨论的标记的含义的信息写入控制台和 .log 文件。\show⟨token⟩
该命令使 TeX 将类别 12(其他)的字符标记(除类别 10(空格)的空格外)附加到标记流中,以便这些字符标记的序列表示有关所讨论标记的含义的信息。进一步处理这些字符标记可能会导致将有关所讨论标记的含义的信息排版到 TeX 即将生成的输出文件/.pdf 文件中。\meaning⟨token⟩
“变量”一词由 LaTeX3/expl3 的开发人员正式引入 TeX 术语。
在 LaTeX3/expl3 之外,TeX/LaTeX 中的“变量”概念相当模糊。
在 LaTeX3/expl3 之外,“变量值”可能表示,例如,
- 存储在寄存器中的值,
- TeX 参数的值,
- 如果无参数宏充当“变量”,则为该宏的替换文本,因此将其定义为构成其替换文本的标记可以被视为变量的值,
- 通过 定义的 LaTeX 计数器的值
\newcounter
。
如果“变量”是关于寄存器或者 TeX 参数或类似的东西:
该命令使 TeX 将有关所表示的寄存器/TeX 参数值的含义的信息写入控制台和 .log 文件。\showthe⟨token⟩
⟨token⟩
该命令使 TeX 将类别 12(其他)的字符标记(除类别 10(空格)的空格外)附加到标记流中,以便这些字符标记的序列表示有关 表示的寄存器/TeX 参数的值的信息。进一步处理这些字符标记可能会导致将有关相关寄存器/TeX 参数的值的排版信息添加到 TeX 即将生成的输出文件/.pdf 文件中。\the⟨token⟩
⟨token⟩
如果“变量”是关于一个无参数的宏,其展开被视为变量的值:
该命令使 TeX 将宏表示的“变量”的“值”写入 控制台和 .log 文件。\message{⟨token⟩}
⟨token⟩
本身⟨token⟩
,即命令⟨token⟩
,使 TeX 将构成 所表示的宏/变量的替换文本的标记附加到标记流中⟨token⟩
。
由于该替换文本被视为宏标记 所表示的“变量”的值⟨token⟩
,因此对构成该替换文本的标记的进一步处理可能会导致将有关所讨论的“变量”的值的排版信息输入到 TeX 即将生成的输出文件/.pdf 文件中。
为了防止进一步扩展构成替换文本的标记⟨代币⟩,你可以做类似的事情。
\detokenize\expandafter{⟨token⟩}
如果“变量”是关于通过以下方式定义的 LaTeX 计数器\newcounter
,则例如可用于获取表示该计数器的值的一组类别 12(其他)的字符标记。\number\value{⟨counter⟩}
\the\numexpr\value{⟨counter⟩}\relax
为了写入控制台和 .log 文件,您可以将其包装在\message{
和之间}
。
答案2
这取决于您想要显示什么类型的“变量”的值。
这是一个相当通用的方法;然而,原始参数应该逐案处理,因此我仅提供一种在大多数情况下都有效的方法。
\documentclass{article}
\ExplSyntaxOn
\NewDocumentCommand{\showvariable}{sm}
{
\IfBooleanTF { #1 }
{
\exp_args:Nc \agava_showvar:N { #2 }
}
{
\agava_showvar:N #2
}
}
\cs_new:Nn \agava_showvar:N
{
\texttt{\token_to_str:N #1\unskip} ~
\bool_case:n
{
{ \token_if_macro_p:N #1 } { #1 ~ (macro) }
{ \token_if_chardef_p:N #1 } { \int_eval:n { #1 } ~ (chardef) }
{ \token_if_mathchardef_p:N #1 } { \int_eval:n { #1 } ~ (mathchardef) }
{ \token_if_dim_register_p:N #1 } { \dim_eval:n { #1 } ~ (dimension) }
{ \token_if_skip_register_p:N #1 } { \skip_eval:n { #1 } ~ (skip) }
{ \token_if_primitive_p:N #1 } { \the#1 ~ (primitive) }
}
}
\ExplSyntaxOff
\begin{document}
\showvariable{\baselinestretch}
\showvariable{\baselineskip}
\showvariable{\normalbaselineskip}
\showvariable{\textwidth}
\showvariable{\parindent}
\showvariable*{@M}
\linespread{1.2}\selectfont
\showvariable{\baselinestretch}
\end{document}
第一种情况没有输出,因为的默认初始值\baselinestretch
是空。