如何使用西里尔文的 minitoc 标题

如何使用西里尔文的 minitoc 标题

我想在保加利亚语的文档中使用 minitoc。当我不使用 minitoc 包的语言选项时,一切都很好,除了迷你目录标题是英文的。当我添加语言选项时,一切都出错了,我得到了奇怪的错误(例如未定义控制序列。^^I\section)。我使用 polyglossia 包,因为我想使用一些 Windows 字体。下面的示例使用 KOMA 脚本,但情况与 memoir 相同。我在 Windows 7 64 位上使用 MiKTeX。

以下是 MWE:

 \documentclass{scrbook}
 \usepackage{fontspec}
 \usepackage{polyglossia}
 \newfontfamily{\cyrillicfont}{Cambria}
 %\newfontfamily{\cyrillicfontsf}{Cambria}
 \setmainlanguage{bulgarian}
 %\usepackage{minitoc}
 \usepackage[bulgarian]{minitoc}
 \dominitoc     
 \usepackage{lipsum}
 \begin{document}   
 \tableofcontents   
 \chapter{Глава 1.}
 \minitoc
 \mtcskip
 \section{Секция 1.}
 Първа.
 \section{Секция 2.}
 Втора.
 \section{Секция 3.}
 Трета.
 \section{Секция 4.}
 Четвърта.
 \section{Секция 5.}
 Пета.
 \end{document}

答案1

不幸的是,它没有针对 XeLaTeX 或 LuaLaTeX 进行更新,并且使用诸如、等minitoc命令对关键字进行硬编码。\CYRS\cyrhrdsn

您可以简单地将以下代码转换为正确的西里尔文 Unicode 字母

\def\ptctitle{%
   {\cyr\CYRS\cyrhrdsn\cyrd\cyrhrdsn\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}%
\def\plftitle{{\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ %
    \cyrn\cyra\ \cyrf\cyri\cyrg\cyru\cyrr\cyri\cyrt\cyre}}%
\def\plttitle{{\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ %
    \cyrn\cyra\ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyri\cyrt\cyre}}%
\def\mtctitle{%
   {\cyr\CYRS\cyrhrdsn\cyrd\cyrhrdsn\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}%
\def\mlftitle{{\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ %
    \cyrn\cyra\ \cyrf\cyri\cyrg\cyru\cyrr\cyri\cyrt\cyre}}%
\def\mlttitle{{\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ %
    \cyrn\cyra\ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyri\cyrt\cyre}}%
\def\stctitle{%
   {\cyr\CYRS\cyrhrdsn\cyrd\cyrhrdsn\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}%
\def\slftitle{{\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ %
    \cyrn\cyra\ \cyrf\cyri\cyrg\cyru\cyrr\cyri\cyrt\cyre}}%
\def\slttitle{{\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ %
    \cyrn\cyra\ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyri\cyrt\cyre}}%

并在 后添加转换后的代码\usepackage{minitoc}。删除\cyr并输入相应的字母;例如,您将得到

\def\mtctitle{Съдържание}

(抱歉,但输入整个转换过程对我来说会非常繁琐;使用西里尔键盘应该很容易)。

它也可以自动完成,使用中的表格进行临时解决方案t2aenc.dfu,但反转参数的角色。

\documentclass{scrbook}
\usepackage{fontspec}
\usepackage{polyglossia}

\usepackage{lipsum}

\newfontfamily{\cyrillicfont}{Libertinus Serif}
\newfontfamily{\cyrillicfontsf}{Libertinus Sans}

\setmainlanguage{bulgarian}

% kludge to convert LICR to Unicode
\begingroup
\edef\CYR{\string\CYR}%
\def\DeclareUnicodeCharacter#1#2{%
  \edef\next{\uppercase{\def\noexpand\next{\detokenize{#2}}}}\next
  \expandafter\duc\next....\duc{#1}{#2}%
}
\def\duc#1#2#3#4#5\duc#6#7{%
  \def\next{#1#2#3#4}%
  \ifx\next\CYR
    \gdef#7{\char"#6}%
  \fi
}
\input{t2aenc.dfu}
\endgroup
\let\cyr\relax

\usepackage[bulgarian]{minitoc}
\dominitoc

\begin{document}

\tableofcontents

\chapter{Глава 1.}
\minitoc
\mtcskip

\section{Секция 1.}
Първа.

\section{Секция 2.}
Втора.

\section{Секция 3.}
Трета.

\section{Секция 4.}
Четвърта.

\section{Секция 5.}
Пета.

\end{document}

在此处输入图片描述

相关内容