\hspace 调用什么内部命令?

\hspace 调用什么内部命令?

我知道(通过\hspace 与 \hspace*)该命令\hspace*调用内部命令

\vrule width 0pt \nobreak \hskip 1cm \hskip 0pt plus 0pt minus 0pt

但使用了哪些命令\hspace?有没有办法查看 的实现\hspace

答案1

您可以使用\show\meaning查看单个命令,但我通常latex.ltx在我的 emacs(编辑器)缓冲区中,您可以使用 kpsewhich 找到您的副本(或者只需在任何 latex 文件的日志中查找文件路径等article.cls

在我的系统上

$ kpsewhich latex.ltx
/usr/local/texlive/2014/texmf-dist/tex/latex/base/latex.ltx

在第 1308 行你会看到

\DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace}
\def\@hspace#1{\hskip #1\relax}
\def\@hspacer#1{\vrule \@width\z@\nobreak
                \hskip #1\hskip \z@skip}

在文件中搜索将显示\hspace除了这些行之外没有出现的内容,因此格式中没有定义命令\hspace在其定义中使用。

您还可以通过以下方式查看排版后的 PDF 版本:

texdoc source2e

答案2

\makeatletter
\show\hspace
  % \hspace=macro: ->\protect \hspace  .
\expandafter\show\csname hspace \endcsname
  % \hspace =\long macro: ->\@ifstar \@hspacer \@hspace .
\show\@hspace
  % > \@hspace=macro: #1->\hskip #1\relax .

所以它\hskip被调用了。\expandafter\show\csname诀窍之前已经解释过了

相关内容