![如何使用西里尔文的 minitoc 标题](https://linux22.com/image/337021/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E8%A5%BF%E9%87%8C%E5%B0%94%E6%96%87%E7%9A%84%20minitoc%20%E6%A0%87%E9%A2%98.png)
我想在保加利亚语的文档中使用 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}