Avid Seeker

Arabic LaTeX Setup

LuaLaTeX fontspec + luabidi

Minimal example:

 1\documentclass{article}
 2\usepackage{fontspec}
 3\usepackage{luabidi}
 4\setmainfont[Script=Arabic,Renderer=HarfBuzz]{ScheherazadeNew}
 5
 6\begin{document}
 7	\begin{RTL}
 8	.قِفَا نَبْكِ مِنْ ذِكْرَى حَبِيبٍ ومَنْزِلِ، بِسِقْطِ اللِّوَى بَيْنَ الدَّخُول فَحَوْمَلِ. فَتُوْضِحَ فَالمِقْراةِ لمْ يَعْفُ
 9	رَسْمُها، لِمَا نَسَجَتْهَا مِنْ جَنُوبٍ وشَمْألِ. تَرَى بَعَرَ الأرْآمِ فِي عَرَصَاتِهَا، وَقِيْعَانِهَا كَأنَّهُ حَبُّ
10	فُلْفُلِ. كَأنِّي غَدَاةَ البَيْنِ يَوْمَ تَحَمَّلُوا، لَدَى سَمُرَاتِ الحَيِّ نَاقِفُ حَنْظَلِ. وُقُوْفًا بِهَا صَحْبِي عَليَّ
11	مَطِيَّهُمُ، يَقُوْلُوْنَ: لا تَهْلِكْ أَسًى وَتَجَمَّلِ. وإِنَّ شِفائِيَ عَبْرَةٌ مُهْرَاقَةٌ، فَهَلْ عِنْدَ رَسْمٍ دَارِسٍ مِنْ
12	مُعَوَّلِ؟. كَدَأْبِكَ مِنْ أُمِّ الحُوَيْرِثِ قَبْلَهَا، وَجَارَتِهَا أُمِّ الرَّبَابِ بِمَأْسَلِ. إِذَا قَامَتَا تَضَوَّعَ المِسْكُ
13	مِنْهُمَا، نَسِيْمَ الصَّبَا جَاءَتْ بِرَيَّا القَرَنْفُلِ. فَفَاضَتْ دُمُوْعُ العَيْنِ مِنِّي صَبَابَةً، عَلَى النَّحْرِ حَتَّى
14	بَلَّ دَمْعِيَ مِحْمَلِي
15	\end{RTL}
16\end{document}

Problems:

LuaLaTeX Babel

Minimal example. Originally taken from lua-arabic.tex.

 1%$LuaLaTeX -*- coding: utf-8 ; mode: latex; TeX-engine: luatex; -*-
 2% source:
 3
 4\documentclass[a4paper]{book}
 5
 6\usepackage[english,
 7            bidi=basic,
 8            headfoot=arabic,  % an alternative is layout=sectioning
 9            layout=counters tabular]{babel}
10
11\babelprovide[import, main,
12  justification = kashida,
13  transforms = kashida.plain
14  ]{arabic}
15
16\babelfont{rm}
17          [ItalicFont=FreeSerif]
18          {FreeSerif}
19\babelfont[english]{rm}{FreeSerif} % We need some italics
20\babelfont[arabic]{rm}{ScheherazadeNew}
21
22\begin{document}
23قِفَا نَبْكِ مِنْ ذِكْرَى حَبِيبٍ ومَنْزِلِ، بِسِقْطِ اللِّوَى بَيْنَ الدَّخُول فَحَوْمَلِ. فَتُوْضِحَ فَالمِقْراةِ لمْ يَعْفُ
24رَسْمُها، لِمَا نَسَجَتْهَا مِنْ جَنُوبٍ وشَمْألِ. تَرَى بَعَرَ الأرْآمِ فِي عَرَصَاتِهَا، وَقِيْعَانِهَا كَأنَّهُ حَبُّ
25فُلْفُلِ. كَأنِّي غَدَاةَ البَيْنِ يَوْمَ تَحَمَّلُوا، لَدَى سَمُرَاتِ الحَيِّ نَاقِفُ حَنْظَلِ. وُقُوْفًا بِهَا صَحْبِي عَليَّ
26مَطِيَّهُمُ، يَقُوْلُوْنَ: لا تَهْلِكْ أَسًى وَتَجَمَّلِ. وإِنَّ شِفائِيَ عَبْرَةٌ مُهْرَاقَةٌ، فَهَلْ عِنْدَ رَسْمٍ دَارِسٍ مِنْ
27مُعَوَّلِ؟. كَدَأْبِكَ مِنْ أُمِّ الحُوَيْرِثِ قَبْلَهَا، وَجَارَتِهَا أُمِّ الرَّبَابِ بِمَأْسَلِ. إِذَا قَامَتَا تَضَوَّعَ المِسْكُ
28مِنْهُمَا، نَسِيْمَ الصَّبَا جَاءَتْ بِرَيَّا القَرَنْفُلِ. فَفَاضَتْ دُمُوْعُ العَيْنِ مِنِّي صَبَابَةً، عَلَى النَّحْرِ حَتَّى
29بَلَّ دَمْعِيَ مِحْمَلِي.
30
31Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod
32tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At
33vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren,
34no sea takimata sanctus est Lorem ipsum dolor sit amet.
35\end{document}

polyglossia + fontspec

 1\documentclass{article}
 2\usepackage{polyglossia}
 3\usepackage{fontspec}
 4
 5\setmainlanguage[numerals=maghrib]{arabic}
 6\setotherlanguage{english}
 7\newfontfamily\arabicfont[Script=Arabic]{Scheherazade}
 8
 9\begin{document}
10دونالد كنوث هو Donald Knuth
11\end{document}

Arabtex

1\documentclass[a4paper,10pt]{article}
2\usepackage{arabtex}
3\usepackage{utf8}
4\setcode{utf8}
5\begin{document}
6Arabic can be written \<عربي> in Arabic, and also \RL{اَلْعَرَبيَّةُ}.
7\end{document}

Kashida justification

Arabic is one of the few languages that are cursive and connected by their nature.

This makes justifying text different for Arabic. In addition to justifying text by spaces, there’s Kashida justification.

This is a compilation of resources related to implementing Kashida justification in various programs:

  1. Algorithm by Microsoft.
  2. LaTeX implementation by Andreas Hallberg.
  3. W3 Full Justification Proposal.

Open issues:

Other