diff options
Diffstat (limited to 'Master/texmf-dist/doc/context/sources/general/manuals/hybrid/hybrid-bidi.tex')
-rw-r--r-- | Master/texmf-dist/doc/context/sources/general/manuals/hybrid/hybrid-bidi.tex | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/context/sources/general/manuals/hybrid/hybrid-bidi.tex b/Master/texmf-dist/doc/context/sources/general/manuals/hybrid/hybrid-bidi.tex new file mode 100644 index 00000000000..c291d11eb34 --- /dev/null +++ b/Master/texmf-dist/doc/context/sources/general/manuals/hybrid/hybrid-bidi.tex @@ -0,0 +1,194 @@ +% language=uk + +\startcomponent hybrid-inserts + +\environment hybrid-environment + +\startchapter[title={The Bidi Dilemma}] + +Here I will introduce a few concepts of bidirectional typesetting. While \LUATEX\ +does a lot automatically, this does not mean that you get a proper bidirectional +layout for free. We distinguish a few cases: + +\startitemize [packed] +\startitem verbatim as used in manuals \stopitem +\startitem simulating a text editor \stopitem +\startitem typesetting of text \stopitem +\stopitemize + +In addition to this we distinguish two document layouts: + +\startitemize [packed] +\startitem predominantly left||to||right with some right||to||left snippets \stopitem +\startitem predominantly right||to||left with some left||to||right snippets \stopitem +\stopitemize + +In both cases explicit choices have to be made when defining the layout, +programming the style, and coding the content. In this chapter I will stick to +verbatim. + +In verbatim mode we normally use a monospaced font and no interference with +features is to be expected. You get what you've keyed in. Because verbatim is +used for illustrative purposes, we need to have predictable output. This is why +we have to control the position of the linenumbers as well as the alignment +explicitly. + +\startbuffer[basics] +\definetyping [XXtyping] [numbering=line] +\definetyping [RLtyping] [align=r2l,numbering=line] +\definetyping [LRtyping] [align=l2r,numbering=line] +\stopbuffer + +\typebuffer[basics] \getbuffer[basics] + +We use these definitions in the following example: + +\startbuffer[sample] +\startLRtyping +At the left! +At the left! +\stopLRtyping + +\startRLtyping +At the right! +At the right! +\stopRLtyping + +\startalignment[l2r] +\startXXtyping +At the left! +At the left! +\stopXXtyping +\stopalignment + +\startalignment[r2l] +\startXXtyping +At the right! +At the right! +\stopXXtyping +\stopalignment +\stopbuffer + +\typebuffer[sample] + +However, we can have a bit more control over the position of the line numbers. As +linenumbers are added in a later stage we need to define additional line number +classes for this. We show four relevant positions of linenumbers. What setting +you use depends on the predominant direction of your document as well as what you +want to demonstrate. + +\startbuffer +\definetyping [RLtypingLEFT] [align=r2l,numbering=line] +\definetyping [LRtypingLEFT] [align=l2r,numbering=line] + +\setuplinenumbering [RLtypingLEFT] [location=left] +\setuplinenumbering [LRtypingLEFT] [location=left] + +\startLRtypingLEFT +At the left! +At the left! +\stopLRtypingLEFT + +\startRLtypingLEFT +At the right! +At the right! +\stopRLtypingLEFT +\stopbuffer + +\typebuffer + +When \type {location} is set to \type {left}, the line numbers will always be in +the left margin, no matter what the text direction is. + +\getbuffer + +\startbuffer +\definetyping [RLtypingRIGHT] [align=r2l,numbering=line] +\definetyping [LRtypingRIGHT] [align=l2r,numbering=line] + +\setuplinenumbering [RLtypingRIGHT] [location=right] +\setuplinenumbering [LRtypingRIGHT] [location=right] + +\startLRtypingRIGHT +At the left! +At the left! +\stopLRtypingRIGHT + +\startRLtypingRIGHT +At the right! +At the right! +\stopRLtypingRIGHT +\stopbuffer + +From this it follows that when \type {location} is set to \type {right}, the line +numbers will always be in the right margin. + +\typebuffer + +Again, the text direction is not influencing the placement. + +\getbuffer + +\startbuffer +\definetyping [RLtypingBEGIN] [align=r2l,numbering=line] +\definetyping [LRtypingBEGIN] [align=l2r,numbering=line] + +\setuplinenumbering [RLtypingBEGIN] [location=begin] +\setuplinenumbering [LRtypingBEGIN] [location=begin] + +\startLRtypingBEGIN +At the left! +At the left! +\stopLRtypingBEGIN + +\startRLtypingBEGIN +At the right! +At the right! +\stopRLtypingBEGIN +\stopbuffer + +The next two cases {\em do} obey to the text direction. When set to \type +{begin}, the location will be at the beginning of the line. + +\typebuffer + +When typesetting a paragraph from right to left, the beginning of the line is at +the right margin. + +\getbuffer + +\startbuffer +\definetyping [RLtypingEND] [align=r2l,numbering=line] +\definetyping [LRtypingEND] [align=l2r,numbering=line] + +\setuplinenumbering [RLtypingEND] [location=end] +\setuplinenumbering [LRtypingEND] [location=end] + +\startLRtypingEND +At the left! +At the left! +\stopLRtypingEND + +\startRLtypingEND +At the right! +At the right! +\stopRLtypingEND +\stopbuffer + +Consequently we get the opposite result when we set \type {location} to +\type {end}. + +\typebuffer + +This time we get complementary results: + +\getbuffer + +It will be clear that when we are writing a manual where we mix example code with +real right to left text some care goes into setting up the verbatim environments. +And this is just one of the aspects you have to deal with in a bidirectional +document layout. + +\stopchapter + +\stopcomponent |