我使用的代码来自Harish Kumar 对这个问题的精彩回答创建指向目录的链接。但是,我想对其进行修改,以便链接不会出现在前两页。
我尝试使用该\everypage
包创建一个钩子,以便从函数中排除前两页,但我不确定如何嵌套该钩子以适应 \ifthenelse。我尝试以各种组合方式组合一个钩子,但每次都导致编译错误。
下面是代码,我再次从之前链接的优秀答案中提取了它:
\documentclass{article}
\usepackage{blindtext}
\usepackage{eso-pic}
\usepackage{hyperref}
\usepackage{ifthen}
\newboolean{linktoc}
\setboolean{linktoc}{true} %%% uncomment to show answers properly
%\setboolean{linktoc}{false} %%% comment to show answers properly
\newcommand\AtPageUpperRight[1]{\AtPageUpperLeft{%
\put(\LenToUnit{\paperwidth},\LenToUnit{-0.3\paperheight}){#1}%
}}%
\newcommand\AtPageLowerRight[1]{\AtPageLowerLeft{%
\put(\LenToUnit{\paperwidth},\LenToUnit{0.3\paperheight}){#1}%
}}%
\ifthenelse{\boolean{linktoc}}%
{%
\AddToShipoutPictureBG{%
\AtPageUpperRight{\put(-70,0){\hyperref[toc]{Go to TOC}}}
\AtPageLowerRight{\put(-70,0){\hyperref[toc]{Go to TOC}}}
}%
}%
{}%
\begin{document}
\tableofcontents\label{toc}
\Blinddocument
\end{document}
(我对使用条件句还比较陌生,所以如果我的标题或问题使用了错误的术语,我深感抱歉——如果是这样,请告诉我,以便我可以编辑它并使我的问题更清楚)
答案1
您可以根据计数器的值进行调节page
,因为您在发货时添加内容(当计数器page
正确时):
\documentclass{article}
\usepackage{blindtext}
\usepackage{eso-pic,hyperref}
\newif\iflinktoc
\linktoctrue%%% uncomment to show answers properly
%\linktocfalse%%% comment to show answers properly
\newcommand\AtPageUpperRight[1]{\AtPageUpperLeft{%
\put(\LenToUnit{\paperwidth},\LenToUnit{-0.3\paperheight}){#1}%
}}%
\newcommand\AtPageLowerRight[1]{\AtPageLowerLeft{%
\put(\LenToUnit{\paperwidth},\LenToUnit{0.3\paperheight}){#1}%
}}%
\newcommand{\addlinktotoc}{\hyperref[toc]{Go to ToC}}
\iflinktoc
\AddToShipoutPictureBG{%
\ifnum\value{page}<3\else
\AtPageUpperRight{\put(-70,0){\addlinktotoc}}%
\AtPageLowerRight{\put(-70,0){\addlinktotoc}}%
\fi
}%
\fi
\begin{document}
\tableofcontents\label{toc}
\Blinddocument
\end{document}
我已经不再使用ifthen
, 基于该包为何ifthen
过时了?和如何跟上软件包并知道哪些已经过时了?。