你好,乳胶团队
我发现 hyperref 的使用与文档末尾的 todolist \mylistoftodos 的习惯不兼容。
您能解释并解决我的问题吗?
如果我评论包 hyperref,错误就会消失,但显然链接不会消失,这里是我灵感的来源:
和
MWE 代码
\documentclass{book}
%% todonote_custom.tex fonctionnement ok sur les liens
\usepackage[english,french]{babel}%pour un document en français
%mini sommaire à chaque chapitre
\usepackage[french]{minitoc}
\setcounter{mtc}{5}
\usepackage{xspace}
%Permet à babel d'utiliser la macro xspace partout où c'est nécessaire. (Voir la doc de babel pour de plus amples explications.)
\usepackage[cyr]{aeguill}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum} % Dummytext
%---------------------------------------------------------------------------------
% divers codes pour todonote
\usepackage{ifthen}
% variable pour édition papier ou online
\newboolean{vsersion-pdf}
%VARIABLE À POSITIONNER À true POUR UNE VERSION PDF POUR SITE INTERNET
\setboolean{vsersion-pdf}{true}
%VARIABLE À POSITIONNER À false POUR EDITION PAPIER
%\setboolean{vsersion-pdf}{false}
%---------------------------------------------------------------------------------
\usepackage{hyperref}%rend actif les liens, références croisée, toc, ...
\ifthenelse{ \boolean{vsersion-pdf} }
{% pdf en ligne
\hypersetup{colorlinks,%
citecolor=blue,%
filecolor=blue,%
linkcolor=orange,%ou bien blue
urlcolor=blue}
}
{%version papier
\hypersetup{colorlinks,%
citecolor=black,%
filecolor=black,%
linkcolor=blue,%
urlcolor=black}
}
\usepackage{xargs} % Use more than one optional parameter in a new commands
\usepackage[pdftex,dvipsnames]{xcolor} % Coloured text etc.
% paramétrage de base
% cette commande est indispensable pour que les lien fonction dans la liste de récap de la FAQ
\usepackage[colorinlistoftodos,french,prependcaption,textsize=tiny]{todonotes}
%liste de nouvelles commandes customisée
\newcommandx{\unsure}[2][1=]{\todo[linecolor=red,backgroundcolor=red!25,bordercolor=red,#1]{#2}}
\newcommandx{\change}[2][1=]{\todo[linecolor=blue,backgroundcolor=blue!25,bordercolor=blue,#1]{#2}}
\newcommandx{\info}[2][1=]{\todo[linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{#2}}
\newcommandx{\improvement}[2][1=]{\todo[linecolor=Plum,backgroundcolor=Plum!25,bordercolor=Plum,#1]{#2}}
\newcommandx{\thiswillnotshow}[2][1=]{\todo[disable,#1]{#2}}
\newcounter{faqcounter}
\newcommandx{\faq}[2][1=]{
\refstepcounter{faqcounter}%
\ifthenelse{ \boolean{vsersion-pdf} }
{ \todo[fancyline,linecolor=red,backgroundcolor=blue!25,bordercolor=blue,color={red!100!green!33},size=\small]{%
\textbf{FAQ [\uppercase{#1}N°\thefaqcounter]:}~#2}}
{ \todo[linecolor=red,backgroundcolor=blue!25,bordercolor=blue,color={red!100!green!33},size=\small]{%
\textbf{FAQ [\uppercase{#1}N°\thefaqcounter]:}~#2}}}
%---------------------------------------------------------------------------------
%The idea is to define a newcommand\mycomment which adds a counter and optionally the initials of theauthor to the inserted todonote.
\newcounter{mycomment}
\newcommand{\mycomment}[2][]{%
% initials of the author (optional) + note in the margin
\refstepcounter{mycomment}%
{%
%\setstretch{0.7}% spacing cette ligne perturbe
\todo[color={red!100!green!33},size=\small]{%
\textbf{Commentaire [\uppercase{#1}-N°\themycomment]:}~#2}%
}}
%---------------------------------------------------------------------------------
% gestion de notes avec un mot encadré et placé au fil de l'eau dans le texte avec option livre ou online
% commande \margintip {mot}{commentaire}
\newcommand{\tipword}[1]{\colorlet{currentcolor}{.}{\color{red}\fbox{\color{currentcolor}#1}}}
\newcommand{\tipitself}[1]{
\ifthenelse{ \boolean{vsersion-pdf} }
{ \todo[backgroundcolor=OliveGreen!25,bordercolor=red,fancyline]{#1}}
{ \todo[backgroundcolor=OliveGreen!25,bordercolor=red]{#1}}
}
\newcommand{\margintip}[2]{\tipword{#1}\tipitself{#2}}
%---------------------------------------------------------------------------------
% commentaire à la word pour les auteurs
%---------------------------------------------------------------------------------
% part of custom is not compatible with hyperref
\makeatletter
\def\myaddcontentsline#1#2#3{%
\addtocontents{#1}{\protect\contentsline{#2}{#3}{voir \thesection\ page. \thepage}}}
\renewcommand{\@todonotes@addElementToListOfTodos}{%
\if@todonotes@colorinlistoftodos%
\myaddcontentsline{tdo}{todo}{{%
\colorbox{\@todonotes@currentbackgroundcolor}%
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
\ \@todonotes@caption}}%
\else%
\myaddcontentsline{tdo}{todo}{{\@todonotes@caption}}%
\fi}%
\newcommand*\mylistoftodos[1][nom par défaut]{%
\begingroup
\setbox\@tempboxa\hbox{see 9.9 at p. 99}%
\renewcommand*\@tocrmarg{\the\wd\@tempboxa}%
\renewcommand*\@pnumwidth{\the\wd\@tempboxa}%
\listoftodos[#1]%
\endgroup
}
\makeatother
%---------------------------------------------------------------------------------
% --------------------- FIN des commandes pour tonotes----------------------------
%---------------------------------------------------------------------------------
\begin{document}
\dominitoc
\pagestyle{empty}
\chapter{démo de todonotes}
\minitoc
\textbf{Ce code fonctionne correctement les hyperliens de la liste récap pointent sur les bonnes pages.}
\section{section todo en ligne}
\todo[inline]{The original todo note withouth changed colours.\newline Here's another line.}
\section{section test de todo dans la marge}
\lipsum[150]\unsure{Is this correct?}\unsure{I'm unsure about also!}
\lipsum[120]\change{Change this!}
\lipsum[110]\info{This can help me in chapter seven!}
\lipsum[110]\improvement{This really needs to be improved!\newline\newline What was I thinking?!}
\lipsum[5]
\section{section zone cachée à revoir}
\thiswillnotshow{This is hidden since option `disable' is chosen!}
\improvement[inline]{The following section needs to be rewritten!}
\section{Commentaires à la Word}
Toujours plus fort il peut être nécessaire de travailler à plusieurs et d'apporter des annotations diverses par auteur
The idea is to define a newcommand \verb+\mycomment + which adds a counter and optionally the initials of the author to the inserted todonote.\mycomment[FD]{Ceci est mon commentaire auteur FD}
\lipsum[1]\faq{il faut bien en faire une}
\lipsum[1]\faq{il faut bien en faire deux}
\lipsum[1]\faq{il faut bien en faire trois}
\lipsum[1]\margintip{mot louche}{il faut bien en faire quatre}
Now this is where the tip word comes in, it's \margintip{form}{this is the tip (\textbf{form})} can be shaped with the todo package \margintip{pas le bon texte}{il faut bien en faire cinq}
\lipsum[1] \faq{il faut bien en faire trois}
Now this is where the tip word comes in, it's \margintip{form}{this is the tip} can be shaped with the todo package
\lipsum[3-4]
\begin{enumerate}
\setlength\itemsep{0.05em} %semble ok
\item trop de todonotes devient impossible à bien gérer.
\item énumérer juste avant tous les points à traiter pour la rédaction du livre. A la fin cette liste est vide. \todo[fancyline]{du coup le texte est à enlever.}
\item Etablir une FAQ liée au livre .\faq[FD]{Et là le travail est à faire au fil de l'eau.}
\item Etablir une FAQ liée au livre \faq{aussi du coup le texte est à enlever.}
\end{enumerate}
\todo[inline]{vérifier que les liens de la faq pointe bien sur la bonne page actuellement il y a un bug.}
\lipsum[1]voila ici commentaire à la word.\mycomment[FD]{Ceci est mon commentaire} notez que marginpar is moved!!
\mylistoftodos[Liste des points a traiter...]
\end{document}
编辑以添加修复 hyperref 不完整与 4 参数与这一新步骤我有坏链接但我有链接:-)
\documentclass{book}
%% todonote_custom_next.tex fonctionnement ok sur les liens
\usepackage[english,french]{babel}%pour un document en français
%mini sommaire à chaque chapitre
\usepackage[french]{minitoc}
\setcounter{mtc}{5}
\usepackage{xspace}
%Permet à babel d'utiliser la macro xspace partout où c'est nécessaire. (Voir la doc de babel pour de plus amples explications.)
\usepackage[cyr]{aeguill}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum} % Dummytext
%---------------------------------------------------------------------------------
% divers codes pour todonote
\usepackage{ifthen}
% variable pour édition papier ou online
\newboolean{vsersion-pdf}
%VARIABLE À POSITIONNER À true POUR UNE VERSION PDF POUR SITE INTERNET
\setboolean{vsersion-pdf}{true}
%VARIABLE À POSITIONNER À false POUR EDITION PAPIER
%\setboolean{vsersion-pdf}{false}
%---------------------------------------------------------------------------------
\usepackage{hyperref}%rend actif les liens, références croisée, toc, ...
\ifthenelse{ \boolean{vsersion-pdf} }
{% pdf en ligne
\hypersetup{colorlinks,%
citecolor=blue,%
filecolor=blue,%
linkcolor=orange,%ou bien blue
urlcolor=blue}
}
{%version papier
\hypersetup{colorlinks,%
citecolor=black,%
filecolor=black,%
linkcolor=blue,%
urlcolor=black}
}
\usepackage{xargs} % Use more than one optional parameter in a new commands
\usepackage[pdftex,dvipsnames]{xcolor} % Coloured text etc.
% paramétrage de base
% cette commande est indispensable pour que les lien fonction dans la liste de récap de la FAQ
\usepackage[colorinlistoftodos,french,prependcaption,textsize=tiny]{todonotes}
%liste de nouvelles commandes customisée
\newcommandx{\unsure}[2][1=]{\todo[linecolor=red,backgroundcolor=red!25,bordercolor=red,#1]{#2}}
\newcommandx{\change}[2][1=]{\todo[linecolor=blue,backgroundcolor=blue!25,bordercolor=blue,#1]{#2}}
\newcommandx{\info}[2][1=]{\todo[linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{#2}}
\newcommandx{\improvement}[2][1=]{\todo[linecolor=Plum,backgroundcolor=Plum!25,bordercolor=Plum,#1]{#2}}
\newcommandx{\thiswillnotshow}[2][1=]{\todo[disable,#1]{#2}}
\newcounter{faqcounter}
\newcommandx{\faq}[2][1=]{
\refstepcounter{faqcounter}%
\ifthenelse{ \boolean{vsersion-pdf} }
{ \todo[fancyline,linecolor=red,backgroundcolor=blue!25,bordercolor=blue,color={red!100!green!33},size=\small]{%
\textbf{FAQ [\uppercase{#1}N°\thefaqcounter]:}~#2}}
{ \todo[linecolor=red,backgroundcolor=blue!25,bordercolor=blue,color={red!100!green!33},size=\small]{%
\textbf{FAQ [\uppercase{#1}N°\thefaqcounter]:}~#2}}}
%---------------------------------------------------------------------------------
%The idea is to define a newcommand\mycomment which adds a counter and optionally the initials of theauthor to the inserted todonote.
\newcounter{mycomment}
\newcommand{\mycomment}[2][]{%
% initials of the author (optional) + note in the margin
\refstepcounter{mycomment}%
{%
%\setstretch{0.7}% spacing cette ligne perturbe
\todo[color={red!100!green!33},size=\small]{%
\textbf{Commentaire [\uppercase{#1}-N°\themycomment]:}~#2}%
}}
%---------------------------------------------------------------------------------
% gestion de notes avec un mot encadré et placé au fil de l'eau dans le texte avec option livre ou online
% commande \margintip {mot}{commentaire}
\newcommand{\tipword}[1]{\colorlet{currentcolor}{.}{\color{red}\fbox{\color{currentcolor}#1}}}
\newcommand{\tipitself}[1]{
\ifthenelse{ \boolean{vsersion-pdf} }
{ \todo[backgroundcolor=OliveGreen!25,bordercolor=red,fancyline]{#1}}
{ \todo[backgroundcolor=OliveGreen!25,bordercolor=red]{#1}}
}
\newcommand{\margintip}[2]{\tipword{#1}\tipitself{#2}}
%---------------------------------------------------------------------------------
% commentaire à la word pour les auteurs
%---------------------------------------------------------------------------------
% part of custom is not compatible with hyperref
\makeatletter
\def\myaddcontentsline#1#2#3#4{%
% first solution without hyperref using
%\addtocontents{#1}{\protect\contentsline{#2}{#3}{see \thesection\ at page. \thepage}}}
% new solution to be compatible with hyperrref 4 parameter for \addtocontents
\addtocontents{#1}{\protect\contentsline{#2}{#3}{see \thesection\ at page \thepage}{#4}}}%
\renewcommand{\@todonotes@addElementToListOfTodos}{%
\if@todonotes@colorinlistoftodos%
\myaddcontentsline{tdo}{todo}{{%
\colorbox{\@todonotes@currentbackgroundcolor}%
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
\ \@todonotes@caption}}{fourth parameter}%
\else%
\myaddcontentsline{tdo}{todo}{{\@todonotes@caption}}{fourth parameter}%
\fi}%
\newcommand*\mylistoftodos[1][nom par défaut]{%
\begingroup
\setbox\@tempboxa\hbox{see 9.9 at p. 99}%
\renewcommand*\@tocrmarg{\the\wd\@tempboxa}%
\renewcommand*\@pnumwidth{\the\wd\@tempboxa}%
\listoftodos[#1]%
\endgroup
}
\makeatother
%---------------------------------------------------------------------------------
% --------------------- FIN des commandes pour tonotes----------------------------
%---------------------------------------------------------------------------------
\begin{document}
\dominitoc
\pagestyle{empty}
\chapter{démo de todonotes}
\minitoc
\textbf{Ce code fonctionne correctement les hyperliens de la liste récap pointent sur les bonnes pages.}
\section{section todo en ligne}
\todo[inline]{The original todo note withouth changed colours.\newline Here's another line.}
\section{section test de todo dans la marge}
\lipsum[150]\unsure{Is this correct?}\unsure{I'm unsure about also!}
\lipsum[120]\change{Change this!}
\lipsum[110]\info{This can help me in chapter seven!}
\lipsum[110]\improvement{This really needs to be improved!\newline\newline What was I thinking?!}
\lipsum[5]
\section{section zone cachée à revoir}
\thiswillnotshow{This is hidden since option `disable' is chosen!}
\improvement[inline]{The following section needs to be rewritten!}
\section{Commentaires à la Word}
Toujours plus fort il peut être nécessaire de travailler à plusieurs et d'apporter des annotations diverses par auteur
The idea is to define a newcommand \verb+\mycomment + which adds a counter and optionally the initials of the author to the inserted todonote.\mycomment[FD]{Ceci est mon commentaire auteur FD}
\lipsum[1]\faq{il faut bien en faire une}
\lipsum[1]\faq{il faut bien en faire deux}
\lipsum[1]\faq{il faut bien en faire trois}
\lipsum[1]\margintip{mot louche}{il faut bien en faire quatre}
Now this is where the tip word comes in, it's \margintip{form}{this is the tip (\textbf{form})} can be shaped with the todo package \margintip{pas le bon texte}{il faut bien en faire cinq}
\lipsum[1] \faq{il faut bien en faire trois}
Now this is where the tip word comes in, it's \margintip{form}{this is the tip} can be shaped with the todo package
\lipsum[3-4]
\begin{enumerate}
\setlength\itemsep{0.05em} %semble ok
\item trop de todonotes devient impossible à bien gérer.
\item énumérer juste avant tous les points à traiter pour la rédaction du livre. A la fin cette liste est vide. \todo[fancyline]{du coup le texte est à enlever.}
\item Etablir une FAQ liée au livre .\faq[FD]{Et là le travail est à faire au fil de l'eau.}
\item Etablir une FAQ liée au livre \faq{aussi du coup le texte est à enlever.}
\end{enumerate}
\todo[inline]{vérifier que les liens de la faq pointe bien sur la bonne page actuellement il y a un bug.}
\lipsum[1]voila ici commentaire à la word.\mycomment[FD]{Ceci est mon commentaire} notez que marginpar is moved!!
\mylistoftodos[Liste des points a traiter...]
%\listoftodos
\end{document}
我理解,基本的 MWE 是下一个
请参阅以下代码
\documentclass{book}
%% todonote_custom_MWE.tex fonctionnement ok sur les liens
\usepackage[english,french]{babel}%pour un document en français
\usepackage[cyr]{aeguill}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lipsum} % Dummytext
%---------------------------------------------------------------------------------
\usepackage{hyperref}%rend actif les liens, références croisée, toc, ...
\hypersetup{colorlinks,%
citecolor=blue,%
filecolor=blue,%
linkcolor=orange,%ou bien blue
urlcolor=blue}
\usepackage{xargs} % Use more than one optional parameter in a new commands
\usepackage[pdftex,dvipsnames]{xcolor} % Coloured text etc.
\usepackage[colorinlistoftodos,french,prependcaption,textsize=tiny]{todonotes}
%liste de nouvelles commandes customisée
\newcommandx{\info}[2][1=]{\todo[linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{#2}}
%---------------------------------------------------------------------------------
% part of custom is not compatible with hyperref
\makeatletter
\def\myaddcontentsline#1#2#3#4{%
% first solution without hyperref using
%\addtocontents{#1}{\protect\contentsline{#2}{#3}{see \thesection\ at page. \thepage}}}
% new solution to be compatible with hyperrref 4 parameter for \addtocontents
\addtocontents{#1}{\protect\contentsline{#2}{#3}{see \thesection\ at page \thepage}{#4}}}{}%
\renewcommand{\@todonotes@addElementToListOfTodos}{%
\if@todonotes@colorinlistoftodos%
\myaddcontentsline{tdo}{todo}{{%
\colorbox{\@todonotes@currentbackgroundcolor}%
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
\ \@todonotes@caption}}{blalbla}%
\else%
\myaddcontentsline{tdo}{todo}{{\@todonotes@caption}}{blabla}%
\fi}%
\newcommand*\mylistoftodos[1][nom par défaut]{%
\begingroup
\setbox\@tempboxa\hbox{see 9.9 at p. 99}%
\renewcommand*\@tocrmarg{\the\wd\@tempboxa}%
\renewcommand*\@pnumwidth{\the\wd\@tempboxa}%
\listoftodos[#1]%
\endgroup
}
\makeatother
%---------------------------------------------------------------------------------
\begin{document}
\chapter{démo de todonotes}
\lipsum[1]\info{il faut bien en faire une}
\lipsum[1]\info{il faut bien en faire deux}
\lipsum[1]\info{il faut bien en faire trois}
\mylistoftodos[Liste des points a traiter...]
\end{document}
你认为现在的基础知识对你的测试来说足够了吗(部分是为了帮助 Ulrike)?提前谢谢
答案1
您只需添加 always\@currentHref
作为第四个参数:
\documentclass{book}
%% todonote_custom_MWE.tex fonctionnement ok sur les liens
\usepackage[english,french]{babel}%pour un document en français
%\usepackage[cyr]{aeguill} %outdated
%\usepackage[latin1]{inputenc} % I have utf8 by default
\usepackage[T1]{fontenc}
\usepackage{lipsum} % Dummytext
\usepackage{xargs} % Use more than one optional parameter in a new commands
\usepackage[pdftex,dvipsnames]{xcolor} % Coloured text etc.
\usepackage[colorinlistoftodos,french,prependcaption,textsize=tiny]{todonotes}
%---------------------------------------------------------------------------------
\usepackage{hyperref}%rend actif les liens, références croisée, toc, ...
\hypersetup{colorlinks,%
citecolor=blue,%
filecolor=blue,%
linkcolor=orange,%ou bien blue
urlcolor=blue}
%liste de nouvelles commandes customisée
\newcommandx{\info}[2][1=]{\todo[linecolor=OliveGreen,backgroundcolor=OliveGreen!25,bordercolor=OliveGreen,#1]{#2}}
\makeatletter
\def\myaddcontentsline#1#2#3{%
\addtocontents{#1}{\protect\contentsline{#2}{#3}%
{see \thesection\ at page \thepage}{\@currentHref}}}{}% %<-------------
\renewcommand{\@todonotes@addElementToListOfTodos}{%
\if@todonotes@colorinlistoftodos%
\myaddcontentsline{tdo}{todo}{{%
\colorbox{\@todonotes@currentbackgroundcolor}%
{\textcolor{\@todonotes@currentbackgroundcolor}{o}}%
\ \@todonotes@caption}}%
\else%
\myaddcontentsline{tdo}{todo}{{\@todonotes@caption}}%
\fi}%
\newcommand*\mylistoftodos[1][nom par défaut]{%
\begingroup
\setbox\@tempboxa\hbox{see 9.9 at p. 99}%
\renewcommand*\@tocrmarg{\the\wd\@tempboxa}%
\renewcommand*\@pnumwidth{\the\wd\@tempboxa}%
\listoftodos[#1]%
\endgroup
}
\makeatother
%---------------------------------------------------------------------------------
\begin{document}
\chapter{démo de todonotes}
\lipsum[1]\info{il faut bien en faire une}
\lipsum[1]\info{il faut bien en faire deux}
\lipsum[1]\info{il faut bien en faire trois}
\mylistoftodos[Liste des points a traiter...]
\end{document}