我使用该fancyhdr
包来更改页眉和页脚样式。我将其设置为章节名称出现在页眉中。此外,我还将其设置为章节号出现在页脚中的页码之前。我使用的是 XELATEX + POLYGLOSSIA
关于页码:它不会像在页脚中那样出现在目录中,只出现页码而没有章节号。
关于章节名称:章节命名标签在标题中显示不正确(它们与标题和主要章节名称不同)。(阿拉伯字体链接(下载和安装)https://fontzone.net/font-details/simplified-arabic)此修改在标题中正确显示:
\gappto\captionsarabic{\renewcommand{\chaptername}{الباب}}
而这个没有:
\makeatletter
\patchcmd{\@makechapterhead}{\thechapter}{\words{chapter}}{}{}
\makeatother
完整代码如下:
\documentclass[a4paper,12pt,twoside]{book}
\usepackage[a4paper,top=2.5cm,bottom=2.5cm,margin=2.5cm,bindingoffset=0.5cm]{geometry}
\usepackage{fontspec}
\usepackage [hidelinks,colorlinks=true,linkcolor = blue,anchorcolor = blue,citecolor = blue,filecolor = blue,urlcolor = blue]{hyperref}
\usepackage{url,graphicx}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,arrows,positioning,matrix,quotes, shapes.geometric,calc}
\usepackage{rotating}
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\rightmark}
\rhead{\leftmark}
\cfoot{\thechapter-\thepage}
\renewcommand{\headrulewidth}{2pt}
\renewcommand{\footrulewidth}{2pt}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=gregorian,locale=default,numerals=mashriq]{arabic}
\setotherlanguages{english}
\newfontfamily\arabicfont[Script=Arabic,Mapping=arabicdigits]{Simplified Arabic}
% MACROS FOR CHANGING CHAPTER NAMES %
\gappto\captionsarabic{\renewcommand{\chaptername}{الباب}} %to name the chapter title الباب instead of باب
\newcommand\words[1]{\expandafter\xwords\csname c@#1\endcsname}
\def\xwords#1{\ifcase#1\or
الأول\or
الثاني\or
الثالث\or
الرابع\or
الخامس\or
السادس\or
السابع\or
الثامن\or
التاسع\or
العاشر\or
الحادي عشر\or
الثاني عشر\or
الثالث عشر\or
الرابع عشر\or
الخامس عشر\or
السادس عشر\or
السابع عشر\or
الثامن عشر\or
التاسع عشر\or
العشرون\or
\else
I need more words أحتاج إلى المزيد من ترقيمات الأبواب بالحروف في ملف arbbook.cls\fi}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}{\thechapter}{\words{chapter}}{}{}
\makeatother
%
\title{}
\author{}
\date{}
\begin{document}
\tableofcontents{}
\chapter{fgfdfgfdg}
\subsection{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\newpage
\subsection{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\end{document}
答案1
虽然你的问题对我来说不太清楚(可能是因为我看不懂阿拉伯语),但我认为这可以满足你的要求。我利用了这个答案。我认为您可能需要花一些时间阅读手册babel
以了解其所有 BiDi 设置和选项,以获得您想要的输出。
平均能量损失
用 编译lualatex
。
\documentclass[a4paper,12pt]{book}
\usepackage[nil,bidi=basic-r,layout=counters]{babel}
\babelprovide[import=ar,mapdigits,main]{arabic}
\babelprovide[import=en,language=Default]{english}
\babelfont{rm}{Latin Modern Roman}
\babelfont[arabic]{rm}{Amiri}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead[L]{\rightmark}
\fancyhead[R]{\leftmark}
\renewcommand{\headrulewidth}{2pt}
\renewcommand{\footrulewidth}{2pt}
\makeatletter
\renewcommand{\thepage}{\thechapter-\csname @arabic\endcsname\c@page}
\makeatother
\usepackage[hidelinks,colorlinks=true,allcolors=blue]{hyperref}
\usepackage{etoolbox}
\gappto\captionsarabic{\renewcommand{\chaptername}{الباب}}
\newcommand\words[1]{\expandafter\xwords\csname c@#1\endcsname}
\def\xwords#1{%
\ifcase#1\or
الأول\or
الثاني\or
الثالث\or
الرابع\or
\else
I need more words\fi}
\makeatletter
\pretocmd{\Hy@org@chapter}
{\begingroup \renewcommand{\thechapter}{{\words{chapter}}}}
{}
{}
\patchcmd{\Hy@org@chapter}
{\addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}}
{\addcontentsline{toc}{chapter}{\@chapapp\space\words{chapter}\space#1}}
{}
{}
\apptocmd{\Hy@org@chapter}
{\endgroup}
{}
{}
\patchcmd{\@makechapterhead}
{\thechapter}
{\words{chapter}}
{}
{}
\makeatother
\begin{document}
\tableofcontents{}
\chapter{سيسس}
\section{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\clearpage
\section{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\subsection{سيسس}
\end{document}