![在 \caption 中使用(重新定义的)宏不起作用,但它在另一个环境中起作用](https://linux22.com/image/255918/%E5%9C%A8%20%5Ccaption%20%E4%B8%AD%E4%BD%BF%E7%94%A8%EF%BC%88%E9%87%8D%E6%96%B0%E5%AE%9A%E4%B9%89%E7%9A%84%EF%BC%89%E5%AE%8F%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%8C%E4%BD%86%E5%AE%83%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%8E%AF%E5%A2%83%E4%B8%AD%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我的问题是命令\vec{}
中的奇怪行为\caption
。我使用了这个构造:
\renewcommand{\vec}[1]{\accentset{\rightarrow}{#1}}
看看我的代码:
\documentclass[12pt, a4paper, czech, twoside]{book}
\usepackage{amsmath, amsthm, amssymb, amsfonts, amsbsy}
\usepackage{accents}
\usepackage{fontspec,xltxtra,xunicode,unicode-math}
\setmainfont[Mapping=tex-text,Numbers={OldStyle,Proportional}]{Calibri}
\setsansfont[Mapping=tex-text,Numbers={OldStyle,Proportional}]{Candara}
\setmonofont[Numbers=OldStyle]{Consolas}
\setmathfont{Cambria Math}
\usepackage{tikz}
\begin{document}
\renewcommand{\vec}[1]{\accentset{\rightarrow}{#1}}
\begin{figure}[hb!]
\centering
\begin{tikzpicture}
\coordinate (dS) at (2,0.5);
\draw[->] (dS) ++ (0.25,0.25) -- +(1,0.5) node[right]{$\vec{n}$};
\draw[->] (dS) ++ (0.25,0.25) -- +(2,1.5) node[right]{$\vec{h}$};
\end{tikzpicture}
\label{FYZ:fig_01}
\caption{vector $\vec{n}$.}
\end{figure}
\end{document}
SW:MiKTeX 2.9 64 位最新版本。当我尝试\vec
在tikzpicture
环境中使用该命令时,一切正常,但出现错误。我不明白。我做错了什么?
答案1
\accentset
使您的命令变得脆弱,因此您需要\protect\vec{n}
或使用\DeclareRobustCommand
而不是\newcommand
。