当尝试使用\listoftodos
和colorinlistoftodos
时ocgcolorlinks
,文本会从待办事项列表中消失。确切地说,文本仍然在那里,我可以复制它,但看不到它——它变得透明。没有选项colorinlistoftodos
或没有ocgcolorlinks
,一切都正常。
为什么会发生这种情况? 有什么解决方法吗?
梅威瑟:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[colorlinks]{hyperref}
\usepackage[ocgcolorlinks]{ocgx2}
\usepackage[colorinlistoftodos]{todonotes}
\begin{document}
Testing \todo{This is a todonote.}
\listoftodos
\end{document}
答案1
ocgx2
这是使用该选项的一个极端情况ocgcolorlinks
,请参见https://gitlab.com/agrahn/ocgx2#package-option-ocgcolorlinks
链接文本中的图形对象需要用命令进行保护\ocglinkprotect{...}
。
在下面的代码中,相应的命令被todonotes
相应地修补:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}
\usepackage[ocgcolorlinks]{ocgx2}
\usepackage[colorinlistoftodos]{todonotes}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\renewcommand{\@todonotes@addElementToListOfTodos}{%
\if@todonotes@colorinlistoftodos%
\addcontentsline{tdo}{todo}{%
\ocglinkprotect{\fcolorbox{\@todonotes@currentbordercolor}%
{\@todonotes@currentbackgroundcolor}%
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}}%
\ \@todonotes@caption}%
\else%
\addcontentsline{tdo}{todo}{\@todonotes@caption}%
\fi}%
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
Testing \todo{This is a todonote.}
\listoftodos
\end{document}
另一个选项可能是hyperref
选项linktocpage
,它仅将页码转换为超链接。