\newcommand 声明导致缺少 \begin{document}

\newcommand 声明导致缺少 \begin{document}

我有这个代码:

\documentclass{article}
\usepackage{fontspec}

\usepackage{xcolor}

\definecolor{color0}{rgb}{0,0,0}% black
\definecolor{color1}{rgb}{0.22,0.45,0.70}% light blue
\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey

\author{}
\newcommand{\colorsection}[1]{%
  \raisebox{-1mm}{%
    \textcolor{color1}{%
      \rule{2ex}{2ex}\hspace{5mm}}%
      \section{#1}%
  }%
}%
\begin{document}
\colorsection{test}
\end{document}

xelatex f.tex结果是:

This is XeTeX, Version 3.14159265-2.6-0.99991 (TeX Live 2014) (preloaded format=xelatex)
[...]

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.21 \colorsection{test}

? X
No pages of output.
Transcript written on test.log.

我已检查过括号对,一切正常。

我的问题

我的错误在哪里?我没有发现。

答案1

您的代码相当于

\documentclass{article}

\begin{document}


\mbox{\section{abc}}
\end{document}

\raisebox制作一个水平(LR)框,像\mbox这样的垂直显示构造\section是不允许的。


与错误无关,但如果您\section从盒子中取出:

 \raisebox{-1mm}{
    \textcolor{color1}{
      \rule{2ex}{2ex}\hspace{5mm}}}

这样规则左侧就会有两个字空格,一个位于凸起框的开始处,另一个位于彩色区域的开始处。几乎可以肯定,这应该编码为

 \raisebox{-1mm}{%
    \textcolor{color1}{%
      \rule{2ex}{2ex}\hspace{5mm}}

尽管\hspace如果下一节标题位于其下方,则不会产生任何明显的效果。

相关内容