[XeTeX] arabic

Kamal Abdali k.abdali at acm.org
Sun Oct 24 21:05:13 CEST 2010


Thanks, Ross, for your effort to tame makeindex for the Arabic script.

I also came across an interesting Persian sample that uses xepersian and
makeindex. The pdf and tex source are at
      http://www.parsilatex.com/joomla/attachments/vahid-seminar.pdf
      http://www.parsilatex.com/joomla/attachments/vahid-seminar.tex
Missing some of the source components, I couldn't reproduce the pdf exactly.
But lo and behold, the index was generated without fuss and in the desired
order of entries. I am still mystified why the letters are disconnected in
the text, but that's another debugging chore.

Kamal Abdali

On Sat, Oct 23, 2010 at 18:30, Ross Moore <ross.moore at mq.edu.au> wrote:

> Hi Vafa, Houda, Kamal, Ulrike and others,
>
>
> On 23/10/2010, at 1:43 PM, Vafa Khalighi wrote:
>
> > I disagree. If makeindex was so perfect, why would someone spends lots of
> time inventing a new system.
>
> Nobody said  makeindex  was perfect, just that it may be
> sufficient for the job at hand.
>
> If the only problem is in representing the page-numbers using
> other than western digits, then this is certainly achievable.
> (See below for the kind of configuration that is needed.)
>
> On the other hand, Makeindex  would have difficulty sorting
> the index entries automatically, according to rules
> for non-latin scripts, unless there were extra sorting
> tags provided with \index instances of the form
>     \index{... at .....}
>
>
> >
> > For languages like Persian, Urdu, and other complex scripts, makeindex is
> not suitable and you have got to use xindy.
>
> Until you have defined exactly what tasks are needed,
> and how they need to fit with the workflow being employed,
> how can you presume to say what is suitable and what is not?
>
> >
> >
> > --
> > بسی رنج بردم در این سال سی         عَجَم زنده کردم بدین پارسی
> >
>
> If the *only* problem is to deal with the page numbers
> in the .ind  file, such as the OP gets using the defaults
> for Makeindex; viz.
>
> >>> \begin{theindex}
> >>>
> >>>   \item test, 5
> >>>
> >>>   \indexspace
> >>>
> >>>   \item نمایه, 5
> >>>
> >>> \end{theindex}
>
> (Beware the RTL text may be confusing the appearance
> of the actual byte order here.)
>
> You can configure to get the following instead:
>
> >>>  \begin{theindex}
> >>>
> >>>   \item test, \pagenumstyled 5
> >>>
> >>>   \indexspace
> >>>
> >>>   \item نمایه, \pagenumstyled 5
> >>>
> >>>  \end{theindex}
>
>
> Now all that is needed is to define \pagenumstyled
> appropriately, to "read ahead" and adjust how the
> page number is to be displayed.
> Here is example (La)TeX coding that does this:
>
> \RequirePackage{arabicnumbers}
> \newcount\pageindcnt
> \def\pagenumstyled{\afterassignment\dopagenumstyle\pageindcnt}
> \def\dopagenumstyle{\arabicdigits{\number\pageindcnt}}
>
>
>
> So how is the configuration achieved?
>
> Use a customised .ist  file.
> The following is minimal. It can be easily extended to cope
> with nested entries and headings for letter-ranges, etc.
>
> >>> %%%%  start of file  myind.ist  %%%%%%%
> >>> preamble
> >>> "\\begin{theindex} \n "
> >>> postamble
> >>> "\n\n \\end{theindex}\n"
> >>> delim_0   ", \\pagenumstyled "
> >>> %%%%  end of  myind.ist  %%%%%%%
>
>
> To use this the call to  Makeindex needs to be include
> extra parameters; e.g.
>
>  makeindex -s ./myind.ist -o test-arabe1.ind test-arabe1.idx
>
> for a document named  test-arabe1.tex
> This will load the customised .ist  file from
> the same directory as the document source.
>
> Of course you could put it in another loaction that
>  Makeindex will find, or you could adjust the TeXshop
> command for Makeindex, or use a shell script, or ...
>
> Do whatever fits best with your workflow.
>
>
> Here is a neat way, using \write18  that keeps all of
> the coding together in your LaTeX document's preamble:
>
>
> >>> \usepackage{makeidx}
> >>> \RequirePackage{arabicnumbers}
> >>> \newcount\pageindcnt
> >>> \def\pagenumstyled{\afterassignment\dopagenumstyle\pageindcnt}
> >>> \def\dopagenumstyle{\arabicdigits{\number\pageindcnt}}
> >>> \immediate\write18{makeindex -s ./myind.ist -o test-arabe1.ind
> test-arabe1.idx}
> >>> \makeindex
>
>
>
> Note that the call to  'makeindex'  must come *before* the \makeindex ,
> >
>
> so that it uses the  .idx  file from the previous LaTeX run.
> This is because \makeindex  is going to reset  test-arabe1.idx  as
> an output channel, to collect the index entries from the current run.
>
>
> This example simply shows how to apply styles to the page numbers
> in an index, generated using the  Makeindex  program.
> There is no claim here that all possible problems with the use
> of arabic digits and index entries are solved. For that, then
> presumably Xindy has more appropriate methods.
>
>
> Hope this helps,
>
>        Ross
>
>
> ------------------------------------------------------------------------
> Ross Moore                                       ross.moore at mq.edu.au
> Mathematics Department                           office: E7A-419
> Macquarie University                             tel: +61 (0)2 9850 8955
> Sydney, Australia  2109                          fax: +61 (0)2 9850 8114
> ------------------------------------------------------------------------
>
>
>
>
>
>
> --------------------------------------------------
> Subscriptions, Archive, and List information, etc.:
>  http://tug.org/mailman/listinfo/xetex
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/xetex/attachments/20101024/2b3a8a15/attachment-0001.html>


More information about the XeTeX mailing list