将 fbox 添加到阿拉伯语中每个部分、小节和小小节的编号中

将 fbox 添加到阿拉伯语中每个部分、小节和小小节的编号中

我想将 fbox 添加到每个部分、小节和小子节的编号中,使其看起来如下所示,但对于

Arabic language \usepackage{polyglossia} 

在此处输入图片描述

当我添加以下命令时

\renewcommand\thesection{\fbox{\Roman{section}}}
\renewcommand\thesubsection{\fbox{\arabic{subsection}}}
\renewcommand\thesubsubsection{\fbox{\alph{subsubsection}}}

我得到了结果,但对于多语阿拉伯语模式不起作用。它看起来像

在此处输入图片描述

\documentclass[12pt]{amsart}
\usepackage[a4paper,margin=0.5in]{geometry}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand\thesection{\fbox{\Roman{section}}}
\renewcommand\thesubsection{\fbox{\arabic{subsection}}}
\renewcommand\thesubsubsection{\fbox{\alph{subsubsection}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2]{Amiri}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
    \section{اتصال}
    \subsection{اتصال في نقطة}
    \subsection{اتصال في مجال}
    \subsubsection{مبرهنة القيم الوسيطية}
    \section{اشتقاق}
    \subsection{اشتقاق في نقطة}
    \subsubsection{اشتقاق في المجال}
\end{document}

您能帮我使用 polyglossia 包修复阿拉伯语的问题吗?谢谢

答案1

您可能应该\renewcommands在加载语言包之后执行此操作,否则它们可能会被撤消。

另外,我可能会尝试使用titlesec包来自定义标题格式。使用该explicit选项可以为您提供更多灵活性。但是,由于阿拉伯语是从右到左的,因此您需要反转命令中的顺序。

我自己看不懂阿拉伯语,所以我不知道这是否是您想要的,但我最好的猜测是这样的。您可能想要调整字体大小(此处\large)以及对齐方式(\flushleft),等等。

\documentclass[12pt]{amsart}
\usepackage[a4paper,margin=0.5in]{geometry}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage[explicit]{titlesec}
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2]{Amiri}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewcommand\thesection{\fbox{\Roman{section}}}
\renewcommand\thesubsection{\fbox{\arabic{subsection}}}
\renewcommand\thesubsubsection{\fbox{\begin{english}\textit{\alph{subsubsection}}\end{english}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\titleformat{\section}[hang]{\flushleft\large}{#1\ \thesection}{0pt}{}
\titleformat{\subsection}[hang]{\flushleft\large}{#1\ \thesubsection}{0pt}{}
\titleformat{\subsubsection}[hang]{\flushleft\large}{#1\ \thesubsubsection}{0pt}{}
\begin{document}
    \section{اتصال}
    \subsection{اتصال في نقطة}
    \subsection{اتصال في مجال}
    \subsubsection{مبرهنة القيم الوسيطية}
    \section{اشتقاق}
    \subsection{اشتقاق في نقطة}
    \subsubsection{اشتقاق في المجال}
\end{document}

阿拉伯语标题

答案2

这是一个解决方案,它使用了我多年前从《The LaTeX Companion》一书中学到的方法。它不重新定义宏\thesection\thesubsection等。相反,它使用非常低级的 LaTeX 宏\section@cntformat\subsection@cntformat等在节标题中的节、小节和小小节编号周围绘制矩形框。这种方法的一个主要优点是您可以创建对节、小节等的交叉引用没有(大概)出现了不需要的框架框。

在此处输入图片描述

% !TEX TS-program = xelatex
\documentclass[12pt]{amsart}
\usepackage[a4paper,margin=0.5in]{geometry}

\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2]{Amiri}

% Method proposed in "The LaTeX Companion", 2nd ed.:
\makeatletter
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
   {\csname the#1\endcsname\space}%    default
   {\csname #1@cntformat\endcsname}}%  enable individual control
\newcommand\section@cntformat{\fbox{\thesection}\space}       % section
\newcommand\subsection@cntformat{\fbox{\thesubsection}\space} % subsection
\newcommand\subsubsection@cntformat{\fbox{\thesubsubsection}\space} % subsection
\makeatother

\begin{document}
    \section{اتصال}
    \subsection{اتصال في نقطة}
    \subsection{اتصال في مجال}
    \subsubsection{مبرهنة القيم الوسيطية}
    \section{اشتقاق}
    \subsection{اشتقاق في نقطة}
    \subsubsection{اشتقاق في المجال}
\end{document}

.如果您希望在框架框中包含尾随(“点”),只需更改

\newcommand\section@cntformat{\fbox{\thesection}\space}

\newcommand\section@cntformat{\fbox{\thesection.}\space}

\subsection@cntformat对于和也类似\subsection@cntformat


顺便,没有选项numerals=maghrib,将获得以下结果:

在此处输入图片描述

相关内容