考虑输入
\documentclass{article}
\begin{document}
\begin{tabbing}
A
\end{tabbing}%
B
{\small\begin{tabbing}
A
\end{tabbing}}%
B
\end{document}
编译后pdflatex
,生成
tabbing
我想知道和的组合有什么不好,small
它会插入缩进,而单独的制表符环境不会这样做?顺便说一句,同样的情况也适用于\smaller
和\textsmaller
包relsize
。(我主要对 \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}