TikZ 上的阿拉伯语文本协助

TikZ 上的阿拉伯语文本协助

我尝试同时使用阿拉伯语和 TikZ 图片,但是遇到了四个问题:

  1. 阿拉伯语单词以相反的顺序出现,第一个单词最后出现......
  2. 这个句子不像英语句子那样是弧形的。
  3. 这些数字似乎是以色列数字,而不是阿拉伯数字。
  4. 大部分饰物都不会出现,或者出现在不同的地方。


\documentclass[12pt]{book}
\usepackage{nopageno}
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=2cm,bmargin=2cm,lmargin=2.5cm,rmargin=2.5cm}
\setlength{\parskip}{\bigskipamount}
\setlength{\parindent}{0pt}
\usepackage{color}
\usepackage{tikz,pgfornament,tikzrput}         % altermundus.com/pages/tkz/tikzrput/
\usetikzlibrary{decorations,decorations.text}  % altermundus.com/pages/tkz/ornament/ 

\usepackage{setspace} \usepackage{fontspec} \usepackage{polyglossia} \usepackage{setspace} \setdefaultlanguage[numerals=machriq]{arabic} \setmainlanguage{english} \setotherlanguage{arabic} \newfontfamily\arabicfont[Script=Arabic,Scale=1.5 ,Mapping=arabicdigits]{Scheherazade} \begin{document} \begin{Arabic} \begin{tikzpicture} \draw[ultra thick,color=blue] circle[radius=6cm] circle[radius=7cm] ; \draw[line width=2mm,color=blue] circle[radius=7.4cm] ; \draw[line width=0.5mm,color=blue] circle[radius=5cm] ; \path [rotate=170,postaction={decoration={text along path,text format delimiters={|}{|},text={|\huge| Knowledge Raising House has no Mainstay {\pgfornament[scale=.4,ydelta=-9pt,color=blue]{15}} And Ignorance Destroys House of Glory and Honor {\pgfornament[scale=.4,ydelta=-9pt,symmetry=v,color=blue]{15}}}, text align=fit to path,reverse path}, decorate}] circle[radius=6.2cm] ; \rput{-20}(1.5,4.2){\pgfornament[scale=.2,color=blue]{87}} \rput{20}(-1.5,4.2){\pgfornament[scale=.2,color=blue]{87}} \rput{-20}(-1.5,-4.2){\pgfornament[scale=.2,color=blue]{87}} \rput{20}(1.5,-4.2){\pgfornament[scale=.2,color=blue]{87}} \rput{}(-2.5,-2.75){\pgfornament[scale=.25,color=blue]{10}} \rput{}(2.5,-2.75){\pgfornament[scale=.25,color=blue]{10}} \rput{}(0,4){\pgfornament[scale=.2,color=blue]{66}} \rput{}(0,2){\pgfornament[scale=.3,color=blue]{70}} \rput{}(0,-3){\pgfornament[scale=.3,color=blue]{70}} \rput(0,0){\pgfornament[scale=.6,color=blue]{75}} \rput{-90}(2,0){\pgfornament[scale=.6,color=blue]{72}} \rput{90}(-2,0){\pgfornament[scale=.6,symmetry=v,color=blue]{72}} \node[font=\huge,color=blue] at (0,3){} ; \path [rotate=218,postaction={decoration={text along path,text format delimiters={|}{|}, text={|\Huge| \AR{والجهل يهدم بيت العز والشرف} {\pgfornament[scale=.4,ydelta=-9pt,color=blue]{15}} 14-12-1968 {\pgfornament[scale=.4,ydelta=-9pt,symmetry=v,color=blue]{15}} \AR{العِلْمُ يرفع بيتًا لا عماد له} {\pgfornament[scale=.4,ydelta=-9pt,color=blue]{15}}}, text align=fit to path,reverse path}, decorate}] circle[radius=5.2cm] ; \node[font=\huge,color=blue] at (0,-2){} ; \end{tikzpicture} \end{Arabic} \end{document}

答案1

只需把个人括号内的单词如下:

{لها} {عماد} {لا} {بيوتا} {يبني} {العلم}

和:

\usepackage [utf] {arabxetex}

使用 Tikz 和 ArabXeTeX 的阿拉伯语文本

答案2

你并没有真正提供最小工作示例,但我会尽力回答第 (2) 点和第 (4) 点,因为我不太熟悉“从右到左”语言的工作原理latex。我使用的是 TeX Live 2012。

目前还不清楚您是使用xelatex还是进行编译lualatex。只有 的最新版本polyglossia与 兼容lualatex(不确定它是否已经在 CTAN 上),因此我推测您是使用 进行编译xelatex

使用 编译文件时,xelatex我得到了一大堆Undefined control sequence \rput。这就是为什么一些装饰物放在错误的位置。这似乎是因为tikzrput\rput根据 定义\ifpdf,但xelatex定义了\ifxetex。您可以通过放置 来解决这个问题

\let\ifpdf=\ifxetex

就在你装载tikzrput包裹之前。

该命令\AR似乎未定义。无论哪种方式,文本都是逐个标记消耗的,因此 \AR 是单独消耗的。此外,后面的阿拉伯语文本位于括号之间,因此被视为单个单元,而不是围绕曲线排版。如果我删除和周围的括号,\AR阿拉伯语文本就会围绕曲线排版。\AR

其余的我不太确定。

相关内容