![是否可以让 texnegar 在 LuaLaTeX 中处理阿拉伯诗歌?](https://linux22.com/image/427185/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%AE%A9%20texnegar%20%E5%9C%A8%20LuaLaTeX%20%E4%B8%AD%E5%A4%84%E7%90%86%E9%98%BF%E6%8B%89%E4%BC%AF%E8%AF%97%E6%AD%8C%EF%BC%9F.png)
我偶然发现了 texnegar 来解决 kashida 问题,想知道是否可以使用 ArabLuaTeX 或任何其他解决方案(例如 bidipoem)用它写阿拉伯语诗歌。此外,按照文档中给出的示例,我似乎无论如何都无法使 kashida 正常工作。这是一个示例:
\documentclass[A4paper,11pt]{book}
\usepackage[Kashida=glyph,kashidastretch=0.14 em plus 0.5 em,hboxrecursion=On,vboxrecursion=On,color=red,ligatures=default]{texnegar}
\usepackage[bidi=default]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
\babelfont{rm}[Language=Default,Scale=1.5]{Scheherazade}
\babelfont{sf}[Language=Default]{Scheherazade}
\babelfont[french]{rm}{Junicode}
\babeltags{ar = arabic}
\babeltags{fr = french}
\usepackage{multicol}
\usepackage{color}
\usepackage{bidipoem}
\usepackage{arabluatex}
\begin{document}
%Source: https://blogs.harvard.edu/sulaymanibnqiddees/tag/arabic-sufi-poetry/
عــليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم
\begin{multicols}{3}
عــليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم عــليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم
\end{multicols}
\begin{traditionalpoem*}
علـــــيك صلاة الله ثم سلامه & ألا يــا رسول الله إنى مغرم
صَبَبتُ دُمُوعاً يَشهَدُ الحُزنُ أَنَّها & أَتَت مِن فُؤَادٍ بالغَرَامِ مُتَيَّمُ
وَلَيسَ لَهُ مِن ذَا التَّتَيُّمِ مُشرِحٌ & سِوَى أن يَرَى مَعشُوقَهُ فَيُسَلِّمُ
يَقُولُ لِى المَعشُوقُ لاَ تَخشَ بَعدَ ذَا & حِجاباً وَلاَ طَرداً فَعَهدِى مُتَمَّمُ
مَتَى ما أردَتَ القُربَ مِنّىِ فَنادِنِى & أَلاَ يا رَسُولَ اللهِ إِنِّىَ مُغرَمُ
أُجُيبُكَ مِن بُعدٍ وَإِنِّى جَلِيسُ مَن & بِحُبِّىَ مَشغولٌ بِذِكرى مُتَرجِمُ
حَلَفتُ يَمِيناً إِنَّ قَلباً يُحِبُّكُم & عَلَيهِ عَذابُ النَّارِ قَطعاً مُحرَّمُ
فَكَيفَ بمَن قَد شامَكُم كُلَّ ساعَةٍ & فَهذَا يَقِيناً في الجِنانِ يُنَعَّمُ
سَلاَمٌ عَلَيكُم وَالسَّلاَمُ يُنِيلُنِى & كَمالَ شُهُودِ لِلجَمالِ وَيُلهِمُ
لِسانِى تَحِيَّاتٍ تَلِيقُ بِقَدرِكُم & أُكُرِّرُها في حَيَّكُم وَأُهمهِم
سَلاَمٌ علَى رَأسِ الرَّسُولِ مُحَمَّدٍ & لَرَأسٌ جَلِيلٌ بالجَلاَلِ مُعَمَّمُ
سَلاَمٌ علَى وَجهِ النَّبِىِّ مُحَمَّدٍ & فَيا نِعمَ وَجهٌ بالضِّياءِ مُلَثَّمُ
سَلاَمٌ عَلى طَرفِ النَّبِىِّ مُحَمَّدٍ & لَطَرفٌ كَحِيلٌ أَدعجٌ وَمُعَلَّمُ
سَلاَمٌ عَلى أنفِ النَّبِىِّ مُحَمَّدٍ & لأَنفٌ عَدِيلٌ أنوَرٌ وَمُقَوَّمُ
سَلامٌ علَى خَدّ الحَبيبِ مُحَمَّدٍ & لَخَدٌ مُنِيرٌ أسهَلٌ وَمُشَمَّمُ
سَلاَمٌ علَى فَمِّ النَّبِىِّ مُحَمَّدٍ & لَفَمٌّ بِهِ دُرٌّ نَفِيسٌ مُنَظَّمُ
بِغَيرِ كَلاَمِ اللهِ وَالذِّكرِ وَالنّدَا & لِحَضرَةِ مَولاَهُ فَلاَ يَتَكَلمُ
سَلامٌ علي عُنق النَّبِىِّ مُحَمَّدٍ & لَعُنقٌ سَطِيعٌ نَيِّرٌ وَمُبَرَّمُ
سَلاَمٌ على صَدرِ الحَبِيبِ مُحَمَّدٍ & لَصَدرٌ وَسِيعٌ بالعُلُومِ مُطَمطَمُ
سَلاَمٌ على قَلبِ الحَبيبِ مُحَمَّدٍ & لَقلبٌ بِنُورِ اللهِ دَوماً مُقَيَّمُ
يُشَاهِدُ رَبَّ العَرشِ في كُلِّ لَحظَةٍ & فإن نامَتِ العَينانِ ما نامَ فاعلَمُوا
سَلاَمٌ على كَفِّ النبي مُحَمَّدٍ & لَكَفٌ رَحيبٌ كَم يَجُودُ وَيُكرِمُ
بهِ كَم فَقِيرٍ صَارَ مِن بَعدِ فَقرِهِ & غَنِيًّا وَكَم طاغٍ بهِ مُتَضَيِّمُ
سَلاَمٌ على قَدَمٍِ الحَبيبِ مُحَمَّدٍ & بهِ دَاسَ حُجبَ العِزِّ ذَاكَ المُقَدِّمُ
بهِ قامَ في المِحرَابِ لِلهِ قانِتاً & يُناجى لِرَبِّ العَرشِ وَالنَّاسُ نُوَّمُ
فَما زَالَ هذَا دَأبُهُ كُلَّ لَيلَةٍ & إِلى أَن بهِ بانَ الوَنا وَالتَّوَرُّمُ
سَلاَمٌ على ذَاتِ النبي مُحَمَّدٍ & فَيا حُسنَها فِيها الجَمالُ مُتَمَّمُ
سَلاَمٌ عَلى كُلِّ النبي مُحَمَّدٍ & نبي عَظِيمٌ بالجَلالِ مُعَظَّمُ
نَبِىٌ لِمَولاَهُ العَلِّى عِنايَةٌ & بِهِ تَبدُو إِذ ما الخَلقُ في الحَشرِ يُفحَمُ
عَلَيهِ لِوَاءُ الحَمدِ يُنصَبُ رِفعَةً & وَمِن تَحتِهِ الانباءُ وَالرُّسلُ يُزحَمُ
بِهِ كُلُّ عاص في القِيامةِ لاَئِذٌ & وَكُلُّ مُحِبٍّ فائِزٌ وَمُكلَّمُ
بِهِ يَرتَجِى المَجذُوبُ يَنجُو بِصَحبهِ & بِغَيرِ امتِحانٍ يا شَفِيعُ وَيَسلَمُ
عليك صلاة الله ثم سلامه & يَعُمَّانِ كلَّ الآلِ ها نحن نختمُ
\end{traditionalpoem*}
\begin{arabverse}
\bayt{علــيك صلاة الله ثم سلامه}{ألا يــا رسول الله إنى مغرم} \\
\bayt{صَبَبتُ دُمُوعاً يَشهَدُ الحُزنُ أَنَّه}{أَتَت مِن فُؤَادٍ بالغَرَامِ مُتَيَّمُ} \\
\bayt{وَلَيسَ لَهُ مِن ذَا التَّتَيُّمِ مُشرِحٌ }{سِوَى أن يَرَى مَعشُوقَهُ فَيُسَلِّمُ} \\
\bayt{يَقُولُ لِى المَعشُوقُ لاَ تَخشَ بَعدَ ذَا}{حِجاباً وَلاَ طَرداً فَعَهدِى مُتَمَّمُ} \\
\bayt{مَتَى ما أردَتَ القُربَ مِنّىِ فَنادِنِى}{أَلاَ يا رَسُولَ اللهِ إِنِّىَ مُغرَمُ} \\
\bayt{أُجُيبُكَ مِن بُعدٍ وَإِنِّى جَلِيسُ مَن}{بِحُبِّىَ مَشغولٌ بِذِكرى مُتَرجِمُ} \\
\bayt{حَلَفتُ يَمِيناً إِنَّ قَلباً يُحِبُّكُم}{عَلَيهِ عَذابُ النَّارِ قَطعاً مُحرَّمُ}\\
\bayt{فَكَيفَ بمَن قَد شامَكُم كُلَّ ساعَةٍ}{فَهذَا يَقِيناً في الجِنانِ يُنَعَّمُ} \\
\bayt{سَلاَمٌ عَلَيكُم وَالسَّلاَمُ يُنِيلُنِى}{كَمالَ شُهُودِ لِلجَمالِ وَيُلهِمُ} \\
\bayt{لِسانِى تَحِيَّاتٍ تَلِيقُ بِقَدرِكُم}{ أُكُرِّرُها في حَيَّكُم وَأُهمهِم} \\
\bayt{سَلاَمٌ علَى رَأسِ الرَّسُولِ مُحَمَّدٍ}{لَرَأسٌ جَلِيلٌ بالجَلاَلِ مُعَمَّمُ} \\
\bayt{سَلاَمٌ علَى وَجهِ النَّبِىِّ مُحَمَّدٍ}{فَيا نِعمَ وَجهٌ بالضِّياءِ مُلَثَّمُ} \\
\bayt{سَلاَمٌ عَلى طَرفِ النَّبِىِّ مُحَمَّدٍ}{لَطَرفٌ كَحِيلٌ أَدعجٌ وَمُعَلَّمُ} \\
\bayt{سَلاَمٌ عَلى أنفِ النَّبِىِّ مُحَمَّدٍ}{لأَنفٌ عَدِيلٌ أنوَرٌ وَمُقَوَّمُ} \\
\bayt{سَلامٌ علَى خَدّ الحَبيبِ مُحَمَّدٍ}{ لَخَدٌ مُنِيرٌ أسهَلٌ وَمُشَمَّمُ} \\
\bayt{سَلاَمٌ علَى فَمِّ النَّبِىِّ مُحَمَّدٍ}{ لَفَمٌّ بِهِ دُرٌّ نَفِيسٌ مُنَظَّمُ} \\
\bayt{بِغَيرِ كَلاَمِ اللهِ وَالذِّكرِ وَالنّدَا}{لِحَضرَةِ مَولاَهُ فَلاَ يَتَكَلمُ} \\
\bayt{سَلامٌ علي عُنق النَّبِىِّ مُحَمَّدٍ}{لَعُنقٌ سَطِيعٌ نَيِّرٌ وَمُبَرَّمُ} \\
\bayt{سَلاَمٌ على صَدرِ الحَبِيبِ مُحَمَّدٍ}{لَصَدرٌ وَسِيعٌ بالعُلُومِ مُطَمطَمُ} \\
\bayt{سَلاَمٌ على قَلبِ الحَبيبِ مُحَمَّدٍ}{لَقلبٌ بِنُورِ اللهِ دَوماً مُقَيَّمُ} \\
\bayt{يُشَاهِدُ رَبَّ العَرشِ في كُلِّ لَحظَةٍ}{ فإن نامَتِ العَينانِ ما نامَ فاعلَمُوا} \\
\bayt{سَلاَمٌ على كَفِّ النبي مُحَمَّدٍ}{لَكَفٌ رَحيبٌ كَم يَجُودُ وَيُكرِمُ} \\
\bayt{بهِ كَم فَقِيرٍ صَارَ مِن بَعدِ فَقرِهِ}{غَنِيًّا وَكَم طاغٍ بهِ مُتَضَيِّمُ}\\
\bayt{سَلاَمٌ على قَدَمٍِ الحَبيبِ مُحَمَّدٍ}{بهِ دَاسَ حُجبَ العِزِّ ذَاكَ المُقَدِّمُ} \\
\bayt{بهِ قامَ في المِحرَابِ لِلهِ قانِتاً}{يُناجى لِرَبِّ العَرشِ وَالنَّاسُ نُوَّمُ} \\
\bayt{فَما زَالَ هذَا دَأبُهُ كُلَّ لَيلَةٍ}{ إِلى أَن بهِ بانَ الوَنا وَالتَّوَرُّمُ} \\
\bayt{سَلاَمٌ على ذَاتِ النبي مُحَمَّدٍ}{فَيا حُسنَها فِيها الجَمالُ مُتَمَّمُ} \\
\bayt{سَلاَمٌ عَلى كُلِّ النبي مُحَمَّدٍ}{ نبي عَظِيمٌ بالجَلالِ مُعَظَّمُ} \\
\bayt{نَبِىٌ لِمَولاَهُ العَلِّى عِنايَةٌ}{بِهِ تَبدُو إِذ ما الخَلقُ في الحَشرِ يُفحَمُ} \\
\bayt{عَلَيهِ لِوَاءُ الحَمدِ يُنصَبُ رِفعَةً}{وَمِن تَحتِهِ الانباءُ وَالرُّسلُ يُزحَمُ} \\
\bayt{بِهِ كُلُّ عاص في القِيامةِ لاَئِذٌ}{وَكُلُّ مُحِبٍّ فائِزٌ وَمُكلَّمُ} \\
\bayt{بِهِ يَرتَجِى المَجذُوبُ يَنجُو بِصَحبهِ }{بِغَيرِ امتِحانٍ يا شَفِيعُ وَيَسلَمُ} \\
\bayt{عليك صلاة الله ثم سلامه}{ يَعُمَّانِ كلَّ الآلِ ها نحن نختمُ} \\
\end{arabverse}
\end{document}
答案1
此问题现已在新版本 (0.1c) 中修复特克斯内加今天已上传到 CTAN。以下是、、和kashida
的实施结果。要测试新字体,只需在以下代码中重新定义 CS 。HM XKayhan
Adobe Arabic
Amiri
Scheherazade New
Scheherazade
\FontName
\documentclass{report}
\usepackage{fontspec}
\def\FontName{HM XKayhan}
% \def\FontName{Adobe Arabic}
% \def\FontName{Amiri}
% \def\FontName{Scheherazade New}
% \def\FontName{Scheherazade}
\newdimen\oldhsize
\oldhsize=\hsize
\def\SampleTitle#1#2{{\noindent\large \pardir TLT \textdir TLT Engine: {\color{blue}\texttt{LuaTeX using texnegar}}, \\
Font: {\color{blue}\texttt{\FontName}}, \\ Style: {\color{blue}\texttt{Regular}}, \\
Kashida: {\color{blue}\texttt{#2}}}\hbox{}\vskip 5mm}
\def\SampleTextOne{\pardir TRT \textdir TRT
این یک آزمایش است. \linebreak[4] }
\def\SampleTextTwo{\pardir TRT \textdir TRT
راهی جایی تابی چاپی چاههی
شتابهایی تابی چاپی راهی تلاشهــایی
که کتابهایی که کلاههایی که کتابهایی }
\pretolerance = 10000
\pagestyle{empty}
\usepackage[Minimal=On,Kashida=glyph,kashidastretch=0.14 em plus 0.5 em,hboxrecursion=On,vboxrecursion=On,color=red]{texnegar}
% \usepackage[Minimal=On,Kashida=leaders+glyph,kashidastretch=0.14 em plus 0.5 em,hboxrecursion=On,vboxrecursion=On,color=red]{texnegar}
% \usepackage[Minimal=On,Kashida=leaders+hrule,kashidastretch=0.14 em plus 0.5 em,hboxrecursion=On,vboxrecursion=On,color=red]{texnegar}
\setfontfamily\FontNl[Script=Arabic,Language=Persian,Scale=1.5]{\FontName}
\setfontfamily\FontRm[Script=Arabic,Language=Persian,Scale=4.5]{\FontName}
\begin{document}
\KashidaOff \SampleTitle{\FontName}{Off} \par
\vbox{\hsize=2in \KashidaOff \FontNl \SampleTextOne } \par
\hsize=3in \KashidaOff { \FontNl \SampleTextOne } \par \vskip 20pt
\hsize=\oldhsize { \FontRm \SampleTextTwo }
\newpage
\KashidaOn \SampleTitle{\FontName}{glyph (On)} \par
\vbox{\hsize=2in \KashidaOn \FontNl \SampleTextOne } \par
\hsize=3in \KashidaOn { \FontNl \SampleTextOne } \par \vskip 20pt
\hsize=\oldhsize { \FontRm \SampleTextTwo }
\end{document}
答案2
解决此问题的一个方法是重新定义命令,\bayt
如下所示:
\documentclass[A4paper,11pt]{book}
% \usepackage[Kashida=leaders+glyph,kashidastretch=0.14 em plus 0.5 em,hboxrecursion=On,vboxrecursion=On,color=red,ligatures=default]{texnegar}
\usepackage[Kashida=glyph,kashidastretch=0.14 em plus 0.5 em,hboxrecursion=On,vboxrecursion=On,color=red,ligatures=default]{texnegar}
\usepackage[bidi=default]{babel}
\babelprovide[import=ar-DZ, main]{arabic}
% \babelfont{rm}[Language=Default,Scale=2]{Scheherazade}
% \babelfont{sf}[Language=Default,Scale=2]{Scheherazade}
\babelfont{rm}[Language=Default,Scale=2]{HM XKayhan}
\babelfont{sf}[Language=Default,Scale=2]{HM XKayhan}
\babelfont[french]{rm}{Junicode}
\babeltags{ar = arabic}
\babeltags{fr = french}
\usepackage{multicol}
\usepackage{color}
\usepackage{bidipoem}
\usepackage{arabluatex}
\pagestyle{empty}
\makeatletter
\RenewDocumentCommand{\bayt}{s m o m}{%
\IfBooleanTF{#1}{\relax}{\relax}%
\ifdefined\savenotes\savenotes\else\fi%
\edef\al@tatweel{--}%
\ifal@warp@bayt%
\adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#2}}%
\else%
% \makebox[\al@bayt@width][s]{\arb@utf{#2}}%
\makebox[\al@bayt@width][s]{\vbox{\hsize=\al@bayt@width \KashidaOn \arb@utf{#2} \linebreak[4]}}%
\fi%
\IfNoValueTF{#3}{%
\ifal@verse@delim\makebox[\al@gutter@width][c]{\al@hemistich@delim}%
\else%
\hspace{\al@gutter@width}%
\fi
}{%
\edef\@tempa{#3}%
\ifx\@tempa\al@tatweel%
\ifx\al@mode\al@mode@trans%
\hspace{\al@gutter@width}%
\else%
\makebox[\al@gutter@width][s]{\al@verse@stroke}%
\fi%
\else%
\ifx\al@mode\al@mode@trans%
\ifal@warp@bayt%
\adjustbox{width=\al@gutter@width, height=\Height}{\arb@utf{#3}}%
\else%
\makebox[\al@gutter@width][s]{\arb@utf{#3}}%
\fi%
\else%
\makebox[\al@gutter@width][s]{\arb@utf{#3}}%
\fi\fi}%
\ifal@warp@bayt%
\adjustbox{width=\al@bayt@width, height=\Height}{\arb@utf{#4}}%
\else%
% \makebox[\al@bayt@width][s]{\arb@utf{#4}}%
\makebox[\al@bayt@width][s]{\vbox{\hsize=\al@bayt@width \KashidaOn \arb@utf{#4} \linebreak[4]}}%
\fi%
\ifdefined\spewnotes\spewnotes\else\fi%
}
\makeatother
\begin{document}
%Source: https://blogs.harvard.edu/sulaymanibnqiddees/tag/arabic-sufi-poetry/
عــليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم
وَلَيسَ لَهُ مِن ذَا التَّتَيُّمِ مُشرِحٌ سِوَى أن يَرَى مَعشُوقَهُ فَيُسَلِّمُ
علــيك صلاة الله ثم سلامه ألا يــا رسول الله إنى مغرم
صَبَبتُ دُمُوعاً يَشهَدُ الحُزنُ أَنَّه أَتَت مِن فُؤَادٍ بالغَرَامِ مُتَيَّمُ
\begin{multicols}{3}
عــليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم عــليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يـا رسول الله إنى مغرم عليك صلاة الله ثم سلامه ألا يا رسول الله إنى مغرم
\end{multicols}
\begin{arabverse}[width=.45\linewidth]
\let\arabicfont\empty
\StretchBayt[false]
\bayt{ صببت دموعا }{ يشهد الحزن انها } \\
\bayt{ أَتَت مِن فُؤَادٍ }{ بالغَرَامِ مُتَيَّمُ } \\
\end{arabverse}
\end{document}