有几个问题要求在description
环境中标签部分的宽度是最宽标签的宽度:
Label: Text text text text text text
text text text text.
Longer label: Text text text text text text
Text text text text.
一个解决方案用于enumitem
手动设置标签宽度(也这里)另一种方法是指定最宽的标签手动(也这里)。
我正在编写一本长达数百页的字典。想必整个字典中最宽的单词会有点离群。我希望标签宽度适合最长的单词在页面上. (我猜这需要两次 LaTeX 运行,类似longtable
或类似的东西。)
例如,在下面的示例中,“Nam gui ligula”的对齐方式将在每一页上匹配。在第一页上,它将与“Lorem ipsum”的宽度匹配,但在第二页上与“Lorem ipsum dolor sit”的宽度匹配,等等。
\documentclass[11pt,a4paper]{article}
\usepackage{enumitem,lipsum}
\begin{document}
\begin{description}
\item[Lorem] \lipsum[2-3]
\item[Lorem ipsum] \lipsum[2-3]
\item[Lorem ipsum dolor] \lipsum[2-3]
\item[Lorem ipsum dolor sit] \lipsum[2-3]
\item[Lorem ipsum dolor sit amet] \lipsum[2-3]
\end{description}
\end{document}
我已经为环境标记了这一点description
,但我愿意接受任何解决方案。这是一个没有任何列表式环境的 MWE。我正在寻找一种计算\ComputedWidth
每个页面的方法。
\documentclass[11pt]{article}
\usepackage{enumitem,lipsum}
\begin{document}
\parindent=0pt
\newdimen\ComputedWidth
\ComputedWidth=9em
\def\FixedWidthBox#1{\fbox{\hbox to \ComputedWidth{#1\hfill}}}
\FixedWidthBox{Lorem} \lipsum[2-3]
\FixedWidthBox{Lorem ipsum} \lipsum[2-3]
\FixedWidthBox{Lorem ipsum dolor} \lipsum[2-3]
\end{document}
答案1
这是一个可行的解决方案。第一次运行后,事情并不一致。第二次运行后,它们就对齐了。
\documentclass[11pt]{article}
\usepackage{enumitem,lipsum,atbegshi,ifthen}
\parindent=0pt
\IfFileExists{\jobname .ali}{\input{\jobname .ali}}{}
\newwrite\AlignmentOutput
\immediate\openout\AlignmentOutput=\jobname .ali
\newlength\LatestWidth
\newlength\WidestWidth
\setlength\WidestWidth{0pt}
\newsavebox{\mybox}
\def\FixedWidthBox#1{%
\settowidth{\LatestWidth}{#1}%
\ifthenelse{\lengthtest{\LatestWidth>\WidestWidth}}{\global\setlength\WidestWidth{\LatestWidth}}{}%
\newdimen\Width
\ifcsname WidestBoxOnPage\thepage\endcsname%
\setlength\Width{\csname WidestBoxOnPage\thepage\endcsname}%
\else%
\sbox{\mybox}{#1}
\settowidth{\Width}{\usebox{\mybox}}
\fi%
\fbox{\hbox to \Width{#1\hfill}}%
}
\AtBeginShipout{\immediate\write\AlignmentOutput{\string\expandafter\string\def\string\csname\space WidestBoxOnPage\thepage\string\endcsname{\the\WidestWidth}}%
\global\setlength\WidestWidth{0pt}}
\begin{document}
\FixedWidthBox{Lorem} \lipsum[2-3]
\FixedWidthBox{Lorem ipsum} \lipsum[2-3]
\FixedWidthBox{Lorem ipsum dolor} \lipsum[2-3]
\FixedWidthBox{Lorem} \lipsum[2-3]
\FixedWidthBox{Lorem ipsum} \lipsum[2-3]
\FixedWidthBox{Lorem} \lipsum[2-3]
\end{document}
更新 从回答问题的意义上来说,这个解决方案“有效”。然而,我发现,实际上它是行不通的。框大小的(偶尔)大变化会改变段落中的行数,从而改变分页,这导致 TeX 在运行之间记住错误的框大小。我猜如果页面由短段落(尤其是单行)组成,这个解决方案可能会有效,但我不得不放弃这种方法来处理我的词典,因为它包含较长的段落。