Latex,pdflatex:PDF文件上的书签问题

Latex,pdflatex:PDF文件上的书签问题

我遇到了一些困难:

在我编写完文档(复杂)后,pdf 文件中各节的书签不指向其自身章节的相应节。目前有 5 个章节,未编号(\chapter*{...})。第 2 章第 1 节的书签指向第 1 章第 1 节,第 2 章第 2 节的书签指向第 1 章的书签,对于同一节层次结构中的所有其他节,当它们存在于第 1 章中时,它们指向第 1 章的书签。

在这里,我在我的 .tex 文件上添加了确切的序言。我想要取消章节编号,我想要重新初始化每个章节的编号部分和脚注...所以,书签有问题。(?)

% !Mode:: "TeX:UTF-8"
%!TEX vérification orthographique = fr-FR
% ----------------------------------------------------
\documentclass[11pt,a4paper,openany]{book}% smfbook
\special{papersize=210mm,297mm}
% ---------------------------------------------------
% encodage caractères ; gestion des accents; rendu pdf
\usepackage{etex}%
\usepackage{ucs}%
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}%
\usepackage{lmodern}
\usepackage{tipa}%
\usepackage{tipx}%
\usepackage{aeguill}
\usepackage{xspace}
\usepackage{relsize}
% ---------------------------------------------------
% style de mise en page général du document
% autres: Glenn,Lenny,Conny,Rejne et Bjarne, Bjornstrup
\usepackage[Sonny]{fncychap}% 
\usepackage[geometry,weather,misc,clock]{ifsym}%
% ---------------------------------------------------
% gestions des mathématiques : l'AMS + mathtools ; caractères
\usepackage{mathtools,amsmath,amssymb,amsfonts,mathrsfs,bm}
\usepackage{latexsym}
\usepackage{dcolumn}%
\usepackage[nice]{nicefrac}%
\allowdisplaybreaks
% Système international d'unité - l'indispensable 
\usepackage{siunitx}%
% ---------------------------------------------------
% Geometrie du document + Notes en marge
% ---------------------------------------------------
%\usepackage{layout}
\usepackage{geometry}%
\geometry{margin=22.5mm,%
includeheadfoot,footskip=32pt}
% réglages fin de la zone de texte imprimable
\textwidth 15.5cm%
\textheight 23cm%
\oddsidemargin 0pt%3mm%
\evensidemargin 0pt%3mm%
\topmargin -20pt
\headsep 20pt %4mm%
\headheight 20pt%8mm 
% ---------------------------------------------------
% Gestion des pieds de page
\usepackage[bottom]{footmisc}
% ---------------------------------------------------
% Francisation complète du document
% ---------------------------------------------------
\usepackage[french]{babel}
\DecimalMathComma %supprime l'espace fin après la virgule en mode math
\AddThinSpaceBeforeFootnotes
\frenchspacing% better looking spacing
\frenchbsetup{FrenchSuperscripts=true}
% ---------------------------------------------------
% Customize (header and) footer
% ---------------------------------------------------
\usepackage{fancyhdr}
\pagestyle{fancy}
\rhead{}
\chead{\footnotesize Cadran Info \No{}35 --- Mai 2017}% A modifier ici
\lhead{}
\cfoot{}
\rfoot{\footnotesize ~\\ \thepage}
\renewcommand{\headrulewidth}{0.0pt}% no bar on top of page
\renewcommand{\footrulewidth}{0.0pt}% bar on bottom of page
% ---------------------------------------------------
\usepackage[active]{srcltx}% pour passer du source au pdf et vice versa
% ---------------------------------------------------
% --- Liens Hypertextes%
\usepackage[pdftex,%
  plainpages={false},%
  breaklinks={true},%
  colorlinks={true},%
  urlcolor={blue},%
  citecolor={blue},%
  linkcolor={blue},%
  linktocpage={true},%
  filecolor={red},%
  bookmarks={true},%
  bookmarksopen={true},%
  bookmarksopenlevel={4},%
  bookmarksnumbered={true},%
  pdflang={fr},%
  pdftitle={Cadran Info num\'ero 35 - Mai 2017},%
  pdfauthor={Philippe Sauvageot, Dominique Collin},%
  pdfsubject={Bulletin de la Commission des Cadrans Solaires de la Soci\'et'e Astronomique de France},%
  pdfkeywords={cadran solaire \`a r\'eflexion;bloc gnomonique;histoire, \'Equation du temps;cadran en Corse;cadran crucifix;th\'eorie;r\'ealisation},%
 % pdfproducer{Commission des Cadrans Solaires},%
  pdfpagelabels,%
  pdfpagemode={FullScreen},%
  pdfview={Fit},%
  pdfstartview={Fit},%
  pdfpagelayout={SinglePage},%
  pdfdisplaydoctitle,%
  pdfpagetransition={Dissolve}%Glitter;Wipe;Split;Box;Blinds; 
]{hyperref}% Activate hyperlinks
% ---to ensure the hyperlinks actually jump to the right place
\makeatletter
\newcommand\org@hypertarget{}
\let\org@hypertarget\hypertarget
\renewcommand\hypertarget[2]{%
\Hy@raisedlink{\org@hypertarget{#1}{}}#2%
}
\makeatother
%
\usepackage[%
  open,%
  openlevel=2,%
  atend,%
  numbered%
]{bookmark}%
\bookmarksetup{%
  addtohook={%
    \ifnum\bookmarkget{level}<1 %
      \bookmarksetup{bold}%
    \fi}
}%
% --------
% supprime le numero de page sur la premiere page de chaque chapitre...
\makeatletter
\let\ps@plain=\ps@empty
\makeatother
%
\makeatletter
\renewcommand{\@chapapp}{}
\makeatother
% Profondeur de \subsubsection = 4
\setcounter{tocdepth}{4}     % Dans la table des matieres
\setcounter{secnumdepth}{4}  % Avec un numero.
% ---------------------------------------------------
% redefinition de l'index : index en Trois colonnes...
\makeatletter
\renewenvironment{theindex}{%
\protect
\begin{multicols}{3}[\chapter*{\indexname}][10\baselineskip]%
\addcontentsline{toc}{chapter}{\indexname}%
\setlength\parindent{0pt}\pagestyle{plain}\let\item\@idxitem}
{\end{multicols}}%
\protect
\makeatother
% -------
\makeindex % pour creer un index.
\thispagestyle{empty}
% --------------------------------------------------
\begin{document}
% --------------------------------------------------
\renewcommand{\bibname}{R\'ef\'erences}
\addtocontents{toc}{~\hfill\textbf{Page}\par}
% ------
\setcounter{page}{1} % forçage du compteur de page à 1
\pdfbookmark[1]{Contents}{table} 

\cleardoublepage
% Une table des matières...
\renewcommand{\contentsname}{Sommaire} % Dans le corps du document,avant la commande\tableofcontents.
{\relsize{-1}{\tableofcontents}} % Fr

% ------ pour re-initialiser la numérotation des chapitres et sections
\renewcommand{\thechapter}{}
\renewcommand{\thesection}{\arabic{section}}
% ------

\setcounter{section}{0}
\setcounter{figure}{0}%
\setcounter{table}{0}%
\setcounter{footnote}{0}% renouvelle la numérotation des notes de bas de page pour le chapitre.
% ------------------------
\phantomsection
\chapter*{\textbf{Premier chapitre\dots} par \textsc{toto 1}\label{toto1}}
\addcontentsline{toc}{chapter}{\textbf{Premier chapitre\dots} par \textsc{toto}}
% ------------------------
\hypertarget{test1}{~}
% ------------------------
\emph{Ceci constitue le premier chapitre}. 

Il est non numéroté.

Mais les sections le sont quand à elles.
%
% ------------------------
\section{Une section du chapitre 1}
bla , bla. 

Une note de bas de page\footnote{Test de note de bas de page}
\newpage
\subsection{Une sous section du chapitre 1}
Sans commentaire\ldots\footnote{Encore unee autre note de bas de page.}
% ------------------------
\setcounter{section}{0}
\setcounter{figure}{0}%
\setcounter{table}{0}%
\setcounter{footnote}{0}% renouvelle la numérotation des notes de bas de page pour le chapitre.
% ------------------------
\phantomsection
\chapter*{\textbf{Deuxième chapitre\dots} par \textsc{toto 2}\label{toto2}}
\addcontentsline{toc}{chapter}{\textbf{Deuxième chapitre\dots)} par \textsc{toto}}
% ------------------------
\hypertarget{test2}{~}
% ------------------------
\emph{Ceci constitue le 2\ième{} chapitre}\footnote{Test de note de bas de page. Les compteurs sont bien remis à zéro.}

Il est non numéroté...
% ------------------------
\section{Une section du chapitre 2}
bla , bla. 

Une note de bas de page\footnote{Test de note de bas de page}
\newpage

\subsection{Une sous section du chapitre 2}
Sans commentaire\ldots\footnote{Encore une autre note de bas de page}

\subsection{Une sous section du chapitre 2}
Allez, encore une autre\ldots\footnote{Encore une autre note de bas de page}
% --------------------------------------------------
 \end{document}
% --------------------------------------------------

例如:\section*{}.aux 文件中的每一章都有相同的 ID 号。因此,在 pdf 文件中,我调用第 3 章第 2 节的书签,这指向第 1 章第 2 节...另一章也是如此...

如何使第 2 章第 2 节的书签指向正确位置?如何解决此书签问题?当我\chapter*{}在 documentclass 中使用时出现问题,并且各节的自动编号与文件中的book编号相同。{section.0.1}.aux

我感谢您帮助我找到更正书签地址的方法。

D. 科林

答案1

问题在于,章节(子章节、子子章节)的编号在每个未编号的章节处重新开始。然后,章节编号不再是唯一的。这些编号用于构造锚点名称,锚点名称必须是唯一的。

软件包hyperref已使用\theH<counter>if available 为 获得唯一编号\the<counter>。可通过\theHchapter为未编号的章节定义来修复此问题,例如:

\chapter*{Premiere chapitre}
\def\theHchapter{1}
...
\chapter*{Deuxième chapitre}
\def\theHchapter{2}
...

LaTeX 以一种困难的方式扩展了软件包的选项,这可能会破坏文本中给出的信息条目的任意 TeX 代码。因此,应在 中加载软件包后给出这些选项\hypersetup。此外,建议使用pdfencoding=autopdfencoding=unicode来在书签和 PDF 信息条目中启用 Unicode。

\usepackage[pdfencoding=auto, ...]{hyperref}
\hypersetup{
  pdftitle={...},
  pdfauthor={...},
  % ...
}

多次指定软件包geometry。然后,使用它并删除低级内容\special{papersize=...}(使用正确的驱动程序完成geometry)。此外,设置\textwidth=..., ... 可以用选项替换。

% More or less right after \documentclass, when
% the package is loaded the first time:
\usepackage[
  includefootheight,
  headheight=20pt,
  footskip=22pt,
  % ...
]{geometry}

相关内容