我想在 TeX 文档中格式化“问题 + 答案”对的列表。
在 HTML 中我使用以下<dl>
命令:http://www.w3.org/TR/html401/struct/lists.html,例如:
<dl>
<dt>Question?</dt>
<dd>
Answer
</dd>
</dl>
在 TeX 中,我认为使用description
环境对于这些目的来说会很好。
\begin{description}
\item[Question?] Answer
\end{description}
但当问题很长时,它不会换行。当问题很短时,答案直接出现在问题后面,而不是换行。
我应该使用什么环境来解决这个问题?
答案1
您在 LaTeX 环境中注意到的缺陷description
是,如果项目的“标签”(括号中的部分)超过一行,则不会产生正确的换行符,这是众所周知的。我知道的最简单的解决方法是使用包enumitem
并使用选项开始描述列表style=nextline
,如以下 MWE 所示:
\documentclass{article}
\usepackage{enumitem}
\begin{document}
\begin{description}[style=nextline]
\item[Why is there a deficiency in the basic description environment
that I have to struggle with?] Answer: Just use the enumitem package
and start the description environment with the "style=nextline" option.
\item[Question 2?] Answer 2.
\end{description}
\end{document}
请注意,如果你这样做不是想要“答案”(即项目“标签”后的文本)在新行开始,您需要更改的就是style=sameline
在描述环境开头设置选项。
附录:如果您希望将“style=nextline”指令应用于全部描述环境,每次都要记住指定此选项会很繁琐。相反,你应该发出指令
\setlist[description]{style=nextline}
在加载enumitem
包后全局设置此选项。如果需要,可以根据具体情况通过在[style=same-line]
启动给定描述环境时提供选项来覆盖结果行为。
答案2
我建议只使用\paragraph
或\subparagraph
分段命令。它们不仅能产生类似的“常见问题”外观,而且还允许创建包含问题的目录。
如果在合同中您不想要冲突的标题,您可以\subsubsection
以类似的方式使用。
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\paragraph{What is the answer to the Ultimate Question of Life, the Universe, and Everything?}
42
\paragraph{How does the Lorem Ipsum text read?}
\lipsum[1]
\end{document}
请注意,您还可以使用titlesec
包裹。
答案3
我建议定义一个新的环境并使用它。基于其他答案:
% Use for advanced enum-list functionality
\usepackage{enumitem}
% Define question and answer environment
\newenvironment{faq}{\begin{description}[style=nextline]}{\end{description}}
然后像下面一样使用它description
:
\begin{faq}
\item[What is the day today?]
Monday
\item[How much is it?]
Alot!
\end{faq}
给我们这样的结果: