\item 元素后的某些文本或符号

\item 元素后的某些文本或符号

我想在每个元素后面添加一些文本\item。例如,我定义了一个新命令

\newcommand{\qitem}{\item?} %For the list of questions
\begin{enumerate}
\qitem Some question
\end{enumerate}

我想要得到

“1. 有什么问题吗?”

但是,输出看起来像

“1. 一些问题”

答案1

如果您想保留原始界面设计,即与之\qitem Some question相反\qitem{Some question}(正如@cfr 所建议的),您可以使用行尾字符来分隔参数\qitem

\documentclass{article}

\makeatletter
\def\qitem{\begingroup\catcode`\^^M=12 \qitem@}
\bgroup\catcode`\^^M=12 %
  \gdef\qitem@#1^^M{\item #1?\endgroup}%
\egroup
\makeatother

\begin{document}
\begin{enumerate}
\qitem Some question
\qitem Some other question
\item Not a question
\end{enumerate}
\end{document}

在此处输入图片描述

答案2

你可以做这样的事情:

\documentclass{article}
\newcommand\qitem[1]{\item #1?}
\begin{document}
  \begin{enumerate}
    \qitem{Is this a question}
    \item This is an answer.
    \qitem{Was that a question}
    \qitem{Can this question not be answered}
  \end{enumerate}
\end{document}

问题与解答

由于您没有提供最小工作示例,我不知道这与您的课程等的契合程度如何。但是,希望您能够对其进行适当的调整。

答案3

有一个解决方案,你不需要改变语法(即,你可以继续使用,\item bla而不是\item{bla},如cfr 的答案)并通过该项目的全部内容到宏(而不是只到当前行,比如鲁本的回答)。这比仅仅在项目内容的开头或结尾添加内容更灵活。例如,您可以完全隐藏内容,只保留标签。

主要思想是用\item类似 的东西替换}\item\yourcommand{。这样,两者之间的所有内容\item都会传递给命令。由于我们不能使用{和 ,因此}当我们重新定义 时\item,我们使用\bgroup\egroup。此外,我们不能将这个隐式组直接传递给命令,而是使用\collectbox,它可以处理\bgroup...\egroup。最后,第一个和最后一个\item不能是上面的形式。相反,我们重新定义\item它,使其设置\@openbracket为 true 并关闭环境的下一个\item或末尾的任何开括号。

\documentclass{article}

\usepackage{collectbox}

% Say we want to call this command for each item
\newcommand\question[1]{#1?}

\makeatletter
\newif\if@openbracket

% Define environment similar to enumerate where \item's are terminated with "?"
\newenvironment{enumerateq}%
  {%
    \enumerate
    \let\origitem\item
    \def\item{%
      \if@openbracket\egroup\endgroup\fi%
      \origitem
      \begingroup\@openbrackettrue\collectbox*{\question}\bgroup
    }
  }%
  {\if@openbracket\egroup\endgroup\fi%
   \endenumerate}
\makeatother

\begin{document}
  \begin{enumerateq}
    \item Is this a question
    \item Was that a question% The new line is part of the content of the item. Comment out to suppress space.
    \item Can this question not be answered%
  \end{enumerateq}
\end{document}

结果: 结果

相关内容