我需要使用西里尔文。我从某个地方破解了\textcyrw
下面的定义。一切都很好,但是当我需要\textcyrw
在章节标题中使用时。似乎罪魁祸首是hyperref
。欢迎提出建议。
\documentclass[a4paper,10pt]{article}
\usepackage[OT2,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american,russian,italian]{babel}
\usepackage{hyperref} % no problem without hyperref
\newcommand\cyrillic{%
\renewcommand\rmdefault{wncyr}%
\renewcommand\sfdefault{wncyss}%
\renewcommand\encodingdefault{OT2}%
\normalfont
\selectfont}
\DeclareTextFontCommand{\textcyr}{\cyrillic}
\begin{document}
\section{AAA}
\textcyr{Личное дело} % works fine
\section{\textcyr{Личное дело}} % gives error
\end{document}
我收到的错误信息是:
! Argument of \@sect has an extra }.
<inserted text>
\par
l.- \section{\textcyr{Личное дело}}
- - - 固定的
下面修复了这个问题,虽然我不确定为什么:
\pdfstringdefDisableCommands{%
\let\textcyr\relax}
答案1
OT2 确实是一种过时的生成西里尔文的方法。由于您似乎能够直接输入俄语文本,因此最好使用T2A
:
\documentclass[a4paper,10pt]{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american,russian,italian]{babel}
\usepackage{hyperref} % no problem without hyperref
\DeclareRobustCommand{\textcyr}[1]{\foreignlanguage{russian}{#1}}
\begin{document}
\section{AAA}
\textcyr{Личное дело} % works fine
\section{\textcyr{Личное дело}} % gives error
\end{document}