我正在尝试暂时读取我论文中的边注。
我尝试简单\renewcommand{\marginpar}[]{}
但得到以下结果:
! Missing number, treated as zero.<to be read again>} \renewcommand{\marginpar}[]{}
我不知道为什么会出现此错误,因为它通常会编译我的 pdf 而不会出现错误。你们有什么想法吗?
提前致谢
答案1
为了\marginpar
正确摆脱(假设其通常的定义),你需要尝试
\renewcommand{\marginpar}[2][]{}
的确切语法\(re)newcommand
已在其他地方进行了解释(例如\newcommand 参数混淆)比我能做的好得多,所以让我简单回顾一下,通常的语法\(re)newcommand
是
\newcommand{<command>}[<number of arguments>][<optional value>]{<definition>}
方括号中的两个参数都是可选的 - 如果只有一个可选参数,则将其解释为第一个可选参数。
<number of arguments>
给出接受的参数数量<command>
,如果存在,则必须是数字。这就是导致示例中出现错误的原因,不能将方括号留空。如果<optional value>
存在附加项,则的第一个参数<command>
将成为可选参数,如果不存在,则假定为可选参数<optional value>
(可选参数通常在方括号中给出,强制参数在花括号中给出)。
这意味着用 定义的命令\(re)newcommand
将始终具有以下参数结构之一
\foo % no argument at all
\foo{m_1} % one mandatory argument
\foo[o_1] % one optional argument
\foo{m_1}{m_2}...{m_n} % n \leq 9, two to nine mandatory arguments
\foo[o_1]{m_1}...{m_n} % n \leq 8, one optional argument and one to eight mandatory arguments
(La)TeX 中还有其他参数结构,但必须以不同的方式编码。讽刺的是,\newcommand
它本身使用了一种非常不同的结构。
\marginpar
具有以下参数规范
\marginpar[<LTEXT>]{<RTEXT>}
这意味着它的结构可以\renewcommand
直接用带有两个参数的宏来重新定义,其中第一个参数是可选的。
乌尔里希·迪茨在评论中提出了一个很好的观点,即需要注意间距。 的默认定义是\marginpar
为了\@bsphack...\@esphack
避免不必要的空白,请参阅如何使命令完全空/不可见/不存在?。如果你想复制这种行为,在禁用时不改变间距\marginpar
,你需要更复杂的
\makeatletter
\renewcommand{\marginpar}[2][]{\@bsphack\@esphack}
\makeatother
是否有必要,取决于您具体如何使用\marginpar
以及禁用它的需求和意图。如果只是为了快速测试,您就不必费心了,如果是为了最终打印版本,那就另当别论了。