阿拉伯语模板中的目录有误

阿拉伯语模板中的目录有误
\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\arabicfontttfontspec

该模板包含很多特定于其所针对书籍的内容,并且已经有些过时了。如果您可以自由使用任何您想要的模板,我建议您从类似这样的模板开始,并根据需要进行修改。

\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}。字体将自动缩放并选择正确的ScriptOpenTypeLanguage功能。(实际上,该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

相关内容