ConTeXt MarkIV:阿拉伯字母在页眉和页边处脱节且颠倒

ConTeXt MarkIV:阿拉伯字母在页眉和页边处脱节且颠倒

我正在尝试使用 ConTeXt MarkIV 在页眉中获取阿拉伯语章节名称并在页边空白处获取一些阿拉伯语文本

以下是 MWE:

\mainlanguage[arabic]
\setupdirections[bidi=global]
\definefontfeature
  [arabic]
  [mode=node,language=dflt,script=arab,
    init=yes,medi=yes,fina=yes,isol=yes,
    liga=yes,dlig=yes,rlig=yes,tlig=yes,
    calt=yes,trep=yes,clig=yes,
    mark=yes,mkmk=yes,kern=yes,curs=yes]


\starttypescript [serif] [arabic]
  \definefontsynonym [Arabic-Regular] [file:ScheherazadeRegOT.ttf] [features=arabic]
  \definefontsynonym [Arabic-Bold] [file:ScheherazadeRegOT.ttf] [features=arabic]
\stoptypescript

\starttypescript [serif] [arabic] [name]
 \usetypescript[serif][fallback]
 \definefontsynonym [Serif]     [Arabic-Regular] [features=arabic]
 \definefontsynonym [SerifBold] [Arabic-Bold]    [features=arabic]
\stoptypescript

\starttypescript [Arabic]
  \definetypeface [Arabic] [rm] [serif] [arabic] [default] 
\stoptypescript 

\def\ArabicGlobalDir {\pagedir TRT\bodydir TRT\pardir TRT\textdir TRT}
\def\ArabicParDir    {\textdir TRT\pardir TRT}
\def\ArabicTextDir   {\textdir TRT}

\define\setarabic
  {\ArabicGlobalDir%
   \usetypescript[Arabic]%
   \setupbodyfont[Arabic,20pt]}

\definestartstop
  [arabicpar]
  [commands=\Arabic\ArabicParDir]

\define[1]\RT
  {{\Arabic\ArabicTextDir#1}}

\pagedir TRT
\bodydir TRT
\pardir TRT
\textdir TRT

\setuppapersize[A4]

\setuplayout[
  grid=min,
  backspace=55.999mm, width=130mm,
  topspace=39.666mm, height=210mm,
  header=12mm, footer=9mm,
  ]

\setupbodyfont[Arabic,24pt]
\setupinterlinespace[line=42pt]

\setupheads[number=no]
\setuphead[chapter][style=\bfd,before=,after=\blank,alternative=middle,grid=both]
\setuphead[section][style=\bfc,before=\blank,after=,grid=both]

\setupbackgrounds[header][text][frame=off, bottomframe=on]

\setupheadertexts
        [{\getmarking[chapter]}]    [{صفحة }]
        [{صفحة }]        [{\getmarking[chapter]}]

\setupinmargin[stack=yes]

\starttext

\chapter{الآجرومية}

\margintext{الآجرومية}

الحمد لله رب العالمين، وصلى الله وسلم وبارك على عبده ورسوله نبينا محمد وعلى آله وصحبه أجمعين، أما بعد:
فلا يخفى على من له أدنى عناية بالعلم الشرعي لا سيما ما يتعلق بالكتاب العزيز والسنة النبوية لا يخفى عليه أهمية معرفة اللغة العربية بفنونها العشرة أو الإثني عشر: 

\stoptext

我尝试在 ConTeXt 手册和这里搜索,但没有找到任何解决方案。

标题问题

答案1

我对如何根据上下文书写阿拉伯语知之甚少,通常我使用polyglossia,看起来你已经定义了从右到左书写文本的命令\ArabicTextDir,你可以使用它来解决问题:

\setupheadertexts [{\getmarking[chapter]}] [{\ArabicTextDir صفحة}][{صفحة }] [{\getmarking[chapter]}] 

\chapter{\ArabicTextDir الآجرومية}

代码

\mainlanguage[arabic]
\setupdirections[bidi=global]
\definefontfeature
  [arabic]
  [mode=node,language=dflt,script=arab,
    init=yes,medi=yes,fina=yes,isol=yes,
    liga=yes,dlig=yes,rlig=yes,tlig=yes,
    calt=yes,trep=yes,clig=yes,
    mark=yes,mkmk=yes,kern=yes,curs=yes]


\starttypescript [serif] [arabic]
  \definefontsynonym [Arabic-Regular] [file:ScheherazadeRegOT.ttf] [features=arabic]
  \definefontsynonym [Arabic-Bold] [file:ScheherazadeRegOT.ttf] [features=arabic]
\stoptypescript

\starttypescript [serif] [arabic] [name]
 \usetypescript[serif][fallback]
 \definefontsynonym [Serif]     [Arabic-Regular] [features=arabic]
 \definefontsynonym [SerifBold] [Arabic-Bold]    [features=arabic]
\stoptypescript

\starttypescript [Arabic]
  \definetypeface [Arabic] [rm] [serif] [arabic] [default] 
\stoptypescript 

\def\ArabicGlobalDir {\pagedir TRT\bodydir TRT\pardir TRT\textdir TRT}
\def\ArabicParDir    {\textdir TRT\pardir TRT}
\def\ArabicTextDir   {\textdir TRT}

\define\setarabic
  {\ArabicGlobalDir%
   \usetypescript[Arabic]%
   \setupbodyfont[Arabic,20pt]}

\definestartstop
  [arabicpar]
  [commands=\Arabic\ArabicParDir]

\define[1]\RT
  {{\Arabic\ArabicTextDir#1}}

\pagedir TRT
\bodydir TRT
\pardir TRT
\textdir TRT

\setuppapersize[A4]

\setuplayout[
  grid=min,
  backspace=55.999mm, width=130mm,
  topspace=39.666mm, height=210mm,
  header=12mm, footer=9mm,
  ]

\setupbodyfont[Arabic,24pt]
\setupinterlinespace[line=42pt]

\setupheads[number=no]
\setuphead[chapter][style=\bfd,before=,after=\blank,alternative=middle,grid=both]
\setuphead[section][style=\bfc,before=\blank,after=,grid=both]

\setupbackgrounds[header][text][frame=off, bottomframe=on]

\setupheadertexts
        [{\getmarking[chapter]}]    [{\ArabicTextDir صفحة}]
        [{صفحة }]        [{\getmarking[chapter]}]

\setupinmargin[stack=yes]

\starttext

\chapter{\ArabicTextDir الآجرومية}

\margintext{الآجرومية}

الحمد لله رب العالمين، وصلى الله وسلم وبارك على عبده ورسوله نبينا محمد وعلى آله وصحبه أجمعين، أما بعد:
فلا يخفى على من له أدنى عناية بالعلم الشرعي لا سيما ما يتعلق بالكتاب العزيز والسنة النبوية لا يخفى عليه أهمية معرفة اللغة العربية بفنونها العشرة أو الإثني عشر: 

\stoptext

输出

在此处输入图片描述

答案2

我从 Hans 回答的 ConTeXt 邮件列表中找到了以下解决方案。

\setupmargindata[margintext]
[align=r2l]

\setupalign[r2l]  

\setupheader[style=\righttoleft, state=normal]

上述解决方案效果很好。

相关内容