我遇到了一个相当复杂的问题。我正在使用考博- 它所基于的类koma-script book
- 用于创建多语言文档(希腊语和英语)。我已经定义了以下类选项:
% Declaring language class options
\DeclareOption{greek}{%
\newcommand{\default@lang}{greek}%
\newcommand{\other@lang}{english}%
}%
\DeclareOption{english}{%
\newcommand{\default@lang}{english}%
\newcommand{\other@lang}{greek}%
}%
我对字体和编码的设置如下
\RequirePackage{unicode-math}
\setromanfont[Scale=1.04]{Libertinus Serif}
\setsansfont[Scale=1]{Libertinus Sans}
\setmonofont[Scale=.89]{Liberation Mono}
\setmathfont{Libertinus Math}
% Hack because of bug of polyglossia
\RequirePackage{ifthen}
\ifthenelse{\equal{\default@lang}{greek}}%
{
\RequirePackage[nonumeralsign]{xgreek}
\newenvironment{greek}{}{}
\newenvironment{english}{\setlanguage{english}}{\setlanguage{monogreek}}
% \newcommand{\xpg@main@language}{monogreek}
}%
{
\RequirePackage{polyglossia}
\setdefaultlanguage{\default@lang}
\setotherlanguage{\other@lang}
}
问题是当我使用命令时
\renewcaptionname{greek}{\contentsname}{Περιεχόμενα}
我收到一个错误
包 scrbase 错误:
\contentsname' not defined at language
greek'。
我尝试使用 进行加载polyglossia
。\setdefaultlanguage{greek}
在这种情况下,我收到错误:
!LaTeX 错误:命令 \anw@print 已定义。或名称 \end... 非法,请参阅手册第 192 页。
我还尝试在文档类中加载english
选项,结果它又使用 和 加载polyglossia
。\setdefaultlanguage{english}
在\setotherlanguage{greek}
这种情况下,连字符会中断,我要么使用xelatex
或lualatex
。
所以,我的问题是,如何toc
在不破坏希腊语连字符的情况下重命名
答案1
问题解决了!
供将来参考,该问题是由黑客攻击引起的
\RequirePackage{ifthen}
\ifthenelse{\equal{\default@lang}{greek}}%
{
\RequirePackage[nonumeralsign]{xgreek}
\newenvironment{greek}{}{}
\newenvironment{english}{\setlanguage{english}}{\setlanguage{monogreek}}
% \newcommand{\xpg@main@language}{monogreek}
}%
{
\RequirePackage{polyglossia}
\setdefaultlanguage{\default@lang}
\setotherlanguage{\other@lang}
}
我用以下内容替换了此部分
\RequirePackage{unicode-math}
\RequirePackage{polyglossia}
\setdefaultlanguage{\default@lang}
\setotherlanguage{\other@lang}
\setmainfont[Scale=1.04]{Libertinus Serif}
\setsansfont[Scale=1]{Libertinus Sans}
\setmonofont[Scale=.89]{Libertinus Mono}
\setmathfont{Libertinus Math}
一切都按预期进行