summaryrefslogtreecommitdiff
path: root/tex/context/base/typo-cap.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/typo-cap.mkiv')
-rw-r--r--tex/context/base/typo-cap.mkiv44
1 files changed, 32 insertions, 12 deletions
diff --git a/tex/context/base/typo-cap.mkiv b/tex/context/base/typo-cap.mkiv
index 28ced7c42..25a0ff9ee 100644
--- a/tex/context/base/typo-cap.mkiv
+++ b/tex/context/base/typo-cap.mkiv
@@ -15,6 +15,9 @@
\unprotect
+%D Maybe we need a more clever system: either command or style mode etc. so
+%D that we can avoid the grouped mess in a simple style switch.
+
\registerctxluafile{typo-cap}{1.001}
\definesystemattribute[case][public]
@@ -146,6 +149,14 @@
\unexpanded\def\realSmallcapped {\groupedcommand{\sc\setcharactercasing[\v!Word ]}{}} % one upper + font
\unexpanded\def\realSmallCapped {\groupedcommand{\sc\setcharactercasing[\v!Words ]}{}} % some upper
+\unexpanded\def\font_style_pseudosmallcapped{\setcharactercasing [\v!WORD ]\signalcharacter\tx} % all upper
+\unexpanded\def\font_style_pseudoSmallcapped{\setcharactercasing [\v!capital]\signalcharacter\tx} % one upper + font
+\unexpanded\def\font_style_pseudoSmallCapped{\setcharactercasing [\v!Capital]\signalcharacter\tx} % some upper + font
+
+\unexpanded\def\font_style_realsmallcapped {\sc\setcharactercasing[\v!WORD ]} % all lower
+\unexpanded\def\font_style_realSmallcapped {\sc\setcharactercasing[\v!Word ]} % one upper + font
+\unexpanded\def\font_style_realSmallCapped {\sc\setcharactercasing[\v!Words ]} % some upper
+
\unexpanded\def\typo_capitals_smallcaps
{\ifconditional\c_typo_capitals_pseudo
\expandafter\firstoftwoarguments
@@ -157,6 +168,10 @@
\unexpanded\def\Smallcapped{\typo_capitals_smallcaps\pseudoSmallcapped\realSmallcapped}
\unexpanded\def\SmallCapped{\typo_capitals_smallcaps\pseudoSmallCapped\realSmallCapped}
+\unexpanded\def\font_style_smallcapped{\typo_capitals_smallcaps\font_style_pseudosmallcapped\font_style_realsmallcapped}
+\unexpanded\def\font_style_Smallcapped{\typo_capitals_smallcaps\font_style_pseudoSmallcapped\font_style_realSmallcapped}
+\unexpanded\def\font_style_SmallCapped{\typo_capitals_smallcaps\font_style_pseudoSmallCapped\font_style_realSmallCapped}
+
\unexpanded\def\autocap{\ifmmode\expandafter\normalcap\else\expandafter\smallcapped\fi}
\appendtoks
@@ -171,6 +186,10 @@
\let\normalWORD \WORD
\let\normalword \word
+\let\font_style_normalsmallcapped\font_style_smallcapped
+\let\font_style_normalWORD \WORD
+\let\font_style_normalword \word
+
%D As suggested by WS:
\unexpanded\def\notsmallcapped{\groupedcommand{\setcharactercasing[\v!word]\signalcharacter}{}}
@@ -183,21 +202,22 @@
%D
%D \showsetup{setupcapitals}
-\let\normalsmallcapped\smallcapped
+\installcorenamespace{capitals}
-\definesystemvariable{kk}
+\installsetuponlycommandhandler \??capitals {capitals}
-\unexpanded\def\setupcapitals
- {\dosingleempty\typo_capitals_setup}
+\let\normalsmallcapped\smallcapped
-\def\typo_capitals_setup[#1]% todo: don't use grouping just a switch
- {\getparameters[\??kk][#1]%
- \doifelse\@@kktitle\v!yes
- {\definealternativestyle[\v!capital ][\normalsmallcapped][\normalsmallcapped]%
- \definealternativestyle[\v!smallcaps][\sc ][\sc ]}
- {\definealternativestyle[\v!capital ][\normalsmallcapped][\normalWORD ]%
- \definealternativestyle[\v!smallcaps][\sc ][\normalWORD ]}%
- \doifelse\@@kksc\v!yes\userealcaps\usepseudocaps}
+\appendtoks
+ \doifelse{\directcapitalsparameter\c!title}\v!yes
+ {\definealternativestyle[\v!capital ][\font_style_normalsmallcapped][\font_style_normalsmallcapped]%
+ \definealternativestyle[\v!smallcaps][\sc][\sc]}
+ {\definealternativestyle[\v!capital ][\font_style_normalsmallcapped][\font_style_normalWORD]%
+ \definealternativestyle[\v!smallcaps][\sc][\font_style_normalWORD]}%
+ \doifelse{\directcapitalsparameter\s!sc}\v!yes
+ \userealcaps
+ \usepseudocaps
+\to \everysetupcapitals
\let\uppercased\normalWORD
\let\lowercased\normalword