我想知道是否可以将枚举列表的第一行加粗,而不会影响列表的其余部分。我想要的输出将与以下内容相同:
\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
以下是一些选项,具体取决于您的输入偏好。它们均产生以下输出:
一致使用
\\
来结束问题:\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
图。一致使用空白/空行来表示问题和答案之间的区别:
\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
使用可读标记来识别
\question
s 和\answer
s:\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}