加粗 \item 元素的第一行,问题/答案风格

加粗 \item 元素的第一行,问题/答案风格

我想知道是否可以将枚举列表的第一行加粗,而不会影响列表的其余部分。我想要的输出将与以下内容相同:

\begin{enumerate}  
    \item \textbf{This is a question, what is the answer?} \\
    This is the answer, in standard font!

    \item \textbf{This is another question, what is the next answer?} \\
    Here is the answer, also not in bold.
\end{enumerate}

是否可以\textbf在每个问题前不加标签来做到这一点,有什么方法可以自动化吗?使用\begin{enumerate}\bfseries粗体显示所有内容。

一些 相似的 问题但答案要么只是将每一行包装在标签中,要么显得非常不雅致。

答案1

以下是一些选项,具体取决于您的输入偏好。它们均产生以下输出:

在此处输入图片描述

  1. 一致使用\\来结束问题:

    \documentclass{article}
    
    \newenvironment{QandA}
      {\begin{enumerate}
       \let\olditem\item
       \long\def\item##1\\{\olditem{\bfseries ##1}\par}}
      {\end{enumerate}}
    
    \begin{document}
    
    \begin{QandA}
      \item This is a question, what is the answer? \\
      This is the answer, in standard font!
    
      \item This is another question, what is the next answer? \\
      Here is the answer, also not in bold.
    \end{QandA}
    
    \end{document}
    

    我们将QandA环境定义为类似于,enumerate只是对工作原理进行了更新\item。第一步是将当前版本存储\item在类似\olditem(via \let) 的内容中。尽管传统的\item采用可选参数和\let使用可选参数设置宏时应小心谨慎,您在这里没有使用它,但在这种情况下它工作得很好。

    \item现在,对进行了重新定义,\long以便它可以支持\par图中断。此外,我们要求 的参数文本以\item结尾\\(这就是\def\item<stuff>\\{..}含义)。因此,\\需要一个明确的结尾- 才能使其工作并成功吞噬\item和之间的内容\\(如#1)。一旦匹配此模式,我们就会设置\olditem(环境\item开头的任何内容QandA)有限的范围加粗的论点——{\bfseries #1}以及一个强制\par图。

  2. 一致使用空白/空行来表示问题和答案之间的区别:

    \documentclass{article}
    
    \newenvironment{QandA}
      {\begin{enumerate}
       \let\olditem\item
       \long\def\item##1\par{\olditem{\bfseries ##1}\par}}
      {\end{enumerate}}
    
    \begin{document}
    
    \begin{QandA}
      \item This is a question, what is the answer?
    
      This is the answer, in standard font!
    
      \item This is another question, what is the next answer?
    
      Here is the answer, also not in bold.
    \end{QandA}
    
    \end{document}
    

    的重新定义与 (1) 中讨论的类似,只是需要\item一个空白行(由 TeX 转换为)。\par

  3. 使用可读标记来识别\questions 和\answers:

    \documentclass{article}
    
    \newcommand{\question}[1]{\item{\bfseries #1}}
    \newcommand{\answer}[1]{\par #1}
    \newenvironment{QandA}
      {\begin{enumerate}}
      {\end{enumerate}}
    
    \begin{document}
    
    \begin{QandA}
      \question{This is a question, what is the answer?}
      \answer{This is the answer, in standard font!}
    
      \question{This is another question, what is the next answer?}
      \answer{Here is the answer, also not in bold.}
    \end{QandA}
    
    \end{document}
    

答案2

您可以加粗任意数量的在行中。但是,加粗一行非常困难,因为 TeX 必须决定在哪里分割行,而这取决于字体。分割行后,您需要返回到原始标记,但它们已经“丢失”了。

很多年前,Jim Sterken 在 1983 年提出了这个问题:http://www.tug.org/TUGboat/tb04-2/tb08sterken.pdf。直到 1987 年,Anne Brüggemann-Klein 才提出了解决方案: http://www.tug.org/TUGboat/tb08-2/tb18bruggemann.pdf

当然,如果你手动分割第一行,这很简单:)

\documentclass{article}
\pagestyle{empty}
\def\Item#1\\{\item\textbf{#1}\\}
\begin{document}
\begin{enumerate}
\Item This is a question\\ And this is an answer
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容