
Я получил эту ошибку при компиляции рецепта «pdflatex->bibtex->pdflatex x2» в коде Visual Studio Windows 10.
LaTeX Error: Command \todo already defined.
Or name \end... illegal, see p.192 of the manual.
Код тот же, что я скомпилировал в Visual Studio Code ubuntu18. Мне интересно, как перезаписать команду "\todo", которая не знаю, где еще была определена. (Это никогда не было проблемой в Ubuntu!)
P.S. Часть моего исходного кода:
%% -------------------------------
%% | 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]
. Однако измененный код дает ошибку "\todo undefined" на моей системе Ubuntu.
Это указывает на то, что среда отличается, хотя коды те же. Мне нужно выяснить, какой пакет каким-то образом добавлен/обновлен в Windows.
решение1
Это из changes
пакета (как вы можете увидеть, добавляя \show\todo
в разных точках и наблюдая, где это становится определенным). Если вам не нужна команда из этого пакета, просто используйте \renewcommand
в своем определении, чтобы переопределить существующее определение.
решение2
Это финальная версия? Если да, то закомментируйте как минимум 2 строки, определяющие вашу команду:
%\newcommand{\todo}[1]
%{{\textbf{\textcolor{red}{(\margmajortodo{}#1)}}}{}}