我个人非常喜欢这种tabbing
环境,它可以排版表格式列表,而不必担心换行符、分页符等。但是,我现在遇到了一个问题:我有一个(非常长的)tabbing
环境,其中的条目长度差异很大。将“最大长度”设置为制表符不是一个选项,所以我发现 LaTeX 似乎“跳回”制表符的绝对位置。我希望有一个制表符变体,可以检查当前文本位置是否比制表符位置更靠右,然后对事物执行以下任一操作:
- 继续在当前光标位置排版文本,或者
- 插入换行符以正确地继续到预期位置。
以下是 MWE:
\documentclass{article}
\pagestyle{empty}
\begin{document}
\begin{tabbing}
\hspace{3cm}\=\hspace{3cm}\kill
\textbf{this is}\>ok\\
\textbf{this is absolutely not}\>ok\\
\textbf{I would rather imagine it} %\>
like this\\
\textbf{Altnernatively, I would also appreciate it}\\\>
like this\\
\end{tabbing}
\end{document}
我不知道这样的环境是否已经存在,或者我是否必须编写一些代码 - 即使这样,我也不知道从哪里开始,因为我不知道如何检查光标的当前位置。
有什么建议么?
答案1
我想出了一个适合我的解决方案,但它不是很漂亮:
\documentclass{article}
\usepackage{calc}
\pagestyle{empty}
\makeatletter
\newlength\tabs@currentpos
\newlength\tabs@itemwidth
\newlength\tabs@endpos
\newlength\tabs@tabpos
\newcommand\tabnl{%
\setlength{\tabs@currentpos}{0pt}\\
}
\newcommand\tabs@tabto[2]{%
\setlength\tabs@itemwidth{\widthof{#2}}%
\setlength\tabs@endpos{\tabs@currentpos+\tabs@itemwidth}%
\setlength\tabs@tabpos{#1}%
#2%
\ifdim\tabs@tabpos>\tabs@endpos%
\setlength\tabs@currentpos\tabs@tabpos%
\addtolength{\tabs@tabpos}{-\tabs@endpos}%
\hspace{\tabs@tabpos}\ignorespaces\else%
\setlength\tabs@currentpos\tabs@endpos%
\fi%
}
\newcommand\tabs@@tabto[2]{%
\setlength\tabs@itemwidth{\widthof{#2}}%
\setlength\tabs@endpos{\tabs@currentpos+\tabs@itemwidth}%
\setlength\tabs@tabpos{#1}%
#2%
\setlength\tabs@currentpos\tabs@tabpos%
\ifdim\tabs@tabpos>\tabs@endpos%
\addtolength{\tabs@tabpos}{-\tabs@endpos}%
\else%
\\
\fi%
\hspace*{\tabs@tabpos}\ignorespaces%
}
\def\tabto{\@ifstar\tabs@@tabto\tabs@tabto}
\makeatother
\setlength{\parindent}{0pt}
\begin{document}
\tabto{2cm}{this is} fine\tabnl
\tabto{2cm}{this is absolutely not} ok\tabnl
\tabto{2cm}{I would rather imagine it} \tabto{7cm}{like this} I think\dots\tabnl
\tabto*{2cm}{Altnernatively, I would also appreciate it} \tabto{7cm}{like this} what do you think?\tabnl
\end{document}
tabbing
我在处理空格方面仍然存在一些问题,另外我认为如果实际代码与和的实现方式更相似一点会更好tabular
,但我不知道如何进行解析&
和类似的事情。
如果有人有更好的想法,我将不胜感激!