问题似乎并不难解决...虽然明显「xelatex」有严重的问题(「xelatex」什么时候彻底淘汰啊!!真该死啊!!)
另外,为何一定要使用polyglossia而不是babel,后者似乎没有"Contents"的目录问题,和ctex的兼容性更好。
最佳实践
首先其实你问了两个问题:
- 标题为“Contents”而非“目录”
- 章节条目显示为方框(这是由于在
.toc里不慎引入脏东西导致的)
针对Question1:
目录的标题没有正确修改,相同的讨论可见:
- https://tex.stackexchange.com/questions/736459/how-to-disable-setdefaultlanguage-in-polyglossia-package-which-changes-the/736461#736461
- https://tex.stackexchange.com/a/757662/322482
省流:ployglossia内部也定义了\chinese,这导致了默认语言设置失效。可以使用如下的trick来避开重复的定义:
\let\mychinese\chinese
\let\chinese\relax
\setdefaultlanguage{chinese}
\setmainfont{FandolSong}
\let\chinese\mychinese针对Question2:
章节条目显示为方框,其实解决方案也不太困难...
只要将
\begin{sanskrit}कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं\end{sanskrit}(或者同样在xe下有问题的)
\begin{otherlanguage}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage}全部替换为
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}或者
\begin{otherlanguage*}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage*}似乎则可以防止在.toc中写入脏东西(无论xe还是lua都work)
要把他们结合起来其实不太行,因为polyglossia似乎不允许分开设置西文和中文字体...可以先按下面这么凑合...
完整代码
\documentclass[
UTF8,openany,
a4paper,zihao=-4,
fontset=none
]{ctexbook}
\usepackage[paperheight=17cm]{geometry}
\ctexset{
chapter/name = {第,章},
% section/name = {},
% contentsname = \hfill 目\ 录 \hfill,
}
\setCJKmainfont[BoldFont=KaiTi,ItalicFont=FangSong]{NSimSun}
\setmainfont[BoldFont=Times New Roman]{Times New Roman}
\usepackage{polyglossia}
\setotherlanguage{sanskrit}
\newfontfamily\sanskritfont[Script=Devanagari]{Sanskrit2003.ttf}
\begin{document}
\renewcommand{\contentsname}{目\ 录}%after \begin{document}!
\frontmatter
\tableofcontents
\chapter{导论}
梵语
\footnote{梵语(梵语:\textsanskrit{संस्कृता वाक्},Saṃskṛtā vāk,简称\begin{otherlanguage*}{sanskrit}संस्कृतम्\end{otherlanguage*},Saṃskṛtam;英语Sanskrit)属于印欧语系中印度–伊朗语族的印度–雅利安语支,是该语系中最古老的语言之一。和拉丁语一样,梵语已经成为一种属于学术和宗教的专门用语。虽然现代梵语的母语使用者非常少,但是因为梵文本身的特殊性,在现代佛教、印度教和耆那教的经典中依然可以随处找到梵语。古印度相信梵文是由梵天发明。}
优雅动听,是印度高等种姓以及更早雅利安人所说的语言,历史比其它任何已知语言都更为久远。
\chapter{梵语的格}
主格:用于句子的主语。宾格:用作直接宾语,也用于“to”表达的与格(间接宾语)。具格:在英语中用于“by”,“with”或“by means of”句式中。与格:在“for”,“to”或“toward”意思上使用。离格:在“of”和“from”意思上使用。
\begin{otherlanguage*}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage*}
\mainmatter
\chapter{主格}
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}
\chapter{宾格}
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}
\chapter{具格}
\begin{otherlanguage*}{sanskrit}
कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं
\end{otherlanguage*}
\chapter{与格}
\textsanskrit{कृपयाविष्टमश्रुपूर्णाकुलेक्षणम्विषीदन्तमिदं}
\end{document}























问 采用`polyglossia`杂语宏包支持梵语,目录不能正常列印问题