我想将书签添加到字典样式的 PDF 中,这是 LaTex 文档的输出。我hyperref
使用可选参数加载了包bookmarks=true
。但我仍然没有在 PDF 输出中获得书签。字典样式的 Tex 代码可以在以下位置查找:
\documentclass[twoside,10pt,twocolumn]{book}
\usepackage{lipsum}
\usepackage{adforn}
\usepackage[top=2.0cm, bottom=3.5cm, left=2cm, right=2cm]{geometry}%
\usepackage{fancyhdr}
\usepackage[french, english]{babel}%
\usepackage[utf8x,utf8]{inputenc}
\usepackage{color}
\definecolor{marron}{RGB}{60,30,10}
\definecolor{darkblue}{RGB}{0,0,80}
\definecolor{lightblue}{RGB}{80,80,80}
\definecolor{darkgreen}{RGB}{0,80,0}
\definecolor{darkgray}{RGB}{0,80,0}
\definecolor{darkred}{RGB}{80,0,0}
\definecolor{shadecolor}{rgb}{0.97,0.97,0.97}
\usepackage[T1]{fontenc}
\usepackage{hanging}
\usepackage{tikz}
\usetikzlibrary{calc}
%---------------------------------------------------------------------------------------------%
\usepackage{fourier-orns}
\newcommand{\ornpar}{\noindent \textcolor{darkgray}{ \raisebox{-1.9pt} [10pt][10pt]{\leafright} \hrulefill \raisebox{-1.9pt}[10pt][10pt] {\leafright \decofourleft \decothreeleft \aldineright \decotwo \floweroneleft \decoone}}}%
\newcommand{\ornimpar}{\textcolor{darkgray}{\raisebox{-1.9pt}[10pt][10pt]{\decoone \floweroneright \decotwo \aldineleft \decothreeright \decofourright \leafleft} \hrulefill \raisebox{-1.9pt}[10pt][10pt]{\leafleft}}}%
%---------------------------------------------------------------------------------------------%
%---------------------------------------------------------------------------------------------%
\newcommand\entry[4][]{\hangpara{2em}{1} {\fontfamily{phv}\selectfont{\textbf{{#2}}}}\ #4\
#3 \ifx\relax #1 \relax \markboth{#2}{#2}\else\markboth{#1}{#1}\fi
\vspace*{5pt}\par} \nopagebreak[4]%
\newcommand*{\dictchar}[1]{\centerline{\LARGE\textbf{#1}}\vspace*{10pt}\par}%
%---------------------------------------------------------------------------------------------%
%---------------------------------------------------------------------------------------------%
% use fancyhdr or whatever you want to add
% the boxes to the header to make them appear
% on every page
% new counter to hold the current number of the
% letter to determine the vertical position
\newcounter{letternum}
% newcounter for the sum of all letters to get
% the right height of a box
\newcounter{lettersum}
\setcounter{lettersum}{26}
% some margin settings
\newlength{\thumbtopmargin}
\setlength{\thumbtopmargin}{2.06cm}%1cm
\newlength{\thumbbottommargin}
\setlength{\thumbbottommargin}{3cm}
% calculate the box height by dividing the page height
\newlength{\thumbheight}
\pgfmathsetlength{\thumbheight}{%
(\paperheight-\thumbtopmargin-\thumbbottommargin)%
/%
\value{lettersum}
}
% box width
\newlength{\thumbwidth}
\setlength{\thumbwidth}{1.5cm}
% style the boxes
\tikzset{
thumb/.style={
fill=black!50!red,
text=white,
minimum height=\thumbheight,
text width=\thumbwidth,
outer sep=0pt,
font=\sffamily\bfseries,
}
}
\newcommand{\oddthumb}[1]{%
% see pgfmanual.pdf for more information about this part
\begin{tikzpicture}[remember picture, overlay]
\node [thumb,text centered,anchor=north east,] at ($%
(current page.north east)-%
(0,\thumbtopmargin+\value{letternum}*\thumbheight)%
$) {#1};
\end{tikzpicture}
}
\newcommand{\eventhumb}[1]{%
% see pgfmanual.pdf for more information about this part
\begin{tikzpicture}[remember picture, overlay]
\node [thumb,text centered,anchor=north west,] at ($%
(current page.north west)-%
(0,\thumbtopmargin+\value{letternum}*\thumbheight)%
$) {#1};
\end{tikzpicture}
}
% create a new command to set a new lettergroup
\newcommand{\lettergroup}[1]{%
\fancypagestyle{chapterstart}{%
\fancyhf{}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\chead{\oddthumb{#1}}% chapters start only on odd pages
\cfoot{\thepage}
}
%\renewcommand{\headrulewidth}{0pt}
%\fancyhead{}
\fancyhead[LO]{ \raisebox{1em}{ \fontfamily{phv} \selectfont{\textbf{\rightmark}} } \oddthumb{#1}}%
\fancyhead[RE]{ \raisebox{1em}{ \fontfamily{phv} \selectfont{\textbf{\leftmark}} } \eventhumb{#1}}
\fancyhead[LE]{{\fontfamily{phv}\selectfont{\textbf{\raisebox{1em}{\rightmark}}}}}
\fancyhead[CO,CE]{\color{darkgray} \raisebox{-2.1pt}[10pt][10pt] {\leafright} \hrulefill \raisebox{-2.1pt}[10pt][10pt]{~~~\decofourleft \decotwo \decofourright~~~} \hrulefill \raisebox{-2.1pt}[10pt][10pt]{ \leafleft}}
\fancyhead[RO]{{\fontfamily{phv}\selectfont{\textbf{\raisebox{1em}{\leftmark}}}}}
% step the counter of the letters
\stepcounter{letternum}
}
%---------------------------------------------------------------------------------------------%
%---------------------------------------------------------------------------------------------%
\fancypagestyle{basicstyle}{%
\fancyhf{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhead[LE,RO]{\textbf{\chaptitle}}
\fancyhead[LO,RE]{\textbf{\thepage}}
\fancyfoot[LE,RO]{\thepage}}
\fancypagestyle{dictstyle}{%
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot[LO]{
\ornimpar \\ \hfill \textcolor{darkgray}{\large \leafNE ~~~ \raisebox{-0.35em}{\textsf{\textbf{\thepage}}} } }
\fancyfoot[RE]{\ornpar \\ \textcolor{darkgray}{\large \raisebox{-0.35em}{\textsf{\textbf{\thepage}}} ~~~ \reflectbox{\leafNE}} \hfill }
}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0pt}
%---------------------------------------------------------------------------------------------%
\usepackage[bookmarks=true]{hyperref}
%\pagestyle{basicstyle}
%----------------------------------------------------------------------------------------------%
\begin{document}
%\maketitle
\begin{titlepage}
\centering\Huge \adforn{26}\adforn{21}\quad\adforn{11}\quad\adforn{49}\adforn{54}
\vspace*{2em}\centering\bf
\texttt{My Dictionary}\par
\vspace{2em}
{\hfill\centering \large{The Author}\hfill}
\end{titlepage}
\newpage
%----------------------------------------------------------------------------------------------%
\pagestyle{dictstyle}%dictstyle
\lettergroup{A}
\dictchar{A}
% \hyperlink{A}{\dictchar{A}}
\entry[headwords]{headwords}{translations}{\textsf{/yinfu/}}
\entry[headwords2]{headwords2}{translations2}{/yinfu/}
\entry[philosophy]{philosophy} {Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit, vestibulum ut, \emph{plac- erat ac}} {/yinfu/}
\entry[Math]{Math}{Lorem ipsum dolor sit amet}{/yinfu/}
\entry[Physics]{Physics}{\lipsum[1-2]}{/yinfu/}
\entry[Nature]{Nature}{\lipsum}{/yinfu/}
\clearpage
\lettergroup{B}
\dictchar{B}
\entry[headwords]{headwords}{translations}{/yinfu/}
\entry[headwords2]{headwords2}{translations2}{/yinfu/}
\clearpage
\lettergroup{C}
\dictchar{C}
\entry[headwords]{headwords}{translations}{/yinfu/}
\entry[headwords2]{headwords2}{translations2}{/yinfu/}
\clearpage
\end{document}
提前感谢您的建议。
答案1
我自己解决了这个问题,下面展示调整后的代码。这可能对一些初学者有帮助(至少像我一样)。当我之前发布我的问题时,我不知道如何设置链接锚点。我通过使用\label{name}
内部letter group
和\pdfbookmark[section]{A or B ...}{name}
之前的命令解决了这个问题letter group
。但是,我不知道这种方法是否是标准的,或者我们有其他更好的解决方案。MWE:
\documentclass[twoside,10pt,twocolumn]{book}
\usepackage{lipsum}
\usepackage{adforn}
\usepackage[top=2.0cm, bottom=3.5cm, left=2cm, right=2cm]{geometry}%
\usepackage{fancyhdr}
\usepackage[french, english]{babel}%
\usepackage[utf8x,utf8]{inputenc}
\usepackage{color}
\definecolor{marron}{RGB}{60,30,10}
\definecolor{darkblue}{RGB}{0,0,80}
\definecolor{lightblue}{RGB}{80,80,80}
\definecolor{darkgreen}{RGB}{0,80,0}
\definecolor{darkgray}{RGB}{0,80,0}
\definecolor{darkred}{RGB}{80,0,0}
\definecolor{shadecolor}{rgb}{0.97,0.97,0.97}
\usepackage[T1]{fontenc}
\usepackage{hanging}
\usepackage{tikz}
\usetikzlibrary{calc}
%---------------------------------------------------------------------------------------------%
\usepackage{fourier-orns}
\newcommand{\ornpar}{\noindent \textcolor{darkgray}{ \raisebox{-1.9pt} [10pt][10pt]{\leafright} \hrulefill \raisebox{-1.9pt}[10pt][10pt] {\leafright \decofourleft \decothreeleft \aldineright \decotwo \floweroneleft \decoone}}}%
\newcommand{\ornimpar}{\textcolor{darkgray}{\raisebox{-1.9pt}[10pt][10pt]{\decoone \floweroneright \decotwo \aldineleft \decothreeright \decofourright \leafleft} \hrulefill \raisebox{-1.9pt}[10pt][10pt]{\leafleft}}}%
%---------------------------------------------------------------------------------------------%
%---------------------------------------------------------------------------------------------%
\newcommand\entry[4][]{\hangpara{2em}{1} {\fontfamily{phv}\selectfont{\textbf{{#2}}}}\ #4\
#3 \ifx\relax #1 \relax \markboth{#2}{#2}\else\markboth{#1}{#1}\fi
\vspace*{5pt}\par} \nopagebreak[4]%
\newcommand*{\dictchar}[1]{\centerline{\LARGE\textbf{#1}}\vspace*{10pt}\par}%
%---------------------------------------------------------------------------------------------%
%---------------------------------------------------------------------------------------------%
% use fancyhdr or whatever you want to add
% the boxes to the header to make them appear
% on every page
% new counter to hold the current number of the
% letter to determine the vertical position
\newcounter{letternum}
% newcounter for the sum of all letters to get
% the right height of a box
\newcounter{lettersum}
\setcounter{lettersum}{26}
% some margin settings
\newlength{\thumbtopmargin}
\setlength{\thumbtopmargin}{2.06cm}%1cm
\newlength{\thumbbottommargin}
\setlength{\thumbbottommargin}{3cm}
% calculate the box height by dividing the page height
\newlength{\thumbheight}
\pgfmathsetlength{\thumbheight}{%
(\paperheight-\thumbtopmargin-\thumbbottommargin)%
/%
\value{lettersum}
}
% box width
\newlength{\thumbwidth}
\setlength{\thumbwidth}{1.5cm}
% style the boxes
\tikzset{
thumb/.style={
fill=black!50!red,
text=white,
minimum height=\thumbheight,
text width=\thumbwidth,
outer sep=0pt,
font=\sffamily\bfseries,
}
}
\newcommand{\oddthumb}[1]{%
% see pgfmanual.pdf for more information about this part
\begin{tikzpicture}[remember picture, overlay]
\node [thumb,text centered,anchor=north east,] at ($%
(current page.north east)-%
(0,\thumbtopmargin+\value{letternum}*\thumbheight)%
$) {#1};
\end{tikzpicture}
}
\newcommand{\eventhumb}[1]{%
% see pgfmanual.pdf for more information about this part
\begin{tikzpicture}[remember picture, overlay]
\node [thumb,text centered,anchor=north west,] at ($%
(current page.north west)-%
(0,\thumbtopmargin+\value{letternum}*\thumbheight)%
$) {#1};
\end{tikzpicture}
}
% create a new command to set a new lettergroup
\newcommand{\lettergroup}[1]{%
\fancypagestyle{chapterstart}{%
\fancyhf{}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\chead{\oddthumb{#1}}% chapters start only on odd pages
\cfoot{\thepage}
}
%\renewcommand{\headrulewidth}{0pt}
%\fancyhead{}
\fancyhead[LO]{ \raisebox{1em}{ \fontfamily{phv} \selectfont{\textbf{\rightmark}} } \oddthumb{#1}}%
\fancyhead[RE]{ \raisebox{1em}{ \fontfamily{phv} \selectfont{\textbf{\leftmark}} } \eventhumb{#1}}
\fancyhead[LE]{{\fontfamily{phv}\selectfont{\textbf{\raisebox{1em}{\rightmark}}}}}
\fancyhead[CO,CE]{\color{darkgray} \raisebox{-2.1pt}[10pt][10pt] {\leafright} \hrulefill \raisebox{-2.1pt}[10pt][10pt]{~~~\decofourleft \decotwo \decofourright~~~} \hrulefill \raisebox{-2.1pt}[10pt][10pt]{ \leafleft}}
\fancyhead[RO]{{\fontfamily{phv}\selectfont{\textbf{\raisebox{1em}{\leftmark}}}}}
% step the counter of the letters
\stepcounter{letternum}
}
%---------------------------------------------------------------------------------------------%
%---------------------------------------------------------------------------------------------%
\fancypagestyle{basicstyle}{%
\fancyhf{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0pt}
\fancyhead[LE,RO]{\textbf{\chaptitle}}
\fancyhead[LO,RE]{\textbf{\thepage}}
\fancyfoot[LE,RO]{\thepage}}
\fancypagestyle{dictstyle}{%
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot[LO]{
\ornimpar \\ \hfill \textcolor{darkgray}{\large \leafNE ~~~ \raisebox{-0.35em}{\textsf{\textbf{\thepage}}} } }
\fancyfoot[RE]{\ornpar \\ \textcolor{darkgray}{\large \raisebox{-0.35em}{\textsf{\textbf{\thepage}}} ~~~ \reflectbox{\leafNE}} \hfill }
}
\setlength{\columnsep}{20pt}
\setlength{\columnseprule}{0pt}
%---------------------------------------------------------------------------------------------%
\usepackage[bookmarks=true]{hyperref}
\usepackage{bookmark}
%\pagestyle{basicstyle}
%----------------------------------------------------------------------------------------------%
\begin{document}
%\maketitle
\begin{titlepage}
\centering\Huge \adforn{26}\adforn{21}\quad\adforn{11}\quad\adforn{49}\adforn{54}
\vspace*{2em}\centering\bf
\texttt{My Dictionary}\par
\vspace{2em}
{\hfill\centering \large{The Author}\hfill}
\end{titlepage}
\newpage
%----------------------------------------------------------------------------------------------%
\pdfbookmark[section]{A}{sec1}
\pagestyle{dictstyle}%dictstyle
\lettergroup{A}
\dictchar{A}
\label{sec1}
% \hyperlink{A}{\dictchar{A}}
\entry[headwords]{headwords}{translations}{\textsf{/yinfu/}}
\entry[headwords2]{headwords2}{translations2}{/yinfu/}
\entry[philosophy]{philosophy} {Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit, vestibulum ut, \emph{plac- erat ac}} {/yinfu/}
\entry[Math]{Math}{Lorem ipsum dolor sit amet}{/yinfu/}
\entry[Physics]{Physics}{\lipsum[1-2]}{/yinfu/}
\entry[Nature]{Nature}{\lipsum}{/yinfu/}
\clearpage
\pdfbookmark[section]{B}{sec2}
\lettergroup{B}
\dictchar{B}
\label{sec2}
\entry[headwords]{headwords}{translations}{/yinfu/}
\entry[headwords2]{headwords2}{translations2}{/yinfu/}
\clearpage
\pdfbookmark[section]{C}{sec3}
\lettergroup{C}
\dictchar{C}
\label{sec3}
\entry[headwords]{headwords}{translations}{/yinfu/}
\entry[headwords2]{headwords2}{translations2}{/yinfu/}
\clearpage
\end{document}
上面的Tex代码的输出如下: