在项目内部使用 makebox 时出现奇怪的错误

在项目内部使用 makebox 时出现奇怪的错误

我想定义一个命令,它接受三个参数:问题编号、问题文本以及我的答案。虽然我确信有很多不同的解决方案,但我不知道哪个是正确的答案。其中一个复杂之处在于,无论问题编号的宽度如何,我都希望所有问题和答案(不是问题编号)都左对齐(1.1 vs 1.10)。我已经制作了一些开始的东西,但我收到了一个奇怪的错误,我根本无法理解。以下是代码:

\documentclass[letterpaper,10pt]{article}

\newcommand{\question}[3]{
\begin{itemize}
\item[\makebox[1cm][l]{#1}] #2

\vspace{.2in}

#3

\end{itemize}
}

\begin{document}

\question{a}{b}{c}

\end{document}

当我执行此操作时,结果如下:

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013/MacPorts 2013_6)
 restricted \write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2011/06/27>
Babel <3.9f> and hyphenation patterns for 43 languages loaded.
(/opt/local/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/opt/local/share/texmf-texlive/tex/latex/base/size10.clo)) (./test.aux)
! Argument of \@makebox has an extra }.
<inserted text> 
                \par 
l.18 \question{a}{b}{c}

? ^D
! Emergency stop.
<inserted text> 
                \par 
l.18 \question{a}{b}{c}

!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on test.log.

对于我做错的事情有什么建议吗?感谢您的帮助。

答案1

您的问题本质上类似于项目标签末尾的右方括号在其前面添加空格- 不同的原因;相同的结果/解决方案。在您的定义中,\question您应该使用

\newcommand{\question}[3]{%
  \begin{itemize}
    \item[{\makebox[1cm][l]{#1}}] #2

      \vspace{.2in}

      #3

  \end{itemize}
}

请注意,提供给可选参数的参数\item是如何用括号括起来的,以避免对参数的结束位置产生混淆。

相关内容