在 LaTeX 中格式化常见问题列表

在 LaTeX 中格式化常见问题列表

我想在 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}

给我们这样的结果:

在此处输入图片描述

相关内容