diff options
author | Karl Berry <karl@freefriends.org> | 2018-03-20 22:10:59 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2018-03-20 22:10:59 +0000 |
commit | 65d009a0596b194597f47531523addd3e64ed005 (patch) | |
tree | e13bd9beecf63e26491a66aa7a8fa702482f0067 /Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv | |
parent | d1a186333ced7b341e26877907343f08211199f7 (diff) |
context [current] (20mar18)
git-svn-id: svn://tug.org/texlive/trunk@47050 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv')
-rw-r--r-- | Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv | 113 |
1 files changed, 104 insertions, 9 deletions
diff --git a/Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv b/Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv index 570f1a1f56e..7170578d17d 100644 --- a/Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv +++ b/Master/texmf-dist/tex/context/base/mkiv/typo-tal.mkiv @@ -22,7 +22,7 @@ \unprotect -\registerctxluafile{typo-tal}{1.001} +\registerctxluafile{typo-tal}{} \definesystemattribute[characteralign][public] @@ -56,10 +56,11 @@ % D % D \typebuffer \blank \getbuffer \blank -\unexpanded\def\signalcharacteralign#1#2{\attribute\characteralignattribute\numexpr#1*\maxcardminusone+#2\relax} % 0xFFFF -\unexpanded\def\setcharacteralign #1#2{\clf_setcharacteralign#1{#2}} -\unexpanded\def\resetcharacteralign {\clf_resetcharacteralign} -\unexpanded\def\nocharacteralign {\attribute\characteralignattribute\attributeunsetvalue} +\unexpanded\def\signalcharacteralign #1#2{\attribute\characteralignattribute\numexpr#1*\maxcardminusone+#2\relax} % 0xFFFF +\unexpanded\def\setcharacteralign #1#2{\clf_setcharacteralign#1{#2}} +\unexpanded\def\resetcharacteralign {\clf_resetcharacteralign} +\unexpanded\def\nocharacteralign {\attribute\characteralignattribute\attributeunsetvalue} +\unexpanded\def\setcharacteraligndetail#1#2#3#4{\clf_setcharacteraligndetail#1{#2}#3#4\relax} %D Mostly downward compatible: %D @@ -73,18 +74,54 @@ %D \stopbuffer %D %D \typebuffer \blank \getbuffer \blank - +%D +%D \startbuffer +%D \startcharacteralign[leftsample=123.456,rightsample=00,character={,}] +%D \checkcharacteralign{123.456,78}\par +%D \checkcharacteralign {456}\par +%D \checkcharacteralign {23.456}\par +%D \checkcharacteralign {78,9}\par +%D \checkcharacteralign {78}\par +%D \stopcharacteralign +%D \stopbuffer +%D +%D \typebuffer \blank \getbuffer \blank +%D +%D \startbuffer +%D \startcharacteralign[leftwidth=123.456,rightwidth=00,character={,}] +%D \checkcharacteralign{123.456,78}\par +%D \checkcharacteralign {456}\par +%D \checkcharacteralign {23.456}\par +%D \checkcharacteralign {78,9}\par +%D \checkcharacteralign {78}\par +%D \stopcharacteralign +%D \stopbuffer +%D +%D \typebuffer \blank \getbuffer \blank +%D %D We have (currently) two modes: \type {text} and \type {number}. The handler tries %D to determine the mode automatically. When using periods and commas as separators %D the \type {number} mode is chosen. If you use for instance a \type {-} as %D separator, \type {text} is chosen, but you can enforce \type {number} with \type -%D {number->-} (as with other mechanisms, the arrow indicates a methot to apply). +%D {number->-} (as with other mechanisms, the arrow indicates a method to apply). %D %D One can use \type {\nocharacteralign} to disable this mechanism, for instance in %D a table cell. \def\alignmentcharacter{,} +\installcorenamespace{characteralign} + +\installparameterhandler\??characteralign {characteralign} +\installsetuphandler \??characteralign {characteralign} + +\setupcharacteralign + [\c!leftwidth =\zeropoint, + \c!rightwidth =\zeropoint, + \c!leftsample =, + \c!rightsample=, + \c!character =\alignmentcharacter] + \unexpanded\def\typo_charalign_pass_one {\advance\scratchcounter\plusone \setbox\scratchbox\typo_charalign_pass} @@ -99,13 +136,71 @@ \unexpanded\def\startcharacteralign {\dosingleempty\typo_charalign_start} -\def\typo_charalign_start[#1]#2\stopcharacteralign +\def\typo_charalign_start[#1]% + {\doifelseassignment{#1}\typo_charalign_start_one\typo_charalign_start_two{#1}} + +\def\typo_charalign_start_one#1#2\stopcharacteralign + {\bgroup + % for now no instances + \setupcurrentcharacteralign[#1]% + \edef\p_left {\characteralignparameter\c!leftsample}% + \edef\p_right{\characteralignparameter\c!rightsample}% + \ifx\p_left\empty + \scratchdimenone\dimexpr\characteralignparameter\c!leftwidth\relax + \else + \setbox\scratchbox\hbox{\p_left}% + \scratchdimenone\wd\scratchbox + \fi + \ifx\p_right\empty + \scratchdimentwo\dimexpr\characteralignparameter\c!rightwidth\relax + \else + \setbox\scratchbox\hbox{\p_right}% + \scratchdimentwo\wd\scratchbox + \fi + \ifzeropt\scratchdimenone + \ifzeropt\scratchdimentwo + \donefalse + \else + \donetrue + \fi + \else + \donetrue + \fi + \edef\alignmentcharacter{\characteralignparameter\c!character}% + \ifdone + \clf_setcharacteraligndetail + \plusone + \alignmentcharacter + \scratchdimenone + \scratchdimentwo + \else + \clf_setcharacteralign + \plusone + \alignmentcharacter + \begingroup + \scratchcounter\zerocount + \let\checkcharacteralign\typo_charalign_pass_one + \settrialtypesetting + #2\relax + \endgroup + \fi + \begingroup + \scratchcounter\zerocount + \let\checkcharacteralign\typo_charalign_pass_two + #2\relax + \endgroup + \resetcharacteralign + \egroup} + +\def\typo_charalign_start_two#1#2\stopcharacteralign {\bgroup \edef\m_temp{#1}% \ifx\m_temp\empty \else \let\alignmentcharacter\m_temp \fi - \setcharacteralign\plusone\alignmentcharacter + \clf_setcharacteralign + \plusone + \alignmentcharacter \begingroup \scratchcounter\zerocount \let\checkcharacteralign\typo_charalign_pass_one |