\documentclass[12pt]article \usepackagefontspec \usepackagepolyglossia \setmainlanguagearabic \setotherlanguageenglish \newfontfamily\arabicfont[Script=Arabic]Noto Sans Arabic \newfontfamily\englishfontLatin Modern Roman
| Font | Why | |------|-----| | (Google) | Clean, open‑source, covers all Unicode Arabic ranges. | | Amiri | Classic book‑style, great for printed manuals. | | Scheherazade | Good for body text with nice ligatures. | 2.4 Translate the Content 2.4.1 Using a CLI MT Engine (DeepL Example) # Install deep-translator Python package pip install deep-translator ktab my system mtrjm llrbyt pdf
\newenvironmentRTL\beginR\endR \begindocument \beginRTL $if(title)$ \section*$title$ $endif$ | | --pdf-engine=xelatex | XeLaTeX understands Unicode &
# Simple script to translate a Markdown file python - <<'PY' from deep_translator import DeepLTranslator import pathlib, sys, re ktab my system mtrjm llrbyt pdf
| Flag | Meaning | |------|---------| | --from markdown+yaml_metadata_block | Accepts front‑matter for title, author, date, etc. | | --template=... | Our custom RTL LaTeX template. | | --pdf-engine=xelatex | XeLaTeX understands Unicode & modern fonts. | | --toc | Auto‑generates a table of contents (Arabic page numbers). | | --metadata title="..." | Sets the Arabic title that appears on the cover page. | | QC Item | How to verify | |---------|----------------| | Spelling & grammar | Use LanguageTool (Arabic mode) or Microsoft Editor . | | RTL rendering | Open PDF in Acrobat Reader → check that paragraphs start on the right and that bullet points point left. | | Clickable TOC | Verify that each entry jumps to the right page. | | Figures | Captions are Arabic, numbers are right‑aligned. | | Code blocks | Still left‑to‑right, monospaced, no broken characters. | | Accessibility | Run pdfinfo or Acrobat’s “Read Out Loud” to ensure Arabic text is selectable (not rasterized). |
% Code blocks (left‑to‑right) \usepackagelistings \lstset basicstyle=\ttfamily\small, language=, breaklines=true, frame=single, numbers=left, numberstyle=\tiny, xleftmargin=0.5cm, xrightmargin=0.5cm, columns=fullflexible, keepspaces=true, escapeinside=(*@@*)