\documentclass[12pt,a4paper]{mathbook_arabic}
%\newfontfamily\arabicfont[Script=Arabic]{Arial}
\addto\captionsarabic{\renewcommand{\contentsname}{الفهرس}}
% \newfontfamily\arabicfonttt[Script=Arabic]{Arial}
\usepackage{listings}
\usepackage{mathrsfs}
\definecolor{bleu}{cmyk}{0.59,0.11,0,0.59}
\definecolor{vert}{cmyk}{0.78,0,0.74,0.45}
\begin{document}
\tableofcontents
\chapter*{Intro}
some textes
\chapter{ch1}
\end{document}
我编译时的错误是
扫描@dottedtocline 的使用时文件结束。\par l.68 \tableofcontents
答案1
感谢您链接到 Overleaf 上的模板。我无法在 TeX Live 2020 上重现您的错误,尽管我确实遇到了另一个错误:\newfontfamily\arabicfonttt
在 的第 107 行mathbook_arabic.sty
应该是。然后在下一行\newfontfamily\arabicfontsf
重新声明。 的旧版本允许这种情况,但现代版本将其标记为错误。\newfontfamily\arabicfonttt
fontspec
该模板包含很多特定于其所针对书籍的内容,并且已经有些过时了。如果您可以自由使用任何您想要的模板,我建议您从类似这样的模板开始,并根据需要进行修改。
\documentclass[a4paper]{book} % Or article, scrbook, etc.
\tracinglostchars=2 % Warn if the current font does not have a character.
%% The previous sample you were using loaded the cmyk color space and manually
%% declared color names in French. This loads the standard color names used in
%% CSS, SVGs and HTML, e.g. Blue and DarkCyan. You can add HTML to allow hex
%% values.
\usepackage[svgnames]{xcolor}
%% Requires LuaHBTeX, or LuaLaTeX from 2020 or later.
\usepackage[bidi=basic, layout=sectioning]{babel}
\usepackage{unicode-math}
\usepackage{microtype}
%% You will certainly want to set more options than this, either here or with
%% \hypersetup.
\usepackage[unicode,
colorlinks]{hyperref}
%% Can substitute import=ar-DZ, import=ar-MA or import=ar-SY for import.
%% To change the numbers from Western to localized, add the maparabic option.
%% Can also change other counters, e.g. alph=alphabetic, Alph=abjad.
\babelprovide[import, main, onchar=ids fonts]{arabic}
\babelprovide[onchar=ids fonts]{english}
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX, Renderer=HarfBuzz}
%% You can change these to your fonts of choice.
\babelfont{rm}
[Scale=1.0, Ligatures=Common, Script=Default, Language=Default]{Libertinus Serif}
\babelfont[arabic]{rm}
{Amiri}
\babelfont{sf}
[Ligatures=Common, Script=Default, Language=Default]{Libertinus Sans}
\babelfont[arabic]{sf}
[Language=Default]{Noto Sans Arabic}
\babelfont{tt}
[Script=Default, Language=Default]{Libertinus Mono}
\babelfont[arabic]{tt}
{ALM Fixed}
\setmathfont{Libertinus Math}
\babeltags{english=english}
%% \babeltags would fail to redefine \arabic, so provide `\textArabic`, etc.
%% You are unlikely to need them, because babel will switch to Arabic whenever
%% you use the Arabic script.
\babeltags{Arabic=arabic}
\begin{document}
\chapter{A Chapter}
للُّغَة العَرَبِيّة هي أكثر اللغات السامية تحدثاً، وإحدى أكثر اللغات انتشاراً في العالم، يتحدثها أكثر من 467 مليون نسمة،
\begin{english}
Arabic (اَلْعَرَبِيَّةُ, al-ʿarabiyyah, [al ʕaraˈbijːa] or عَرَبِيّ, ʿarabīy, [ˈʕarabiː]
or [ʕaraˈbij]) is a Semitic language that first emerged in the 1st to 4th
centuries CE.
\end{english}
\end{document}
此版本的模板会在您输入拉丁文时自动切换为英语,并在您输入阿拉伯文时自动切换为阿拉伯语。它在此示例中使用了一个语言标签,这是因为我复制粘贴的源代码中的 IPA 符号都不是,但它们应该在英文字体中从左到右显示。可以告诉 Babel 将它们视为英语。您可以为每个缺失的字符添加重新定义,例如
\babelcharproperty{`ʕ}{locale}{english}
我选择的主要字体是 Khaled Hosny 的 Amiri 和 Libertinus Sans,这两种字体都基于早期的设计,并且相互补充得很好。
您可以将这些更改为您选择的字体。例如,如果您拥有 Windows 10 附带的新版 Arial,而不是某些操作系统仍附带的旧版,则可以将\babelfont{sf}
和 后面的三行替换为\babelfont{sf}{Arial}
。字体将自动缩放并选择正确的Script
OpenTypeLanguage
功能。(实际上,该Language=
功能会向您发出虚假警告,因此您可以使用\babelfont{sf}[Language=Default]{Arial}
来抑制它们。)
对于数学,我加载了他的 Libertinus Math unicode-math
。这意味着您不需要(也不应该使用)任何旧式数学字体包,例如amssymb
。它支持\boldmath
和\boldsymbol
。如果这不是您想要的,您可以用替换\usepackage{unicode-math)
和\setmathfont
行
\usepackage{fontspec}
\usepackage[libertine]{newtxmath}
\usepackage{bm}
我不会更改页面、标题、章节、目录等的默认格式,但您可以使用您选择的包(例如tocloft
和)来执行此操作fancyhdr
。