我有一套使用 Venturis ADF 和旧式数字的文档,因为它们与文档正文更匹配。但是,其中一个字符名称是 Zen0,而使用旧式零,这看起来像 Zeno。因此我用它来\textl{Zen0}
写他的名字。这工作得很好,除了在\section
我hyperref
启用的命令中。
最小工作示例:
\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[]{venturis}
\usepackage{hyperref}
\newcommand{\Zeno}{\textl{Zen0}}
\begin{document}
\tableofcontents
\section{Zen0} %Works fine
\section{Zeno}
%\section{\textl{Zen0}} %Uncomment to break document
%\section{\lstyle Zen0} %Uncomment to break document
Zeno Zen0 \textl{Zen0} \Zeno
\end{document}
答案1
hyperref
不知道\lstyle
和\textl
,因此这些命令会破坏章节标题到书签文本字符串的转换。\pdfstringdefDisableCommands
可用于禁用书签的新命令。另一种方法是使用\texorpdfstring
,请参阅注释。
\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[]{venturis}
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
\let\textl\@firstofone
\let\lstyle\relax
}
\newcommand{\Zeno}{\textl{Zen0}}
\begin{document}
\tableofcontents
\section{Zen0}
\section{Zeno}
\section{\textl{Zen0}}
\section{\lstyle Zen0}
Zeno Zen0 \textl{Zen0} \Zeno
\end{document}