在 {\small\begin{tabbing}...\end{tabbing}}% 后缩进

在 {\small\begin{tabbing}...\end{tabbing}}% 后缩进

考虑输入

\documentclass{article}
\begin{document}
\begin{tabbing}
A
\end{tabbing}%
B
{\small\begin{tabbing}
A
\end{tabbing}}%
B
\end{document}

编译后pdflatex,生成

输出移位后的 B

tabbing我想知道和的组合有什么不好,small它会插入缩进,而单独的制表符环境不会这样做?顺便说一句,同样的情况也适用于\smaller\textsmallerrelsize。(我主要对 \smaller 感兴趣,但事实证明,问题已经存在于 \small 中。)当然,\noindent每次需要时都可以使用它,但是否有可能集中地、一劳永逸地完成以下段落{\small\begin{tabbing}...\end{tabbing}}%

答案1

周围的群组tabbing是罪魁祸首。另一方面,不使用群组的建议也不起作用:

\documentclass{article}
\usepackage[nopar]{lipsum}

\begin{document}
\lipsum[3]
\begin{tabbing}
A\\
B\\
C
\end{tabbing}
\lipsum[3]
\small\begin{tabbing}
A\\
B\\
C
\end{tabbing}
\normalsize
\lipsum[3]
\end{document}

在此处输入图片描述

如您所见,前面段落中的行距tabbing是错误的,因为它使用了 的行距\small。使用\par\small并不是解决办法,因为如果trivlist以垂直模式启动,它与在段落模式下调用时的操作不同。

我们可以定义一个在适当位置发出的特定环境\small,而不需要明确恢复字体大小。在此版本中,在和 内部已经开始\small时发出,因此其效果将在(匹配 之后)消失。smalltabbing\trivlist\end{smalltabbing}\endtrivlist

\documentclass{article}
\usepackage{etoolbox}

\usepackage[nopar]{lipsum} % just for the example

% let's get a copy of \tabbing
\let\smalltabbing\tabbing
\let\endsmalltabbing\endtabbing
% patch \smalltabbing to issue \small at the proper time
\patchcmd{\smalltabbing}{\trivlist}{\trivlist\small}{}{}

\begin{document}
\lipsum[3]
\begin{tabbing}
A\\
B\\
C
\end{tabbing}
\lipsum[3]
\begin{smalltabbing}
A\\
B\\
C
\end{smalltabbing}
\lipsum[3]
\end{document}

在此处输入图片描述

您可以在进一步的版本中指定字体大小作为可选参数(默认\small):

\documentclass{article}
\usepackage{etoolbox}

\usepackage[nopar]{lipsum} % just for the example

\makeatletter
% let's get a copy of \tabbing
\let\x@tabbing\tabbing
\let\endxtabbing\endtabbing
% patch \x@tabbing to issue the font size command at the proper time
\patchcmd{\x@tabbing}{\trivlist}{\trivlist\x@tabbing@size}{}{}
% define `\xtabbing` with an optional argument
\newcommand{\xtabbing}[1][\small]{%
  \let\x@tabbing@size#1\relax
  \x@tabbing
}
\makeatother

\begin{document}
\lipsum[3]
\begin{xtabbing}
A\\
B\\
C
\end{xtabbing}
\lipsum[3]
\begin{xtabbing}[\footnotesize]
A\\
B\\
C
\end{xtabbing}
\lipsum[3]
\end{document}

如果你这样做

\newcommand{\xtabbing}[1][]{%
  \let\x@tabbing@size#1\relax
  \x@tabbing
}

单独调用\begin{xtabbing}就会选择当前字体大小,因此xtabbing与 相同tabbing

答案2

\small这与你看到的相同内容无关

\documentclass{article}
\begin{document}
\begin{tabbing}
A
\end{tabbing}%
B
{\begin{tabbing}
A
\end{tabbing}}%
B
\end{document}

你可以避开这样的群体

\documentclass{article}
\begin{document}
\begin{tabbing}
A
\end{tabbing}%
B
\small
\begin{tabbing}
A
\end{tabbing}
\normalsize 
B
\end{document}

相关内容