根据上下文自定义从右到左的列表

根据上下文自定义从右到左的列表

如何使用从右到左列表的margin选项column(阿拉伯语)。

..., أ , ب我已经为从右到左的列表定义了新的枚举 ,但是如果我mergin为逐项环境添加或任何其他选项,我会得到bullet而不是我定义的标签。

平均能量损失

\setuppapersize[A4]
\mainlanguage[arabic]
\setupdirections[bidi=global]
\setupalign[r2l]  


\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] [name:Amiri] [features=arabic]
\stoptypescript

\starttypescript [serif] [arabic] [name]
 \usetypescript[serif][fallback]
 \definefontsynonym [Serif][Arabic][features=arabic]
\stoptypescript


\starttypescript [Arabic]
 \definetypeface [Arabic] [rm] [serif] [arabic] [default]
 \definetypeface [Arabic] [mm] [math]  [palatino] [default]
\stoptypescript 


\setuplayout[
  grid=min,
  backspace=20mm, width=170mm,
  topspace=10mm, height=275mm,
  header=10mm,footer=10mm,
  footerdistance=0.5mm
  ]


\setuppagenumbering[
  state=none,
 ]


\setupbodyfont[Arabic,18pt]
\setupinterlinespace[line=30pt]

\def\arabiclabel#1%
 {\ifcase#1 \or أ\or ب\or ج\or د\or ه\or
            و\or ي\else
  \expandafter\arabiclabel\expandafter{\the\numexpr#1-7\relax}\fi}

\defineconversion[s][\arabiclabel]


\starttext


\startitemize[s]
\item
كلمة
\item
كلمة
\item
كلمة
\stopitemize


\startitemize[s,margin=1em,columnn,three]
\item
كلمة
\item
كلمة
\item
كلمة
\stopitemize
 
\stoptext   

输出

在此处输入图片描述

注意从右到左的列应该从右边缘到左边缘

答案1

在从右到左的环境中,有两种方法可以设置条目的列版本。(这在测试版中有效,我不知道 TeXlive 2015 的稳定版本。无论如何,测试版很快就会在 TeXlive 2016 中找到自己的出路。)

第一种方法是更改​​文档中所有条目的行为,这在主要从右到左的文档中很方便。只需将以下内容放入序言中即可。

\setupmixedcolumns[itemgroupcolumns][direction=reverse]

第二种方法是改变单个条目的方向。这里你最好小心,正如另一个答案指出的那样,关键字和任务应该分开。看看下面的例子,使用第二种方法。

\setupalign[r2l]
\starttext
\startitemize[n,columns,three][direction=reverse]
\item One
\item Two
\item Three
\item Four
\item Five
\item Six
\item Seven
\stopitemize
\stoptext

实际上,CONTEXT 中有两种列项化方法。一种是您使用的那种,另一种是水平的。假设有两列和两个以上的项目,第一种方法将第二个项目放在第二行,而第二种方法将第二个项目放在第一行的第一个项目之后。(这在某些多项选择题中很有用。)

要使用从右到左设置中的水平方法,请尝试以下操作。

\startitemize[n,horizontal,two][direction=reverse]
\startitem One \stopitem
\startitem Two \stopitem
\startitem Three \stopitem
\startitem Four \stopitem
\stopitemize

还有一点:在当前测试版中,除了(and ) 宏或产生印度数字的对应键之外,您还可以使用\abjadnumerals和(它们会产生您喜欢的编号) 。在中定义了许多类似的编号方法。\arabicnumerals\arabicdecimals\persiandecimalscore-con.mkiv

答案2

您的代码中有两个错误:

  1. 关键字是columns,而不是列;
  2. 您必须分开关键字和任务(这是邮件列表中的经典)。

因此,你的第二个项目组应该像这样开始:

\startitemize [s,columns,three] [margin=1em]

相关内容