命令 \todo 已定义,但在哪里?我可以覆盖吗?

命令 \todo 已定义,但在哪里?我可以覆盖吗?

我在 windows10 的 visual studio code 上编译配方“pdflatex->bibtex->pdflatex x2”时出现此错误。

 LaTeX Error: Command \todo already defined.
               Or name \end... illegal, see p.192 of the manual.

该代码与我在 ubuntu18 的 Visual Studio 代码上编译的代码相同。我想知道如何覆盖“\todo”命令,我不知道它在哪里定义。(这在 ubuntu 上从来都不是问题!)

附言:我的部分源代码:

%% -------------------------------
%% |    My packages /commands    |
%% -------------------------------
% track changes
    %\usepackage{changes}       % highlight changes
    \usepackage[final]{changes} % don't highlight changes

% tables
    \usepackage{array,multirow,graphicx}

% pseudocode
    \usepackage[ruled,vlined]{algorithm2e}

% for forcing positions of tables, figures, ...
    \usepackage{float}

% units
    \usepackage{siunitx}
    \usepackage{dcolumn}


%% ---------------------------------
%% | ToDo Marker - only for draft! |
%% ---------------------------------
% Remove this section for final version!
\setlength{\marginparwidth}{20mm}

\newcommand{\todo}[1]
{{\textbf{\textcolor{red}{(\margmajortodo{}#1)}}}{}}

\newcommand{\margmajortodo}
{\marginpar{\textbf{\textcolor{red}{ToDo}}}{}}

更新:我在 windows 上找到了一种绕过方法,即改为\newcommand{\todo}[1]\renewcommand{\todo}[1]但是,在我的 ubuntu 系统上,更改后的代码给出了“\todo undefined”的错误。

虽然代码相同,但这表明环境不同。我需要做的是找出 Windows 中以某种方式添加/升级​​了哪个包。

答案1

它来自changes包(您可以通过\show\todo在各个点添加并查看它在哪里定义来看到)。如果您不需要该包中的命令,只需\renewcommand在您的定义中使用即可覆盖现有定义。

答案2

这是最终版本吗?如果是,请至少注释掉定义命令的两行:

%\newcommand{\todo}[1]
%{{\textbf{\textcolor{red}{(\margmajortodo{}#1)}}}{}}

相关内容