高效地设置一系列字符的类别代码

高效地设置一系列字符的类别代码

我一直在思考在 PDFTeX 引擎的命令名称中使用西里尔字符。到目前为止,在我看来,如果我继续使用 8 位编码并将类别代码 11 分配给除ё/之外的所有西里尔字母Ё,这将是一个可行的解决方案,但用 创建的书签hyperref将被错误编码。

修复使用 创建的 PDF 书签的解决方法hyperref是,暂时将分段命令的类别代码设置回 13,并且不在分段命令中使用带有西里尔字母的命令,或者使用\texorpdfstring,如下所示:

\documentclass{article}

\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian]{babel}

\usepackage[unicode]{hyperref}

\catcode`л=11\relax
\catcode`п=11\relax
\catcode`к=11\relax

\newcommand{\лк}{«}
\newcommand{\пк}{»}

\begin{document}

{\catcode`л=13\relax
\section{Раздел «Первый»}}

{\catcode`л=13\relax
\gdef\pdfbookmarkname{Раздел «Второй»}}
\section{\texorpdfstring{Раздел \лк Второй\пк}{\pdfbookmarkname}}

\end{document}

此文档在编译时已正确编码书签。

ё除/之外,为整个西里尔字母设置类别代码的有效方法是什么Ё

相关内容