summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/typo-del.mkxl
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/typo-del.mkxl')
-rw-r--r--tex/context/base/mkiv/typo-del.mkxl927
1 files changed, 0 insertions, 927 deletions
diff --git a/tex/context/base/mkiv/typo-del.mkxl b/tex/context/base/mkiv/typo-del.mkxl
deleted file mode 100644
index 3550626aa..000000000
--- a/tex/context/base/mkiv/typo-del.mkxl
+++ /dev/null
@@ -1,927 +0,0 @@
-%D \module
-%D [ file=typo-del, % moved from core-mis,
-%D version=20110112,
-%D title=\CONTEXT\ Typesetting Macros,
-%D subtitle=Delimited Content,
-%D author=Hans Hagen,
-%D date=\currentdate,
-%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
-%C
-%C This module is part of the \CONTEXT\ macro||package and is
-%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
-%C details.
-
-% todo: textstyle|color for inline \quotation etc
-
-\writestatus{loading}{ConTeXt Typesetting Macros / Delimited Content}
-
-\unprotect
-
-\ifdefined\dotagsetdelimitedsymbol \else \let\dotagsetdelimitedsymbol \gobbleoneargument \fi
-\ifdefined\dotagsetsubsentencesymbol \else \let\dotagsetsubsentencesymbol\gobbleoneargument \fi
-
-% THIS IS OBSOLETE:
-
-\installcorenamespace{hyphenmarksign} % let's not waste a setuphandler (yet)
-
-\permanent\permanent\protected\def\setuphyphenmark[#1]% sign=normal|wide
- {\getdummyparameters[#1]%
- \expandnamespaceparameter\??hyphenmarksign\dummyparameter\c!sign\v!normal}
-
-\setvalue{\??hyphenmarksign\v!normal}%
- {\let\textmodehyphen\normalhyphen
- \let\textmodehyphendiscretionary\normalhyphendiscretionary}
-
-\setvalue{\??hyphenmarksign\v!wide}%
- {\let\textmodehyphen\composedhyphen
- \let\textmodehyphendiscretionary\composedhyphendiscretionary}
-
-\setuphyphenmark[\c!sign=\v!wide]
-
-\definesymbol[\c!lefthyphen] [\languageparameter\c!lefthyphen]
-\definesymbol[\c!righthyphen] [\languageparameter\c!righthyphen]
-\definesymbol[\c!hyphen] [\languageparameter\c!hyphen]
-
-\permanent\protected\def\normalhyphen
- {\hbox{\directsymbol\empty\c!hyphen}}
-
-\permanent\protected\def\composedhyphen
- {\hbox{\directsymbol\empty\c!compoundhyphen}}
-
-\permanent\protected\def\normalhyphendiscretionary
- {\discretionary
- {\hbox{\directsymbol\empty\c!righthyphen}}
- {\hbox{\directsymbol\empty\c!lefthyphen}}
- {\hbox{\directsymbol\empty\c!hyphen}}}
-
-\permanent\protected\def\composedhyphendiscretionary
- {\discretionary
- {\hbox{\directsymbol\empty\c!rightcompoundhyphen}}
- {\hbox{\directsymbol\empty\c!leftcompoundhyphen}}
- {\hbox{\directsymbol\empty\c!compoundhyphen}}}
-
-\let\textmodehyphen \composedhyphen
-\let\textmodehyphendiscretionary\composedhyphendiscretionary
-
-\definesymbol[\c!leftcompoundhyphen] [\languageparameter\c!leftcompoundhyphen]
-\definesymbol[\c!rightcompoundhyphen] [\languageparameter\c!rightcompoundhyphen]
-\definesymbol[\c!compoundhyphen] [\languageparameter\c!compoundhyphen]
-
-% TILL HERE
-
-\setnewconstant\boundarycharactermode\plusone
-
-% old: skip symbol skip
-% new: bound skip symbol skip bound
-
-\permanent\protected\def\midboundarycharacter#1#2%
- {\ifcase\boundarycharactermode
- \or
- \removeunwantedspaces
- \wordboundary
- \hskip\hspaceamount\currentusedlanguage{#2}%
- \usedlanguageparameter#1%
- \hskip\hspaceamount\currentusedlanguage{#2}%
- \wordboundary
- \ignorespaces
- \or
- \usedlanguageparameter#1%
- \fi
- \boundarycharactermode\plusone}
-
-% old: symbol nobreak skip
-% new: symbol nobreak skip wordboundary
-
-\permanent\protected\def\leftboundarycharacter#1#2%
- {\ifcase\boundarycharactermode
- \or
- \usedlanguageparameter#1%
- \nobreak
- \hskip\hspaceamount\currentusedlanguage{#2}% why not a kern
- \wordboundary
- \or
- \usedlanguageparameter#1%
- \fi
- \boundarycharactermode\plusone}
-
-% old: preword skip symbol
-% new: bound nobreak skip symbol
-
-\permanent\protected\def\rightboundarycharacter#1#2%
- {\ifcase\boundarycharactermode
- \or
- \wordboundary
- \nobreak
- \hskip\hspaceamount\currentusedlanguage{#2}% why not a kern
- \usedlanguageparameter#1%
- \or
- \usedlanguageparameter#1%
- \fi
- \boundarycharactermode\plusone}
-
-\definehspace [sentence] [\zeropoint]
-\definehspace [intersentence] [.250\emwidth]
-
-\definesymbol
- [\c!midsentence]
- [\midboundarycharacter\c!midsentence{sentence}]
-
-\definesymbol
- [\c!leftsentence]
- [\leftboundarycharacter\c!leftsentence{sentence}]
-
-\definesymbol
- [\c!rightsentence]
- [\rightboundarycharacter\c!rightsentence{sentence}]
-
-\definesymbol
- [\c!leftsubsentence]
- [\leftboundarycharacter\c!leftsubsentence{sentence}]
-
-\definesymbol
- [\c!rightsubsentence]
- [\rightboundarycharacter\c!rightsubsentence{sentence}]
-
-\newsignal\d_typo_subsentence_signal
-\newcount \c_typo_subsentence_nesting
-
-\let\beforesubsentence\donothing
-\let\aftersubsentence \donothing
-
-% todo: make this language option
-%
-% \def\beforesubsentence{\removeunwantedspaces}
-% \def\aftersubsentence {\ignorespaces}
-
-\newconditional\c_typo_subsentence_cleanup \settrue\c_typo_subsentence_cleanup
-
-\def\typo_subsentence_cleanup_start
- {\ifconditional\c_typo_subsentence_cleanup
- \expandafter\ignorespaces
- \fi}
-
-\def\typo_subsentence_cleanup_stop
- {\ifconditional\c_typo_subsentence_cleanup
- \removeunwantedspaces
- \fi}
-
-\permanent\protected\def\midsentence
- {\dostarttagged\t!subsentencesymbol\empty
- \dotagsetsubsentencesymbol\s!middle
- \symbol[\c!midsentence]%
- \dostoptagged}
-
-\permanent\protected\def\beginofsubsentence
- {\beforesubsentence
- \ifdim\lastkern=\d_typo_subsentence_signal
- \unskip
- \kern\hspaceamount\currentusedlanguage{intersentence}%
- \fi
- \global\advance\c_typo_subsentence_nesting\plusone
- \ifnum\c_typo_subsentence_nesting=\plusone
- \dontleavehmode
- \fi
- \dostarttagged\t!subsentence\empty % no chain
- \dostarttagged\t!subsentencesymbol\empty
- \dotagsetsubsentencesymbol\s!left
- \symbol[\ifodd\c_typo_subsentence_nesting\c!leftsentence\else\c!leftsubsentence\fi]%
- \dostoptagged
- \dostarttagged\t!subsentencecontent\empty
- \typo_subsentence_cleanup_start}
-
-\permanent\protected\def\endofsubsentence % relax prevents space gobbling
- {\typo_subsentence_cleanup_stop
- \dostoptagged
- \dostarttagged\t!subsentencesymbol\empty
- \dotagsetsubsentencesymbol\s!right
- \symbol[\ifodd\c_typo_subsentence_nesting\c!rightsentence\else\c!rightsubsentence\fi]%
- \dostoptagged
- \dostoptagged
- \global\advance\c_typo_subsentence_nesting\minusone
- \unskip
- \kern\d_typo_subsentence_signal\relax
- \aftersubsentence}
-
-\permanent\protected\def\beginofsubsentencespacing % relax prevents space gobbling
- {\kern\d_typo_subsentence_signal\relax}% \ignorespaces}
-
-\permanent\protected\def\endofsubsentencespacing
- {\ifdim\lastkern=\d_typo_subsentence_signal
- \unskip
- \hskip\hspaceamount\currentusedlanguage{intersentence}%
- % no good, actually language dependent:
- % \ignorespaces
- \else
- \unskip
- \fi}
-
-%D \startbuffer
-%D test |<|test |<|test|>| test|>| test \par
-%D test|<|test|<|test|>|test|>|test \par
-%D test |<||<|test|>||>| test \par
-%D test \directdiscretionary{<}test\directdiscretionary{>} test \par
-%D \stopbuffer
-%D
-%D \typebuffer
-%D \getbuffer
-
-%unexpanded\def\startsubsentence{\beginofsubsentence\prewordbreak\beginofsubsentencespacing\typo_subsentence_cleanup_start}
-%unexpanded\def\stopsubsentence {\typo_subsentence_cleanup_stop\endofsubsentencespacing\prewordbreak\endofsubsentence}
-%unexpanded\def\subsentence {\groupedcommandcs\startsubsentence\stopsubsentence}
-%unexpanded\def\midsubsentence {\typo_subsentence_cleanup_start\prewordbreak\midsentence\prewordbreak\typo_subsentence_cleanup_stop}
-
-\permanent\protected\def\startsubsentence{\beginofsubsentence\wordboundary\beginofsubsentencespacing\wordboundary\typo_subsentence_cleanup_start}
-\permanent\protected\def\stopsubsentence {\typo_subsentence_cleanup_stop\wordboundary\endofsubsentencespacing\wordboundary\endofsubsentence}
-\permanent\protected\def\subsentence {\groupedcommandcs\startsubsentence\stopsubsentence}
-\permanent\protected\def\midsubsentence {\typo_subsentence_cleanup_start\wordboundary\midsentence\wordboundary\typo_subsentence_cleanup_stop}
-
-\definehspace [quotation] [\zeropoint]
-\definehspace [interquotation] [.125em]
-
-%definehspace [quote] [\zeropoint]
-%definehspace [speech] [\zeropoint]
-
-\definehspace [quote] [\hspaceamount\currentusedlanguage{quotation}]
-\definehspace [speech] [\hspaceamount\currentusedlanguage{quotation}]
-
-\definesymbol
- [\c!leftquotation]
- [\leftboundarycharacter\c!leftquotation{quotation}]
-
-\definesymbol
- [\c!rightquotation]
- [\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}]
-
-\definesymbol
- [\c!rightquote]
- [\rightboundarycharacter\c!rightquote{quote}]
-
-\definesymbol
- [\c!leftspeech]
- [\leftboundarycharacter\c!leftspeech{speech}]
-
-\definesymbol
- [\c!rightspeech]
- [\rightboundarycharacter\c!rightspeech{speech}]
-
-\definesymbol
- [\c!middlespeech]
- [\leftboundarycharacter\c!middlespeech{speech}]
-
-\appendtoks
- \enforced\permanent\def\quotation#1{"#1"}%
- \enforced\permanent\def\quote #1{'#1'}%
-\to \everysimplifycommands
-
-%D The next features was so desperately needed by Giuseppe Bilotta that he made a
-%D module for it. Since this is a typical example of core functionality, I decided
-%D to extend the low level quotation macros in such a way that a speech feature
-%D could be build on top of it. The speech opening and closing symbols are defined
-%D per language. Italian is an example of a language that has them set.
-
-\newsignal\d_typo_delimited_signal
-
-\let\currentdelimitedtext\s!unknown
-
-\installglobalmacrostack\currentdelimitedtext
-
-\let\delimitedtextlevel\!!zerocount
-
-\def\c_typo_delimited_nesting{\csname\??delimitedtextlevel\currentparentdelimitedtext\endcsname}
-
-% the \setlanguageparameter macro sets but we are ungrouped .. only used here
-%
-% \currentusedlanguage
-% \usedlanguageparameter
-
-%D The optional argument can be a language, a narrower spec, or a outer:inner language
-%D specification.
-%D
-%D \starttabulate
-%D \NC [en] \NC {\tttf en} \quotation[en] {{\tttf <en=\currentlanguage>} something french} \NC \NR
-%D \NC [fr] \NC {\tttf en} \quotation[fr] {{\tttf <fr=\currentlanguage>} something french} \NC \NR
-%D \NC [fr:] \NC {\tttf fr} \quotation[fr:] {{\tttf <en=\currentlanguage>} something french} \NC \NR
-%D \NC [:fr] \NC {\tttf en} \quotation[:fr] {{\tttf <fr=\currentlanguage>} something french} \NC \NR
-%D \NC [fr:fr] \NC {\tttf fr} \quotation[fr:fr]{{\tttf <fr=\currentlanguage>} something french} \NC \NR
-%D \NC [en:fr] \NC {\tttf en} \quotation[en:fr]{{\tttf <fr=\currentlanguage>} something french} \NC \NR
-%D \NC [fr:en] \NC {\tttf fr} \quotation[fr:en]{{\tttf <en=\currentlanguage>} something french} \NC \NR
-%D \stoptabulate
-
-\let\currentdelimitedlanguage\empty
-
-\installglobalmacrostack\currentdelimitedlanguage
-
-\def\typo_delimited_set_language_nop
- {\setusedlanguage{\delimitedtextparameter\c!language}}
-
-\def\typo_delimited_set_language_yes
- {\doiflanguageelse\m_delimited_argument
- \typo_delimited_set_language_yes_a
- {\doifelseinstring:\m_delimited_argument
- \typo_delimited_set_language_yes_b
- \typo_delimited_set_language_nop}}
-
-\def\typo_delimited_set_language_yes_b
- {\splitatcolon\m_delimited_argument\outerdelimitedlanguage\innerdelimitedlanguage
- \ifempty\outerdelimitedlanguage
- \typo_delimited_set_language_nop
- \else
- \doiflanguageelse\outerdelimitedlanguage
- {\setusedlanguage\outerdelimitedlanguage}%
- \typo_delimited_set_language_nop
- \fi
- \ifempty\innerdelimitedlanguage\else
- \doiflanguageelse\innerdelimitedlanguage
- {\let\currentdelimitedlanguage\innerdelimitedlanguage}%
- \donothing
- \fi
- \let\m_delimited_argument\empty}
-
-\def\typo_delimited_set_language_yes_a
- {\let\currentdelimitedlanguage\m_delimited_argument
- \let\m_delimited_argument\empty}
-
-\def\typo_delimited_push#1#2%
- {\push_macro_currentdelimitedtext % can we combine these two
- \push_macro_currentdelimitedlanguage % the language used for hyphenation
- \edef\currentdelimitedtext{#1}%
- \edef\m_delimited_argument{#2}%
- \ifempty\m_delimited_argument
- \typo_delimited_set_language_nop
- \else
- \typo_delimited_set_language_yes
- \fi
- \let\currentparentdelimitedtext\currentdelimitedtext
- \global\advance\c_typo_delimited_nesting\plusone
- \edef\delimitedtextlevel{\number\c_typo_delimited_nesting}%
- \normalexpanded{\chaintocurrentdelimitedtext{\currentparentdelimitedtext:\delimitedtextlevel}}%
- \edef\currentdelimitedtext{\currentparentdelimitedtext:\delimitedtextlevel}}
-
-\def\typo_delimited_pop
- {\global\advance\c_typo_delimited_nesting\minusone
- \pop_macro_currentdelimitedlanguage
- \pop_macro_currentdelimitedtext}
-
-\installcorenamespace{delimitedtext}
-\installcorenamespace{delimitedtextlevel}
-
-\installcommandhandler \??delimitedtext {delimitedtext} \??delimitedtext
-
-\appendtoks
- \expandafter\newcount\csname\??delimitedtextlevel\currentdelimitedtext\endcsname
- \setuevalue{\currentdelimitedtext }{\delimitedtext[\currentdelimitedtext]}%
- \setuevalue{\e!start\currentdelimitedtext}{\startdelimitedtext[\currentdelimitedtext]}%
- \setuevalue{\e!stop \currentdelimitedtext}{\stopdelimitedtext}%
-\to \everydefinedelimitedtext
-
-\setupdelimitedtext
- [\c!location=\v!margin, % \v!text \v!paragraph
- \c!spacebefore=,
- \c!spaceafter=\delimitedtextparameter\c!spacebefore,
- \c!style=,
- \c!color=,
- \c!leftmargin=\zeropoint,
- \c!rightmargin=\delimitedtextparameter\c!leftmargin,
- \c!indentnext=\v!yes,
- \c!before=,
- \c!after=,
- \c!left=,
- \c!right=,
- %\c!level=0,
- \c!method=,
- %\c!language=\v!local,
- \c!repeat=\v!no]
-
-\def\typo_delimited_repeat_indeed
- {\relax\ifcase\delimitedtextlevel\else
- \typo_delimited_handle_middle\c!middle
- \fi}
-
-\let\typo_delimited_repeat\relax
-
-\permanent\tolerant\protected\def\startdelimitedtext[#1]#*[#2]%
- {\begingroup
- \typo_delimited_push{#1}{#2}%
- \dostarttaggedchained\t!delimitedblock\currentdelimitedtext\??delimitedtext
- \edef\p_delimited_method{\delimitedtextparameter\c!method}%
- \ifx\p_delimited_method\v!font
- \expandafter\typo_delimited_start_font
- \else
- \expandafter\typo_delimited_start_other
- \fi}
-
-\let\typo_delimited_stop\relax % hooks into \everypar
-
-\def\typo_delimited_start_font
- {\let\typo_delimited_stop\typo_delimitedtexts_finish_font
- \dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!left
- \delimitedtextparameter\c!left
- \dostoptagged
- \ignorespaces}
-
-\newconditional\c_typo_delimited_repeating
-
-\def\typo_delimited_start_other
- {\edef\p_delimited_repeat{\delimitedtextparameter\c!repeat}%
- \ifx\p_delimited_repeat\v!yes
- \let\typo_delimited_repeat\typo_delimited_repeat_indeed
- \else
- \let\typo_delimited_repeat\relax
- \fi
- \setfalse\c_typo_delimited_repeating
- \edef\p_delimited_location{\delimitedtextparameter\c!location}%
- \ifx\p_delimited_location\v!paragraph
- \expandafter\typo_delimited_start_par
- \orelse\ifx\p_delimited_location\v!margin
- \expandafter\typo_delimited_start_par
- \else
- \expandafter\typo_delimited_start_txt
- \fi}
-
-\def\typo_delimitedtexts_finish_font
- {\removeunwantedspaces % again ?
- \dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!right
- \delimitedtextparameter\c!right
- \dostoptagged}
-
-\def\typo_delimited_show_language_indeed#1#2%
- {\begingroup
- \infofont
- \setbox\scratchbox\hpack{\lower\strutht\hbox to \zeropoint{\darkred#1\currentlanguage:\currentdelimitedlanguage#2}}%
- \vsmashbox\scratchbox
- \box\scratchbox
- \endgroup}
-
-\let\typo_delimited_show_language\gobbletwoarguments
-
-\installtextracker{delimited.language}
- {\let\typo_delimited_show_language\typo_delimited_show_language_indeed}
- {\let\typo_delimited_show_language\gobbletwoarguments}
-
-\def\typo_delimited_start_content
- {\dostarttagged\t!delimitedcontent\empty
- \begingroup
- \douselanguageparameter\currentdelimitedlanguage
- \typo_delimited_show_language<\hss
- \ignorespaces}
-
-\def\typo_delimited_stop_content
- {\removeunwantedspaces
- \removelastskip % redundant
- \typo_delimited_show_language\hss<%
- \endgroup
- \dostoptagged}
-
-\tolerant\def\typo_delimited_start_par[#1]%
- {\let\typo_delimited_stop\typo_delimited_stop_par
- \edef\p_delimited_spacebefore{\delimitedtextparameter\c!spacebefore}%
- \ifempty\p_delimited_spacebefore \else
- \blank[\p_delimited_spacebefore]%
- \fi
- \delimitedtextparameter\c!before
- \edef\m_delimited_argument{#1}%
- \ifempty\m_delimited_argument
- \let\m_delimited_argument\m_delimited_argument
- \fi
- \ifempty\m_delimited_argument
- \endgraf
- \doadaptleftskip {\delimitedtextparameter\c!leftmargin}%
- \doadaptrightskip{\delimitedtextparameter\c!rightmargin}%
- \let\typo_delimited_stop_par_indeed\endgraf
- \else % backward compatible direct directive
- \startnarrower[\m_delimited_argument]%
- \let\typo_delimited_stop_par_indeed\stopnarrower
- \fi
- % so far
- \push_macro_checkindentation
- \useindentingparameter\delimitedtextparameter
- %
- \begingroup
- \usedelimitedtextstyleandcolor\c!style\c!color
- %
- \begingroup
- \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
- %
- \typo_delimited_start_content}
-
-\let\typo_delimited_stop_par_indeed\endgraf
-
-\def\typo_delimited_stop_par
- {\typo_delimited_stop_content
- \rightdelimitedtextmark
- \rightdelimitedtextmark
- \carryoverpar\endgroup
- \endgraf
- \endgroup
- \pop_macro_checkindentation
- \typo_delimited_stop_par_indeed
- \delimitedtextparameter\c!after
- \edef\p_delimited_spaceafter{\delimitedtextparameter\c!spaceafter}%
- \ifempty\p_delimited_spaceafter \else
- \blank[\p_delimited_spaceafter]%
- \fi
- \useindentnextparameter\delimitedtextparameter
- \aftergroup\dorechecknextindentation}% AM: This was missing!
-
-\def\typo_delimited_start_txt
- {\let\typo_delimited_stop\typo_delimited_stop_txt
- \begingroup
- \usedelimitedtextstyleandcolor\c!style\c!color
- \typo_delimited_handle_left\c!left
- \typo_delimited_start_content}
-
-\def\typo_delimited_stop_txt
- {\typo_delimited_stop_content
- \typo_delimited_handle_right\c!right
- \endgroup}
-
-\permanent\protected\def\stopdelimitedtext
- {\typo_delimited_stop
- \dostoptagged
- \typo_delimited_pop
- \endgroup}
-
-\permanent\tolerant\protected\def\delimitedtext[#1]#*[#2]%
- {\dontleavehmode % following ones can be omited
- \typo_delimited_push{#1}{#2}%
- \edef\p_delimited_method{\delimitedtextparameter\c!method}%
- \ifx\p_delimited_method\v!font
- \expandafter\typo_delimited_fontdriven
- \else
- \expandafter\typo_delimited_other
- \fi}
-
-\def\typo_delimited_other
- {\edef\p_delimited_location{\delimitedtextparameter\c!location}%
- \ifx\p_delimited_location\v!paragraph
- \expandafter\typo_delimited_par
- \orelse\ifx\p_delimited_location\v!margin
- \expandafter\typo_delimited_par
- \else
- \expandafter\typo_delimited_txt
- \fi}
-
-% shortcuts
-
-\permanent\protected\def\startdelimited{\startdelimitedtext}
-\permanent\protected\def\stopdelimited {\stopdelimitedtext} % no let, dynamically assigned
-\permanent \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
-
-\permanent\protected\def\setnextleftdelimitedtextmark
- {\ifempty\p_delimited_nextleft
- % nothing
- \orelse\ifx\p_delimited_nextleft\v!left
- \typo_delimited_nextleft_symbol\p_delimited_left
- \orelse\ifx\p_delimited_nextleft\v!right
- \typo_delimited_nextleft_symbol\p_delimited_right
- \else
- \typo_delimited_nextleft_symbol\p_delimited_nextleft
- \fi}
-
-\permanent\protected\def\setnextrightdelimitedtextmark
- {\ifempty\p_delimited_nextright
- % nothing
- \orelse\ifx\p_delimited_nextright\v!right
- \typo_delimited_nextright_symbol\p_delimited_right
- \orelse\ifx\p_delimited_nextright\v!left
- \typo_delimited_nextright_symbol\p_delimited_left
- \else
- \typo_delimited_nextright_symbol\p_delimited_nextright
- \fi}
-
-\permanent\protected\def\leftdelimitedtextmark
- {\ifempty\p_delimited_left
- % nothing
- \else
- \typo_delimited_left_symbol\p_delimited_left
- \fi}
-
-\permanent\protected\def\rightdelimitedtextmark
- {\ifempty\p_delimited_right
- % nothing
- \else
- \typo_delimited_right_symbol\p_delimited_right
- \fi}
-
-\def\typo_delimited_left_symbol#1%
- {\dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!left
- \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
- \dostoptagged}
-
-\def\typo_delimited_right_symbol#1%
- {\dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!right
- \hsmash{\usedelimitedtextstyleandcolor\c!symstyle\c!symcolor#1}%
- \dostoptagged}
-
-\def\typo_delimited_nextleft_symbol#1%
- {\let\typo_delimited_reset_next_symbol\typo_delimited_reset_next_symbol_indeed
- \localleftbox\bgroup
- \enforced\swapmacros\leftboundarycharacter\rightboundarycharacter
- \boundarycharactermode\plusone
- \typo_delimited_left_symbol#1%
- \egroup}
-
-\def\typo_delimited_nextright_symbol#1%
- {\let\typo_delimited_reset_next_symbol\typo_delimited_reset_next_symbol_indeed
- \localrightbox\bgroup
- \enforced\swapmacros\leftboundarycharacter\rightboundarycharacter
- \boundarycharactermode\plusone
- \typo_delimited_right_symbol#1%
- \egroup}
-
-\protected\def\typo_delimited_reset_next_symbol_indeed
- {\localleftbox {}%
- \localrightbox{}}%
-
-\let\typo_delimited_reset_next_symbol\relax
-
-\appendtoks
- \typo_delimited_reset_next_symbol
-\to \everyforgetall
-
-% \starttext
-% \hyphenatedword{groepsvrijstellingsverordeningen}\par
-% \hyphenatedword{\quote{groepsvrijstellingsverordeningen}}\par
-% \dorecurse{100}{\hskip300pt\hskip\recurselevel pt test \quote{xxx xxxx}.\par}
-% \page \setuppapersize[A5][A4]
-% \quotation {overly beautiful pusillanimous sesquipedalian
-% longwinded} test test test test test test test test test test test
-% test test test test test test test test test test test test test
-% test test test test test test test test test test test test test
-% test test test test test test test test test test test test test
-% test test test
-% \stoptext
-
-% We have no real test case for this and it's broken already for a while,
-% even in \MKII. Maybe we should to this in \LUA. Only Italian has the
-% middlespeech parameter set.
-
-\def\typo_delimited_handle_middle#1% special case
- {\ifconditional\c_typo_delimited_repeating
- \begingroup
- \usedelimitedtextstyleandcolor\c!symstyle\c!symcolor
- \setbox\scratchbox\hbox{\delimitedtextparameter#1}%
- \ifdim\wd\scratchbox>\zeropoint
- \ifdim\lastkern=\d_typo_delimited_signal
- \unkern
- \hskip\hspaceamount\currentusedlanguage{interquotation}%
- \else % maybe an option:
- %\edef\p_delimited_margin{\delimitedtextparameter\c!location}%
- %\ifx\p_delimited_margin\v!margin
- % \hskip-\wd\scratchbox
- %\fi
- \fi
- \strut % new, needed below
- \dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!middle
- \delimitedtextparameter#1% unhbox\scratchbox
- \dostoptagged
- % \penalty\plustenthousand % else overfull boxes, but that's better than dangling periods
- \kern\d_typo_delimited_signal % +- \prewordbreak
- \fi
- \endgroup
- \else
- \settrue\c_typo_delimited_repeating
- \fi}
-
-\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\currentusedlanguage{interquotation}%
- \orelse\ifdim\lastskip=\d_typo_delimited_signal
- \unskip
- \hskip\hspaceamount\currentusedlanguage{interquotation}%
- \fi
- % \strut % new, needed below
- % \ifhmode % else funny pagebeaks
- % \penalty\plustenthousand
- % \hskip\zeropoint % == \prewordbreak
- % \fi
- \strut % new, needed below
- \dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!left
- \delimitedtextparameter#1% unhbox\scratchbox
- \dostoptagged
- \penalty\plustenthousand % new per 2013-03-09 WS mailing list
- \hskip\d_typo_delimited_signal % +- \prewordbreak
- \fi
- \endgroup}
-
-\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\currentusedlanguage{interquotation}%
- \orelse\ifdim\lastskip=\d_typo_delimited_signal
- \unskip
- \penalty\plustenthousand
- \hskip\hspaceamount\currentusedlanguage{interquotation}%
- \fi
- \ifhmode % else funny pagebeaks
- \penalty\plustenthousand
- \hskip\zeropoint % == \prewordbreak
- \fi
- \strut % new, needed below
- \dostarttagged\t!delimitedsymbol\empty
- \dotagsetdelimitedsymbol\s!right
- \delimitedtextparameter#1% unhbox\scratchbox
- \dostoptagged
- \kern\d_typo_delimited_signal % +- \prewordbreak
- \fi
- \endgroup}
-
-\protected\def\typo_delimited_par
- {\groupedcommand
- {\dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext % block?
- \usedelimitedtextstyleandcolor\c!style\c!color
- \typo_delimited_handle_left\c!left
- \typo_delimited_start_content}
- {\typo_delimited_stop_content
- \typo_delimited_handle_right\c!right
- \removelastskip % hm
- \dostoptagged
- \typo_delimited_pop}}
-
-\protected\def\typo_delimited_txt
- {\edef\p_left_right{\delimitedtextparameter\c!left\delimitedtextparameter\c!right}%
- \ifempty\p_left_right
- \expandafter\typo_delimited_attributed
- \else
- \expandafter\typo_delimited_quoted
- \fi}
-
-\def\typo_delimited_quoted
- {\dontleavehmode
- \begingroup
- \dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext
- \typo_delimited_handle_left\c!left
- \usedelimitedtextstyleandcolor\c!style\c!color
- \typo_delimited_start_content
- \bgroup
- \aftergroup\typo_delimited_quoted_e
- \let\next=}
-
-\def\typo_delimited_quoted_e
- {\typo_delimited_stop_content
- \typo_delimited_handle_right\c!right
- \removelastskip % ?
- \dostoptagged
- \typo_delimited_pop
- \endgroup}
-
-\def\typo_delimited_attributed
- {\dontleavehmode
- \begingroup
- \dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext
- \usedelimitedtextstyleandcolor\c!style\c!color
- \typo_delimited_start_content
- \bgroup
- \aftergroup\typo_delimited_attributed_e
- \let\next=}
-
-\def\typo_delimited_attributed_e
- {\typo_delimited_stop_content
- \dostoptagged
- \typo_delimited_pop
- \endgroup}
-
-\def\typo_delimited_fontdriven
- {\dontleavehmode
- \begingroup
- \dostarttaggedchained\t!delimited\currentdelimitedtext\??delimitedtext
- \usedlanguageparameter{\c!left\currentparentdelimitedtext}% was: \currentdelimitedtext
- \usedelimitedtextstyleandcolor\c!style\c!color
- \typo_delimited_start_content
- \bgroup
- \aftergroup\typo_delimited_fontdriven_e
- \let\next=}
-
-\def\typo_delimited_fontdriven_e
- {\typo_delimited_stop_content
- \usedlanguageparameter{\c!right\currentparentdelimitedtext}% was: \currentdelimitedtext
- \dostoptagged
- \typo_delimited_pop
- \endgroup}
-
-% testcase for nesting:
-%
-% \quotation{... \quotation{...} ...}
-% \startquotation ... \startquotation... \quotation{...} \stopquotation\space ...\stopquotation
-% \setupdelimitedtext[quotation][1][left=(,right=)]
-% \setupdelimitedtext[quotation][2][left={[},right={]}]
-% \setupdelimitedtext[quotation][3][left=\{,right=\}]
-% \quotation{... \quotation{...} ...}
-% \startquotation ... \startquotation... \quotation{...} \stopquotation\space ...\stopquotation
-
-\definedelimitedtext
- [\v!quotation]
- [\c!left={\symbol[\c!leftquotation]},
- \c!right={\symbol[\c!rightquotation]},
- \c!leftmargin=\v!standard]
-
-\definedelimitedtext
- [\v!quote][\v!quotation]
-
-\setupdelimitedtext
- [\v!quote]
- [\c!location=\v!text,
- \c!left={\symbol[\c!leftquote]},
- \c!right={\symbol[\c!rightquote]}]
-
-\definedelimitedtext
- [\v!blockquote][\v!quotation]
-
-\setupdelimitedtext
- [\v!blockquote]
- [\c!left=,
- \c!right=]
-
-\definedelimitedtext
- [\v!speech][\v!quotation]
-
-\setupdelimitedtext
- [\v!speech]
- [\c!repeat=\v!yes,
- \c!left={\symbol[\c!leftspeech]},
- \c!middle={\symbol[\c!middlespeech]},
- \c!right={\symbol[\c!rightspeech]}]
-
-\definedelimitedtext
- [\v!aside]
- [\c!left={\symbol[\c!leftsentence]},
- \c!right={\symbol[\c!rightsentence]}]
-
-% how do we call an tight quote
-%
-% \definedelimitedtext
-% [\v!quotation][\v!quotation]
-%
-% \setupdelimitedtext
-% [\v!quotation]
-% [\c!indentnext=\v!no,
-% \c!spacebefore=\v!nowhite]
-
-\permanent\protected\def\setupquotation{\setupdelimitedtext[\v!quotation]}
-\permanent\protected\def\setupquote {\setupdelimitedtext[\v!quote]}
-
-\protect \endinput