我正在用英语写一份文档,但其中也有一些部分是用其他语言写的。
我创建了自己的样式来更改book
类的行为方式,其中还包括标题chapter
和chapter*
环境。作为其中的一部分,chapter*
我在定义中添加了pdfbookmark
命令,以便所有未编号的章节都出现在书签中。定义如下:
\renewcommand{\@makeschapterhead}[1]{%
{%
\pdfbookmark[0]{#1}{#1}%
\vspace*{\@spacebeforechapterhead}%
\parindent 0pt \Large%\bfseries
\interlinepenalty\@M%
\vspace*{\@spaceinchapterhead}%
\rule{0.666\textwidth}{0.5pt}%
\par%
\vspace*{\@spaceinchapterhead}%
\vspace*{\@spaceinchapterhead}%
{\spacedlowsmallcaps{#1}\hfill}%
\mbox{}\par%
\mbox{}\par%
\mbox{}\par%
\markright{}%remove header, there were problems with "My publications" header after "Bibliography"
}%
}
一切都按我预期的方式进行,除了未编号的章节,其名称中包含特殊字符,例如
\chapter*{Sa{ž}etak}
这里的问题在于pdfbookmark
命令中的第三个参数,它类似于书签的标签。我尝试从不同角度解决这个问题,但似乎都不起作用。简单的解决方案是从定义pdfbookmark
中删除该命令chapter*
,然后手动为所有未编号的章节添加它,但我正在尝试寻找更优雅的解决方案。
我还没有尝试过的一个可能的解决方案是
\RemoveAllNonASCII{#1}
作为第三个参数,但我不知道如何设计这样的函数。
知道如何解决这个问题吗?
以下是最小工作示例:
麦格
\documentclass{style}
\begin{document}
\author{Me}
\title{MWE}
\maketitle
% Bookmark works
\chapter*{Unnumbered chapter}
% Bookmark does not work
\chapter*{Unnumbered chapter Ž}
% Bookmark works
\chapter{Numbered chapter}
% Bookmarks works, even though we have Ž in the title
\chapter{Numbered chapter Ž}
\end{document}
样式.cls
\LoadClass[a4paper,11pt,oneside]{book}
\usepackage{hyperref}
\usepackage{bookmark}
\renewcommand{\@makeschapterhead}[1]{%
{%
\pdfbookmark[0]{#1}{#1}%
{#1}
}%
}
答案1
使用一些合理的内容作为第三个参数。
\documentclass{article}
\usepackage{hyperref}
\newcounter{myschapter}
\begin{document}
abc
\stepcounter{myschapter}
\pdfbookmark[0]{Sa{ž}etak}{schapter.\number\value{myschapter}}%
\end{document}