重新定义 sty 文件的内部宏时出现问题

重新定义 sty 文件的内部宏时出现问题

[我首先在 stackoverflow 上发布了这个问题,因为我不知道这个网站的存在]

你好,

我正在使用一个特殊的 usepackage 用 tex 写论文,我需要调整其中一个提供的宏。通常可以使用 \renewcommand,但在这种情况下它不起作用。命令没有更改,或者我收到错误消息,提示未设置覆盖的宏,尽管我设置了它。我想要更改的定义宏如下:


\gdef\TUD@thesis@referee{\PackageError{\@currname}{No '\noexpand\refereegiven!\MessageBreak See documentation for details.}\@ehc}
\def\referee#1#2{\@ifnextchar[{\TUD@thesis@referee@three{#1}{#2}}{\TUD@thesis@referee@two{#1}{#2}}}
\def\TUD@thesis@referee@two#1#2{
  \gdef\TUD@thesis@referee{1. Gutachten: #1\\2. Gutachten: #2}
}
\def\TUD@thesis@referee@three#1#2[#3]{
  \gdef\TUD@thesis@referee{1. Gutachten: #1\\2. Gutachten: #2\\3. Gutachten: #3}
}
\newcommand{\gutachter}[2]{%
  \referee{#1}{#2}
  \PackageError{\@currname}{Command '\noexpand\gutachter deprecated! Use '\noexpand\referee` instead.}\@ehc%
}

我使用命令的方式是:

\referee{ref1}{ref2}

而不是

{1. Gutachten: #1\\2. Gutachten: #2}

我想拥有

{Betreuer:\\#1\\#2}

我可以通过简单地修改 sty 文件中的这部分来解决这个问题,但这意味着我必须在可能工作的每台机器上调整该文件。

我尝试使用

\renewcommand{\referee}[2]{Betreuer:\\#1\\#2}

但这显然没有起作用^^。

感谢您的帮助。

答案1

尝试在文档序言中包含以下代码(未经测试):

\makeatletter
\def\TUD@thesis@referee@two#1#2{%
  \gdef\TUD@thesis@referee{Betreuer:\\#1\\#2}%
}
\def\TUD@thesis@referee@three#1#2[#3]{%
  \gdef\TUD@thesis@referee{Betreuer:\\#1\\#2\\#3}%
}
\makeatother

相关内容