diff options
Diffstat (limited to 'tex/context/base/typo-del.mkiv')
-rw-r--r-- | tex/context/base/typo-del.mkiv | 250 |
1 files changed, 193 insertions, 57 deletions
diff --git a/tex/context/base/typo-del.mkiv b/tex/context/base/typo-del.mkiv index 603471f75..4c3c5ab3d 100644 --- a/tex/context/base/typo-del.mkiv +++ b/tex/context/base/typo-del.mkiv @@ -70,23 +70,23 @@ {\ifcase\boundarycharactermode \or %\nobreak - \hskip\hspaceamount\currentlanguage{#2}% - \languageparameter#1% + \hskip\hspaceamount\currentusedlanguage{#2}% + \usedlanguageparameter#1% %\nobreak - \hskip\hspaceamount\currentlanguage{#2}% + \hskip\hspaceamount\currentusedlanguage{#2}% \or - \languageparameter#1% + \usedlanguageparameter#1% \fi \boundarycharactermode\plusone} \unexpanded\def\leftboundarycharacter#1#2% {\ifcase\boundarycharactermode \or - \languageparameter#1% + \usedlanguageparameter#1% \nobreak - \hskip\hspaceamount\currentlanguage{#2}% + \hskip\hspaceamount\currentusedlanguage{#2}% \or - \languageparameter#1% + \usedlanguageparameter#1% \fi \boundarycharactermode\plusone} @@ -94,10 +94,10 @@ {\ifcase\boundarycharactermode \or \prewordbreak %\nobreak - \hskip\hspaceamount\currentlanguage{#2}% - \languageparameter#1% + \hskip\hspaceamount\currentusedlanguage{#2}% + \usedlanguageparameter#1% \or - \languageparameter#1% + \usedlanguageparameter#1% \fi \boundarycharactermode\plusone} @@ -142,13 +142,13 @@ {\beforesubsentence \ifdim\lastkern=\d_typo_subsentence_signal \unskip - \kern\hspaceamount\currentlanguage{intersentence}% + \kern\hspaceamount\currentusedlanguage{intersentence}% \fi \global\advance\c_typo_subsentence_nesting\plusone \ifnum\c_typo_subsentence_nesting=\plusone \dontleavehmode % was \leaveoutervmode \fi - \dostarttagged\t!subsentence\empty + \dostarttagged\t!subsentence\empty % no chain \symbol[\ifodd\c_typo_subsentence_nesting\c!leftsentence\else\c!leftsubsentence\fi]% }% \ignorespaces} @@ -166,7 +166,7 @@ \unexpanded\def\endofsubsentencespacing {\ifdim\lastkern=\d_typo_subsentence_signal \unskip - \hskip\hspaceamount\currentlanguage{intersentence}% + \hskip\hspaceamount\currentusedlanguage{intersentence}% % no good, actually language dependent: % \ignorespaces \else @@ -193,8 +193,8 @@ %definehspace [quote] [\zeropoint] %definehspace [speech] [\zeropoint] -\definehspace [quote] [\hspaceamount\currentlanguage{quotation}] -\definehspace [speech] [\hspaceamount\currentlanguage{quotation}] +\definehspace [quote] [\hspaceamount\currentusedlanguage{quotation}] +\definehspace [speech] [\hspaceamount\currentusedlanguage{quotation}] \definesymbol [\c!leftquotation] @@ -205,6 +205,14 @@ [\rightboundarycharacter\c!rightquotation{quotation}] \definesymbol + [\c!nextleftquotation] + [\rightboundarycharacter\c!leftquotation{quotation}] + +\definesymbol + [\c!nextrightquotation] + [\leftboundarycharacter\c!rightquotation{quotation}] + +\definesymbol [\c!leftquote] [\leftboundarycharacter\c!leftquote{quote}] @@ -248,6 +256,7 @@ \def\typo_delimited_push#1% {\globalpushmacro\currentdelimitedtext \def\currentdelimitedtext{#1}% + \setlanguageparameter\delimitedtextparameter \let\currentparentdelimitedtext\currentdelimitedtext \global\advance\c_typo_delimited_nesting\plusone \edef\delimitedtextlevel{\number\c_typo_delimited_nesting}% @@ -297,9 +306,9 @@ \unexpanded\def\startdelimitedtext[#1]% {\begingroup \typo_delimited_push{#1}% - \dostarttagged\t!delimitedblock\currentdelimitedtext - \edef\p_method{\delimitedtextparameter\c!method}% - \ifx\p_method\s!font + \dostarttaggedchained\t!delimitedblock\currentdelimitedtext\??delimitedtext + \edef\p_delimited_method{\delimitedtextparameter\c!method}% + \ifx\p_delimited_method\s!font \expandafter\typo_delimited_start_font \else \expandafter\typo_delimited_start_other @@ -313,16 +322,16 @@ \ignorespaces} \def\typo_delimited_start_other - {\edef\p_repeat{\delimitedtextparameter\c!repeat}% - \ifx\p_repeat\v!yes + {\edef\p_delimited_repeat{\delimitedtextparameter\c!repeat}% + \ifx\p_delimited_repeat\v!yes \let\typo_delimited_repeat\typo_delimited_repeat_ideed \else \let\typo_delimited_repeat\relax \fi - \edef\p_location{\delimitedtextparameter\c!location}% - \ifx\p_location\v!paragraph + \edef\p_delimited_location{\delimitedtextparameter\c!location}% + \ifx\p_delimited_location\v!paragraph \singleexpandafter\typo_delimited_start_par - \else\ifx\p_location\v!margin + \else\ifx\p_delimited_location\v!margin \doubleexpandafter\typo_delimited_start_par \else \doubleexpandafter\typo_delimited_start_txt @@ -338,8 +347,10 @@ \def\typo_delimited_start_par_indeed[#1]% {\let\typo_delimited_stop\typo_delimited_stop_par - \doifsomething{\delimitedtextparameter\c!spacebefore} - {\blank[\delimitedtextparameter\c!spacebefore]}% + \edef\p_delimited_spacebefore{\delimitedtextparameter\c!spacebefore}% + \ifx\p_delimited_spacebefore\empty \else + \blank[\p_delimited_spacebefore]% + \fi \delimitedtextparameter\c!before \edef\m_typo_delimited_narrower{#1}% \ifx\m_typo_delimited_narrower\empty @@ -353,11 +364,21 @@ \fi % so far \pushmacro\checkindentation - \doifsomething{\delimitedtextparameter\c!indenting} % WS - {\setupindenting[\delimitedtextparameter\c!indenting]}% + \useindentingparameter\delimitedtextparameter + % \begingroup \usedelimitedtextstyleandcolor\c!style\c!color + % + \edef\p_delimited_left {\delimitedtextparameter{\c!left}}% + \edef\p_delimited_right {\delimitedtextparameter{\c!right}}% + \edef\p_delimited_nextleft {\delimitedtextparameter{\c!nextleft}}% + \edef\p_delimited_nextright{\delimitedtextparameter{\c!nextright}}% + % \leftdelimitedtextmark + % + \setnextleftdelimitedtextmark + \setnextrightdelimitedtextmark + % \ignorespaces} \def\typo_delimited_stop_par @@ -368,10 +389,12 @@ \popmacro\checkindentation \typo_delimited_stop_par_indeed \delimitedtextparameter\c!after - \doifsomething{\delimitedtextparameter\c!spaceafter} - {\blank[\delimitedtextparameter\c!spaceafter]}% + \edef\p_delimited_spaceafter{\delimitedtextparameter\c!spaceafter}% + \ifx\p_delimited_spaceafter\empty \else + \blank[\p_delimited_spaceafter]% + \fi \useindentnextparameter\delimitedtextparameter - \dorechecknextindentation}% AM: This was missing! + \aftergroup\dorechecknextindentation}% AM: This was missing! \def\typo_delimited_start_txt {\let\typo_delimited_stop\typo_delimited_stop_txt @@ -394,18 +417,18 @@ \unexpanded\def\delimitedtext[#1]% {\dontleavehmode % following ones can be omited \typo_delimited_push{#1}% - \edef\p_method{\delimitedtextparameter\c!method}% - \ifx\p_method\s!font + \edef\p_delimited_method{\delimitedtextparameter\c!method}% + \ifx\p_delimited_method\s!font \expandafter\typo_delimited_fontdriven \else \expandafter\typo_delimited_other \fi} \def\typo_delimited_other - {\edef\p_location{\delimitedtextparameter\c!location}% - \ifx\p_location\v!paragraph + {\edef\p_delimited_location{\delimitedtextparameter\c!location}% + \ifx\p_delimited_location\v!paragraph \singleexpandafter\typo_delimited_par - \else\ifx\p_location\v!margin + \else\ifx\p_delimited_location\v!margin \doubleexpandafter\typo_delimited_par \else \doubleexpandafter\typo_delimited_txt @@ -417,16 +440,89 @@ \unexpanded\def\stopdelimited {\stopdelimitedtext} % no let, dynamically assigned \def\delimited {\delimitedtext} +% todo: \dostarttagged\t!nothing\empty % for left/right boxes + +%D We have 4 different location and symbol handlers (two pairs): +%D +%D \starttyping +%D \input tufte \startquotation \input tufte \stopquotation +%D +%D \setupdelimitedtext +%D [quotation] +%D [nextleft=right, +%D nextright=left] +%D +%D \input tufte \startquotation \input tufte \stopquotation +%D +%D \setupdelimitedtext +%D [quotation] +%D [nextleft={\symbol[nextleftquotation]}, +%D nextright={\symbol[nextrightquotation]}] +%D +%D \input tufte \startquotation \input tufte \stopquotation +%D \stoptyping + +\unexpanded\def\setnextleftdelimitedtextmark + {\ifx\p_delimited_nextleft\empty + % nothing + \else\ifx\p_delimited_nextleft\v!left + \typo_delimited_nextleft_symbol\p_delimited_left + \else\ifx\p_delimited_nextleft\v!right + \typo_delimited_nextleft_symbol\p_delimited_right + \else + \typo_delimited_nextleft_symbol\p_delimited_nextleft + \fi\fi\fi} + +\unexpanded\def\setnextrightdelimitedtextmark + {\ifx\p_delimited_nextright\empty + % nothing + \else\ifx\p_delimited_nextright\v!right + \typo_delimited_nextright_symbol\p_delimited_right + \else\ifx\p_delimited_nextright\v!left + \typo_delimited_nextright_symbol\p_delimited_left + \else + \typo_delimited_nextright_symbol\p_delimited_nextright + \fi\fi\fi} + \unexpanded\def\leftdelimitedtextmark - {\doifsomething{\delimitedtextparameter\c!left} - {\setbox\scratchbox\hbox{\delimitedtextparameter\c!left}% - \dontleavehmode - \doif{\delimitedtextparameter\c!location}\v!margin{\hskip-\wd\scratchbox}% - \box\scratchbox}} + {\ifx\p_delimited_left\empty + % nothing + \else + \typo_delimited_left_symbol\p_delimited_left + \fi} \unexpanded\def\rightdelimitedtextmark - {\doifsomething{\delimitedtextparameter\c!right} - {\hsmash{\delimitedtextparameter\c!right}}} + {\ifx\p_delimited_right\empty + % nothing + \else + \typo_delimited_right_symbol\p_delimited_right + \fi} + +\def\typo_delimited_left_symbol#1% + {\setbox\scratchbox\hbox{\usedelimitedtextstyleandcolor\c!symstyle\c!symcolor#1}% + \dontleavehmode + \edef\p_delimited_margin{\delimitedtextparameter\c!location}% + \ifx\p_delimited_margin\v!margin + \hskip-\wd\scratchbox + \fi + \box\scratchbox} + +\def\typo_delimited_right_symbol#1% + {\hsmash{\usedelimitedtextstyleandcolor\c!symstyle\c!symcolor#1}} + +\def\typo_delimited_nextleft_symbol#1% + {\localleftbox\bgroup + \swapmacros\leftboundarycharacter\rightboundarycharacter + \boundarycharactermode\plusone + \typo_delimited_left_symbol#1% + \egroup} + +\def\typo_delimited_nextright_symbol#1% + {\localrightbox\bgroup + \swapmacros\leftboundarycharacter\rightboundarycharacter + \boundarycharactermode\plusone + \typo_delimited_right_symbol#1% + \egroup} % \starttext % \hyphenatedword{groepsvrijstellingsverordeningen}\par @@ -443,11 +539,12 @@ \def\typo_delimited_handle_middle#1% {\begingroup + \usedelimitedtextstyleandcolor\c!symstyle\c!symcolor \setbox\scratchbox\hbox{\delimitedtextparameter#1}% \ifdim\wd\scratchbox>\zeropoint \ifdim\lastkern=\d_typo_delimited_signal \unkern - \hskip\hspaceamount\currentlanguage{interquotation}% + \hskip\hspaceamount\currentusedlanguage{interquotation}% \fi \ifhmode % else funny pagebeaks \penalty\plustenthousand @@ -462,14 +559,15 @@ \def\typo_delimited_handle_left#1% {\begingroup + \usedelimitedtextstyleandcolor\c!symstyle\c!symcolor \setbox\scratchbox\hbox{\delimitedtextparameter#1}% \ifdim\wd\scratchbox>\zeropoint \ifdim\lastkern=\d_typo_delimited_signal \unkern - \hskip\hspaceamount\currentlanguage{interquotation}% + \hskip\hspaceamount\currentusedlanguage{interquotation}% \else\ifdim\lastskip=\d_typo_delimited_signal \unskip - \hskip\hspaceamount\currentlanguage{interquotation}% + \hskip\hspaceamount\currentusedlanguage{interquotation}% \fi\fi \strut % new, needed below \ifhmode % else funny pagebeaks @@ -485,16 +583,17 @@ \def\typo_delimited_handle_right#1% {\begingroup + \usedelimitedtextstyleandcolor\c!symstyle\c!symcolor \setbox\scratchbox\hbox{\delimitedtextparameter#1}% \ifdim\wd\scratchbox>\zeropoint \ifdim\lastkern=\d_typo_delimited_signal \unkern \penalty\plustenthousand - \hskip\hspaceamount\currentlanguage{interquotation}% + \hskip\hspaceamount\currentusedlanguage{interquotation}% \else\ifdim\lastskip=\d_typo_delimited_signal \unskip \penalty\plustenthousand - \hskip\hspaceamount\currentlanguage{interquotation}% + \hskip\hspaceamount\currentusedlanguage{interquotation}% \fi\fi \ifhmode % else funny pagebeaks \penalty\plustenthousand @@ -508,21 +607,57 @@ \unexpanded\def\typo_delimited_par {\groupedcommand - {\dostarttagged\t!delimited\currentdelimitedtext % block? + {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext % block? \typo_delimited_handle_left\c!left} {\typo_delimited_handle_right\c!right \removelastskip \dostoptagged \typo_delimited_pop}} +% \unexpanded\def\typo_delimited_txt +% {\doifelse{\delimitedtextparameter\c!style}\v!normal +% \typo_delimited_quoted +% \typo_delimited_attributed} +% +% \def\typo_delimited_quoted_b +% {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext +% \typo_delimited_handle_left\c!left} +% +% \def\typo_delimited_quoted_e +% {\typo_delimited_handle_right\c!right +% \removelastskip +% \dostoptagged +% \typo_delimited_pop} +% +% \def\typo_delimited_attributed_b +% {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext +% \usedelimitedtextstyleandcolor\c!style\c!color} +% +% \def\typo_delimited_attributed_e +% {\dostoptagged +% \typo_delimited_pop} +% +% \def\typo_delimited_fontdriven_b +% {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext +% \languageparameter{\c!left\currentparentdelimitedtext}}% was: \currentdelimitedtext +% +% \def\typo_delimited_fontdriven_e +% {\languageparameter{\c!right\currentparentdelimitedtext}% was: \currentdelimitedtext +% \dostoptagged +% \typo_delimited_pop} + \unexpanded\def\typo_delimited_txt - {\doifelse{\delimitedtextparameter\c!style}\v!normal - \typo_delimited_quoted - \typo_delimited_attributed} + {\edef\p_left_right{\delimitedtextparameter\c!left\delimitedtextparameter\c!right}% + \ifx\p_left_right\empty + \expandafter\typo_delimited_attributed + \else + \expandafter\typo_delimited_quoted + \fi} \def\typo_delimited_quoted_b - {\dostarttagged\t!delimited\currentdelimitedtext - \typo_delimited_handle_left\c!left} + {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext + \typo_delimited_handle_left\c!left + \usedelimitedtextstyleandcolor\c!style\c!color} \def\typo_delimited_quoted_e {\typo_delimited_handle_right\c!right @@ -531,7 +666,7 @@ \typo_delimited_pop} \def\typo_delimited_attributed_b - {\dostarttagged\t!delimited\currentdelimitedtext + {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext \usedelimitedtextstyleandcolor\c!style\c!color} \def\typo_delimited_attributed_e @@ -539,11 +674,12 @@ \typo_delimited_pop} \def\typo_delimited_fontdriven_b - {\dostarttagged\t!delimited\currentdelimitedtext - \languageparameter{\c!left\currentparentdelimitedtext}}% was: \currentdelimitedtext + {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext + \usedlanguageparameter{\c!left\currentparentdelimitedtext}% was: \currentdelimitedtext + \usedelimitedtextstyleandcolor\c!style\c!color} \def\typo_delimited_fontdriven_e - {\languageparameter{\c!right\currentparentdelimitedtext}% was: \currentdelimitedtext + {\usedlanguageparameter{\c!right\currentparentdelimitedtext}% was: \currentdelimitedtext \dostoptagged \typo_delimited_pop} |