使用 Venturis ADF 和 hyperref 绘制图形

使用 Venturis ADF 和 hyperref 绘制图形

我有一套使用 Venturis ADF 和旧式数字的文档,因为它们与文档正文更匹配。但是,其中一个字符名称是 Zen0,而使用旧式零,这看起来像 Zeno。因此我用它来\textl{Zen0}写他的名字。这工作得很好,除了在\sectionhyperref启用的命令中。

最小工作示例:

\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}

结果

相关内容