From 06359b1a3e1790462275938b6ea69dee57d96477 Mon Sep 17 00:00:00 2001 From: Hans Hagen Date: Tue, 1 Mar 2005 00:00:00 +0100 Subject: stable 2005.03.01 --- tex/context/base/cont-new.tex | 35 +++ tex/context/base/context.tex | 2 +- tex/context/base/core-lst.tex | 5 +- tex/context/base/core-new.tex | 15 ++ tex/context/base/core-ntb.tex | 3 - tex/context/base/font-arb.tex | 317 +------------------------- tex/context/base/font-heb.tex | 66 +----- tex/context/base/m-arabtex.tex | 457 ++++++++++++++++++++++++++++++++++++++ tex/context/base/page-flt.tex | 4 +- tex/context/base/page-set.tex | 5 +- tex/context/base/spec-dpm.tex | 2 +- tex/context/base/spec-dpx.tex | 2 +- tex/context/base/spec-dvi.tex | 2 +- tex/context/base/spec-fdf.tex | 4 + tex/context/base/spec-ini.tex | 12 +- tex/context/base/spec-tpd.tex | 2 +- tex/context/base/spec-xtx.tex | 11 +- tex/context/base/supp-fun.tex | 3 +- tex/context/base/xtag-ini.tex | 38 ++-- tex/context/base/xtag-utf.tex | 2 +- tex/context/interface/keys-cz.xml | 2 +- tex/context/interface/keys-de.xml | 2 +- tex/context/interface/keys-en.xml | 2 +- tex/context/interface/keys-it.xml | 2 +- tex/context/interface/keys-nl.xml | 2 +- tex/context/interface/keys-ro.xml | 2 +- 26 files changed, 565 insertions(+), 434 deletions(-) create mode 100644 tex/context/base/m-arabtex.tex (limited to 'tex') diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex index a020fa9e4..9a8665eb9 100644 --- a/tex/context/base/cont-new.tex +++ b/tex/context/base/cont-new.tex @@ -24,6 +24,41 @@ \ifx\normalcompound\undefined \let\normalcompound=| \fi +% to do: +% +% \def\defineshapesynonym +% {\dodoubleargument\dodefineshapesynonym} +% +% \def\dodefineshapesynonym[#1][#2]% +% {\setvalue{shsy:#1}{#2}} +% +% \def\shapesynonym#1% +% {\ifcsname shsy:#1\endcsname +% \expandafter\shapesynonym\csname shsy:#1\endcsname\else#1% +% \fi} +% +% \beginTEX +% +% \def\shapesynonym#1% +% {\expandafter\ifx\csname shsy:#1\endcsname\relax +% #1\else\expandafter\shapesynonym\csname shsy:#1\endcsname +% \fi} +% +% \endTEX +% +%\defineshapesynonym[eacute] [e] +%\defineshapesynonym[egrave] [e] +%\defineshapesynonym[eumlaut [e] +%\defineshapesynonym[eogonek][e] +% +% more reduction +% +%\defineshapesynonym[e][o] +%\defineshapesynonym[w][v] +%\defineshapesynonym[m][n] +% +% \shapesynonym{eacute} + \def\OTRSETnobalance {\iflastcolumnfootnotes % testen ! optie % inhibit flush of floats ! diff --git a/tex/context/base/context.tex b/tex/context/base/context.tex index bce747676..e60b14383 100644 --- a/tex/context/base/context.tex +++ b/tex/context/base/context.tex @@ -31,7 +31,7 @@ %D 2004.8.30 the low level interface is english. Watch out and adapt %D your styles an modules. -\def\contextversion{2005.02.23} +\def\contextversion{2005.03.01} %D Welcome to the main module. When this module is ran through %D \type{initex} or \type {tex -i} or \type {whatevertex} using diff --git a/tex/context/base/core-lst.tex b/tex/context/base/core-lst.tex index a9472295c..aa1dbea1a 100644 --- a/tex/context/base/core-lst.tex +++ b/tex/context/base/core-lst.tex @@ -556,9 +556,8 @@ {\hbox{##2}}}% \doif{\listparameter\c!interaction}\v!text % not supported ! ! ! ! ! ! text == all {\setlistparameter\currentlist\c!interaction\v!all}% -% \makelistelement\v!all -% {\hbox to \hsize - \dontleavehmode % new, else no margin + % \dontleavehmode % new, else no margin, but wrong, better (else \indent as well): + \noindent \makelistelement\v!all {\setlocalhsize \hsize\localhsize \hbox to \hsize {\forgetall diff --git a/tex/context/base/core-new.tex b/tex/context/base/core-new.tex index 339cfde40..7227bd789 100644 --- a/tex/context/base/core-new.tex +++ b/tex/context/base/core-new.tex @@ -520,6 +520,21 @@ \def\env {\getvariable \s!environment} \def\envvar {\getvariabledefault\s!environment} +%D \macros +%D {jobsuffix} +%D +%D By default, \TEX\ produces \DVI\ files which can be +%D converted to other filetypes. Sometimes it is handy to +%D know what the target file will be. In other driver +%D modules we wil set \type {\jobsuffix} to \type {pdf}. + +\def\jobsuffix{dvi} + +\def\setjobsuffix#1% + {\resetsystemmode\jobsuffix + \edef\jobsuffix{#1}% + \setsystemmode\jobsuffix} + \bgroup \gdef\cleanedupcolon{:} \catcode`:=\@@active diff --git a/tex/context/base/core-ntb.tex b/tex/context/base/core-ntb.tex index ce3244ed0..0e1d90e04 100644 --- a/tex/context/base/core-ntb.tex +++ b/tex/context/base/core-ntb.tex @@ -102,9 +102,6 @@ \def\settblhei#1#2{\setxvalue{\@@tblprefix#1:h}{#2}} % global ! \def\settblaut#1#2{\setxvalue{\@@tblprefix#1:a}{#2}} % global ! -%\def\gettblwid#1{\ifundefined{\@@tblprefix#1:w}\!!zeropoint\else\getvalue{\@@tblprefix#1:w}\fi} -%\def\gettblhei#1{\ifundefined{\@@tblprefix#1:h}\!!zeropoint\else\getvalue{\@@tblprefix#1:h}\fi} - \def\gettblwid#1{\executeifdefined{\@@tblprefix#1:w}\zeropoint} \def\gettblhei#1{\executeifdefined{\@@tblprefix#1:h}\zeropoint} \def\gettblaut#1{\csname\@@tblprefix#1:a\endcsname} diff --git a/tex/context/base/font-arb.tex b/tex/context/base/font-arb.tex index 60afc43b5..3ec0395f3 100644 --- a/tex/context/base/font-arb.tex +++ b/tex/context/base/font-arb.tex @@ -1,318 +1,5 @@ -%D \module -%D [ file=font-arb, -%D version=1999.11.06, -%D title=\CONTEXT\ Font Macros, -%D subtitle=Arabic, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. +\unprotected \writestatus\m!systems{load ARABTEX as a module instead} -% NOT YET ADAPTED TO THE NEW FONT MACROS - -% I still need to hook in some features into the setup -% macro. I also have to (re)define farsi etc. in ways -% similar to arab, so that we have dedicated environments. -% -% keywords needed: vocalize transscribe -% -% \startarabic[option=vocalize] % or vocalize=yes -% ...... -% \stoparabic - - -\writestatus{loading}{Context Font Macros / ArabTeX support} - -%D At the \NTG\ 10\high{th} anniversary meeting Klaus Lagally -%D introduced the audience to arabic typesetting, and after -%D that I knew that some day I really had to look into his -%D generic package. And then, sort of simultaniously Maarten -%D Wisse and Imran Ahsan Nyazee asked me if \CONTEXT\ could -%D support \ARABTEX, a package that provides right to left -%D typesetting of (several variants of) arab and hebrew. -%D Having implemented support for chinese a few weeks before, -%D I could not resist to build in support for arab and hebrew -%D too. Writing support for languages that don't give me any -%D cue on how to pronounce their script, is kind of special. - -%D This is a beta version, since I still have to take care of some -%D macros that conflict with existing stuff. - -\unprotect - -\definesystemvariable{ARABTEX} - -%D A few (maybe too) simple hooks into the font mechanism. The -%D hook into the language module is not yet done. - -\unexpanded\def\setarabicfont#1% rscale - {\scratchdimen=1.2\bodyfontsize - \font\arbfont=\truefontname{Arabic#1} at \currentfontscale\scratchdimen - \setx@skels - \newfonttrue - \arbfont} - -%D Just to be compatible with Arab\TEX\ we define: - -\unexpanded\def\nash {\setarabicfont\s!Regular} -\unexpanded\def\nashbf {\setarabicfont\s!Bold } -\unexpanded\def\pnash {\setarabicfont\s!Regular} -\unexpanded\def\pnashbf{\setarabicfont\s!Bold } -\unexpanded\def\xnash {\setarabicfont\s!Regular} -\unexpanded\def\xnashbf{\setarabicfont\s!Bold } - -%D The display arabic environment (will be an installable -%D object) uses a few conditionals. Let's do it the -%D \CONTEXT\ way and define an anvironment that we later can -%D adapt. - -\newif\if@ignore -\newif\if@endpe - -\def\setupARABTEXalternative[#1]% - {\dodoubleempty\getparameters[\??ARABTEX#1]} - -\def\defineARABTEXalternative - {\dodoubleempty\dodefineARABTEXalternative} - -\def\dodefineARABTEXalternative[#1][#2]% - {\iffirstargument % \startarab is defined but used already - \getparameters - [\??ARABTEX#1] - [\c!before=,\c!after=,\c!inner=\setarab, - \c!style=\setarabicfont{Arabic\fontstylesuffix}, % evt ArabicRegular - #2]% - \expandafter\all@wcmd\csname\e!stop#1\endcsname - \setvalue{\e!start#1}% - {\dodoubleempty\dostartARABTEXalternative[#1]}% - \unexpanded\setvalue{#1}##1% - {{\initializeARABTEXinternals{#1}\a@RL{##1}}}% - \unexpanded\def\RL{\getvalue{#1}}% - \unexpanded\def\LR{\a@LR}% - \let\R=\RL - \let\L=\LR - \else - \defineARABTEXalternative[arabic]% - \fi} - -\def\initializeARABTEXinternals#1% - {\getvalue{\??ARABTEX#1\c!inner}% - \let \\=\ARABTEXbreakA - \let \|=\ARABTEXbreakB - \let \cap=\ARABTEXcap - \let \sh@ft=\ARABTEXsh@ft - \let \b=\ARABTEXb - \let \d=\ARABTEXd - \let |=\ARABTEXbar - \let \,=\ARABTEXcomma - \let\protect=\ARABTEXprotect - \let\normaltx \tx \def\tx {\normaltx \setarabicfont\fontstylesuffix}% - \let\normaltxx\txx\def\txx{\normaltxx\setarabicfont\fontstylesuffix}} - -\def\dostartARABTEXalternative[#1][#2]% - {\begingroup - \getparameters[\??ARABTEX#1][#2]% - \ifnum1<0\getvalue{\??ARABTEX#1\c!n}\relax - \startcolumns - \else - \getvalue{\??ARABTEX#1\c!before}% - \fi - \initializeARABTEXinternals{#1}% - \initializeARABTEXend{#1}% - \arabtext - \initializeARABTEXalternative{#1}} - -\def\initializeARABTEXalternative#1% - {\getvalue{\??ARABTEX#1\c!style}} - -\def\initializeARABTEXend#1% \CONTEXT\ does use \end quite differently - {\long\def\end##1% - {\endarabtext - \ifnum1<0\getvalue{\??ARABTEX#1\c!n}\relax - \stopcolumns - \else - \getvalue{\??ARABTEX#1\c!after}% - \fi - \endgroup}% - \let\a@l@end\end - \letvalue{\e!stop#1}=\end - \long\def\end##1% - {\endarabtext - \endgroup - \if@ignore\global\@ignorefalse\expandafter\ignorespaces\fi}} - -%D Arabic verbatim. - -\def\typearab{\a@@verb} - -%D Some \LATEX\ macros. - -\def \makeatletter{\unprotect} -\def \makeatother {\protect} -\def \typeout {\writestatus{arabtex}} - -%D We have to save some macros. - -\let\ARABTEXversion=\empty - -\def\startloadingARABTEX% ugly hacks - {\catcode`!=12 - \catcode`?=12 - \pushmacro\output \let \output \scratchtoks - \pushmacro\LaTeX \let \LaTeX \undefined - \pushmacro\CJK \let \CJK \undefined - \pushmacro\year \let \year \normalyear - \pushmacro\month \let \month \normalmonth - \pushmacro\day \let \day \normalday - \pushmacro\input \def \input ##1 {\normalinput ##1 } - \pushmacro\linewidth - \pushmacro\datum \def\datum {\toks0} - \pushmacro\version \def\version {\toks2} - \pushmacro\theversion \let\theversion \ARABTEXversion - \pushmacro\emphasize - \pushmacro\cap} - -\def\stoploadingARABTEX - {\catcode`!=11 - \catcode`?=11 - \popmacro\cap - \popmacro\emphasize - \popmacro\theversion - \popmacro\version - \popmacro\datum - \popmacro\linewidth - \popmacro\input - \popmacro\day - \popmacro\month - \popmacro\year - \popmacro\CJK - \popmacro\LaTeX - \popmacro\output} - -%D We save some macros: - -\startloadingARABTEX - -%D When loading \ARABTEX\ we have to set back the~! and~?. - -\input arabtex.sty - -%D Since \ARABTEX\ has its own \type {\cap}, we save the -%D new meaning. We also redefine some \PLAIN\ macros, which -%D happen to have a different meaning in \LATEX. - -\let\ARABTEXversion\theversion -\let\ARABTEXcap \cap - -\def\ARABTEXsh@ft#1% - {\dimen@.00#1ex - \multiply\dimen@\fontdimen1\font - \kern-.0156\dimen@} - -\def\ARABTEXd#1% - {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}% - .\hidewidth}}} - -\def\ARABTEXb#1% - {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}% - \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}} - -%D A few internals: - -\def \ARABTEXcomma {\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi} -\def \ARABTEXbreakA {\hfill\break} -\def \ARABTEXbreakB {\break} -\edef\ARABTEXbar {\string|} -\let \ARABTEXprotect \relax - -%D Now we can pop the saved macros. - -\stoploadingARABTEX - -%D Ah, we have to get rid of some \type {\protect} stuff but -%D to permit testing we add it in the \CONTEXT\ way. - -\bgroup -\catcode`\<=\@other -\unexpanded\gdef\a@ins% - {\ifmmode - \expandafter<% - \else - \leavevmode \bgroup - \arab@codes \set@arabfont \@waslafalse \@wasfalse - \expandafter\arab@insert - \fi} -\unexpanded\gdef\<{\a@ins} -\catcode`\<=\active -\global\let<=\a@ins -\egroup - -%D We also need to register a few macros: - -\all@w@ne\initializeARABTEXalternative % one argument, internal command -\all@wcmd\tx % no argument, small font -\all@wcmd\txx % no argument, smaller font - -%D The main definitions are: - -\definefontsynonym [ArabicRegular] [xnsh14] -\definefontsynonym [ArabicBold] [xnsh14bf] - -\defineARABTEXalternative - [arabic] - [\c!inner=\setarab, - \c!style=\setarabicfont\fontstylesuffix] - -\defineARABTEXalternative - [farsi] - [\c!inner=\setfarsi, - \c!style=\setarabicfont\fontstylesuffix] - -\defineARABTEXalternative - [urdu] - [\c!inner=\seturdu, - \c!style=\setarabicfont\fontstylesuffix] - -\defineARABTEXalternative - [maghribi] - [\c!inner=\setmaghribi, - \c!style=\setarabicfont\fontstylesuffix] - -%D Apart from such definitions, one can adapt the settings -%D using \type {\setupARABTEXalternative}. -%D -%D A few years ago at the Holland Festivities, I attended {\em -%D The Cave}, one of the most impressive combinations of music -%D and video I know. This composition of Steve Reich (music) -%D and .. (video) concentrates on the common grounds of arabs -%D and jews: their ancestor Abram. Listening to the \CDROM's -%D of {\em The Cave}, provided me the right ambiance for -%D filling in the details of this module. In {\em The Cave}, -%D interviews, music, and |<|believe it or not|>| rhythmic -%D typography are the cornerstones. Remembering those big -%D screens, it strikes me that like music, \TEX\ too is a -%D perfect instrument to cross cultural and linguistic -%D borders. So, let's: - -\protect - -%D those macros, +\usemodule[arabtex] \endinput - -%D and use them! - -% \defineconversion [abjad] [\abj@d] -% -% voetnoten verbatim lijsten indexen tabellen uitlijnen -% -% \v!hoofdstuk=al-fa.slu -% \v!inhoud=al-mu.htawayAtu -% \v!figuren=qA'imaTu al-.suwaru -% \v!tabellen=qA'imaTu al-^gadAwilu -% \v!grafieken=qA'imaTu al-rusUmu -% \v!index=al-fihrisu -% \v!bijlage=al-mul.haqu diff --git a/tex/context/base/font-heb.tex b/tex/context/base/font-heb.tex index 1a77d23ea..3ec0395f3 100644 --- a/tex/context/base/font-heb.tex +++ b/tex/context/base/font-heb.tex @@ -1,65 +1,5 @@ -%D \module -%D [ file=font-heb, -%D version=1999.11.06, -%D title=\CONTEXT\ Font Macros, -%D subtitle=Hebrew, -%D author=Hans Hagen, -%D date=\currentdate, -%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] -%C -%C This module is part of the \CONTEXT\ macro||package and is -%C therefore copyrighted by \PRAGMA. See mreadme.pdf for -%C details. +\unprotected \writestatus\m!systems{load ARABTEX as a module instead} -\input font-arb.tex +\usemodule[arabtex] -\writestatus{loading}{Context Font Macros / Hebrew (ArabTeX) support} - -% NOT YET ADAPTED TO THE NEW FONT MACROS - -%D This module is build on top of \ARABTEX\ and arabic -%D support. I dedicate this module to my father Hein Hagen, -%D who did not live long enough to become a user. His huge -%D library contains math, science, history, english literature, -%D philisophy and theology books, but his most favoured ones -%D were those traditional hebrew printings. I must admit -%D that some of those make clear that traditonal typesetting -%D can still beat \TEX. Those nested multicolumn documents with -%D complicated can give even the experienced macro writer a -%D rather persistent headache. - -\unprotect - -%D A few fonts. - -\unexpanded\def\sethebrewfont#1% strange font dimensions / scale - {\scratchdimen=10\bodyfontsize - \font\hebfont=\truefontname{Hebrew#1} at \currentfontscale\scratchdimen - \fontdimen5\hebfont=.8\fontdimen2\hebfont - \fontdimen6\hebfont=3\fontdimen5\hebfont - \hebfont} - -\let \setheb \sethebrew - -\unexpanded\def\pheb {\sethebrewfont\s!Regular} -\unexpanded\def\phebbf{\sethebrewfont\s!Bold} - -\startloadingARABTEX - -\input hebtex.sty -\input apatch.sty -\input hepatch.sty - -\stoploadingARABTEX - -%D The main definition is: - -\definefontsynonym [HebrewRegular] [hclassic] -\definefontsynonym [HebrewBold] [hcaption] - -\defineARABTEXalternative - [hebrew] - [\c!inner=\sethebrew, - \c!style=\sethebrewfont{\fontstylesuffix}] - -\protect \endinput +\endinput diff --git a/tex/context/base/m-arabtex.tex b/tex/context/base/m-arabtex.tex new file mode 100644 index 000000000..36cdc197c --- /dev/null +++ b/tex/context/base/m-arabtex.tex @@ -0,0 +1,457 @@ +%D \module +%D [ file=m-arabtex, % was font-arb, +%D version=2003.02.22, % 1999.11.06, +%D title=\CONTEXT\ Modules, +%D subtitle=Arabic, +%D author=Hans Hagen, +%D date=\currentdate, +%D copyright={PRAGMA / Hans Hagen \& Ton Otten}] +%C +%C This module is part of the \CONTEXT\ macro||package and is +%C therefore copyrighted by \PRAGMA. See mreadme.pdf for +%C details. + +% I still need to hook in some features into the setup +% macro. I also have to (re)define farsi etc. in ways +% similar to arab, so that we have dedicated environments. +% +% keywords needed: vocalize transscribe +% +% \startarabic[option=vocalize] % or vocalize=yes +% ...... +% \stoparabic + +\writestatus{loading}{Context Font Macros / ArabTeX support} + +%D At the \NTG\ 10\high{th} anniversary meeting Klaus Lagally +%D introduced the audience to arabic typesetting, and after +%D that I knew that some day I really had to look into his +%D generic package. And then, sort of simultaniously Maarten +%D Wisse and Imran Ahsan Nyazee asked me if \CONTEXT\ could +%D support \ARABTEX, a package that provides right to left +%D typesetting of (several variants of) arab and hebrew. +%D Having implemented support for chinese a few weeks before, +%D I could not resist to build in support for arab and hebrew +%D too. Writing support for languages that don't give me any +%D cue on how to pronounce their script, is kind of special. + +%D This is a beta version, since I still have to take care of some +%D macros that conflict with existing stuff. + +\unprotect + +\definesystemvariable{ARABTEX} + +\def\setupARABTEX + {\getparameters[\??ARABTEX]} + +\setupARABTEX + [\s!rscale=1.2, + \c!before=, + \c!after=, + \c!inner=\setarab, + \c!style=\setarabicfont\fontstylesuffix] + +%D A few (maybe too) simple hooks into the font mechanism. The +%D hook into the language module is not yet done. + +% \unexpanded\def\setarabicfont#1% rscale +% {\scratchdimen\@@ARABTEXrscale\bodyfontsize +% \font\arbfont\truefontname{Arabic#1} at \currentfontscale\scratchdimen +% \setx@skels +% \newfonttrue +% \arbfont} +% +% more modern +% +% \unexpanded\def\setarabicfont#1% rscale +% {\definefont[arbfont][Arabic#1 sa \@@ARABTEXrscale]% +% \setx@skels +% \newfonttrue +% \arbfont} +% +% more efficient + +\unexpanded\def\setarabicfont#1% + {\setx@skels + \newfonttrue + \definedfont[Arabic#1 sa \ARABTEXparameter\s!rscale]} + +%D Just to be compatible with Arab\TEX\ we define: + +\unexpanded\def\nash {\setarabicfont\s!Regular} +\unexpanded\def\nashbf {\setarabicfont\s!Bold } +\unexpanded\def\pnash {\setarabicfont\s!Regular} +\unexpanded\def\pnashbf{\setarabicfont\s!Bold } +\unexpanded\def\xnash {\setarabicfont\s!Regular} +\unexpanded\def\xnashbf{\setarabicfont\s!Bold } + +%D The display arabic environment (will be an installable +%D object) uses a few conditionals. Let's do it the +%D \CONTEXT\ way and define an anvironment that we later can +%D adapt. + +\newif\if@ignore +\newif\if@endpe + +\def\setupARABTEXalternative[#1]% + {\dodoubleempty\getparameters[\??ARABTEX#1]} + +\def\defineARABTEXalternative + {\dodoubleempty\dodefineARABTEXalternative} + +\def\dodefineARABTEXalternative[#1][#2]% + {\iffirstargument % \startarab is defined but used already + \getparameters + [\??ARABTEX#1] + [\c!before=\@@ARABTEXbefore, + \c!after=\@@ARABTEXafter, + \c!inner=\@@ARABTEXinner, + \c!style=\@@ARABTEXstyle, + \s!rscale=\@@ARABTEXrscale, + #2]% + \setvalue {\e!start#1}{\displayARABTEXalternative{#1}}% + \unexpanded\setvalue{#1}{\inlineARABTEXalternative {#1}}% + \unexpanded\def\RL{\getvalue{#1}}% + \unexpanded\def\LR{\a@LR}% + \let\R=\RL + \let\L=\LR + \expandafter\all@wcmd\csname\e!stop#1\endcsname + \else + \defineARABTEXalternative[arabic]% + \fi} + +\def\initializeARABTEXinternals + {\ARABTEXparameter\c!inner + \the\everyARABTEXpreset} + +\newtoks \everyARABTEXpreset + +\let\currentARABTEXalternative\empty + +\def\ARABTEXparameter#1% + {\csname\??ARABTEX\currentARABTEXalternative#1\endcsname} + +\def\inlineARABTEXalternative#1#2% + {\bgroup + \edef\currentARABTEXalternative{#1}% + \initializeARABTEXinternals + \a@RL{#2}% + \egroup} + +\def\displayARABTEXalternative#1% + {\dodoubleempty\dostartARABTEXalternative[#1]} + +\def\dostartARABTEXalternative[#1][#2]% + {\begingroup + \edef\currentARABTEXalternative{#1}% + \getparameters[\??ARABTEX\currentARABTEXalternative][#2]% + \ifnum1<0\ARABTEXparameter\c!n\relax + \startcolumns + \else + \ARABTEXparameter\c!before + \fi + \initializeARABTEXinternals + \initializeARABTEXend + \arabtext + \initializeARABTEXalternative} + +\def\initializeARABTEXalternative + {\ARABTEXparameter\c!style} + +\def\initializeARABTEXend% \CONTEXT\ does use \end quite differently + {\long\def\end##1% + {\endarabtext + \ifnum1<0\ARABTEXparameter\c!n\relax + \stopcolumns + \else + \ARABTEXparameter\c!after + \fi + \endgroup}% + \let\a@l@end\end + \letvalue{\e!stop\currentARABTEXalternative}=\end + \long\def\end##1% + {\endarabtext + \endgroup + \if@ignore\global\@ignorefalse\expandafter\ignorespaces\fi}} + +%D Arabic verbatim. + +\def\typearab{\a@@verb} + +%D Some \LATEX\ macros. + +\def \makeatletter{\unprotect} +\def \makeatother {\protect} +\def \typeout {\writestatus{arabtex}} + +%D We have to save some macros. + +\let\ARABTEXversion=\empty + +\def\startloadingARABTEX% ugly hacks + {\catcode`!=12 + \catcode`?=12 + \pushmacro\output \let \output \scratchtoks + \pushmacro\LaTeX \let \LaTeX \undefined + \pushmacro\CJK \let \CJK \undefined +% \pushmacro\peek@token \let \peek@token \undefined +% \pushmacro\edmacloaded \let \edmacloaded \undefined + \pushmacro\year \let \year \normalyear + \pushmacro\month \let \month \normalmonth + \pushmacro\day \let \day \normalday + \pushmacro\input \def \input ##1 {\normalinput ##1 } + \pushmacro\linewidth + \pushmacro\datum \def\datum {\toks0} + \pushmacro\version \def\version {\toks2} + \pushmacro\theversion \let\theversion \ARABTEXversion + \pushmacro\emphasize + \pushmacro\cap} + +\def\stoploadingARABTEX + {\catcode`!=11 + \catcode`?=11 + \popmacro\cap + \popmacro\emphasize + \popmacro\theversion + \popmacro\version + \popmacro\datum + \popmacro\linewidth + \popmacro\input + \popmacro\day + \popmacro\month + \popmacro\year +% \popmacro\edmacloaded +% \popmacro\peek@token + \popmacro\CJK + \popmacro\LaTeX + \popmacro\output} + +%D We save some macros: + +\startloadingARABTEX + +%D When loading \ARABTEX\ we have to set back the~! and~?. + +\input arabtex.sty + +%D Since \ARABTEX\ has its own \type {\cap}, we save the +%D new meaning. We also redefine some \PLAIN\ macros, which +%D happen to have a different meaning in \LATEX. + +\let\ARABTEXversion\theversion +\let\ARABTEXcap \cap + +\appendtoks + \let\cap\ARABTEXcap +\to \everyARABTEXpreset + +\def\ARABTEXsh@ft#1% + {\dimen@.00#1ex + \multiply\dimen@\fontdimen1\font + \kern-.0156\dimen@} + +\appendtoks + \let\sh@ft\ARABTEXsh@ft +\to \everyARABTEXpreset + +\def\ARABTEXd#1% + {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{10}% + .\hidewidth}}} + +\def\ARABTEXb#1% + {{\o@lign{\relax#1\crcr\hidewidth\sh@ft{29}% + \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}} + +\appendtoks + \let\b\ARABTEXb + \let\d\ARABTEXd +\to \everyARABTEXpreset + +\def \ARABTEXbreakA {\hfill\break} +\def \ARABTEXbreakB {\break} +\edef\ARABTEXbar {\string|} +\def \ARABTEXcomma {\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi} + +\appendtoks + \let\\=\ARABTEXbreakA + \let\|=\ARABTEXbreakB + \let |=\ARABTEXbar + \let\,=\ARABTEXcomma +\to \everyARABTEXpreset + +\let\ARABTEXprotect\relax + +\appendtoks + \let\protect\ARABTEXprotect +\to \everyARABTEXpreset + +%D Now we can pop the saved macros. + +\stoploadingARABTEX + +%D Ah, we have to get rid of some \type {\protect} stuff but +%D to permit testing we add it in the \CONTEXT\ way. + +% \bgroup +% \catcode`\<=\@other +% \unexpanded\gdef\a@ins +% {\ifmmode +% \expandafter<% +% \else +% \dontleavehmode \bgroup +% \arab@codes \set@arabfont \@waslafalse \@wasfalse +% \expandafter\arab@insert +% \fi} +% \unexpanded\gdef\<{\a@ins} +% \catcode`\<=\active +% \global\let<=\a@ins +% \egroup +% +% cleaner: + +\defineactivecharacter < {\a@ins} \unexpanded\gdef\<{\a@ins}% + +\def\normal@a@ins + {\dontleavehmode % context prefers this instead of \leavevmode + \bgroup + \arab@codes + \set@arabfont + \@waslafalse + \@wasfalse + \arab@insert} + +\unexpanded\gdef\a@ins + {\mathortext<\normal@a@ins} + +%D We also need to register a few macros: + +\all@wcmd\initializeARABTEXalternative % no argument, internal command +\all@wcmd\tx % no argument, small font +\all@wcmd\txx % no argument, smaller font + +%D We also hook it into the presetter. + +\appendtoks + \let\normaltx \tx \def\tx {\normaltx \setarabicfont\fontstylesuffix}% + \let\normaltxx\txx\def\txx{\normaltxx\setarabicfont\fontstylesuffix}% +\to \everyARABTEXpreset + +%D The main definitions are: + +\definefontsynonym [ArabicRegular] [xnsh14] +\definefontsynonym [ArabicBold] [xnsh14bf] + +\defineARABTEXalternative + [arabic] + [\c!inner=\setarab, + \c!style=\setarabicfont\fontstylesuffix] + +\defineARABTEXalternative + [farsi] + [\c!inner=\setfarsi, + \c!style=\setarabicfont\fontstylesuffix] + +\defineARABTEXalternative + [urdu] + [\c!inner=\seturdu, + \c!style=\setarabicfont\fontstylesuffix] + +\defineARABTEXalternative + [maghribi] + [\c!inner=\setmaghribi, + \c!style=\setarabicfont\fontstylesuffix] + +%D Apart from such definitions, one can adapt the settings +%D using \type {\setupARABTEXalternative}. +%D +%D A few years ago at the Holland Festivities, I attended {\em +%D The Cave}, one of the most impressive combinations of music +%D and video I know. This composition of Steve Reich (music) +%D and .. (video) concentrates on the common grounds of arabs +%D and jews: their ancestor Abram. Listening to the \CDROM's +%D of {\em The Cave}, provided me the right ambiance for +%D filling in the details of this module. In {\em The Cave}, +%D interviews, music, and |<|believe it or not|>| rhythmic +%D typography are the cornerstones. Remembering those big +%D screens, it strikes me that like music, \TEX\ too is a +%D perfect instrument to cross cultural and linguistic +%D borders. So, let's load Hebrew support as well: + +% \unexpanded\def\sethebrewfont#1% strange font dimensions / scale +% {\scratchdimen=10\bodyfontsize +% \font\hebfont=\truefontname{Hebrew#1} at \currentfontscale\scratchdimen +% \fontdimen5\hebfont=.8\fontdimen2\hebfont +% \fontdimen6\hebfont=3\fontdimen5\hebfont +% \hebfont} + +\unexpanded\def\sethebrewfont#1% + {\setx@skels + \newfonttrue + \definedfont[Hebrew#1 sa \ARABTEXparameter\s!rscale]} + +% \let \setheb \sethebrew + +\unexpanded\def\pheb {\sethebrewfont\s!Regular} +\unexpanded\def\phebbf{\sethebrewfont\s!Bold} + +\startloadingARABTEX + + \ReadFile{hebtex.sty} + \ReadFile{apatch.sty} + \ReadFile{hepatch.sty} + +\stoploadingARABTEX + +\definefontsynonym [HebrewRegular] [hclassic] +\definefontsynonym [HebrewBold] [hcaption] + +\defineARABTEXalternative + [hebrew] + [\c!inner=\sethebrew, + \c!style=\sethebrewfont\fontstylesuffix] + +%D Now we're done: + +\protect \endinput + +% everyoutput : \charsubdefmax \arab@charsubdefmax + +% \defineconversion [abjad] [\abj@d] +% +% voetnoten verbatim lijsten indexen tabellen uitlijnen +% +% \v!hoofdstuk=al-fa.slu +% \v!inhoud=al-mu.htawayAtu +% \v!figuren=qA'imaTu al-.suwaru +% \v!tabellen=qA'imaTu al-^gadAwilu +% \v!grafieken=qA'imaTu al-rusUmu +% \v!index=al-fihrisu +% \v!bijlage=al-mul.haqu + +% \usemodule[arabtex] +% +% \usetypescript[postscript] \switchtotypeface[postscript] +% +% \setarab \novocalize +% +% \starttext +% +% \placecontent +% +% \section{\} % short arabic use \< .. > +% \section{\} % short arabic use \< .. > +% +% \startarabic +% mu.hammad 'i_d q"aAm zay"d" + i_d yaqUm zyd + A_d zyd q"aAm +% +% mu.hammad 'i_d q"aAm zay"d" + i_d yaqUm zyd + A_d zyd q"aAm +% \stoparabic +% +% \section{\} +% +% \startarabic +% mu.hammad 'i_d q"aAm zay"d" + i_d yaqUm zyd + A_d zyd q"aAm +% \stoparabic +% +% \stoptext diff --git a/tex/context/base/page-flt.tex b/tex/context/base/page-flt.tex index a02e755eb..35872eceb 100644 --- a/tex/context/base/page-flt.tex +++ b/tex/context/base/page-flt.tex @@ -1824,8 +1824,8 @@ \newevery\everytopofpage\relax -\appendtoks\the\everytopofpage \to\everystarttext -\appendtoks\global\everytopofpage{}\to\everystoptext +\appendtoks \the\everytopofpage \to\everystarttext +\appendtoks\global\everytopofpage\emptytoks\to\everystoptext % \startpostponing [pagenumber] [+pageoffset] % diff --git a/tex/context/base/page-set.tex b/tex/context/base/page-set.tex index 78c2dd6b2..3dfae1f67 100644 --- a/tex/context/base/page-set.tex +++ b/tex/context/base/page-set.tex @@ -842,7 +842,7 @@ \doOTRSETsetgridcells {\copy\placeholderboxf} \mofcolumns\columnfirstcell\plusone\noflines - {\registeredtextarea1\columnfirstcell\scratchbox}% == \hbox + {\registeredtextarea1\columnfirstcell\scratchbox}% == \hbox / tricky htcorr == \columnfirstcell \global\columnlastcell\columnfirstcell \global\advance\columnlastcell \noflines \global\lastcolumnlastcell\columnlastcell @@ -1008,8 +1008,7 @@ \OTRSETcheckcolumnspace\mofcolumns\columnlastcell{#1}% \fi \ifenoughcolumncells - \OTRSETsetgridcells\mofcolumns\columnlastcell\columnhcells\columnvcells - {\copy#1} + \OTRSETsetgridcells\mofcolumns\columnlastcell\columnhcells\columnvcells{\copy#1}% \OTRSETfillgapsbetweencells\mofcolumns\savedcolumnlastcell % -) \OTRSETsetvsize \else diff --git a/tex/context/base/spec-dpm.tex b/tex/context/base/spec-dpm.tex index f306c4a5c..65714d74c 100644 --- a/tex/context/base/spec-dpm.tex +++ b/tex/context/base/spec-dpm.tex @@ -26,7 +26,7 @@ %D Because no intermediate output format is used, we set the %D jobsuffix to \PDF. -\def\jobsuffix{pdf} +\setjobsuffix{pdf} %D Literal \PDF\ inclusion is implemented as: diff --git a/tex/context/base/spec-dpx.tex b/tex/context/base/spec-dpx.tex index 66884014f..d172489cc 100644 --- a/tex/context/base/spec-dpx.tex +++ b/tex/context/base/spec-dpx.tex @@ -35,7 +35,7 @@ %D Because no intermediate output format is used, we set the %D jobsuffix to \PDF. -\def\jobsuffix{pdf} +\setjobsuffix{pdf} %D DVIPDFMx supports the special command \type{pdf: literal ...} %D since the version \type{dvipdfmx-20021028}. diff --git a/tex/context/base/spec-dvi.tex b/tex/context/base/spec-dvi.tex index daf860cbe..5da86743c 100644 --- a/tex/context/base/spec-dvi.tex +++ b/tex/context/base/spec-dvi.tex @@ -115,7 +115,7 @@ \definespecial\dosetpositionpapersize#1#2% {\xdef\flushDVIpositionpapersize% {\special{pos:papersize #1 #2}% - \noexpand\installprogram{dvipos --outfile=\jobname.tuo}% + \noexpand\installprogram{dvipos \jobname}% \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}} \prependtoksonce \flushDVIpositionpapersize \to \everyshipout diff --git a/tex/context/base/spec-fdf.tex b/tex/context/base/spec-fdf.tex index 77660598c..f5bee9dbb 100644 --- a/tex/context/base/spec-fdf.tex +++ b/tex/context/base/spec-fdf.tex @@ -2931,6 +2931,10 @@ {\PDFcode{q \ifdim#1\points=\zeropoint\@@PDFzeroscale\else#1\fi\space 0 0 \ifdim#2\points=\zeropoint\@@PDFzeroscale\else#2\fi\space 0 0 cm}} +% \def\doPDFstartscaling#1#2% the test is needed because acrobat is bugged! +% {\PDFcode{q\ifdim#1\points=\zeropoint\else\ifdim#2\points=\zeropoint\else +% \space#1\space 0 0 #2\space 0 0 cm\fi\fi}} + \def\doPDFstopscaling {\PDFcode{Q}} diff --git a/tex/context/base/spec-ini.tex b/tex/context/base/spec-ini.tex index 958f1dbe7..c53fbbd5c 100644 --- a/tex/context/base/spec-ini.tex +++ b/tex/context/base/spec-ini.tex @@ -173,18 +173,8 @@ \newevery \everyresetspecials \relax -%D \macros -%D {jobsuffix} -%D -%D By default, \TEX\ produces \DVI\ files which can be -%D converted to other filetypes. Sometimes it is handy to -%D know what the target file will be. In other driver -%D modules we wil set \type {\jobsuffix} to \type {pdf}. - -\def\jobsuffix{dvi} - \appendtoksonce - \def\jobsuffix{dvi}% + \ifx\setjobsuffix\undefined\else\setjobsuffix{dvi}\fi \to \everyresetspecials %D A rather fundamental difference between special and direct diff --git a/tex/context/base/spec-tpd.tex b/tex/context/base/spec-tpd.tex index 479ba7e49..1cb264174 100644 --- a/tex/context/base/spec-tpd.tex +++ b/tex/context/base/spec-tpd.tex @@ -164,7 +164,7 @@ %D For some internal testing we need to know the output %D suffix. -\def\jobsuffix{pdf} +\setjobsuffix{pdf} %D We don't use specials here, which means that we must flush %D settings before the page is shipped out. diff --git a/tex/context/base/spec-xtx.tex b/tex/context/base/spec-xtx.tex index 576560203..ea355abd7 100644 --- a/tex/context/base/spec-xtx.tex +++ b/tex/context/base/spec-xtx.tex @@ -8,7 +8,7 @@ %D output format, but by default, it's tranparently %D converted to \PDF\ by \XETEX. -\def\jobsuffix{pdf} +\setjobsuffix{pdf} %D Rotation looks fine. @@ -58,6 +58,15 @@ %\installspecial [\dostarttransparency] [or] [2] %\installspecial [\dostoptransparency] [or] [0] +%D \macros +%D {doloadmapfile,doloadmapline,doresetmapfilelist} +%D +%D \XETEX\ 0.91 allows map file additions, via a special. + +\definespecial\doresetmapfilelist{\special{x:fontmapfile original-empty.map}} +\definespecial\doloadmapfile #1#2{\special{x:fontmapfile #1#2}} +\definespecial\doloadmapline #1#2{\special{x:fontmapline #1#2}} + %D \XETEX\ supports \type{\doPDFdestination} and %D \type{\doPDFbookmark} inherited straight from \DVIPDFMX. diff --git a/tex/context/base/supp-fun.tex b/tex/context/base/supp-fun.tex index 444e39fc7..8d46a49f2 100644 --- a/tex/context/base/supp-fun.tex +++ b/tex/context/base/supp-fun.tex @@ -118,8 +118,7 @@ \let\DroppedIndent\!!zeropoint \def\DroppedLines{0} -\def\DroppedString% - {ABCDEFGHIJKLMNOPQRSTUVWXYZ} +\def\DroppedString{ABCDEFGHIJKLMNOPQRSTUVWXYZ} \let\globaldropcaps\global % will be an option, but on by default diff --git a/tex/context/base/xtag-ini.tex b/tex/context/base/xtag-ini.tex index edd79873c..06e236f46 100644 --- a/tex/context/base/xtag-ini.tex +++ b/tex/context/base/xtag-ini.tex @@ -228,7 +228,8 @@ %D a way around this, but for convenience \TEXEXEC\ will take %D care of processing raw \XML\ files in a transparant way. -\chardef\XMLtokensreduction\zerocount +\chardef\XMLtokensreduction\zerocount % cmr as default +\chardef\XMLtokensreduction\plustwo % lmr as default % \def\alwaysreduceXMLtokens {\XMLtokensreduction\plusone} % \def\permanentreduceXMLtokens{\XMLtokensreduction\plustwo} @@ -271,19 +272,18 @@ * there; this is needed because reading from file goes wrong * (eating up argument) -.unexpanded.gdef.enableXML* - B.catcode`.!=.@@other* - .catcode`.?=.@@other* - .catcode`.:=.@@other* active in french - .catcode`.;=.@@other* active in french - .catcode`.&=.@@active .let&=.doXMLentity* - .catcode`.<=.@@active .unexpanded.def=.@@other .catcode`."=.@@other .catcode`./=.@@other .catcode`.'=.@@other .catcode`.~=.@@other -* .catcode`.#=.@@active .def#B&hash;E* .catcode`.#=.@@other .ifcase.XMLtokensreduction .entitleXMLescapetokens @@ -296,7 +296,7 @@ .the.everyenableXML E -.gdef.activateXMLescapetokens* +.gdef.activateXMLescapetokens B.catcode`.$=.@@active .catcode`.%=.@@active .catcode`.\=.@@active @@ -307,8 +307,8 @@ .catcode`.|=.@@active E -.gdef.entitleXMLescapetokens* - B.activateXMLescapetokens* +.gdef.entitleXMLescapetokens + B.activateXMLescapetokens .def#B&tex-hash;E* .def$B&tex-dollar;E* .def%B&tex-percent;E* @@ -320,8 +320,8 @@ .def|B&tex-bar;E* E -.gdef.reduceXMLescapetokens* - B.activateXMLescapetokens* +.gdef.reduceXMLescapetokens + B.activateXMLescapetokens .def#B.string#E* .def$B.string$E* .def%B.string%E* @@ -333,8 +333,8 @@ .def|B.string|E* E -.gdef.ignoreXMLescapetokens* - B.catcode`.$=.@@other * or letter ? +.gdef.ignoreXMLescapetokens + B.catcode`.$=.@@other .catcode`.%=.@@other .catcode`.\=.@@other .catcode`.^=.@@other @@ -347,14 +347,14 @@ * The following macro can be invokes when reading from * an auxiliary file. -.unexpanded.gdef.enableXMLelements* +.unexpanded.gdef.enableXMLelements B.catcode60=.@@active * .catcode`.<=.@@active .catcode62=.@@other * .catcode`.>=.@@other .unexpanded.def=.@@other .let<.relax * new @@ -1479,7 +1479,7 @@ % \fi\fi % \dodoparseXMLarguments} % -% we squeeze out one more assignment +% we can get rid of one more assignment \long\def\doparseXMLarguments#1% space goes ok {\if#1>% diff --git a/tex/context/base/xtag-utf.tex b/tex/context/base/xtag-utf.tex index 0e25bafae..b978c3339 100644 --- a/tex/context/base/xtag-utf.tex +++ b/tex/context/base/xtag-utf.tex @@ -16,6 +16,6 @@ %D This filter is kind of obsolete, since \UTF\ is not %D limited to \XML. So, here we only enable \UTF\ support. -\enableregime[utf] +\chardef\XMLtokensreduction\plustwo \enableregime[utf] \endinput diff --git a/tex/context/interface/keys-cz.xml b/tex/context/interface/keys-cz.xml index c060a3b36..6e10850df 100644 --- a/tex/context/interface/keys-cz.xml +++ b/tex/context/interface/keys-cz.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-de.xml b/tex/context/interface/keys-de.xml index 336e75170..9d159ae35 100644 --- a/tex/context/interface/keys-de.xml +++ b/tex/context/interface/keys-de.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-en.xml b/tex/context/interface/keys-en.xml index 6c7ef2235..4666fc200 100644 --- a/tex/context/interface/keys-en.xml +++ b/tex/context/interface/keys-en.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-it.xml b/tex/context/interface/keys-it.xml index a1e4f51aa..543659141 100644 --- a/tex/context/interface/keys-it.xml +++ b/tex/context/interface/keys-it.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-nl.xml b/tex/context/interface/keys-nl.xml index f0b2d0acf..a6376207f 100644 --- a/tex/context/interface/keys-nl.xml +++ b/tex/context/interface/keys-nl.xml @@ -1,6 +1,6 @@ - + diff --git a/tex/context/interface/keys-ro.xml b/tex/context/interface/keys-ro.xml index c88a91cea..d9f920dd0 100644 --- a/tex/context/interface/keys-ro.xml +++ b/tex/context/interface/keys-ro.xml @@ -1,6 +1,6 @@ - + -- cgit v1.2.3