我正在寻找一种格式化关键字翻译的方法,其中关键字是左对齐的,但它们的解释不会换到行的开头,而是按关键字的长度缩进。
我想到的一个显而易见的事情是使用表格 - 但随后所有的解释/翻译都由最大的关键字缩进:
\begin{tabular}[c]{ l p{8cm} }
\textbf{key} & some value not long enough to get split, but lasts till the end \\
\textbf{super long keyword} & some value which might be so long that it is being split over multiple lines. \\
\end{tabular}
这会导致较短键的解释缩进过多,使其可读性降低。我能想到的唯一补救措施是为每个单词创建一个表,但必须手动为每个表指定段落的大小似乎是反 TeX 的做法:
\begin{tabular}[c]{ l p{12cm} }
\textbf{key} & some value not long enough to get split, but lasts till the end \\
\end{tabular}
\begin{tabular}[c]{ l p{8cm} }
\textbf{super long keyword} & some value which might be so long that it is being split over multiple lines. \\
\end{tabular}
遗憾的是,我不知道如何用不同的方法获得预期结果。可能是因为我的搜索中缺少某些特定词语。
有一个更好的方法吗?
我的用例:
我有一些领域/工具特定的关键字,我想有一个专门的小节以这种简短的格式来解释它们。
答案1
这有点老套,但这里有一个description
基于 - 的环境的可能解决方案,使用enumitem
。基本上,这个想法是将列表的每个项目的内容放在minipage
具有正确宽度的 中。为了保持列表环境的通常语法,我定义了一个新的keywords
列表环境,其中\item
被重新定义为自动放置minipage
s 。
\documentclass{article}
\usepackage{enumitem}
\let\olditem\item
\newlength{\currentlabelwidth}
\newcommand*{\changeitem}{%
\renewcommand{\item}[1][]{%
\ifdim\currentlabelwidth>0pt
\end{minipage}%
\else\fi%
\settowidth{\currentlabelwidth}{##1}%
\olditem[##1]
\begin{minipage}[t]{\dimexpr\linewidth-\currentlabelwidth}
}%
}
\newlist{keywords}{description}{1}
\setlist[keywords]{
font=\bfseries,
before=\changeitem,
after=\end{minipage}\let\item\olditem,
}
\begin{document}
\begin{keywords}
\item[key] some value not long enough to get split, but lasts till the end.
\item[other key] some value which might be so long that it is being split over multiple lines.
\item[super long keyword] some value which might be so long that it is being split over multiple lines.
\end{keywords}
\end{document}
不过,也许有更好的方法可以做到这一点。我想让enumitem
左边距适应标签的宽度,但我没有找到任何简单的方法来实现这一点。
答案2
如果您不打算在解释中列出列表,这里有一种方法。
\documentclass{article}
\newenvironment{showkeywords}
{%
\par % end the previous paragraph
\addvspace{\topsep}% some vertical separation
\setlength{\parindent}{0pt}% no indentation here
\let\item\showkeywordsitem
}
{\par\addvspace{\topsep}}
\def\showkeywordsitem[#1]{%
\par\addvspace{\smallskipamount}
\settowidth{\leftskip}{\textbf{#1\quad}}%
\makebox[0pt][r]{\textbf{#1\quad}}\ignorespaces
}
\begin{document}
\begin{showkeywords}
\item[key] some value not long enough to get split, but lasts till the end
\item[super long keyword] some value which might be so long that it is being
split over multiple lines.
\item[another key] which has a very long explanation split into different
paragraphs.
Here is the second paragraph of the explanation, which is indented the
same as the previous one.
\end{showkeywords}
\end{document}
语法与description
环境相同。其思想是\item[key]
测量键的宽度,然后通过设置悬挂缩进\leftskip
。键作为向左突出的零宽度框插入。
条目之间插入一些垂直空间。