打印列向量的代码在图像标题中不起作用

打印列向量的代码在图像标题中不起作用

在下面的例子中,\spvec宏在文档主体中很好地生成了一个列向量,但它不会在标题中编译。

\documentclass[a4paper]{article}

%% Language and font encodings
\usepackage[english]{babel}

\def\spvec#1{\left(\vcenter{\halign{\hfil$##$\hfil\cr \spvecA#1;;}}\right)}
\def\spvecA#1;{\if;#1;\else #1\cr \expandafter \spvecA \fi}

\begin{document}

A $test=\spvec{1;2}$ vector.

    \begin{figure}
        \centering
        \textbf{IMAGE HERE}
        \caption{abc... $\spvec{1;2}$}
    \end{figure}

\end{document}

错误是

Illegal parameter number in definition of \reserved@a.
<to be read again> 
                   $
l.17        \caption{abc... $\spvec{1;2}$}

答案1

你有两种选择:

  • 如果你没有图形列表,或者你不想让矢量出现在此列表中,请使用

    \caption[abc... entry for list of figures without \spvec]{abc... $\spvec{1;2}$}
    

    或者将条目留空

    \caption[]{abc... $\spvec{1;2}$}
    
  • “保护”命令\spvec以免在移动时被破坏。

    \caption{abc... $\protect\spvec{1;2}$}
    

解释请参见脆弱命令和坚固命令之间有什么区别?

相关内容