Font Arab untuk documentclass {exam}

Oct 15 2020

Kode saya

\documentclass{exam}

\pagestyle{headandfoot}
\firstpageheader{\bfseries\large رياضيات\\مأمون }{\includegraphics{example-image}}{\bfseries\large الإمتحان الأول }

\begin{document}
مرحبا كيف حالكم, جزاكم الله كل خير 

\begin{table}
    \begin{tabular}{lllll}
        الوحدة & فصول الوحدة & عدد الحصص & الفترة الزمنية & الوسائل المقترحة\\
    \end{tabular} 
\end{table}

\end{document}

Semua kode ini tidak berfungsi.

\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.1,AutoFakeSlant=-0.03]{Amiri}
\setsansfont[Script=Arabic,Scale=1.1]{Amiri}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}
\newfontfamily\arabicfont[Script = Arabic]{Simplified Arabic}
\usepackage{sexam} % wexam & sexam package
%\setdefaultlanguage[calendar=gregorian,,locale=algeria]{arabic} % on sexam.sty
%\newfontfamily\arabicfont[Script=Arabic,Scale=1.1]{Amiri}% on sexam.sty
%\newfontfamily\arabicfontsf[Script=Arabic,Scale=1.2]{Aljazeera}% on sexam.sty
%\newfontfamily\arabicfonttt[Script=Arabic,Scale=1.1]{Simplified Arabic} % on sexam.sty

Jawaban

3 Davislor Oct 17 2020 at 20:54

LuaLaTeX membutuhkan perender HarfBuzz untuk menampilkan skrip yang kompleks dengan menggabungkan karakter, tetapi memilih perender lama secara default. Ini tampaknya berhasil untuk saya (meskipun saya tidak tahu bahasa Arab dan meminta maaf jika teksnya salah)

\documentclass{exam}
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont{Amiri}[
  Script=Arabic,
  Scale=MatchLowercase,
  AutoFakeSlant=-0.03, % Are you sure?
  Renderer=HarfBuzz ]

\pagestyle{headandfoot}
\firstpageheader{\bfseries\large رياضيات\\مأمون }{}{\bfseries\large الإمتحان الأول }

\begin{document}
مرحبا كيف حالكم, جزاكم الله كل خير 
\end{document}

Itu juga mungkin untuk digunakan babel. MWE ini memuat font Libertinus Khaled Hosny, termasuk Libertinus Math, sebagai pendamping font Amiri-nya.

\documentclass{exam}
\usepackage[bidi=basic,layout=sectioning.tabular,english]{babel}
\usepackage{unicode-math}

\babelprovide[import,main]{arabic} % You might select a variant here.

\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX, Renderer=Harfbuzz }
\babelfont{rm}
          [Scale=1.0, Ligatures={Common,Discretionary}]{Libertinus Serif}
\babelfont[arabic]{rm}
          {Amiri} % Might want to load a stylistic set or activate font features.
\babelfont{sf}
          [Ligatures={Common,Discretionary}]{Libertinus Sans}
% Load a sans-serif Arabic font here if needed, for example Noto Sans Arabic.
\babelfont{tt}
          {Libertinus Mono}
\babelfont[arabic]{tt}
          {ALM Fixed}
\setmathfont{Libertinus Math}

\babeltags{Arabic=arabic} % Enable \Arabic, \textArabic, etc.
\babeltags{english=english}

\pagestyle{headandfoot}
\firstpageheader{\bfseries\large رياضيات\\مأمون }{}{\bfseries\large الإمتحان الأول }

\begin{document}
    \begin{tabular}{lllll}
    الوحدة & فصول الوحدة & عدد الحصص & الفترة الزمنية & الوسائل المقترحة
    \end{tabular}  
\end{document}

Jika Anda hanya menggunakan bahasa Inggris untuk frasa pendek dalam dokumen Arab, Anda dapat menghapus englishopsi dari babeldan menambahkan \babelprovide[onchar=ids fonts]{english}untuk mendeteksi otomatis bahasa yang digunakan dan mengganti font secara otomatis.

2 TivV Oct 17 2020 at 20:14

Salah satu cara untuk melakukannya adalah dengan menggunakan fontspec dan polyglossia seperti yang Anda lakukan di beberapa cuplikan kode Anda. (Karena Anda sudah mencobanya, saya menduga Anda sedang membangun dokumen dengan LuaLaTeX, bukan pdfLaTeX.)

Jika Anda ingin mengetahui secara detail bagaimana Anda dapat menggunakan poliglosia untuk mengaktifkan banyak bahasa dan beralih di antara mereka, saya sarankan Anda untuk melihat di manual poliglosia. Berikut ini salah satu contohnya (Saya baru saja menggunakan Amiri sebagai font arab karena saya sudah menginstalnya):

\documentclass{exam}
\usepackage{fontspec}
\usepackage{polyglossia}

\setdefaultlanguage{english}
\setotherlanguage{arabic}

\newfontfamily\arabicfont{Amiri}

\usepackage{graphicx}

\pagestyle{headandfoot}
\firstpageheader{\bfseries\large \textarabic{رياضيات\\مأمون}}{\includegraphics{example-image}}{\bfseries\large \textarabic{الإمتحان الأول}}

\begin{document}
\textarabic{مرحبا كيف حالكم, جزاكم الله كل خير }
\end{document}

Yang memberikan keluaran ini:

Jika Anda ingin menggunakan bahasa Arab terutama dalam dokumen Anda, Anda mungkin harus menggunakan \setdefaultlanguage{arabic}. Maka Anda tidak perlu meletakkan \textarabic{...}setiap teks arab.