我正在尝试让 acro 与 classicthesis 和 hyperref 选项一起工作,但无济于事,尽管当删除 acro 中的 hyperref 选项时错误就消失了。
MWE 在这方面相当长。本质上,我将 classicthesis-config.tex 和 FrontBackmatter/Contents.tex 修改为以下内容。
classicthesis-配置.tex
%!TEX root = ./ClassicThesis.tex
% ****************************************************************************************************
% classicthesis-config.tex
% formerly known as loadpackages.sty, classicthesis-ldpkg.sty, and classicthesis-preamble.sty
% Use it at the beginning of your ClassicThesis.tex, or as a LaTeX Preamble
% in your ClassicThesis.{tex,lyx} with \input{classicthesis-config}
% ****************************************************************************************************
% If you like the classicthesis, then I would appreciate a postcard.
% My address can be found in the file ClassicThesis.pdf. A collection
% of the postcards I received so far is available online at
% http://postcards.miede.de
% ****************************************************************************************************
% ****************************************************************************************************
% 1. Configure classicthesis for your needs here, e.g., remove "drafting" below
% in order to deactivate the time-stamp on the pages
% ****************************************************************************************************
\PassOptionsToPackage{eulerchapternumbers,listings,drafting,%
pdfspacing,%floatperchapter,%linedheaders,%
subfig,beramono,eulermath,parts}{classicthesis}
% ********************************************************************
% Available options for classicthesis.sty
% (see ClassicThesis.pdf for more information):
% drafting
% parts nochapters linedheaders
% eulerchapternumbers beramono eulermath pdfspacing minionprospacing
% tocaligned dottedtoc manychapters
% listings floatperchapter subfig
% ********************************************************************
% ********************************************************************
% Triggers for this config
% ********************************************************************
\usepackage{ifthen}
\newboolean{enable-backrefs} % enable backrefs in the bibliography
\setboolean{enable-backrefs}{false} % true false
% ****************************************************************************************************
% ****************************************************************************************************
% 2. Personal data and user ad-hoc commands
% ****************************************************************************************************
\newcommand{\myTitle}{A Classic Thesis Style\xspace}
\newcommand{\mySubtitle}{An Homage to The Elements of Typographic Style\xspace}
\newcommand{\myDegree}{Doktor-Ingenieur (Dr.-Ing.)\xspace}
\newcommand{\myName}{Andr\'e Miede\xspace}
\newcommand{\myProf}{Put name here\xspace}
\newcommand{\myOtherProf}{Put name here\xspace}
\newcommand{\mySupervisor}{Put name here\xspace}
\newcommand{\myFaculty}{Put data here\xspace}
\newcommand{\myDepartment}{Put data here\xspace}
\newcommand{\myUni}{Put data here\xspace}
\newcommand{\myLocation}{Darmstadt\xspace}
\newcommand{\myTime}{August 2012\xspace}
\newcommand{\myVersion}{version 4.1\xspace}
% ********************************************************************
% Setup, finetuning, and useful commands
% ********************************************************************
\newcounter{dummy} % necessary for correct hyperlinks (to index, bib, etc.)
\newlength{\abcd} % for ab..z string length calculation
\providecommand{\mLyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}
\newcommand{\ie}{i.\,e.}
\newcommand{\Ie}{I.\,e.}
\newcommand{\eg}{e.\,g.}
\newcommand{\Eg}{E.\,g.}
% ****************************************************************************************************
\usepackage[usenames,dvipsnames,table]{xcolor}
\usepackage[shortlabels]{enumitem}
\usepackage{mfirstuc,relsize,acro}
\usepackage{environ}
% ****************************************************************************************************
% 3. Loading some handy packages
% ****************************************************************************************************
% ********************************************************************
% Packages with options that might require adjustments
% ********************************************************************
\PassOptionsToPackage{latin9}{inputenc} % latin9 (ISO-8859-9) = latin1+"Euro sign"
\usepackage{inputenc}
%\PassOptionsToPackage{ngerman,american}{babel} % change this to your language(s)
% Spanish languages need extra options in order to work with this template
%\PassOptionsToPackage{spanish,es-lcroman}{babel}
\usepackage{babel}
\PassOptionsToPackage{square,numbers}{natbib}
\usepackage{natbib}
\PassOptionsToPackage{fleqn}{amsmath} % math environments and more by the AMS
\usepackage{amsmath}
% ********************************************************************
% General useful packages
% ********************************************************************
\PassOptionsToPackage{T1}{fontenc} % T2A for cyrillics
\usepackage{fontenc}
\usepackage{textcomp} % fix warning with missing font shapes
\usepackage{scrhack} % fix warnings when using KOMA with listings package
\usepackage{xspace} % to get the spacing after macros right
\usepackage{mparhack} % get marginpar right
%\usepackage{fixltx2e} % fixes some LaTeX stuff
%\PassOptionsToPackage{printonlyused,smaller}{acronym}
% \usepackage{acronym} % nice macros for handling all acronyms in the thesis
%\renewcommand*{\acsfont}[1]{\textssc{#1}} % for MinionPro
%\renewcommand{\bflabel}[1]{{#1}\hfill} % fix the list of acronyms
% ****************************************************************************************************
% ****************************************************************************************************
% 4. Setup floats: tables, (sub)figures, and captions
% ****************************************************************************************************
\usepackage{tabularx} % better tables
\setlength{\extrarowheight}{3pt} % increase table row height
\newcommand{\tableheadline}[1]{\multicolumn{1}{c}{\spacedlowsmallcaps{#1}}}
\newcommand{\myfloatalign}{\centering} % to be used with each float for alignment
\usepackage{caption}
\captionsetup{format=hang,font=small}
\usepackage{subfig}
% ****************************************************************************************************
% ****************************************************************************************************
% 5. Setup code listings
% ****************************************************************************************************
\usepackage{listings}
%\lstset{emph={trueIndex,root},emphstyle=\color{BlueViolet}}%\underbar} % for special keywords
\lstset{language=[LaTeX]Tex,%C++,
keywordstyle=\color{RoyalBlue},%\bfseries,
basicstyle=\small\ttfamily,
%identifierstyle=\color{NavyBlue},
commentstyle=\color{Green}\ttfamily,
stringstyle=\rmfamily,
numbers=none,%left,%
numberstyle=\scriptsize,%\tiny
stepnumber=5,
numbersep=8pt,
showstringspaces=false,
breaklines=true,
frameround=ftff,
frame=single,
belowcaptionskip=.75\baselineskip
%frame=L
}
% ****************************************************************************************************
% ****************************************************************************************************
% 6. PDFLaTeX, hyperreferences and citation backreferences
% ****************************************************************************************************
% ********************************************************************
% Using PDFLaTeX
% ********************************************************************
\PassOptionsToPackage{pdftex,hyperfootnotes=false,pdfpagelabels}{hyperref}
\usepackage{hyperref} % backref linktocpage pagebackref
\pdfcompresslevel=9
\pdfadjustspacing=1
\PassOptionsToPackage{pdftex}{graphicx}
\usepackage{graphicx}
% ********************************************************************
% Setup the style of the backrefs from the bibliography
% (translate the options to any language you use)
% ********************************************************************
\newcommand{\backrefnotcitedstring}{\relax}%(Not cited.)
\newcommand{\backrefcitedsinglestring}[1]{(Cited on page~#1.)}
\newcommand{\backrefcitedmultistring}[1]{(Cited on pages~#1.)}
\ifthenelse{\boolean{enable-backrefs}}%
{%
\PassOptionsToPackage{hyperpageref}{backref}
\usepackage{backref} % to be loaded after hyperref package
\renewcommand{\backreftwosep}{ and~} % separate 2 pages
\renewcommand{\backreflastsep}{, and~} % separate last of longer list
\renewcommand*{\backref}[1]{} % disable standard
\renewcommand*{\backrefalt}[4]{% detailed backref
\ifcase #1 %
\backrefnotcitedstring%
\or%
\backrefcitedsinglestring{#2}%
\else%
\backrefcitedmultistring{#2}%
\fi}%
}{\relax}
% ********************************************************************
% Hyperreferences
% ********************************************************************
\hypersetup{%
%draft, % = no hyperlinking at all (useful in b/w printouts)
colorlinks=true, linktocpage=true, pdfstartpage=3, pdfstartview=FitV,%
% uncomment the following line if you want to have black links (e.g., for printing)
%colorlinks=false, linktocpage=false, pdfborder={0 0 0}, pdfstartpage=3, pdfstartview=FitV,%
breaklinks=true, pdfpagemode=UseNone, pageanchor=true, pdfpagemode=UseOutlines,%
plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,%
hypertexnames=true, pdfhighlight=/O,%nesting=true,%frenchlinks,%
urlcolor=webbrown, linkcolor=RoyalBlue, citecolor=webgreen, %pagecolor=RoyalBlue,%
%urlcolor=Black, linkcolor=Black, citecolor=Black, %pagecolor=Black,%
pdftitle={\myTitle},%
pdfauthor={\textcopyright\ \myName, \myUni, \myFaculty},%
pdfsubject={},%
pdfkeywords={},%
pdfcreator={pdfLaTeX},%
pdfproducer={LaTeX with hyperref and classicthesis}%
}
% ********************************************************************
% Setup autoreferences
% ********************************************************************
% There are some issues regarding autorefnames
% http://www.ureader.de/msg/136221647.aspx
% https://texfaq.org/FAQ-latexwords
% you have to redefine the makros for the
% language you use, e.g., american, ngerman
% (as chosen when loading babel/AtBeginDocument)
% ********************************************************************
\makeatletter
\@ifpackageloaded{babel}%
{%
\addto\extrasamerican{%
\renewcommand*{\figureautorefname}{Figure}%
\renewcommand*{\tableautorefname}{Table}%
\renewcommand*{\partautorefname}{Part}%
\renewcommand*{\chapterautorefname}{Chapter}%
\renewcommand*{\sectionautorefname}{Section}%
\renewcommand*{\subsectionautorefname}{Section}%
\renewcommand*{\subsubsectionautorefname}{Section}%
}%
\addto\extrasngerman{%
\renewcommand*{\paragraphautorefname}{Absatz}%
\renewcommand*{\subparagraphautorefname}{Unterabsatz}%
\renewcommand*{\footnoteautorefname}{Fu\"snote}%
\renewcommand*{\FancyVerbLineautorefname}{Zeile}%
\renewcommand*{\theoremautorefname}{Theorem}%
\renewcommand*{\appendixautorefname}{Anhang}%
\renewcommand*{\equationautorefname}{Gleichung}%
\renewcommand*{\itemautorefname}{Punkt}%
}%
% Fix to getting autorefs for subfigures right (thanks to Belinda Vogt for changing the definition)
\providecommand{\subfigureautorefname}{\figureautorefname}%
}{\relax}
\makeatother
% ****************************************************************************************************
% 7. Last calls before the bar closes
% ****************************************************************************************************
% ********************************************************************
% Development Stuff
% ********************************************************************
\listfiles
%\PassOptionsToPackage{l2tabu,orthodox,abort}{nag}
% \usepackage{nag}
%\PassOptionsToPackage{warning, all}{onlyamsmath}
% \usepackage{onlyamsmath}
% ********************************************************************
% Last, but not least...
% ********************************************************************
\usepackage{classicthesis}
% ****************************************************************************************************
% ****************************************************************************************************
% 8. Further adjustments (experimental)
% ****************************************************************************************************
% ********************************************************************
% Changing the text area
% ********************************************************************
%\linespread{1.05} % a bit more for Palatino
%\areaset[current]{312pt}{761pt} % 686 (factor 2.2) + 33 head + 42 head \the\footskip
%\setlength{\marginparwidth}{7em}%
%\setlength{\marginparsep}{2em}%
% ********************************************************************
% Using different fonts
% ********************************************************************
%\usepackage[oldstylenums]{kpfonts} % oldstyle notextcomp
%\usepackage[osf]{libertine}
%\usepackage{hfoldsty} % Computer Modern with osf
%\usepackage[light,condensed,math]{iwona}
%\renewcommand{\sfdefault}{iwona}
%\usepackage{lmodern} % <-- no osf support :-(
%\usepackage[urw-garamond]{mathdesign} <-- no osf support :-(
% ****************************************************************************************************
\DeclareAcronym{DRY}{short = DRY,long = Don't Repeat Yourself}
\DeclareAcronym{API}{short = API,long = Application Programming Interface}
\DeclareAcronym{UML}{short = UML,long = Unified Modeling Language}
和
FrontBackmatter/Contents.tex
%!TEX root = ../ClassicThesis.tex
%*******************************************************
% Table of Contents
%*******************************************************
%\phantomsection
\refstepcounter{dummy}
\pdfbookmark[1]{\contentsname}{tableofcontents}
\setcounter{tocdepth}{2} % <-- 2 includes up to subsections in the ToC
\setcounter{secnumdepth}{3} % <-- 3 numbers up to subsubsections
\manualmark
\markboth{\spacedlowsmallcaps{\contentsname}}{\spacedlowsmallcaps{\contentsname}}
\tableofcontents
\automark[section]{chapter}
\renewcommand{\chaptermark}[1]{\markboth{\spacedlowsmallcaps{#1}}{\spacedlowsmallcaps{#1}}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\enspace\spacedlowsmallcaps{#1}}}
%*******************************************************
% List of Figures and of the Tables
%*******************************************************
\clearpage
\begingroup
\let\clearpage\relax
\let\cleardoublepage\relax
\let\cleardoublepage\relax
%*******************************************************
% List of Figures
%*******************************************************
%\phantomsection
\refstepcounter{dummy}
%\addcontentsline{toc}{chapter}{\listfigurename}
\pdfbookmark[1]{\listfigurename}{lof}
\listoffigures
\vspace*{8ex}
%*******************************************************
% List of Tables
%*******************************************************
%\phantomsection
\refstepcounter{dummy}
%\addcontentsline{toc}{chapter}{\listtablename}
\pdfbookmark[1]{\listtablename}{lot}
\listoftables
\vspace*{8ex}
% \newpage
%*******************************************************
% List of Listings
%*******************************************************
%\phantomsection
\refstepcounter{dummy}
%\addcontentsline{toc}{chapter}{\lstlistlistingname}
\pdfbookmark[1]{\lstlistlistingname}{lol}
\lstlistoflistings
\vspace*{8ex}
%*******************************************************
% Acronyms
%*******************************************************
%\phantomsection
\refstepcounter{dummy}
\pdfbookmark[1]{Acronyms}{acronyms}
\markboth{\spacedlowsmallcaps{Acronyms}}{\spacedlowsmallcaps{Acronyms}}
\chapter*{Acronyms}
\newlist{acronyms}{description}{1}
\newcommand*\addcolon[1]{#1}
\setlist[acronyms]{
labelwidth=3em,
leftmargin=3.5em,
noitemsep,
itemindent=0pt,
font=\addcolon}
\acsetup{list-type=acronyms,hyperref=false,extra-style=comma,uc-cmd=\makefirstuc,first-long-format=\itshape,hyperref}
\printacronyms
% \begin{acronym}[UML]
% \acro{DRY}{Don't Repeat Yourself}
% \acro{API}{Application Programming Interface}
% \acro{UML}{Unified Modeling Language}
% \end{acronym}
\endgroup
\cleardoublepage
(不确定在这种情况下补丁是否更合适,因此您可以从这里)
当我生成文档时,它会抱怨这一点
! Undefined control sequence.
\@hyper@@anchor ...r@spot {#2#3}\let \put@me@back
\@empty \ifx \relax #2\rel...
l.82 \endgroup
?
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.82 \endgroup
?
! Extra }, or forgotten \endgroup.
\@begin@tempboxa ...begingroup #2\color@endgroup }
\def \width {\wd \@tempbox...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\@tempboxa }\let \totalheight
\@ovri \totalheight \heigh...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...talheight \@ovri \totalheight
\height \advance \totalhei...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...t \@ovri \totalheight \height
\advance \totalheight \depth
l.82 \endgroup
?
! Missing number, treated as zero.
<to be read again>
\advance
l.82 \endgroup
?
! Illegal unit of measure (pt inserted).
<to be read again>
\advance
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\height \advance \totalheight
\depth
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ... \advance \totalheight \depth
l.82 \endgroup
?
! Missing } inserted.
<inserted text>
}
l.82 \endgroup
?
! Extra \else.
<recently read> \else
l.82 \endgroup
?
! Undefined control sequence.
\@hyper@@anchor ...r@spot {#2#3}\let \put@me@back
\@empty \ifx \relax #2\rel...
l.82 \endgroup
?
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.82 \endgroup
?
! Extra }, or forgotten \endgroup.
\@begin@tempboxa ...begingroup #2\color@endgroup }
\def \width {\wd \@tempbox...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\@tempboxa }\let \totalheight
\@ovri \totalheight \heigh...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...talheight \@ovri \totalheight
\height \advance \totalhei...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...t \@ovri \totalheight \height
\advance \totalheight \depth
l.82 \endgroup
?
! Missing number, treated as zero.
<to be read again>
\advance
l.82 \endgroup
?
! Illegal unit of measure (pt inserted).
<to be read again>
\advance
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\height \advance \totalheight
\depth
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ... \advance \totalheight \depth
l.82 \endgroup
?
! Missing } inserted.
<inserted text>
}
l.82 \endgroup
?
! Undefined control sequence.
\@hyper@@anchor ...r@spot {#2#3}\let \put@me@back
\@empty \ifx \relax #2\rel...
l.82 \endgroup
?
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.82 \endgroup
?
! Extra }, or forgotten \endgroup.
\@begin@tempboxa ...begingroup #2\color@endgroup }
\def \width {\wd \@tempbox...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\@tempboxa }\let \totalheight
\@ovri \totalheight \heigh...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...talheight \@ovri \totalheight
\height \advance \totalhei...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...t \@ovri \totalheight \height
\advance \totalheight \depth
l.82 \endgroup
?
! Missing number, treated as zero.
<to be read again>
\advance
l.82 \endgroup
?
! Illegal unit of measure (pt inserted).
<to be read again>
\advance
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\height \advance \totalheight
\depth
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ... \advance \totalheight \depth
l.82 \endgroup
?
! Missing } inserted.
<inserted text>
}
l.82 \endgroup
?
! Extra \else.
<recently read> \else
l.82 \endgroup
?
! Undefined control sequence.
\@hyper@@anchor ...r@spot {#2#3}\let \put@me@back
\@empty \ifx \relax #2\rel...
l.82 \endgroup
?
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.82 \endgroup
?
! Extra }, or forgotten \endgroup.
\@begin@tempboxa ...begingroup #2\color@endgroup }
\def \width {\wd \@tempbox...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\@tempboxa }\let \totalheight
\@ovri \totalheight \heigh...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...talheight \@ovri \totalheight
\height \advance \totalhei...
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...t \@ovri \totalheight \height
\advance \totalheight \depth
l.82 \endgroup
?
! Missing number, treated as zero.
<to be read again>
\advance
l.82 \endgroup
?
! Illegal unit of measure (pt inserted).
<to be read again>
\advance
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ...\height \advance \totalheight
\depth
l.82 \endgroup
?
! Undefined control sequence.
\@begin@tempboxa ... \advance \totalheight \depth
l.82 \endgroup
?
! Missing } inserted.
<inserted text>
}
l.82 \endgroup
?
[14
])
! Extra \else.
\@include ...ediate \closeout \@partaux \fi \else
\deadcycles \z@ \@nameuse ...
l.80 ...ublepage\incl
ude{前后内容/目录}
缩略词列表打印如下
如果我删除 \acsetup{} 末尾的 hyperref 选项,则不会出现任何错误,并且首字母缩略词列表会按需要打印,但首字母缩略词的超引用会消失,这是我们希望得到的。
我读过一些关于 acro 和 babel 冲突的内容,因此我按照说明将 \usepackage{acro} 推到了 babel 之前这里,但无济于事。我会选择缩写,但我需要以适合特定排版风格的方式自定义缩写行为,更不用说缩写的 \ac{}-\Ac{} 问题了。
答案1
没有给出 MWE,并且在提问时我显然在创建一个。但是,使用当今版本的软件包,MWE 没有显示任何问题(见下文),因此这个问题很可能通过更新来解决……
此示例显示正确工作的彩色链接:
\documentclass{article}
\usepackage{classicthesis}
\usepackage{acro}
\acsetup{
make-links ,
pages/display = first ,
pages/fill = {, } ,
pages/name = true ,
format/first-long = \itshape
}
\DeclareAcronym{DRY}{short = DRY,long = Don't Repeat Yourself}
\DeclareAcronym{API}{short = API,long = Application Programming Interface}
\DeclareAcronym{UML}{short = UML,long = Unified Modeling Language}
\usepackage{hyperref}
\begin{document}
\ac{DRY} \par
\ac{API} \par
\ac{UML}
\newpage
\printacronyms
\end{document}
- 2021 年 1 月 11 日