todonotes
我在包中添加了一个计数器,\todo
这样我就可以显示我剩下的待办事项总数。但是我也喜欢在禁用包选项的情况下工作。因此,我想将我输入计数器的部分包装在一个条件中,该条件仅在disable
未给出包选项时执行。但是我不知道如何访问此包选项。
梅威瑟:
\documentclass{report}
\usepackage{letltxmacro} %properly rename protected macros
\usepackage{totcount} %counter totals before last increment
\usepackage{xcolor} %for the red text (will be loaded by todonotes but for completness)
\usepackage{todonotes}
\usepackage{hyperref} %make links in listoftodos clickable
\newtotcounter{todocounter}
\LetLtxMacro{\oldTodo}{\todo} %avoid endless recursion be redefining \todo as \todo+x
\renewcommand{\todo}[2][]{\stepcounter{todocounter}\oldTodo[#1]{#2}}
\begin{document}
\LARGE{\textcolor{red}{\total{todocounter} todos left}} %if wrap this line
\todo{1}
later
\todo{some more}
\listoftodos
\end{document}
答案1
选项disable
集\@todonotes@disabledtrue
,即可以用以下方式测试的条件
\if@todonotes@disabled
...
\else
...
\fi
下面的代码将其包装在一个命令中,由于它不包含字母,\iftodonotes{<true>}{<false>}
因此使用起来更方便。@
\LARGE
顺便说一句:不是接受一个参数,但这是一个字体属性开关。\LARGE{...}
您应该这样写{\LARGE ...}
(即,将调用放在一个组中),否则后面的文本也会如此,\LARGE
直到您再次设置另一个大小。
\documentclass{report}
\usepackage{letltxmacro}
\usepackage{totcount}
\usepackage{xcolor}
\usepackage[disable]{todonotes}
\usepackage{hyperref}
\newtotcounter{todocounter}
\LetLtxMacro{\oldTodo}{\todo}
\makeatletter
% this defines \iftodonotes{<true>}{<false>}
\newcommand*\iftodonotes{%
\if@todonotes@disabled
\expandafter\@secondoftwo
\else
\expandafter\@firstoftwo
\fi
}
\makeatother
\renewcommand{\todo}[2][]{\stepcounter{todocounter}\oldTodo[#1]{#2}}
\begin{document}
\iftodonotes
{{\LARGE\textcolor{red}{\total{todocounter} todos left}}}
{}
\todo{1} foo
later \todo{some more}
\listoftodos
\end{document}