在下面的例子中,\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}$}
解释请参见脆弱命令和坚固命令之间有什么区别?。