Hi

I'm not sure what reversing you get (the whole link? individual letters?), but in case it helps here is some antediluvian code that I used to use many years ago to get occasional Hebrew words in ordinary EmTeX. You would want to put the back-to-front text in the \reversedtext macro at the end of the code; and you would need to have \input pstricks somewhere in the header to your file. (Note that 'gobbledtext' in the follwowing just gets swallowed up - I've forgotten the ins and outs of this and think the code is a bit of trickery derived from something Jonathan Fine produced, either publicly or in a message to me.)

   \def\processlist#1%
   {%
    \ifx #1\ \ \else
    \ifx #1\sentinel \expandafter \sentinel \noexpand
     \else
%\processitem
     \flip #1\fi\fi
     \processlist
   }
   \def \sentinel {\gobble\sentinel}
   \def \gobble #1 {}
%where \processitem is up to you.
%Use as \processlistabcdefghij\sentinel
\def\flip#1{\psscalebox{-1 1}{#1\vrule height 0.8\baselineskip depth 0.2\baselineskip width0pt}}
\def\flipletter#1{\ifreverse \scalebox{-1 1}{#1}\else\relax\fi}
\def\reversedtext#1{\processlist #1\sentinel gobbledtext \hskip 0pt\ }

Example of usage:

Some stuff \reversedtext{turnitround}and some more stuff.

Note that the space following the reversed material is part of the \reversedtext macro so that after the closing } you *don't* put in a space (otherwise you'll get a double space in the output) - it seems quite hard to insert a space if you don't incorporate it in the macro, but as I say I've forgotten all the details. If you need spaces within the argument (I think not?) they would have to be given explicitly with \

If you want an entire block reversed (not each letter one by one), just give \input pstricks and then

\psscalebox{-1 1}{text to be reversed}

Hope this helps!

John

----- Original Message ----- From: "Ron Aaron" <r...@ronware.org>
To: <xetex@tug.org>
Cc: <ne...@nililand.de>
Sent: 20 August 2010 14:51
Subject: Re: [XeTeX] RTL hyperlink problems


On Friday 20 August 2010 16:15:22 Khaled Hosny wrote:
On Fri, Aug 20, 2010 at 03:11:15PM +0200, Ulrike Fischer wrote:
> Am Fri, 20 Aug 2010 13:57:46 +0300 schrieb Ron Aaron:
> > Yes, well that is exactly the problem I am trying to find a way to
> > work-around!
>
> I did understand this ;-). But if the author of bidi didn't find a
> solution to the problem  perhaps there isn't one.

Right, IIRC, that was the conclusion we reached while ago, it can't but
be fixed in the engine itself.

Hmm.  Well, I've almost got what I want by modifying my \hr macro like so:

\def\hr#1#2{%
\ifrtl\endR\fi
\special{pdf:bann <</Subtype/Link/BS
<</Type/Border/W 0.0 /S/S>>
/A << /S/URI/URI (#1)>> >>}
\special{pdf: bc [ 0 0 1 ]}{\bgroup #2 \egroup}\special{pdf: ec}
\special{pdf:eann}
\ifrtl\beginR\fi}


Note the '\ifrtl', which is a new conditional which must be set to indicate LTR vs RTL. So I stop the RTL before doing the special, and resume it when I'm done with the specials. That works /almost/ as I want.

The remaining problem is that the link text (#2 in the macro) is reversed, e.g. LTR. Do you know of a TeX way to reverse the characters? I could shell out to 'rev', but that would be a pretty severe hit since I have a lot of links in my document. I suppose I could also just reverse the text in the document so it shows in the correct direction, but that's not likely to be easy to remember to do.

Unlike in Arabic, Hebrew has no connecting forms to worrry about -- so simply printing the 'link text' should look ok (that text also has no vowel points to complicate matters).

Best regards,
Ron

--
Sending me something private?
Use my GPG public key: AD29415D


--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
http://tug.org/mailman/listinfo/xetex



--------------------------------------------------
Subscriptions, Archive, and List information, etc.:
 http://tug.org/mailman/listinfo/xetex

Reply via email to