根据包装选项确定条件

根据包装选项确定条件

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}

相关内容