diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/typog/typog.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/typog/typog.sty | 484 |
1 files changed, 381 insertions, 103 deletions
diff --git a/Master/texmf-dist/tex/latex/typog/typog.sty b/Master/texmf-dist/tex/latex/typog/typog.sty index bbb03cb5cbe..d58f381051a 100644 --- a/Master/texmf-dist/tex/latex/typog/typog.sty +++ b/Master/texmf-dist/tex/latex/typog/typog.sty @@ -11,11 +11,11 @@ %% Copyright (C) 2024 by Ch. L. Spiel %% %% This work may be distributed and/or modified under the conditions -%% of the LaTeX Project Public License, either version 1.3 of this +%% of the LaTeX Project Public License, either version 1.3c of this %% license or (at your option) any later version. The latest version %% of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX +%% https://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX %% version 2003/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. @@ -25,13 +25,15 @@ %% This work consists of the files typog.dtx and typog.ins %% and the derived files typog.sty, slant-angle.mp, %% crooked-paragraphs.mp, smooth-parshapes.mp, title.mp, -%% typog-example.tex, typog-nomt.tex, typog-grep.pl, +%% typog-example.tex, typog-minimal-test.tex, +%% typog-without-microtype-test.tex +%% typog-grep.pl.in, typog-grep.pl, %% typog-grep.pod, and teximan2latex.sed. %% %% \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{typog} - [2024/05/07 v0.3 TypoGraphic extensions] + [2024/07/08 v0.4 TypoGraphic extensions] \RequirePackage{etoolbox} \RequirePackage{everyhook} @@ -40,10 +42,11 @@ \newcommand*{\typog@TYPOG}{} \newcommand*{\typoglogo}{\textsf{T\itcorr*{-5}\textsl{y}poG}} \newif\iftypog@debug -\newcommand*{\typog@typeout}[1] - {\iftypog@debug - \typeout{typog: #1}% - \fi} +\newcommand*{\typog@typeout}[1]{\typeout{typog: #1}} + +\newcommand*{\typog@debug@typeout}[1]{\iftypog@debug\typog@typeout{#1}\fi} + +\newcounter{typog@@iteration} \ExplSyntaxOn \let\typog@trim@spaces=\tl_trim_spaces:o @@ -85,20 +88,34 @@ \fi } -\newmuskip\typog@mathitalicscorrection -\newlength{\typog@textitalicscorrection} -\newlength{\typog@ligaturekern} -\newlength{\typog@raisecapitaldash} -\newlength{\typog@raisecapitalguillemets} -\newlength{\typog@raisecapitalhyphen} -\newlength{\typog@raisecapitaltimes} -\newlength{\typog@raiseguillemets} -\newlength{\typog@raisefiguredash} -\newlength{\typog@slashkern} -\newcommand*{\typog@breakpenalty}{\exhyphenpenalty} +\newmuskip\typog@config@mathitalicscorrection + +\newdimen{\typog@adjust@labelitemi} +\newdimen{\typog@adjust@labelitemii} +\newdimen{\typog@adjust@labelitemiii} +\newdimen{\typog@adjust@labelitemiv} +\newdimen{\typog@adjust@lowercase@labelitemi} +\newdimen{\typog@adjust@lowercase@labelitemii} +\newdimen{\typog@adjust@lowercase@labelitemiii} +\newdimen{\typog@adjust@lowercase@labelitemiv} +\newdimen{\typog@adjust@uppercase@labelitemi} +\newdimen{\typog@adjust@uppercase@labelitemii} +\newdimen{\typog@adjust@uppercase@labelitemiii} +\newdimen{\typog@adjust@uppercase@labelitemiv} + +\newlength{\typog@config@textitalicscorrection} +\newlength{\typog@config@ligaturekern} +\newlength{\typog@config@raisecapitaldash} +\newlength{\typog@config@raisecapitalguillemets} +\newlength{\typog@config@raisecapitalhyphen} +\newlength{\typog@config@raisecapitaltimes} +\newlength{\typog@config@raiseguillemets} +\newlength{\typog@config@raisefiguredash} +\newlength{\typog@config@slashkern} +\newcommand*{\typog@config@breakpenalty}{\exhyphenpenalty} \newlength{\typog@dim@unit} \setlength{\typog@dim@unit}{.001em} -\newcommand*{\typog@trackingttspacing}{300, 90, 60} +\newcommand*{\typog@config@trackingttspacing}{300, 90, 60} \newcommand*{\typog@default@shrink@i}{5} \newcommand*{\typog@default@shrink@ii}{10} \newcommand*{\typog@default@shrink@iii}{20} @@ -122,77 +139,99 @@ \newcommand*{\typog@set@shrink@limits} {\edef\typog@@star{*}% - \edef\typog@@limit{\typog@triple@get@i{\typog@shrinklimits}}% + \edef\typog@@limit{\typog@triple@get@i{\typog@config@shrinklimits}}% \unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@i{\number\typog@@limit}\fi - \edef\typog@@limit{\typog@triple@get@ii{\typog@shrinklimits}}% + \edef\typog@@limit{\typog@triple@get@ii{\typog@config@shrinklimits}}% \unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@ii{\number\typog@@limit}\fi - \edef\typog@@limit{\typog@triple@get@iii{\typog@shrinklimits}}% + \edef\typog@@limit{\typog@triple@get@iii{\typog@config@shrinklimits}}% \unless\ifx\typog@@limit\typog@@star\edef\typog@shrink@iii{\number\typog@@limit}\fi} \newcommand*{\typog@set@stretch@limits} {\edef\typog@@star{*}% - \edef\typog@@limit{\typog@triple@get@i{\typog@stretchlimits}}% + \edef\typog@@limit{\typog@triple@get@i{\typog@config@stretchlimits}}% \unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@i{\number\typog@@limit}\fi - \edef\typog@@limit{\typog@triple@get@ii{\typog@stretchlimits}}% + \edef\typog@@limit{\typog@triple@get@ii{\typog@config@stretchlimits}}% \unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@ii{\number\typog@@limit}\fi - \edef\typog@@limit{\typog@triple@get@iii{\typog@stretchlimits}}% + \edef\typog@@limit{\typog@triple@get@iii{\typog@config@stretchlimits}}% \unless\ifx\typog@@limit\typog@@star\edef\typog@stretch@iii{\number\typog@@limit}\fi} \DeclareOptionX<typog>{breakpenalty}% - {\renewcommand*{\typog@breakpenalty}{#1}} + {\renewcommand*{\typog@config@breakpenalty}{#1}} \DeclareOptionX<typog>{debug}{\typog@debugtrue} \DeclareOptionX<typog>{mathitalicscorrection}[.4mu]% - {\typog@mathitalicscorrection=#1\relax}% + {\typog@config@mathitalicscorrection=#1\relax}% \DeclareOptionX<typog>{nodebug}{\typog@debugfalse} \DeclareOptionX<typog>{textitalicscorrection}[.02em]% - {\setlength{\typog@textitalicscorrection}{#1}} + {\setlength{\typog@config@textitalicscorrection}{#1}} \DeclareOptionX<typog>{ligaturekern}[.033333em]% - {\setlength{\typog@ligaturekern}{#1}} + {\setlength{\typog@config@ligaturekern}{#1}} +\DeclareOptionX<typog>{lowercaselabelitemadjustments}% + {\typog@debug@typeout{lowercaselabelitemadjustments={#1}} + \def\typog@@do##1{\addtocounter{typog@@iteration}{1} + \global\setlength{\csname typog@adjust@lowercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}} + \setcounter{typog@@iteration}{0} + \forcsvlist{\typog@@do}{#1}} +\newcommand*{\typog@config@lowercaselabelitemadjustments} + {\the\typog@adjust@lowercase@labelitemi,\space + \the\typog@adjust@lowercase@labelitemii,\space + \the\typog@adjust@lowercase@labelitemiii,\space + \the\typog@adjust@lowercase@labelitemiv} \DeclareOptionX<typog>{raisecapitaldash}[\z@]% - {\setlength{\typog@raisecapitaldash}{#1}} + {\setlength{\typog@config@raisecapitaldash}{#1}} \DeclareOptionX<typog>{raisecapitalguillemets}[\z@]% - {\setlength{\typog@raisecapitalguillemets}{#1}} + {\setlength{\typog@config@raisecapitalguillemets}{#1}} \DeclareOptionX<typog>{raisecapitalhyphen}[\z@]% - {\setlength{\typog@raisecapitalhyphen}{#1}} + {\setlength{\typog@config@raisecapitalhyphen}{#1}} \DeclareOptionX<typog>{raisecapitaltimes}[\z@]% - {\setlength{\typog@raisecapitaltimes}{#1}} + {\setlength{\typog@config@raisecapitaltimes}{#1}} \DeclareOptionX<typog>{raiseguillemets}[\z@]% - {\setlength{\typog@raiseguillemets}{#1}} + {\setlength{\typog@config@raiseguillemets}{#1}} \DeclareOptionX<typog>{raisefiguredash}[\z@]% - {\setlength{\typog@raisefiguredash}{#1}} + {\setlength{\typog@config@raisefiguredash}{#1}} \DeclareOptionX<typog>{raise*}[\z@]% - {\setlength{\typog@raisecapitaldash}{#1}% - \setlength{\typog@raisecapitalhyphen}{#1}% - \setlength{\typog@raisecapitaltimes}{#1}% - \setlength{\typog@raisefiguredash}{#1}} + {\setlength{\typog@config@raisecapitaldash}{#1}% + \setlength{\typog@config@raisecapitalhyphen}{#1}% + \setlength{\typog@config@raisecapitaltimes}{#1}% + \setlength{\typog@config@raisefiguredash}{#1}} \DeclareOptionX<typog>{shrinklimits}% [\typog@default@shrink@i, \typog@default@shrink@ii, \typog@default@shrink@iii]% {\typog@require@preloaded@microtype \ifx\@onlypreamble\@notprerr \PackageWarning{typog}{option `shrinklimits' can only be used in the preamble}% \else - \edef\typog@shrinklimits{#1}% + \edef\typog@config@shrinklimits{#1}% \typog@set@shrink@limits \fi} \DeclareOptionX<typog>{slashkern}[.05em]% - {\setlength{\typog@slashkern}{#1}} + {\setlength{\typog@config@slashkern}{#1}} \DeclareOptionX<typog>{stretchlimits}% [\typog@default@stretch@i, \typog@default@stretch@ii, \typog@default@stretch@iii]% {\typog@require@preloaded@microtype \ifx\@onlypreamble\@notprerr \PackageWarning{typog}{option `stretchlimits' can only be used in the preamble}% \else - \edef\typog@stretchlimits{#1}% + \edef\typog@config@stretchlimits{#1}% \typog@set@stretch@limits \fi} -\DeclareOptionX<typog>{trackingttspacing}[\typog@trackingttspacing]% +\DeclareOptionX<typog>{trackingttspacing}[\typog@config@trackingttspacing]% {\typog@require@preloaded@microtype \ifx\@onlypreamble\@notprerr \PackageWarning{typog}{option `trackingttspacing' can only be used in the preamble}% \else - \typog@typeout{trackingttspacing=#1}% + \typog@debug@typeout{trackingttspacing=#1}% \SetTracking[outer spacing={#1}]{encoding=*, family=tt*}{0}% \fi} +\DeclareOptionX<typog>{uppercaselabelitemadjustments}% + {\typog@debug@typeout{uppercaselabelitemadjustments={#1}} + \def\typog@@do##1{\addtocounter{typog@@iteration}{1} + \setlength{\csname typog@adjust@uppercase@labelitem\romannumeral\thetypog@@iteration\endcsname}{##1}} + \setcounter{typog@@iteration}{0} + \forcsvlist{\typog@@do}{#1}} +\newcommand*{\typog@config@uppercaselabelitemadjustments} + {\the\typog@adjust@uppercase@labelitemi,\space + \the\typog@adjust@uppercase@labelitemii,\space + \the\typog@adjust@uppercase@labelitemiii,\space + \the\typog@adjust@uppercase@labelitemiv} \newcommand*{\typog@initialize@options} {\ExecuteOptionsX<typog>{ @@ -220,7 +259,30 @@ \fi \ignorespaces} {\ignorespacesafterend} -\NewDocumentCommand{\typogget}{m}{\csname typog@#1\endcsname} +\NewDocumentCommand{\typogget}{m}{\csname typog@config@#1\endcsname} + +\ExplSyntaxOn +\cs_generate_variant:Nn \seq_set_split:Nnn {Nne} +\cs_new:Npn \typog_get_nth_csname:cnn #1#2#3 + { + \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:} + \cs_gset:cpn {#1} {\seq_item:Nn \l_tmpa_seq {#3}} + } +\cs_new:Npn \typog_get_nth_dimen:nnn #1#2#3 + { + \seq_set_split:Nne \l_tmpa_seq {,} {\cs:w typog@config@#2 \cs_end:} + \dim_set:Nn {#1} {\seq_item:Nn \l_tmpa_seq {#3}} + } +\NewDocumentCommand{\typoggetnth}{m m m}{ + \token_if_dim_register:NTF {#1} + { + \typog_get_nth_dimen:nnn {#1} {#2} {#3} + } + { + \typog_get_nth_csname:cnn {#1} {#2} {#3} + } +} +\ExplSyntaxOff \ExplSyntaxOn \newcommand*{\typog@round@dim@to@tenths}[1] @@ -250,6 +312,7 @@ \newcommand*{\typog@default@inspect@id@prefix}{a-} \newcounter{typog@inspect@count} + \define@key[typog]{typoginspect}{tracingboxes}[\maxdimen]% {\def\typog@@typoginspect@tracingboxes{#1}} \NewDocumentEnvironment{typoginspect}{O{} m} @@ -258,11 +321,16 @@ \edef\typog@@arg{#2}% \ifx\typog@@arg\empty \stepcounter{typog@inspect@count}% - \edef\typog@@id{\typog@default@inspect@id@prefix\arabic{typog@inspect@count}}% + \edef\typog@@id{\typog@default@inspect@id@prefix + \arabic{typog@inspect@count}}% \else \edef\typog@@id{\typog@trim@spaces{\typog@@arg}}% \fi - \typeout{<typog-inspect id="\typog@@id" job="\jobname" line="\the\inputlineno" page="\the\value{page}">}% + \typeout{<typog-inspect\space + id="\typog@@id"\space + job="\jobname"\space + line="\the\inputlineno"\space + page="\the\value{page}">}% \hbadness=\m@ne \vbadness=\m@ne \tracingnone @@ -306,7 +374,7 @@ \newcommand*{\typog@hyphen}{\char`-} \NewDocumentCommand{\nolig}{s o} - {\dimen0=\IfNoValueTF{#2}{\typog@ligaturekern}{#2\typog@dim@unit}% + {\dimen0=\IfNoValueTF{#2}{\typog@config@ligaturekern}{#2\typog@dim@unit}% \IfBooleanTF{#1}% {\kern\dimen0\ignorespaces}% {\discretionary{\typog@hyphen}{}{\kern\dimen0}% @@ -329,7 +397,7 @@ } \newcommand*{\typog@itcorr@text@unconditional}[1] - {\kern#1\typog@textitalicscorrection} + {\kern#1\typog@config@textitalicscorrection} \newcommand*{\typog@itcorr@text}[1] {\def\typog@@strength{#1}% \dimen0=\fontdimen1\font @@ -339,7 +407,7 @@ \kern\typog@@strength\dimen0 \fi} \newcommand*{\typog@itcorr@math}[1] - {\mkern#1\typog@mathitalicscorrection} + {\mkern#1\typog@config@mathitalicscorrection} \NewDocumentCommand{\itcorr}{s m} {\ifmmode \typog@itcorr@math{#2}% @@ -354,11 +422,11 @@ \newcommand*{\typog@forwardslash}{\char`/} \NewDocumentCommand{\kernedslash}{s} - {\hspace*{\typog@slashkern}% + {\hspace*{\typog@config@slashkern}% \typog@forwardslash \IfBooleanTF{#1}% - {\hspace*{\typog@slashkern}\ignorespaces}% - {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@slashkern}}} + {\hspace*{\typog@config@slashkern}\ignorespaces}% + {\typog@breakpoint\typog@allowhyphenation\hspace*{\typog@config@slashkern}}} \typog@register@pdfsubstitute{ \def\kernedslash#1{\if*\detokenize{#1}/\ignorespaces\else/#1\fi}% } @@ -373,7 +441,7 @@ \def\typog@@optarg{#2}% \hspace*{#3\typog@dim@unit}% \raisebox{\ifx\typog@@optarg\typog@@auto - \typog@raisecapitalhyphen + \typog@config@raisecapitalhyphen \else \typog@@optarg\typog@dim@unit \fi}{\typog@hyphen}% @@ -400,9 +468,9 @@ } \newcommand*{\typog@breakpoint} - {\penalty\typog@breakpenalty} + {\penalty\typog@config@breakpenalty} \NewDocumentCommand{\capitalhyphen}{s} - {\raisebox{\typog@raisecapitalhyphen}{\typog@hyphen}% + {\raisebox{\typog@config@raisecapitalhyphen}{\typog@hyphen}% \IfBooleanTF{#1}% {\ignorespaces}% {\typog@breakpoint\typog@allowhyphenation}} @@ -416,7 +484,7 @@ } \NewDocumentCommand{\capitalendash}{s} - {\raisebox{\typog@raisecapitaldash}{\textendash}% + {\raisebox{\typog@config@raisecapitaldash}{\textendash}% \IfBooleanTF{#1}% {\ignorespaces}% {\typog@breakpoint\typog@allowhyphenation}} @@ -432,7 +500,7 @@ } \NewDocumentCommand{\capitalemdash}{s} - {\raisebox{\typog@raisecapitaldash}{\textemdash}% + {\raisebox{\typog@config@raisecapitaldash}{\textemdash}% \IfBooleanTF{#1}% {\ignorespaces}% {\typog@breakpoint\typog@allowhyphenation}} @@ -446,7 +514,7 @@ } \NewDocumentCommand{\figuredash}{s} - {\raisebox{\typog@raisefiguredash}{\textendash}% + {\raisebox{\typog@config@raisefiguredash}{\textendash}% \IfBooleanTF{#1}% {\ignorespaces}% {\typog@breakpoint\typog@allowhyphenation}} @@ -454,9 +522,9 @@ \NewDocumentCommand{\capitaltimes}{} {\ifmmode - \mathbin{\raisebox{\typog@raisecapitaltimes}{$\m@th\times$}}% + \mathbin{\raisebox{\typog@config@raisecapitaltimes}{$\m@th\times$}}% \else - \raisebox{\typog@raisecapitaltimes}{\texttimes}% + \raisebox{\typog@config@raisecapitaltimes}{\texttimes}% \fi} \typog@register@pdfsubstitute{ \RenewExpandableDocumentCommand{\capitaltimes}{}{\texttimes} @@ -464,37 +532,247 @@ \NewDocumentCommand{\singleguillemetleft}{} {\typog@allowhyphenation - \raisebox{\typog@raiseguillemets}{\guilsinglleft}} + \raisebox{\typog@config@raiseguillemets}{\guilsinglleft}} \typog@register@pdfsubstitute{\let\singleguillemetleft\guilsinglleft} \NewDocumentCommand{\singleguillemetright}{} - {\raisebox{\typog@raiseguillemets}{\guilsinglright}% + {\raisebox{\typog@config@raiseguillemets}{\guilsinglright}% \typog@allowhyphenation} \typog@register@pdfsubstitute{\let\singleguillemetright\guilsinglright} \NewDocumentCommand{\doubleguillemetleft}{} {\typog@allowhyphenation - \raisebox{\typog@raiseguillemets}{\guillemotleft}} + \raisebox{\typog@config@raiseguillemets}{\guillemotleft}} \typog@register@pdfsubstitute{\let\doubleguillemetleft\guillemotleft} \NewDocumentCommand{\doubleguillemetright}{} - {\raisebox{\typog@raiseguillemets}{\guillemotright}% + {\raisebox{\typog@config@raiseguillemets}{\guillemotright}% \typog@allowhyphenation} \typog@register@pdfsubstitute{\let\doubleguillemetright\guillemotright} \NewDocumentCommand{\Singleguillemetleft}{} {\typog@allowhyphenation - \raisebox{\typog@raisecapitalguillemets}{\guilsinglleft}} + \raisebox{\typog@config@raisecapitalguillemets}{\guilsinglleft}} \typog@register@pdfsubstitute{\let\Singleguillemetleft\guilsinglleft} \NewDocumentCommand{\Singleguillemetright}{} - {\raisebox{\typog@raisecapitalguillemets}{\guilsinglright}% + {\raisebox{\typog@config@raisecapitalguillemets}{\guilsinglright}% \typog@allowhyphenation} \typog@register@pdfsubstitute{\let\Singleguillemetright\guilsinglright} \NewDocumentCommand{\Doubleguillemetleft}{} {\typog@allowhyphenation - \raisebox{\typog@raisecapitalguillemets}{\guillemotleft}} + \raisebox{\typog@config@raisecapitalguillemets}{\guillemotleft}} \typog@register@pdfsubstitute{\let\Doubleguillemetleft\guillemotleft} \NewDocumentCommand{\Doubleguillemetright}{} - {\raisebox{\typog@raisecapitalguillemets}{\guillemotright}% + {\raisebox{\typog@config@raisecapitalguillemets}{\guillemotright}% \typog@allowhyphenation} \typog@register@pdfsubstitute{\let\Doubleguillemetright\guillemotright} +\newcommand*{\@typog@uppercase@adjust@labelitem}[1] + {\@typog@maybe@patch@itemize + \ifstrequal{#1}{*} + {\setlength{\typog@adjust@labelitemi} + {\typog@adjust@uppercase@labelitemi} + \setlength{\typog@adjust@labelitemii} + {\typog@adjust@uppercase@labelitemii} + \setlength{\typog@adjust@labelitemiii} + {\typog@adjust@uppercase@labelitemiii} + \setlength{\typog@adjust@labelitemiv} + {\typog@adjust@uppercase@labelitemiv}} + {\ifcase #1% 0 + \relax % outside of any itemize environment + \or % 1 + \setlength{\typog@adjust@labelitemi} + {\typog@adjust@uppercase@labelitemi} + \or % 2 + \setlength{\typog@adjust@labelitemii} + {\typog@adjust@uppercase@labelitemii} + \or % 3 + \setlength{\typog@adjust@labelitemiii} + {\typog@adjust@uppercase@labelitemiii} + \or % 4 + \setlength{\typog@adjust@labelitemiv} + {\typog@adjust@uppercase@labelitemiv} + \else + \PackageError{typog} + {Itemize level out of range} + {Valid levels are 1, 2, 3, 4, and *} + \fi}} + +\newcommand*{\@typog@lowercase@adjust@labelitem}[1] + {\@typog@maybe@patch@itemize + \ifstrequal{#1}{*} + {\setlength{\typog@adjust@labelitemi} + {\typog@adjust@lowercase@labelitemi} + \setlength{\typog@adjust@labelitemii} + {\typog@adjust@lowercase@labelitemii} + \setlength{\typog@adjust@labelitemiii} + {\typog@adjust@lowercase@labelitemiii} + \setlength{\typog@adjust@labelitemiv} + {\typog@adjust@lowercase@labelitemiv}} + {\ifcase #1% 0 + \relax % outside of any itemize environment + \or % 1 + \setlength{\typog@adjust@labelitemi} + {\typog@adjust@lowercase@labelitemi} + \or % 2 + \setlength{\typog@adjust@labelitemii} + {\typog@adjust@lowercase@labelitemii} + \or % 3 + \setlength{\typog@adjust@labelitemiii} + {\typog@adjust@lowercase@labelitemiii} + \or % 4 + \setlength{\typog@adjust@labelitemiv} + {\typog@adjust@lowercase@labelitemiv} + \else + \PackageError{typog} + {Itemize level out of range} + {Valid levels are 1, 2, 3, 4, and *} + \fi}} + +\newcommand*{\@typog@noadjust@labelitem}[1] + {\ifstrequal{#1}{*} + {\setlength{\typog@adjust@labelitemi}{\z@} + \setlength{\typog@adjust@labelitemii}{\z@} + \setlength{\typog@adjust@labelitemiii}{\z@} + \setlength{\typog@adjust@labelitemiv}{\z@}} + {\ifcase #1% 0 + \relax % outside of any itemize environment + \or % 1 + \setlength{\typog@adjust@labelitemi}{\z@} + \or % 2 + \setlength{\typog@adjust@labelitemii}{\z@} + \or % 3 + \setlength{\typog@adjust@labelitemiii}{\z@} + \or % 4 + \setlength{\typog@adjust@labelitemiv}{\z@} + \else + \PackageError{typog} + {Itemize level out of range} + {Valid levels are 1, 2, 3, 4, and *} + \fi}} + +\NewDocumentCommand{\uppercaseadjustlabelitems}{m} + {\AfterPreamble{% + \ifblank{#1} + {\@typog@uppercase@adjust@labelitem{\@itemdepth}} + {\forcsvlist{\@typog@uppercase@adjust@labelitem}{#1}}% + \ignorespaces}} + +\NewDocumentCommand{\lowercaseadjustlabelitems}{m} + {\AfterPreamble{% + \ifblank{#1} + {\@typog@lowercase@adjust@labelitem{\@itemdepth}} + {\forcsvlist{\@typog@lowercase@adjust@labelitem}{#1}}% + \ignorespaces}} + +\NewDocumentCommand{\noadjustlabelitems}{m} + {\ifblank{#1} + {\@typog@noadjust@labelitem{\@itemdepth}} + {\forcsvlist{\@typog@noadjust@labelitem}{#1}}% + \ignorespaces} + +\newcommand*{\@typog@itemize@patch} + {\letcs{\@typog@old@itemitem}{\@itemitem} + \edef\@itemitem{@typog@labelitem\romannumeral\the\@itemdepth} + \expandafter\def\csname\@itemitem\endcsname + {\raisebox{\csname typog@adjust@labelitem\romannumeral\the\@itemdepth\endcsname} + {\@typog@old@itemitem}}} + +\newcommand*{\@typog@patch@itemize} + {\ifdefined\enit@itemize@i + \patchcmd{\enit@itemize@i} + {\expandafter} + {\@typog@itemize@patch\expandafter} + {\typog@debug@typeout{patching enumitem \string\enit@itemize@i\space succeeded}} + {\PackageError{typog} + {Patching enumitem macro \string\enit@itemize@i\space failed} + {}} + \else + \patchcmd{\itemize} + {\expandafter} + {\@typog@itemize@patch\expandafter} + {\typog@debug@typeout{patching \string\itemize\space succeeded}} + {\PackageError{typog} + {Patching plain LaTeX macro \string\itemize\space failed} + {}} + \fi} + +\newbool{@typog@itemize@has@been@patched} +\newcommand*{\@typog@maybe@patch@itemize} + {\ifbool{@typog@itemize@has@been@patched} + {\relax} + {\@typog@patch@itemize + \booltrue{@typog@itemize@has@been@patched}}} + +\newcommand*{\typog@hairline@width}{.125pt} +\newcommand*{\typogadjuststairsfor}[5] + {\dimen0=1pt% + \count0=#3\relax + \unless\ifodd\count0 + \advance\count0 by 1% + \fi + \setcounter{typog@@iteration}{1}% + \setbox0=\hbox{#4}% + \setbox1=\hbox{}% + \loop + \ifnum\thetypog@@iteration=\numexpr\count0 / 2\relax + \dimen1=2\dimen0 + \else + \dimen1=\dimen0 + \fi + \dimen2=\dimexpr#2 * (\thetypog@@iteration - \count0 / 2)\relax + \setbox1=\hbox{\unhbox1\raisebox{\dimen2}{\kern\dimen1 #5\kern\dimen1}}% + \addtocounter{typog@@iteration}{1}% + \unless\ifnum\thetypog@@iteration>\count0 + \repeat + \mbox{\rlap{\raisebox{\fpeval{#1}\ht0}{\rule{\wd1}{\typog@hairline@width}}}\box1}} + +\NewDocumentCommand{\typogadjuststairs}{O{.5} m m m} + {\begingroup + \unless\ifdim #2>\z@ + \PackageError{typog} + {\string\typogadjuststairs\space non-positive step-size} + {step-size must be a positive dimension}% + \fi + \ifnum #3<1 + \PackageError{typog} + {\string\typogadjuststairs\space too few number-of-steps} + {number-of-steps must at least be 1}% + \fi + \ifblank{#4} + {\PackageError{typog} + {sample must not be empty} + {supply either some uppercase or some lowercase letters}} + {}% + \def\arraystretch{1}% + \begin{tabular}{@{}c@{}} + \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemi} \\ + \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemii} \\ + \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiii} \\ + \typogadjuststairsfor{#1}{#2}{#3}{#4}{\labelitemiv} + \end{tabular} + \endgroup} + +\newcommand*{\typog@uppercase@adjusted@labelitems} + {\hbox{\raisebox{\typog@adjust@uppercase@labelitemi}{\labelitemi}% + \raisebox{\typog@adjust@uppercase@labelitemii}{\labelitemii}% + \raisebox{\typog@adjust@uppercase@labelitemiii}{\labelitemiii}% + \raisebox{\typog@adjust@uppercase@labelitemiv}{\labelitemiv}}} +\NewDocumentCommand{\typoguppercaseadjustcheck}{O{.5} m} + {\setbox0=\hbox{#2}% + \setbox1=\typog@uppercase@adjusted@labelitems + \mbox{\rlap{\raisebox{\fpeval{#1}\ht0} + {\rule{\wd1}{\typog@hairline@width}}}% + \box1}} + +\newcommand*{\typog@lowercase@adjusted@labelitems} + {\hbox{\raisebox{\typog@adjust@lowercase@labelitemi}{\labelitemi}% + \raisebox{\typog@adjust@lowercase@labelitemii}{\labelitemii}% + \raisebox{\typog@adjust@lowercase@labelitemiii}{\labelitemiii}% + \raisebox{\typog@adjust@lowercase@labelitemiv}{\labelitemiv}}} +\NewDocumentCommand{\typoglowercaseadjustcheck}{O{.5} m} + {\setbox0=\hbox{#2}% + \setbox1=\typog@lowercase@adjusted@labelitems + \mbox{\rlap{\raisebox{\fpeval{#1}\ht0} + {\rule{\wd1}{\typog@hairline@width}}}% + \box1}} + \NewDocumentEnvironment{lastlineraggedleftpar}{} {\lastlinefit=0% \setlength{\leftskip}{\z@ \@plus 1fil}% @@ -844,7 +1122,7 @@ \NewDocumentCommand{\vtietop}{O{3}} {\setcounter{typog@mean@penalty} {\typog@geometric@mean{\@M}{\clubpenalty}}% - \typog@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}% + \typog@debug@typeout{vtietop: penalties \the\@M--\the\value{typog@mean@penalty}--\the\clubpenalty}% \unless\ifnum\clubpenalty<\@M \PackageWarning{typog}{vtietop: clubpenalty=\the\clubpenalty\space>= 10000}% \fi @@ -911,7 +1189,7 @@ \NewDocumentCommand{\vtiebot}{O{3}} {\setcounter{typog@mean@penalty} {\typog@geometric@mean{\@M}{\widowpenalty}}% - \typog@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}% + \typog@debug@typeout{vtiebot: penalties \the\@M--\the\value{typog@mean@penalty}--\the\widowpenalty}% \unless\ifnum\widowpenalty<\@M \PackageWarning{typog}{vtiebot: widowpenalty=\the\widowpenalty\space>= 10000}% \fi @@ -969,7 +1247,7 @@ \NewDocumentCommand{\typog@vtiebotdisp}{m} {\setcounter{typog@mean@penalty} {\typog@geometric@mean{\@M}{\displaywidowpenalty}}% - \typog@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}% + \typog@debug@typeout{vtiebotdisp: penalties \the\@M--\the\value{typog@mean@penalty}--\the\displaywidowpenalty}% \unless\ifnum\displaywidowpenalty<\@M \PackageWarning{typog}{vtiebotdisp: displaywidowpenalty=\the\displaywidowpenalty\space>= 10000}% \fi @@ -1047,9 +1325,9 @@ \int_set:Nn \l_tmpb_int {\typog@setbaselineskip@iter@limit} \dim_set:Nn \l_tmpa_dim {\glueexpr #1} - \typog@typeout{\string\setbaselineskip:\space + \typog@debug@typeout{\string\setbaselineskip:\space initial\space baselineskip:\space \the\baselineskip} - \typog@typeout{\string\setbaselineskip:\space + \typog@debug@typeout{\string\setbaselineskip:\space target\space baselineskip:\space \dim_use:N \l_tmpa_dim} \dim_compare:nNnTF {\baselineskip} > {\c_zero_dim} @@ -1102,10 +1380,10 @@ {} } - \typog@typeout{\string\setbaselineskip:\space + \typog@debug@typeout{\string\setbaselineskip:\space final\space \string\setstretch\space argument:\space \fp_use:N \l_tmpa_fp} - \typog@typeout{\string\setbaselineskip:\space + \typog@debug@typeout{\string\setbaselineskip:\space final\space baselineskip:\space \the\baselineskip} } @@ -1123,7 +1401,7 @@ \dim_new:N \typogfontsize \AfterEndPreamble{ \dim_set:Nn \typogfontsize {\fontdimen6\font} - \typog@typeout{\string\typogfontsize = + \typog@debug@typeout{\string\typogfontsize = \dim_use:N \typogfontsize\space (at\space begin\space of\space document)} } @@ -1205,13 +1483,13 @@ \skip1=#2\relax \skip2=#3\relax \skip3=#4\relax - \typog@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}% - \typog@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}% - \typog@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}% - \typog@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}% + \typog@debug@typeout{smoothraggedrightshapetriplet: skip0=\the\skip0}% + \typog@debug@typeout{smoothraggedrightshapetriplet: skip1=\the\skip1}% + \typog@debug@typeout{smoothraggedrightshapetriplet: skip2=\the\skip2}% + \typog@debug@typeout{smoothraggedrightshapetriplet: skip3=\the\skip3}% \unless\ifnum\typog@mod{\typog@triplet@max@lines}{3}=0 \PackageError{typog} - {Line number of triplet generator % + {Line number of triplet generator\space (\typog@triplet@max@lines) not divisible by 3} {} \fi @@ -1240,15 +1518,15 @@ \skip3=#4\relax \skip4=#5\relax \skip5=#6\relax - \typog@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}% - \typog@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}% - \typog@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}% - \typog@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}% - \typog@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}% - \typog@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}% + \typog@debug@typeout{smoothraggedrightshapequintuplet: skip0=\the\skip0}% + \typog@debug@typeout{smoothraggedrightshapequintuplet: skip1=\the\skip1}% + \typog@debug@typeout{smoothraggedrightshapequintuplet: skip2=\the\skip2}% + \typog@debug@typeout{smoothraggedrightshapequintuplet: skip3=\the\skip3}% + \typog@debug@typeout{smoothraggedrightshapequintuplet: skip4=\the\skip4}% + \typog@debug@typeout{smoothraggedrightshapequintuplet: skip5=\the\skip5}% \unless\ifnum\typog@mod{\typog@quintuplet@max@lines}{5}=0 \PackageError{typog} - {Line number of quintuplet generator % + {Line number of quintuplet generator\space (\typog@quintuplet@max@lines) not divisible by 5} {} \fi @@ -1279,17 +1557,17 @@ \skip5=#6\relax \skip6=#7\relax \skip7=#8\relax - \typog@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}% - \typog@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip0=\the\skip0}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip1=\the\skip1}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip2=\the\skip2}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip3=\the\skip3}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip4=\the\skip4}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip5=\the\skip5}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip6=\the\skip6}% + \typog@debug@typeout{smoothraggedrightshapeseptuplet: skip7=\the\skip7}% \unless\ifnum\typog@mod{\typog@septuplet@max@lines}{7}=0 \PackageError{typog} - {Line number of septuplet generator % + {Line number of septuplet generator\space (\typog@septuplet@max@lines) not divisible by 7} {} \fi @@ -1340,7 +1618,7 @@ \typog@fuzzwidth=\smoothraggedrightfuzzfactor\smoothraggedrightragwidth \ifcase\typog@@generatorchoice \typog@fuzzwidth=.25\smoothraggedrightragwidth - \typog@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}% + \typog@debug@typeout{smoothraggedright: generator=triplet, typog@fuzzwidth=\the\typog@fuzzwidth}% \smoothraggedrightshapetriplet[leftskip=\typog@@smoothraggedrightleftskip, parindent=\glueexpr\smoothraggedrightparindent + \parindent, #1]% @@ -1351,7 +1629,7 @@ + \glueexpr \z@ \@plus \typog@fuzzwidth \@minus \typog@fuzzwidth\relax}% (2) \or \typog@fuzzwidth=.125\smoothraggedrightragwidth - \typog@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}% + \typog@debug@typeout{smoothraggedright: generator=quintuplet, typog@fuzzwidth=\the\typog@fuzzwidth}% \smoothraggedrightshapequintuplet[leftskip=\typog@@smoothraggedrightleftskip, parindent=\glueexpr\smoothraggedrightparindent + \parindent, #1]% @@ -1366,7 +1644,7 @@ + \glueexpr \z@ \@plus \typog@fuzzwidth\relax}% (1) \or \typog@fuzzwidth=.08333\smoothraggedrightragwidth - \typog@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}% + \typog@debug@typeout{smoothraggedright: generator=septuplet, typog@fuzzwidth=\the\typog@fuzzwidth}% \smoothraggedrightshapeseptuplet[leftskip=\typog@@smoothraggedrightleftskip, parindent=\glueexpr\smoothraggedrightparindent + \parindent, #1]% |