我不是 LaTeX 专家。因此,这个问题可能听起来微不足道。我正在使用制表符环境,并且有很长的行需要换行。因此,我使用命令\tabfill
来执行此操作。
\newcommand\tabfill[1]{%\dimen@\linewidth%
\advance\dimen@\@totalleftmargin%
\advance\dimen@-\dimen\@curtab%
\parbox[t]\dimen@{#1\ifhmode\strut\fi}%
% or, to avoid stretching:
% \parbox[t]\dimen@{\raggedright #1\ifhmode\strut\fi}%
}
我对此命令的唯一问题是框内的文本\tabfill
与左边距对齐。我希望当此文本换行时(因为它在制表环境中),它也会在第一行之后的行中缩进。关于如何修改此 tabfill 命令以实现此目标,您有什么想法吗?或者还有其他解决方案吗?
我正在寻找的示例:
Column 1 Column 2
bla bla bla bla bla bla bla bla bla bla bla bla bla bla
bla bla bla bla
bla bla bla bla
代码(不产生缩进):
\begin{tabbing}
\hspace{3.1cm} \= \kill
Column 1 \> Column 2\\
bla bla \> \tabfill{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}\\
bla bla \> \tabfill{bla bla}
\end{tabbing}
是否有意义?
答案1
这是我从您的原始代码(第一个设置为\dimen@
取消注释)中得到的结果:
\documentclass{article}
\makeatletter
\newcommand\tabfill[1]{%
\dimen@\linewidth
\advance\dimen@\@totalleftmargin
\advance\dimen@-\dimen\@curtab
\parbox[t]\dimen@{#1\ifhmode\strut\fi}%
}
\makeatother
\textwidth=.75\textwidth % just to make wrapping more evident
\begin{document}
\begin{tabbing}
\hspace{3.1cm} \= \kill
Column 1 \> Column 2\\
bla bla \> \tabfill{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}\\
bla bla \> \tabfill{bla bla}
\end{tabbing}
\end{document}
让我们添加一个\leftskip
设置:
\documentclass{article}
\makeatletter
\newcommand\tabfill[1]{%
\dimen@\linewidth
\advance\dimen@\@totalleftmargin
\advance\dimen@-\dimen\@curtab
\parbox[t]\dimen@{%
\leftskip=2em\hspace*{-2em}#1\ifhmode\unskip\nobreak\strut\fi}%
}
\makeatother
\textwidth=.75\textwidth % just to make wrapping more evident
\begin{document}
\begin{tabbing}
\hspace{3.1cm} \= \kill
Column 1 \> Column 2\\
bla bla \> \tabfill{bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla}\\
bla bla \> \tabfill{bla bla}
\end{tabbing}
\end{document}
如果您不打算在参数中使用非常复杂的东西(例如\tabfill
逐项或枚举列表),这是最简单的解决方案。如果要添加\raggedright
,请将其放在前面\leftskip
。