我创建了一个最小示例来重现我所经历的行为。
mytemplate.cls
我已经定义了一个具有特定标题格式的模板( ):
\ProvidesClass{mytemplate}
\LoadClass{article}
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\bfseries \LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
\end{center}%
\par
\vskip 2.5em}
我在.tex
下面的示例中使用了这个模板:
\documentclass[10pt,a4paper]{mytemplate}
\usepackage[default]{sourcesanspro}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{french}
%\setotherlanguage{arabic}
%\newfontfamily\arabicfont[Script=Arabic]{Amiri}
%\newfontfamily\arabicfontsf[Script=Arabic]{Amiri}
%\newfontfamily\arabicfonttt[Script=Arabic]{Amiri}
\usepackage{authblk}
\usepackage{lipsum}
\title{Test documento for using Arabic}
\author[1]{Author One}
\author[2]{Author Two}
\affil[1]{Author one affiliation}
\affil[2]{Author two affiliation}
\begin{document}
\maketitle
\lipsum[1]
%\begin{Arabic}
%طللك تحديد آراء العرب حيال الموقف التركي في الشرق الأوسط.
%\end{Arabic}
\lipsum[2]
\end{document}
从阿拉伯语行中取出评论,标题格式就丢失了。
如果我在文件上进行标题格式定义.tex
,在标题中设置阿拉伯语后,它就可以正常工作。但我想将格式信息放在模板中。如何解决这个问题?
答案1
使用@ulrike-fischer 提供的提示,只需在模板类文件中用maketitle
包围的新定义即可。\AtBeginDocument{...}
\ProvidesClass{mytemplate}
\LoadClass{article}
\AtBeginDocument{
\def\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\bfseries \LARGE \@title \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em%
\end{center}%
\par
\vskip 2.5em}
}