我正在使用该\todonotes
包,并定义了各种自定义注释,按照我从这里得到的答案例如\newcommand{\todoinline}[2][1=]{\todo[inline,#1]{#2}}
(现在找不到了)。
当我两年前最后一次密集使用它时,一切都运行良好,但现在我遇到了两个问题:
它会引发错误(但仍然有效):
Package xkeyval Error: `1' undefined in families `todonotes'. \todoinline{Test inline}
它打破了我的书目,我只得到
Citation `McLorem2022' on page 2 undefined
每次引用都有错误。
如何\todonotes
在不破坏 bibtex 的情况下使用自定义?
如果使用它\todo[inline]{something}
而不是我的自定义命令,一切都会完美地运行,但我想在自动完成功能中对它进行简写,并对不同的注释进行一些颜色编码。
当生成 MWE(见下文)时,它也可以工作(除了错误),但是对于真实文件,我可以通过替换来重现 bibtex 失败/工作,\todo[inline]{something}
但\todoinline{something}
我绞尽脑汁想找出是什么原因造成的。
file.tex 中,我添加了所有其他可能的原因:
\documentclass[]{article}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{todonotes}
\usepackage{mhchem}
\usepackage{natbib}
\newcommand{\todogreen}[2][1=]{\todo[color=green,#1]{#2}}
\newcommand{\todored}[2][1=]{\todo[color=red,#1]{#2}}
\newcommand{\todoblue}[2][1=]{\todo[inline, color=cyan,#1]{#2}}
\newcommand{\todoinline}[2][1=]{\todo[inline,#1]{#2}}
\title{My cool article}
\author{Me}
\begin{document}
\maketitle
\begin{abstract}
Something important
\end{abstract}
\section{Main text}
"Lorem ipsum" \citep{McLorem2022}. Isotopes: \ce{^{18}O} and \ce{^{2}H}.
\todoinline{Test inline}
\todored{Test red}
\todogreen{Test green}
\todoblue{Test blue}
\begin{figure}
\centering
\includegraphics[width=1\linewidth]{testimage.png}
\caption{Some image}
\todo[inline]{Should be improved}
\label{fig:someimage}
\end{figure}
See also Fig. \ref{fig:someimage}!
\begin{table}
\begin{tabular}{l p{0.1\textwidth} p{0.1\textwidth}}
\toprule
A & B \\
\midrule
1 & 2 \\
4 & 4 $\dagger$ \\
\bottomrule
\end{tabular}
$\dagger$ some hint
\caption{Simple table}
\label{table:simple_table}
\end{table}
\section*{References}
\bibliographystyle{apalike}
\bibliography{mybib.bib}
\end{document}
mybib.bib:
% Encoding: UTF-8
@Article{McLorem2022,
author = {Mc Lorem, Ipsum},
journal = {Invented Words},
title = {A novel way to invent silly words},
year = {2022},
}
@Comment{jabref-meta: databaseType:bibtex;}
答案1
自定义 todonotes 定义中的可选参数似乎未使用。因此,您可以简化定义,如下所示:
\newcommand{\todogreen}[1]{\todo[color=green]{#1}}
\newcommand{\todored}[1]{\todo[color=red]{#1}}
\newcommand{\todoblue}[1]{\todo[inline, color=cyan]{#1}}
\newcommand{\todoinline}[1]{\todo[inline]{#1}}
完整 MWE:
\documentclass[]{article}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{todonotes}
\usepackage{mhchem}
\usepackage{natbib}
\newcommand{\todogreen}[1]{\todo[color=green]{#1}}
\newcommand{\todored}[1]{\todo[color=red]{#1}}
\newcommand{\todoblue}[1]{\todo[inline, color=cyan]{#1}}
\newcommand{\todoinline}[1]{\todo[inline]{#1}}
\title{My cool article}
\author{Me}
\begin{document}
\maketitle
\begin{abstract}
Something important
\end{abstract}
\section{Main text}
"Lorem ipsum" \citep{McLorem2022}. Isotopes: \ce{^{18}O} and \ce{^{2}H}.
\todoinline{Test inline}
\todored{Test red}
\todogreen{Test green}
\todoblue{Test blue}
\begin{figure}
\centering
\includegraphics[width=1\linewidth]{example-image}
\caption{Some image}
\todo[inline]{Should be improved}
\label{fig:someimage}
\end{figure}
See also Fig. \ref{fig:someimage}!
\begin{table}
\begin{tabular}{l p{0.1\textwidth} p{0.1\textwidth}}
\toprule
A & B \\
\midrule
1 & 2 \\
4 & 4 $\dagger$ \\
\bottomrule
\end{tabular}
$\dagger$ some hint
\caption{Simple table}
\label{table:simple_table}
\end{table}
\bibliographystyle{apalike}
\bibliography{todobib.bib}
\end{document}
结果:
根据OP 的评论这些重新定义也解决了原来的问题。