我想在 中插入一个 copyleft 符号\caption
。以下命令给出这里,在室外工作\caption
:
\reflectbox{\sffamily{\copyright}}
并做我想做的事。
但是这个:
\caption{A caption \reflectbox{\sffamily{\copyright}}}
导致错误。最让我吃惊的是
\documentclass{article}
\usepackage{graphicx}
\newcommand{\copyleft}{\reflectbox{\sffamily{\copyright}}}
\begin{document}
\begin{figure}
\caption{A simple caption \copyleft}
\end{figure}
\end{document}
产生错误:
Undefined control sequence.
\Gscale@box #1[#2]#3->\leavevmode \def \Gscale@x
{#1}\def \Gscale@y {#2}\set...
l.9 \caption{A simple caption \copyleft}
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
[...]
但这个有效!
\documentclass{article}
\usepackage{graphicx}
\newcommand{\copyleft}{\reflectbox{\sffamily{\copyright}}}
\begin{document}
\copyleft
\begin{figure}
\caption{A simple caption \copyleft}
\end{figure}
\end{document}
有什么想法或建议吗?我只想使用 latex 在标题中包含版权标志。
答案1
\reflectbox
是一个“脆弱”的命令(见脆弱命令和坚固命令之间有什么区别?),因此在移动论证中使用(直接或间接)时需要保护。
所以你必须做
\documentclass{article}
\usepackage{graphicx}
\newcommand{\copyleft}{\reflectbox{\sffamily\copyright}}
\begin{document}
\copyleft
\begin{figure}
\caption{A simple caption \protect\copyleft}
\end{figure}
\end{document}
也就是说,在移动论证(主要是标题和说明)中,用\protect
在前面,或者\copyleft
\documentclass{article}
\usepackage{graphicx}
\DeclareRobustCommand{\copyleft}{\reflectbox{\sffamily\copyright}}
\begin{document}
\copyleft
\begin{figure}
\caption{A simple caption \copyleft}
\end{figure}
\end{document}
另外,请注意\sffamily
不带参数:它是一个声明,直到它所在的组结束为止一直有效;框命令(例如 )\reflectbox
将其内容构建在组中。带参数的版本是\textsf
。