diff options
Diffstat (limited to 'macros/latex/contrib/synthslant/synthslant.dtx')
-rw-r--r-- | macros/latex/contrib/synthslant/synthslant.dtx | 752 |
1 files changed, 520 insertions, 232 deletions
diff --git a/macros/latex/contrib/synthslant/synthslant.dtx b/macros/latex/contrib/synthslant/synthslant.dtx index f5424cf7fa..6c052c64a7 100644 --- a/macros/latex/contrib/synthslant/synthslant.dtx +++ b/macros/latex/contrib/synthslant/synthslant.dtx @@ -3,11 +3,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 +% httpc://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. % % \fi @@ -26,7 +26,6 @@ \PassOptionsToClass{a4paper}{article} \PassOptionsToPackage{hyperfootnotes=false}{hyperref} -\PassOptionsToPackage{charter, scale=1.06}{newtxmath} \PassOptionsToPackage{dvipsnames}{xcolor} \usepackage{amsmath} @@ -52,6 +51,7 @@ \newcommand*{\textls}[2][]{#2} \fi \usepackage{needspace} +\usepackage[section]{placeins} \usepackage{ragged2e} \usepackage{setspace} \usepackage[slant=.18, negslant=-.16]{synthslant} @@ -65,7 +65,7 @@ \usepackage[default, lining, proportional, regular, semibold]{sourceserifpro} \usepackage[lining, proportional, regular, semibold]{sourcesanspro} \usepackage[lining, regular]{sourcecodepro} -\usepackage[xcharter]{newtxmath} +\usepackage[scaled=1.08, uprightscript, xcharter]{newtxmath} \setstretch{1.04166}% \baselineskip: 12.5pt @@ -74,15 +74,15 @@ \newcommand*{\fontclan}{\expandafter\@get@fontclan\f@family\relax} \makeatother -\newcommand*{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont} -\newcommand*{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont} -\newcommand*{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont} -\newcommand*{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont} +\DeclareRobustCommand{\proportionalliningfigures}{\fontfamily{\fontclan-LF}\selectfont} +\DeclareRobustCommand{\proportionaloldstylefigures}{\fontfamily{\fontclan-OsF}\selectfont} +\DeclareRobustCommand{\tabularliningfigures}{\fontfamily{\fontclan-TLF}\selectfont} +\DeclareRobustCommand{\tabularoldstylefigures}{\fontfamily{\fontclan-TOsF}\selectfont} -\newcommand*{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}} -\newcommand*{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}} -\newcommand*{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}} -\newcommand*{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}} +\DeclareRobustCommand{\textdenominator}[1]{{\fontfamily{\fontclan-Dnom}\selectfont #1}} +\DeclareRobustCommand{\textinferior}[1]{{\fontfamily{\fontclan-Inf}\selectfont #1}} +\DeclareRobustCommand{\textnumerator}[1]{{\fontfamily{\fontclan-Numr}\selectfont #1}} +\DeclareRobustCommand{\textsuperior}[1]{{\fontfamily{\fontclan-Sup}\selectfont #1}} \newcommand*{\nativetextfraction}[2] {\mbox{\textnumerator{#1}\textfractionsolidus\textdenominator{#2}}} @@ -92,21 +92,23 @@ \newenvironment*{tabfigures} {\edef\rmdefault{\fontclan-T\sourceserifpro@figurestyle}\rm\ignorespaces} {\ignorespacesafterend} - -\newcommand*{\elseries}{\def\mdseries@rm{el}\def\mdseries@sf{el}\def\mdseries@tt{el}} -\newcommand*{\textel}[1]{{\elseries\textmd{#1}}} -\newcommand*{\lseries}{\def\mdseries@rm{l}\def\mdseries@sf{l}\def\mdseries@tt{l}} -\newcommand*{\textl}[1]{{\lseries\textmd{#1}}} -%%--\newcommand*{\mdseries}{\def\mdseries@rm{m}\def\mdseries@sf{m}\def\mdseries@tt{m}} -%%--\newcommand*{\textmd}[1]{{\mdseries\textmd{#1}}} -\newcommand*{\sbseries}{\def\bfseries@rm{sb}\def\bfseries@sf{sb}\def\bfseries@tt{sb}} -\newcommand*{\textsb}[1]{{\sbseries\textbf{#1}}} -\newcommand*{\bseries}{\def\bfseries@rm{b}\def\bfseries@sf{b}\def\bfseries@tt{b}} -\newcommand*{\textb}[1]{{\bseries\textbf{#1}}} -\newcommand*{\ebseries}{\def\bfseries@rm{k}\def\bfseries@sf{eb}\def\bfseries@tt{k}} -\newcommand*{\texteb}[1]{{\ebseries\textbf{#1}}} \makeatother +\DeclareRobustCommand{\elseries}{\fontseries{el}\selectfont} +\DeclareTextFontCommand{\textel}{\elseries} +\DeclareRobustCommand{\lseries}{\fontseries{l}\selectfont} +\DeclareTextFontCommand{\textl}{\lseries} +%%--\DeclareRobustCommand{\mdseries}{\fontseries{m}\selectfont} +%%--\DeclareTextFontCommand{\textmd}{\mdseries} +\DeclareRobustCommand{\sbseries}{\fontseries{sb}\selectfont} +\DeclareTextFontCommand{\textsb}{\sbseries} +\DeclareRobustCommand{\bseries}{\fontseries{b}\selectfont} +\DeclareTextFontCommand{\textb}{\bseries} +\DeclareRobustCommand{\ebseries}{\fontseries{eb}\selectfont} +\DeclareTextFontCommand{\texteb}{\ebseries} +\DeclareRobustCommand{\ubseries}{\fontseries{k}\selectfont} +\DeclareTextFontCommand{\textub}{\ubseries} + \usepackage{cleveref} @@ -119,7 +121,7 @@ citecolor = blue, colorlinks = true, linkcolor = blue, - linktocpage = false, + linktocpage = true, pdfauthor={Dr. Christoph L. Spiel}, pdfcreationdate={\pdffiledate}, pdfkeywords={LaTeX, font, italic, oblique, slant, upright}, @@ -131,9 +133,94 @@ } +\SetExtraKerning[context=drop-left-sidebearing, name=source-code-normal, unit=space] + {font={T1/SourceCodePro-LF/m/n/44, T1/SourceCodePro-TLF/m/n/44}} + { + 1={-150,}, + 2={-120,}, + 3={-120,}, + 4={-40,}, + A={-100,}, + B={-170,} + } + +\newlength{\sectiontocindent} +\newlength{\sectionnumberwidth} +\newlength{\subsectiontocindent} +\newlength{\subsectionnumberwidth} +\newlength{\subsubsectiontocindent} +\newlength{\subsubsectionnumberwidth} + +\setlength{\sectiontocindent}{0pt} +\setlength{\sectionnumberwidth}{40pt} +\setlength{\subsectiontocindent}{40pt} +\setlength{\subsectionnumberwidth}{25pt} +\setlength{\subsubsectiontocindent}{65pt} +\setlength{\subsubsectionnumberwidth}{30pt} + \makeatletter -\renewcommand*{\@dotsep}{10000} % suppress leaders -\patchcmd{\@dottedtocline}{\normalfont}{\bfseries}{\relax}{\PatchingFailed} +\renewcommand*{\l@section}[2] + {\ifnum \c@tocdepth >\z@ + \addpenalty\@secpenalty + \addvspace{1.0em \@plus\p@}% + \setlength{\@tempdima}{\sectionnumberwidth}% + \begingroup + \def\numberline##1{\hb@xt@\@tempdima{% + \tt\lseries + \fontsize{44}{0}\selectfont + \microtypecontext{kerning=drop-left-sidebearing}% + \iffalse\raisebox{-30pt}[0pt][0pt]{\rule{0.1pt}{40pt}}\fi + \textcolor{customred3}{##1}% + \hfil}}% + \parindent \z@ + \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode + \advance\leftskip\@tempdima + \hskip -\leftskip + \bfseries + \iffalse + \nobreak\hfil + \nobreak\hb@xt@\@pnumwidth{\hss #2\kern-\p@\kern\p@}% + \else + {\sffamily\large #1}\quad + {#2}\hfil\hbox{} + \fi + \par + \endgroup + \fi} + +\renewcommand*{\@dottedtocline}[5] + {\ifnum #1>\c@tocdepth + \else + \vskip \z@ \@plus.2\p@ + \begingroup + \leftskip #2\relax + \rightskip \@tocrmarg + \parfillskip -\rightskip + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima + \null\nobreak + \hskip -\leftskip + {#4}\nobreak + \iffalse + \leaders\hbox{$\m@th \mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill + \nobreak\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5\kern-\p@\kern\p@}% + \else + \hbox{\quad\normalfont\bfseries #5}\nobreak\hfill\hbox{}% + \fi + \par + \endgroup + \fi} + +\renewcommand*{\l@subsection}{\@dottedtocline{2}{\subsectiontocindent}{\subsectionnumberwidth}} +\renewcommand*{\l@subsubsection}{\@dottedtocline{3}{\subsubsectiontocindent}{\subsubsectionnumberwidth}} +\newrobustcmd*{\tocsquashedsubsections} + {\def\l@subsection{\@dottedtocline{2}{0pt}{\subsubsectionnumberwidth}}% + \def\l@subsubsection{\@dottedtocline{3}{0pt}{\subsubsectionnumberwidth}}} \makeatother @@ -156,8 +243,10 @@ \newcommand*{\floatcaptionwidth}{.79\textwidth} -\captionsetup[figure]{font=small, justification=centerlast, labelfont=sc, width=\floatcaptionwidth} -\captionsetup[table]{font=small, justification=centerlast, labelfont=sc, width=\floatcaptionwidth} +\captionsetup[figure]{font=small, justification=centerlast, + labelfont=sc, width=\floatcaptionwidth} +\captionsetup[table]{font=small, justification=centerlast, + labelfont=sc, width=\floatcaptionwidth} \newsavebox{\listlabelbox} @@ -188,13 +277,15 @@ \fancypagestyle{pagenumberonly}{ + \fancyhf{} \fancyhead[L]{} \fancyhead[R]{\thepage} } -\pagestyle{fancy} -\fancyhf{} -\fancyhead[L]{\rightmark} -\fancyhead[R]{\textsf{\thepage}} +\fancypagestyle{fancy}{ + \fancyhf{} + \fancyhead[L]{\rightmark} + \fancyhead[R]{\thepage} +} \newcommand*{\resetfancyhead} {\fancyhead[L]{\textsf{\textsc{\textls[20]{\nouppercase\rightmark}}}}} @@ -236,12 +327,9 @@ \pretocmd{\DescribeMacro}{\needspace{25pt}}{\relax}{\PrependingFailed} -\setcounter{IndexColumns}{2} - - \setlength{\columnsep}{20pt} \setlength{\skip\footins}{25pt} -\setlength{\overfullrule}{3pt} +\setlength{\overfullrule}{0pt} @@ -273,15 +361,19 @@ \newcommand*{\citenum}[1]{\@nameuse{b@#1}} \makeatother -\def\code#1{\texttt{#1}} +\renewcommand*{\code}[1]{\texttt{#1}} + +\newcommand*{\codelineindicator}{\mbox{\small$\mathscr{l}$}} \newrobustcmd*{\command}[1]{\mbox{\textbf{#1}}} \newcommand*{\degree}{{}^\circ} +\newcommand*{\detoxindex}[1]{\index{\detokenize{#1}}} + \newcommand*{\doublequotes}[1]{\guillemetright\kern-.03333em #1\guillemetleft} -\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}}} +\newcommand*{\dumpmacro}[1]{\texttt{\detokenize\expandafter{#1}\unskip}} \newcommand*{\filesystem}[1]{\mbox{\textit{#1\/}}} @@ -295,12 +387,48 @@ \renewcommand*{\fps@table}{htbp} \makeatother +\apptocmd{\GlossaryParms} + {\RaggedRight\normalsize} + {\relax} + {\AppendingFailed} + +\let\oldhdclindex=\hdclindex +\renewcommand*{\hdclindex}[2] + {\ifstrequal{#2}{code} + {\oldhdclindex{#1}{codeidx}} + {\oldhdclindex{#1}{#2}}} + +\let\oldhdpindex=\hdpindex +\renewcommand*{\hdpindex}[2]{\textbf{\oldhdpindex{#1}{#2}}} + \newcommand*{\hollowrectangle}[2] {\setlength{\fboxrule}{.5pt}% \setlength{\fboxsep}{0pt}% \framebox{\rule{#1}{0pt}\rule{0pt}{#2}}} \newcommand*{\hollowsquare}[1]{\hollowrectangle{#1}{#1}} +\apptocmd{\IndexParms} + {\RaggedRight\small} + {\relax} + {\AppendingFailed} + +\makeatletter +\ExplSyntaxOn +\apptocmd{\index@prologue} + {\legacy_if:nTF {codeline@index} + {We\space prefix\space all\space references\space + to\space code\space lines\space with~\singlequotes{\codelineindicator}.} + {}} + {\relax} + {\AppendingFailed} + +\newcommand*{\linenumberdecoration} + {\legacy_if:nTF {codeline@index} + {\codelineindicator} + {}} +\ExplSyntaxOff +\makeatother + \newcommand*{\logmacro}[1] {\ifdef{#1} {\message{^^JDump of macro \string#1 follows.^^J} @@ -314,6 +442,24 @@ \begin{fullwidth}} {\end{fullwidth}} + +\let\originalmulticols=\multicols +\let\endoriginalmulticols=\endmulticols +\RenewDocumentEnvironment{multicols}{m o o} + {\ifnum #1=1 + \IfNoValueTF{#2}{\relax}{#2}% + \else + \IfNoValueTF{#2} + {\originalmulticols{#1}} + {\originalmulticols{#1}[#2]}% + \fi} + {\ifnum #1=1 + \relax + \else + \endoriginalmulticols + \fi} + + \newenvironment*{multilinecodeexample} {\begin{quote}\tt \def\indent{\mbox{}\hspace{25pt}}% @@ -409,7 +555,7 @@ \newenvironment*{specialcodesection}[1] {\Needspace{4\baselineskip}% \begin{tcolorbox}[colback=white, colframe=\markercolor, - bottomrule=0pt, leftrule=5pt, rightrule=0pt, toprule=0pt] + bottomrule=.5pt, leftrule=5pt, rightrule=.5pt, toprule=.5pt] \sffamily \begin{list} {\specialcodesectionheading{#1}} @@ -464,6 +610,12 @@ \newcommand*{\tikzlogo}{\textrm{Ti\textit{k\/}Z}} +\newcommand*{\toccontinuesonnextpage} + {\addtocontents{toc}{\par + \bigskip + \hfill\textit{Table of Contents continued on next page.}\par + \clearpage}} + \newcommand*{\topstrut}{\rule{0pt}{1.3em}} \newcommand*{\transpose}[1]{{#1}^{\text{T}}} @@ -477,6 +629,12 @@ \copy0\kern\ttellipsisgap \box0\kern\ttellipsisgap} +\newcommand*{\unmarkedfntext}[1] + {{\def\thefootnote{}\footnote{#1}% + \addtocounter{footnote}{-1}}} + +\newcommand*{\userman}[1]{\textbf{\hyperpage{#1}}} + \newcommand*{\visualpar}{\textcolor{\markercolor}{\P}\linebreak[1]\enspace} \newenvironment*{widecodeexample} @@ -491,6 +649,15 @@ \hyphenation{% https://hyphenateit.com/en-us + neg-slant-context + neg-slant-environment + slant-context + slant-environment + synth-neg-slant + synth-slant + synth-slant-box + text-synth-slant + text-synth-upright-italic } @@ -515,12 +682,33 @@ %</driver> %<*index-style> actual '=' +delim_0 "\\nobreak\\enspace" +delim_1 "\\nobreak\\enspace" +delim_2 "\\nobreak\\enspace" heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large " heading_suffix "}\\nopagebreak\n" headings_flag 1 level '>' +line_max 65536 quote '!' %</index-style> +%<*changes-style> +actual '=' +delim_0 "\\nobreak\\enspace" +delim_1 "\\nobreak\\enspace" +delim_2 "\\nobreak\\enspace" +heading_prefix "\\pagebreak[3]\\smallskip\n\n{\\sffamily\\bfseries\\large " +heading_suffix "}\\nopagebreak\n" +headings_flag 0 +item_x1 "\\efill\n\\subitem " +item_x2 "\\ " +keyword "\\glossaryentry" +level '>' +line_max 65536 +postamble "\n\\end{theglossary}\n" +preamble "\\begin{theglossary}\n \\makeatletter\\scan@allowedfalse" +quote '!' +%</changes-style> % \fi % % @@ -530,7 +718,7 @@ quote '!' % \DoNotIndex{\edef,\else} % \DoNotIndex{\endgroup,\endmicrotypecontext,\endnegslantenvironment,\endslantenvironment} % \DoNotIndex{\expandafter,\ExplSyntaxOff,\ExplSyntaxOn} -% \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp} +% \DoNotIndex{\fi,\font,\fontdimen,\fontspec,\fp,\fpeval} % \DoNotIndex{\hbox,\hskip} % \DoNotIndex{\ifcase,\ifcsdef,\ifdefined,\ifluatex,\ifmmode,\ifnum,\ifpdftex,\ifx,\itshape} % \DoNotIndex{\kern} @@ -540,16 +728,17 @@ quote '!' % \DoNotIndex{\newbox,\newcommand,\NewDocumentCommand,\NewDocumentEnvironment,\newenvironment,\newrobustcmd} % \DoNotIndex{\node,\nolinebreak} % \DoNotIndex{\or} -% \DoNotIndex{\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage} +% \DoNotIndex{\PackageError,\PackageInfo,\PackageWarning,\ProcessOptionsX,\providecommand,\ProvidesPackage} % \DoNotIndex{\pdfoutput,\pdfrestore,\pdfsave,\pdfsetmatrix,\pstilt} % \DoNotIndex{\relax,\RequirePackage} -% \DoNotIndex{\sbox,\skip,\space} +% \DoNotIndex{\sbox,\skip,\space,\string} % \DoNotIndex{\tikz} % \DoNotIndex{\upshape,\usebox} % \DoNotIndex{\wd} +% \DoNotIndex{\xdef} % % -% \changes{v0.1}{2024-2-12}{Initial version} +% \changes{v0.1}{2024-2-12}{Initial version.} % % % \pagenumbering{roman} @@ -636,39 +825,83 @@ end % \footnotesize % \noindent % This package is copyright \textcopyright~2024 Ch.~L.~Spiel. It may be distributed and/or -% modified under the conditions of the \LaTeX{} Project Public License \acronym{(LPPL)}, -% either version~1.3c of this license or --~at your option~-- any later version. This work -% has the \acronym{LPPL} maintenance status \doublequotes{author-maintained}.\par +% modified under the conditions of the \href{https://www.latex-project.org/lppl.txt}{\LaTeX{} +% Project Public License} \acronym{(LPPL)}, either version~1.3c of this license or --~at your +% option~-- any later version. This work has the \acronym{LPPL} maintenance status +% \doublequotes{author-maintained}.\par % \endgroup % % % \clearpage -% \thispagestyle{pagenumberonly} -% \tableofcontents +% \pagestyle{pagenumberonly} % -% \vspace{\fill} -% -% \begingroup -% \footnotesize -% \singlespacing -% \noindent -% The font samples~\singlequotes{fga} on the title page -% were generated with the help of \MP{} using \doublequotes{\acronym{URW} Palladio~L} -% in styles~\singlequotes{roman} and~\singlequotes{italic}. -% The affine transformations were \code{slanted .2} for the slanted roman and -% \code{slanted -.2} for the upright italics.\par -% \endgroup +% \unmarkedfntext{The font samples~\singlequotes{fga} on the title page were generated with the +% help of \MP{} using \doublequotes{\acronym{URW} Palladio} in styles~\singlequotes{roman} +% and~\singlequotes{italic}. The affine transformations were\enspace \code{slanted +% .2}\enspace for the slanted roman and\enspace \code{slanted -.2}\enspace for the upright +% italics.} +% \tableofcontents % % % \clearpage -% \thispagestyle{pagenumberonly} % \listoftables % \bigskip % \listoffigures % % % \clearpage +% \phantomsection +% \addcontentsline{toc}{section}{\numberline{}Quick Reference} +% \addtocontents{toc}{\medskip} +% \section*{Quick Reference} +% +% Alphabetically sorted list of all user macros and environments defined by +% package~\packagename{synthslant}. The list of all package options can be found on +% \cpageref{sec:package-options} and \pageref{secend:package-options}. The +% \hyperref[sec:index]{Index} on pages~\pageref{sec:index} to~\pageref{secend:index} may +% provide some more detailed insights. +% +% \begin{list}{}{\itemindent=-\leftmargin \itemsep=4.5pt plus 2pt minus 1pt} +% \NewDocumentCommand{\qritem}{m m O{}} +% {\item +% \hyperref[#1]{#2}#3\relax +% \def\qrref{\cpageref{#1}}\par\ignorespaces} +% \qritem{syn:negslantcontext}{\cs{negslantcontext}} +% Name of the \packagename{microtype} context used when typesetting backward slanted +% text~(\qrref) +% +% \qritem{syn:negslantenvironment}{\code{negslantenvironment}} +% Wrapper around \cs{synthslantbox} when slanting backward with +% \cs{textsynthuprightitalic}~(\qrref) +% +% \qritem{syn:slantcontext}{\cs{slantcontext}} +% Name of the \packagename{microtype} context used when typesetting forward slanted +% text~(\cpageref{syn:slantcontext}) +% +% \qritem{syn:slantenvironment}{\code{slantenvironment}} +% Wrapper around \cs{synthslantbox} when slanting forward with +% \cs{textsynthslant}~(\qrref) +% +% \qritem{syn:synthnegslant}{\cs{synthnegslant}} +% Slant value used by \cs{textsynthuprightitalic}~(\qrref) +% +% \qritem{syn:synthslantbox}{\cs{synthslantbox}}[\marg{slant}\marg{text}] +% Slant \meta{text} (forward or backward) with \meta{slant}~(\qrref) +% +% \qritem{syn:synthslant}{\cs{synthslant}} +% Slant value used by \cs{textsynthslant}~(\qrref) +% +% \qritem{syn:textsynthslant}{\cs{textsynthslant}}[\marg{text}] +% Forward slant upright glyphs~(\qrref) +% +% \qritem{syn:textsynthuprightitalic}{\cs{textsynthuprightitalic}}[\marg{text}] +% Backward slant italics or oblique glyphs~(\qrref) +% \end{list} +% +% +% \clearpage % \pagenumbering{arabic} +% \pagestyle{fancy} % \section{Introduction}\label{sec:introduction} % % The \packagename{synthslant} package provides a translator (e.\,g.~\LaTeX, \pdfLaTeX, or @@ -688,8 +921,8 @@ end % % \subsection{Appeal for Artificially Slanted Type}\label{sec:appleal-for-artificially-slanted} % -% Artificially slanted type have a bad reputation. Whenever there is an order to round up the -% usual font suspects synthetically slanted, bolded\footnote{Package~\packagename{amsbsy} +% Artificially slanted type have a lousy reputation. Whenever there is an order to round up +% the usual font suspects synthetically slanted, bolded\footnote{Package~\packagename{amsbsy} % defines a \doublequotes{Poor Man's Bold} macro~\cs{pmb} that works by % \singlequotes{overprinting}. The authors of \packagename{amsbsy} recommend to prefer % package~\packagename{bm} for bold mathematical symbols, though.}, and condensed type along @@ -699,8 +932,9 @@ end % condescension for synthetic bold and condensed variants. They spoil the glyphs' outline % because they do not (and cannot) conserve the necessary proportions. For small-caps the % problems are somewhat minor and I wonder how far one could get with an -% \propername{OpenType}~font that supports a \code{size}~axis\index{font>axis>size=\code{size}} -% as well as an \code{opsz}~axis\index{font>axis>opsz=\code{opsz}} in the necessary ranges to +% \propername{OpenType}~font that supports a +% \code{size}~axis\index{font>axis>size=\code{size}|userman} as well as an +% \code{opsz}~axis\index{font>axis>opsz=\code{opsz}|userman} in the necessary ranges to % construct convincing small-caps out of the multiple-master font. % % In my view artificial slanting keeps much of the font's character intact. In fact one @@ -741,13 +975,14 @@ end % % Some fonts in current \LaTeX{} distributions offer slanted series right out of the box. % \foreignphrase{Eureka!} In particular the oldest (and once upon a time the only) font family -% shipping with \TeX, \href{https://tug.org/FontCatalogue/cmrfonts.html}{Computer Modern -% Roman}\index{font>Computer Modern Roman} --~nowadays member of the \acronym{CM}-Super -% family~-- is available in a deluge of almost thirty shapes. It covers not just slanted roman -% or slanted smallcaps but also slanted typewriter and somewhat surprisingly upright italics. -% Furthermore, the \LaTeXe{} font selection scheme provisions \singlequotes{\code{sl}} for -% slanted shapes and \singlequotes{\code{ui}} for upright italics~\cite{fntguide}. The former -% is accompanied by the macros~\cs{slshape} and~\cs{textsl}. +% shipping with \TeX, \href{https://tug.org/FontCatalogue/cmrfonts.html}{\acronym{CM} +% Roman}\index{font>typeface>CM Roman=\acronym{CM} Roman|userman} --~nowadays member of the +% \acronym{CM}-Super family~-- is available in a deluge of almost thirty shapes. It covers not +% just slanted roman or slanted smallcaps but also slanted typewriter and somewhat surprisingly +% upright italics. Furthermore, the \LaTeXe{} font selection scheme provisions +% \singlequotes{\code{sl}} for slanted shapes and \singlequotes{\code{ui}} for upright +% italics~\cite{fntguide}. The former is accompanied by the macros~\cs{slshape} +% and~\cs{textsl}. % % \begin{wraptable}{r}{.382\textwidth} % \renewcommand*{\floatcaptionwidth}{\textwidth} @@ -759,15 +994,15 @@ end % % \begin{tabular}{@{}l@{}} % \toprule -% Font Name \\ +% Font \\ % \midrule -% Cairo\index{font>Cairo} \\ -% Commissioner\index{font>Commissioner} \\ -% Geologica\index{font>Geologica} \\ -% Gluten\index{font>Gluten} \\ -% Inter\index{font>Inter} \\ -% Recursive\index{font>Recursive} \\ -% Roboto Flex\index{font>Roboto Flex} \\ +% Cairo\index{font>typeface>Cairo|userman} \\ +% Commissioner\index{font>typeface>Commissioner|userman} \\ +% Geologica\index{font>typeface>Geologica|userman} \\ +% Gluten\index{font>typeface>Gluten|userman} \\ +% Inter\index{font>typeface>Inter|userman} \\ +% Recursive\index{font>typeface>Recursive|userman} \\ +% Roboto Flex\index{font>typeface>Roboto Flex|userman} \\ % \bottomrule % \end{tabular} % \end{wraptable} @@ -781,8 +1016,9 @@ end % \code{slnt}-axis} or fonts with an \href{https://v-fonts.com/tags/C5}{unusual variation} at % \href{https://v-fonts.com/}{Variable Fonts}.} that offer a slant-axis\footnote{The % registered axis is called \code{slnt} and it is not to be confused with the -% \code{ital}~axis.}\index{font>axis>slant=\code{slant}}\index{font>axis>ital=\code{ital}} that -% can be controlled with \packagename{fontspec}'s\index{package>\packagename{fontspec}} +% \code{ital}~axis.}\index{font>axis>slant=\code{slant}|userman}\index{font>axis>ital=\code{ital}|userman} +% that can be controlled with +% \packagename{fontspec}'s\index{package>fontspec=\packagename{fontspec}|userman} % \code{Slant}\footnote{Since \packagename{fontspec} version~2.9a as of 2024/2/13.}~key and % \cref{tab:slanted-series-fonts} for a rather incomplete list of fonts that are shipped with % slanted shapes. For these fonts \packagename{synthslant} is largely superfluous unless @@ -801,35 +1037,35 @@ end % % \begin{tabular}[t]{@{}p{12em}@{}} % \toprule -% Font Name \\ +% Font \\ % \midrule -% Arvo\index{font>Arvo} \\ -% Computer Modern Roman\index{font>Computer Modern Roman} \\ -% Domitian\index{font>Domitian} \\ -% Droid Serif\index{font>Droid Serif} \\ -% Erewhon\index{font>Erewhon} \\ -% Extended Charter\index{font>Extended Charter} \\ -% \acronym{GFS} Artemisia\index{font>GFS Artemisia=\acronym{GFS} Artemisia} \\ -% \acronym{GFS} Bodoni\index{font>GFS Bodoni=\acronym{GFS} Bodoni} \\ -% \acronym{GFS} Didot\index{font>GFSDidot=\acronym{GFS} Didot} \\ +% Arvo\index{font>typeface>Arvo|userman} \\ +% \acronym{CM} Roman\index{font>typeface>CM Roman=\acronym{CM} Roman|userman} \\ +% Domitian\index{font>typeface>Domitian|userman} \\ +% Droid Serif\index{font>typeface>Droid Serif|userman} \\ +% Erewhon\index{font>typeface>Erewhon|userman} \\ +% Extended Charter\index{font>typeface>Extended Charter|userman} \\ +% \acronym{GFS} Artemisia\index{font>typeface>GFS Artemisia=\acronym{GFS} Artemisia|userman} \\ +% \acronym{GFS} Bodoni\index{font>typeface>GFS Bodoni=\acronym{GFS} Bodoni|userman} \\ +% \acronym{GFS} Didot\index{font>typeface>GFS Didot=\acronym{GFS} Didot|userman} \\ % \\ % \bottomrule % \end{tabular} % \qquad % \begin{tabular}[t]{@{}p{12em}@{}} % \toprule -% Font Name \\ +% Font \\ % \midrule -% Cabin\index{font>Cabin} \\ -% Clear Sans\index{font>Clear Sans} \\ -% Cuprum\index{font>Cuprum} \\ -% Fira Sans\index{font>Fira Sans} \\ -% Gandhi Sans\index{font>Gandhi Sans} \\ -% \acronym{Inria} Sans\index{font>Inria Sans=\acronym{Inria} Sans} \\ -% Lato\index{font>Lato}\itshapemark \\ -% Montserrat\index{font>Montserrat} \\ -% \acronym{PT} Sans\index{font>PT Sans=\acronym{PT} Sans} \\ -% Source Sans Pro\index{font>Source Sans Pro} \\ +% Cabin\index{font>typeface>Cabin|userman} \\ +% Clear Sans\index{font>typeface>Clear Sans|userman} \\ +% Cuprum\index{font>typeface>Cuprum|userman} \\ +% Fira Sans\index{font>typeface>Fira Sans|userman} \\ +% Gandhi Sans\index{font>typeface>Gandhi Sans|userman} \\ +% \acronym{Inria} Sans\index{font>typeface>Inria Sans=\acronym{Inria} Sans|userman} \\ +% Lato\itshapemark\index{font>typeface>Lato|userman} \\ +% Montserrat\index{font>typeface>Montserrat|userman} \\ +% \acronym{PT} Sans\index{font>typeface>PT Sans=\acronym{PT} Sans|userman} \\ +% Source Sans Pro\index{font>typeface>Source Sans Pro|userman} \\ % \bottomrule % \end{tabular} % @@ -852,15 +1088,16 @@ end % \pdfTeX~version~1.40.0~\cite{schroeder:2007}.} With the help of the latter affine % transformations of arbitrary content can be coded directly by setting the transformation % matrix. A slight variant of his code is used in this package for the \acronym{PDF}- and -% \packagename{l3draw}\index{package>\packagename{l3draw}}-slant~engines. The implementations -% for \pstrickslogo, \tikzlogo{}, and \packagename{fontspec}\packagename{fontspec} are trivial -% as they build upon shear~functions supplied by the respective packages. +% \packagename{l3draw}\index{package>l3draw=\packagename{l3draw}|userman}-slant~engines. The +% implementations for \pstrickslogo, \tikzlogo{}, and +% \packagename{fontspec}\packagename{fontspec} are trivial as they build upon shear~functions +% supplied by the respective packages. % % % \subsection{Shear Transformation, Slant, and Angle}\label{sec:shear-transformation} % -% \index{slant>operation} -% \index{shear>transformation} +% \index{slant>operation|userman} +% \index{shear>transformation|userman} % Mathematically the slant operation is a shear transformation, which can be expressed with the % equation % \begin{equation}\label{equ:shear-transformation} @@ -1018,7 +1255,7 @@ end % For \(\alpha = 0\) the shear matrix becomes the identity matrix. Throughout of % \packagename{synthslant} we work with the \meta{slant} which is \(\sin \alpha\) in % \cref{equ:shear-transformation} and avoid converting back and forth to the -% \index{shear>angle}shear angle~\(\alpha\).\footnote{At least one slant engine currently +% \index{shear>angle|userman}shear angle~\(\alpha\).\footnote{At least one slant engine currently % requires such a conversion, namely~\pstrickslogo. The math is hidden from the user, though.} % Some values for orientation: \mbox{\(\sin 5.74\degree \approx .1\)}, \mbox{\(\sin 11.5\degree % \approx .2\)}, and \mbox{\(\sin 17.5\degree \approx .3\)}.\footnote{For small @@ -1038,8 +1275,8 @@ end % \begin{enumerate} % \item\label{it:no-italics} % Generate a slanted serif in the unfortunate situation when a serif font comes without -% italics such as \singlequotes{\acronym{URW}~Antiqua}\index{font>URW Antiqua=\acronym{URW} -% Antiqua}. +% italics such as +% \singlequotes{\acronym{URW}~Antiqua}\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman}. % % Here, the user is relatively free to choose a \meta{slant}, for there are no italics whose % angle must be matched. \packagename{Synthslant}'s default of~.2 should be a good starting @@ -1053,8 +1290,8 @@ end % % \item\label{it:correct-italics-angle} % An italics shape that has an excessive slant angle, as -% e.\,g.~\singlequotes{Libre~Caslon}\index{font>Libre Caslon} may be corrected, i.\,e., -% partially un-slanted. +% e.\,g.~\singlequotes{Libre~Caslon}\index{font>typeface>Libre Caslon|userman} may be corrected, +% i.\,e., partially un-slanted. % % In this case, and generally if a font as a whole needs to be corrected, an alternative % approach like the one sketched in \cref{sec:alternative} on \cpageref{sec:alternative} may @@ -1062,16 +1299,16 @@ end % % \item\label{it:generate-sole-obliques} % Generate an oblique sans-serif if a sans-serif font comes without an oblique shape as, -% e.\,g., \singlequotes{\acronym{URW}~Grotesk}.\index{font>URW Grotesk=\acronym{URW} Grotesk} +% e.\,g., \singlequotes{\acronym{URW}~Grotesk}.\index{font>typeface>URW Grotesk=\acronym{URW} Grotesk|userman} % % \item\label{it:generate-extra-obliques} % Supply a slanted sans-serif shape for sans-serif fonts with designed, this is \emph{true} -% obliques as e.\,g.~\singlequotes{Open Sans}.\index{font>Open Sans} +% obliques as e.\,g.~\singlequotes{Open Sans}.\index{font>typeface>Open Sans|userman} % % \item\label{it:slant-typewriter} % Fixed-width --~also called \singlequotes{typewriter} or \singlequotes{teletype}~-- fonts -% without obliques (Yes, I am looking at you, Inconsolata!)\index{font>Inconsolata} finally -% get an oblique shape. +% without obliques (Yes, I am looking at you, Inconsolata!)\index{font>typeface>Inconsolata|userman} +% finally get an oblique shape. % % \item\label{it:slanted-small-caps} % Small caps without accompanying italics can be slanted, too. @@ -1109,7 +1346,9 @@ end % % \begingroup % \newcommand*{\indexpackageoption}[1] -% {\index{package option>#1=\code{#1}}\index{#1=\code{#1}~(option)}\ignorespaces} +% {\detoxindex{package option>#1=\code{#1}|userman}% +% \detoxindex{#1=\code{#1}~(option)|userman}% +% \ignorespaces} % \begin{description} % [before={\let\oldmakelabel=\makelabel % \renewcommand{\makelabel}[1] @@ -1130,13 +1369,14 @@ end % % \item[|fontspec|]\label{item:fontspec} % \indexpackageoption{fontspec} -% Use \packagename{fontspec}\index{package>\packagename{fontspec}} as slanting -% back-end.\footnote{Requires \filesystem{fontspec.sty.}} +% Use \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} as +% slanting back-end.\footnote{Requires \filesystem{fontspec.sty.}} % % \item[|l3draw|]\label{item:l3draw} % \indexpackageoption{l3draw} -% Select the \singlequotes{draw} layer\index{package>\packagename{l3draw}} of \LaTeXIII{} as -% base for the slanting engine.\footnote{This option requires \filesystem{l3draw.sty.}} +% Select the \singlequotes{draw} layer\index{package>l3draw=\packagename{l3draw}|userman} of +% \LaTeXIII{} as base for the slanting engine.\footnote{This option requires +% \filesystem{l3draw.sty.}} % % \begin{caution} % This engine is experimental and the \singlequotes{draw} layer of \LaTeXIII{} itself is @@ -1148,7 +1388,7 @@ end % \indexpackageoption{negslant} % Set the default value for \hyperref[syn:synthnegslant]{\cs{synthnegslant}} \emph{only.} % The argument \meta{slant-expr} is a floating-point expression. Note that for this option -% \meta{slant-expr} must evaluate to a non-positive value. +% \meta{slant-expr} must evaluate to a nonpositive value. % % \item[|PDF|, |pdf|]\label{item:pdf} % \indexpackageoption{pdf} @@ -1159,14 +1399,14 @@ end % \indexpackageoption{posslant} % Set the default value for \hyperref[syn:synthslant]{\cs{synthslant}} \emph{only.} The % argument \meta{slant-expr} is a floating-point expression. Note that for this option -% \meta{slant-expr} must evaluate to a non-negative value. +% \meta{slant-expr} must evaluate to a nonnegative value. % % \item[|PS|, |ps|]\label{item:postscript} -% \index{ps} -% Use \pstrickslogo\index{package>\packagename{pstricks}} to delegate slanting to the -% PostScript\index{PostScript} interpreter. Obviously requires \pstrickslogo\footnote{The -% package actually required is \filesystem{pst-3d.sty.}} and \acronym{DVI}-to-PostScript -% translation. +% \index{ps|userman} +% Use \pstrickslogo\index{package>pstricks=\packagename{pstricks}|userman} to delegate +% slanting to the PostScript\index{PostScript|userman} interpreter. Obviously requires +% \pstrickslogo\footnote{The package actually required is \filesystem{pst-3d.sty.}} and +% \acronym{DVI}-to-PostScript translation. % % \begin{caution} % This engine is still experimental and produces low-quality output! See @@ -1176,7 +1416,7 @@ end % \item[|slant=|\meta{slant-expr}]\label{item:slant} % \indexpackageoption{slant} % Set the default values for both \hyperref[syn:synthslant]{\cs{synthslant}} and -% \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, behave as if the two package +% \hyperref[syn:synthnegslant]{\cs{synthnegslant}}, this is, act as if the two package % options \(\code{posslant} = \meta{slant-expr}\) and \(\code{negslant} = % -(\meta{slant-expr})\) have been given. The argument \meta{slant-expr} is a floating-point % expression. @@ -1185,8 +1425,8 @@ end % % \item[|TikZ|, |tikz|]\label{item:tikz} % \indexpackageoption{tikz} -% Use \packagename{TikZ}\index{package>\packagename{TikZ}} for slanting.\footnote{Requires -% \filesystem{tikz.sty.}} +% Use \packagename{TikZ}\index{package>tikz=\packagename{tikz}|userman} for +% slanting.\footnote{Requires \filesystem{tikz.sty.}} % % \begin{caution} % This engine is still experimental and produces low-quality output! See @@ -1199,7 +1439,7 @@ end % floating-point \emph{expressions} as their arguments not just plain floating-point literals. % See Ref.~\citenum{latex3-interfaces}, Ch.~29, \doublequotes{The \textsf{l3fp}~module~-- % Floating points} for a description of the floating-point expression syntax and the available -% functions. +% functions.\label{secend:package-options} % % % \clearpage @@ -1218,7 +1458,7 @@ end % % \DescribeMacro{\synthslant} % Control the slant applied by \hyperref[syn:textsynthslant]{\cs{textsynthslant}}. -% This value is non-negative. +% This value is nonnegative. % % \begin{synopsis}\label{syn:synthslant} % \cs{synthslant} @@ -1248,43 +1488,43 @@ end % \begin{tabfigures} % \begin{tabular}[t]{@{}p{9.5em}l@{}} % \toprule -% Font Name & Slant \\ +% Font & Slant \\ % \midrule -% \acronym{ADF} Accanthis\index{font>ADF Accanthis=\acronym{ADF} Accanthis} & .26 \\ -% \acronym{ADF} Baskervald\index{font>ADF Baskervald=\acronym{ADF} Baskervald} & .32 \\ -% \acronym{ADF} Berenis\index{font>ADF Berenis=\acronym{ADF} Berenis} & .2 \\ -% \acronym{ADF} Venturis\index{font>ADF Venturis=\acronym{ADF} Venturis} & .2 \\ -% Alegreya\index{font>Alegreya} & .2 \\ -% Arvo\index{font>Arvo} & .2 \\ -% BaskervilleF\index{font>BaskervilleF} & .2 \\ -% Bera Serif\index{font>Bera Serif} & .2 \\ -% Bitter\index{font>Bitter} & .16 \\ -% Caladea\index{font>Caladea} & .14 \\ -% Clara\index{font>Clara} & .24 \\ -% Cochineal\index{font>Cochineal} & .2 \\ -% Coelacanth\index{font>Coelacanth} & .2 \\ -% Crimson Pro\index{font>Crimson Pro} & .2 \\ -% Crimson Text\index{font>Crimson Text} & .2 \\ +% \acronym{ADF} Accanthis\index{font>typeface>ADF Accanthis=\acronym{ADF} Accanthis|userman} & .26 \\ +% \acronym{ADF} Baskervald\index{font>typeface>ADF Baskervald=\acronym{ADF} Baskervald|userman} & .32 \\ +% \acronym{ADF} Berenis\index{font>typeface>ADF Berenis=\acronym{ADF} Berenis|userman} & .2 \\ +% \acronym{ADF} Venturis\index{font>typeface>ADF Venturis=\acronym{ADF} Venturis|userman} & .2 \\ +% Alegreya\index{font>typeface>Alegreya|userman} & .2 \\ +% Arvo\index{font>typeface>Arvo|userman} & .2 \\ +% BaskervilleF\index{font>typeface>BaskervilleF|userman} & .2 \\ +% Bera Serif\index{font>typeface>Bera Serif|userman} & .2 \\ +% Bitter\index{font>typeface>Bitter|userman} & .16 \\ +% Caladea\index{font>typeface>Caladea|userman} & .14 \\ +% Clara\index{font>typeface>Clara|userman} & .24 \\ +% Cochineal\index{font>typeface>Cochineal|userman} & .2 \\ +% Coelacanth\index{font>typeface>Coelacanth|userman} & .2 \\ +% Crimson Pro\index{font>typeface>Crimson Pro|userman} & .2 \\ +% Crimson Text\index{font>typeface>Crimson Text|userman} & .2 \\ % \bottomrule % \end{tabular}% % \qquad % \begin{tabular}[t]{@{}p{9.5em}l@{}} % \toprule -% Font Name & Slant \\ +% Font & Slant \\ % \midrule -% Day Roman\index{font>Day Roman} & .2 \\ -% \acronym{EB} Garamond\index{font>EB Garamond=\acronym{EB} Garamond} & .3 \\ -% etbb\index{font>etbb} & .2 \\ -% fbb\index{font>fbb} & .2 \\ -% Garamond Expert\index{font>Garamond Expert} & .2 \\ -% Gandhi Serif\index{font>Gandhi Serif} & .2 \\ -% Gentium\index{font>Gentium} & .2 \\ -% Ibarra Real Nova\index{font>Ibarra Real Nova} & .2 \\ -% \acronym{IBM} Plex Serif\index{font>IBM Plex Serif=\acronym{IBM} Plex Serif} & .24 \\ -% \acronym{Inria} Serif\index{font>Inria Serif=\acronym{Inria} Serif} & .2 \\ -% Libertinus Serif\index{font>Libertinus Serif} & .2 \\ -% Libre Baskerville\index{font>Libre Baskerville} & .3 \\ -% Libre Caslon\index{font>Libre Caslon} & .38 \\ +% Day Roman\index{font>typeface>Day Roman|userman} & .2 \\ +% \acronym{EB} Garamond\index{font>typeface>EB Garamond=\acronym{EB} Garamond|userman} & .3 \\ +% etbb\index{font>typeface>etbb|userman} & .2 \\ +% fbb\index{font>typeface>fbb|userman} & .2 \\ +% Garamond Expert\index{font>typeface>Garamond Expert|userman} & .2 \\ +% Gandhi Serif\index{font>typeface>Gandhi Serif|userman} & .2 \\ +% Gentium\index{font>typeface>Gentium|userman} & .2 \\ +% Ibarra Real Nova\index{font>typeface>Ibarra Real Nova|userman} & .2 \\ +% \acronym{IBM} Plex Serif\index{font>typeface>IBM Plex Serif=\acronym{IBM} Plex Serif|userman} & .24 \\ +% \acronym{Inria} Serif\index{font>typeface>Inria Serif=\acronym{Inria} Serif|userman} & .2 \\ +% Libertinus Serif\index{font>typeface>Libertinus Serif|userman} & .2 \\ +% Libre Baskerville\index{font>typeface>Libre Baskerville|userman} & .3 \\ +% Libre Caslon\index{font>typeface>Libre Caslon|userman} & .38 \\ % & \\ % & \\ % \bottomrule @@ -1292,22 +1532,22 @@ end % \qquad % \begin{tabular}[t]{@{}p{9.5em}l@{}} % \toprule -% Font Name & Slant \\ +% Font & Slant \\ % \midrule -% Merriweather\index{font>Merriweather} & .14 \\ -% MLModern\index{font>MLModern} & .23 \\ -% Noto Serif\index{font>Noto Serif} & .22 \\ -% \acronym{PT} Serif\index{font>PT Serif=\acronym{PT} Serif} & .2 \\ -% Roboto Slab\index{font>Roboto Slab} & .2 \\ -% Quattrocento\index{font>Quattrocento} & .2 \\ -% Source Serif Pro\index{font>Source Serif Pro} & .18 \\ -% Spectral\index{font>Spectral} & .18 \\ -% \acronym{STIX}\index{font>STIX=\acronym{STIX}} & .2 \\ -% \TeX{} Gyre Pagella\index{font>TeX Gyre Pagella=\TeX{} Gyre Pagella} & .16 \\ -% \acronym{TX} Fonts Serif\index{font>TX Fonts Serif=\acronym{TX} Fonts Serif} & .2 \\ -% \acronym{URW} Antiqua\index{font>URW Antiqua=\acronym{URW} Antiqua} & .2 \\ -% \acronym{URW} Nimbus Roman\index{font>URW Nimbus Roman=\acronym{URW} Nimbus Roman} & .2 \\ -% Utopia\index{font>Utopia} & .2 \\ +% Merriweather\index{font>typeface>Merriweather|userman} & .14 \\ +% \acronym{ML} Modern\index{font>typeface>ML Modern=\acronym{ML} Modern|userman} & .23 \\ +% Noto Serif\index{font>typeface>Noto Serif|userman} & .22 \\ +% \acronym{PT} Serif\index{font>typeface>PT Serif=\acronym{PT} Serif|userman} & .2 \\ +% Roboto Slab\index{font>typeface>Roboto Slab|userman} & .2 \\ +% Quattrocento\index{font>typeface>Quattrocento|userman} & .2 \\ +% Source Serif Pro\index{font>typeface>Source Serif Pro|userman} & .18 \\ +% Spectral\index{font>typeface>Spectral|userman} & .18 \\ +% \acronym{STIX}\index{font>typeface>STIX=\acronym{STIX}|userman} & .2 \\ +% \TeX{} Gyre Pagella\index{font>typeface>TeX Gyre Pagella=\TeX{} Gyre Pagella|userman} & .16 \\ +% \acronym{TX} Fonts Serif\index{font>typeface>TX Fonts Serif=\acronym{TX} Fonts Serif|userman} & .2 \\ +% \acronym{URW} Antiqua\index{font>typeface>URW Antiqua=\acronym{URW} Antiqua|userman} & .2 \\ +% \acronym{URW} Nimbus Roman\index{font>typeface>URW Nimbus Roman=\acronym{URW} Nimbus Roman|userman} & .2 \\ +% Utopia\index{font>typeface>Utopia|userman} & .2 \\ % & \\ % \bottomrule % \end{tabular} @@ -1319,7 +1559,7 @@ end % \DescribeMacro{\synthnegslant} % Control the slant applied by % \hyperref[syn:textsynthuprightitalic]{\cs{textsynthuprightitalic}}. This value is -% non-positive. +% nonpositive. % % \begin{synopsis}\label{syn:synthnegslant} % \cs{synthnegslant} @@ -1332,9 +1572,9 @@ end % more flexible and powerful interface, see~\cref{sec:advanced-interface}. % % \begin{note} -% The following restrictions and workarounds to get line-breaking and automatic hyphenation -% working again do \emph{not} apply to the -% \packagename{fontspec}\index{package>\packagename{fontspec}} back-end. +% The following restrictions and workarounds to get line-breaking and \TeX's automatic +% hyphenation working again do \emph{not} apply to the +% \packagename{fontspec}\index{package>fontspec=\packagename{fontspec}|userman} back-end. % \end{note} % % \noindent @@ -1344,7 +1584,7 @@ end % provisions to re-enable at least some breakability. % % \begin{enumerate} -% \item Spaces introduce breakpoint,\index{breakpoint at space} e.\,g. +% \item Spaces introduce breakpoint,\index{breakpoint at space|userman} e.\,g. % \begin{codeexample} % \cs{textsynthslant}\{topological dual space\} % \end{codeexample} @@ -1352,8 +1592,8 @@ end % second word (producing another horizontal box). \TeX{} sees two (unbreakable) boxes and a % discardable space when it comes to linebreaking. % -% \item Discretionary hyphens\index{discretionary hyphen} in the form of \singlequotes{\cs{-}} -% get propagated. So, we could improve on our above example by saying +% \item Discretionary hyphens\index{discretionary hyphen|userman} in the form of +% \singlequotes{\cs{-}} get propagated. So, we could improve on our above example by saying % \begin{codeexample} % \cs{textsynthslant}\{topo\cs{-}log\cs{-}i\cs{-}cal dual space\} % \end{codeexample} @@ -1374,7 +1614,7 @@ end % % In horizontal mode switch to an upright shape, slant \meta{text} with the slant value stored % in \hyperref[syn:synthslant]{\cs{synthslant}} and apply \doublequotes{slant -% correction}\index{slant>correction} --~the equivalent of italics correction~-- at the +% correction}\index{slant>correction|userman} --~the equivalent of italics correction~-- at the % right-hand side of~\meta{text}. % % In math mode just slant \meta{text} with the slant value stored in @@ -1391,7 +1631,7 @@ end % % \noindent % where we show the font modification in conjunction with the -% \packagename{babel}~macro\index{package>\packagename{babel}} +% \packagename{babel}~macro\index{package>babel=\packagename{babel}|userman} % \cs{foreignlanguage}~\cite{package:babel}.~\visualpar % % In math-mode you cannot have enough fonts, symbols, and most of the gizmos over there! I @@ -1485,7 +1725,7 @@ end % \end{synopsis} % % Switch to an upright font shape and --~if -% package~\packagename{microtype}~\cite{package:microtype}\index{package>\packagename{microtype}} +% package~\packagename{microtype}~\cite{package:microtype}\index{package>microtype=\packagename{microtype}|userman} % has been loaded~-- enter the Microtype-context defined by % macro~\hyperref[syn:slantcontext]{\cs{slantcontext}}. At the end add some slant correction, % which is the equivalent of italics correction. @@ -1511,7 +1751,7 @@ end % Microtype-context defined by macro~\hyperref[syn:negslantcontext]{\cs{negslantcontext}}. % % \DescribeMacro{\slantcontext} -% Microtype context used when typesetting slanted text. +% Name of the \packagename{microtype} context used when typesetting slanted text. % % \begin{synopsis}\label{syn:slantcontext} % \cs{slantcontext} @@ -1530,7 +1770,7 @@ end % \end{note} % % \DescribeMacro{\negslantcontext} -% Microtype context used when typesetting un-slanted text. +% Name of the \packagename{microtype} context used when typesetting backward slanted text. % % \begin{synopsis}\label{syn:negslantcontext} % \cs{negslantcontext} @@ -1667,13 +1907,13 @@ end % and --~after recompiling with the appropriate \LaTeX-engine~-- used to examine the details of % the slant operations. % -% Page~2, Sec.~3.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native al -% well as synthesized ones. Here, the slanted glyphs as well as the upright italics should -% blend well with the native italics/obliques and the normal font, respectively. +% Page~2, Sec.~3.1, \singlequotes{Copy}, shows wild mixes of different font shapes, native and +% synthesized ones. Here, the slanted glyphs as well as the upright italics should blend well +% with the native italics/obliques and with the normal font, respectively. % -% Page~3, Sec.~3.2 and following sub-sections, examines the coupling of -% \packagename{synthslant} with the \TeX-system and some of its extensions. If a slant engine -% malfunctions, it will become evident on this page. +% Page~3, Sec.~3.2 and following sub-sections, examine the coupling of \packagename{synthslant} +% with the \TeX-system and some of its extensions. If a slant engine malfunctions, it will +% become evident on this page. % % % \clearpage @@ -1687,7 +1927,7 @@ end % \packagename{Syntslant}~manipulations may not survive % (pre-)\discretionary{}{}{}processing by \MP. % -% \item[\packagename{l3draw} engine.]\index{package>\packagename{l3draw}}\mbox{} +% \item[\packagename{l3draw} engine.]\index{package>l3draw=\packagename{l3draw}|userman}\mbox{} % \begin{itemize} % \item Depending of the shear direction the \packagename{l3draw} engine may generate some % extra positive or negative space at the ends of the text. @@ -1697,10 +1937,10 @@ end % \item Markedly slower than the \acronym{PDF}-implementation! % \end{itemize} % -% \item[\pstrickslogo{} engine.]\index{package>\packagename{pstricks}} +% \item[\pstrickslogo{} engine.]\index{package>pstricks=\packagename{pstricks}|userman} % The \pstrickslogo{} engine produces some extra space at the ends of the text. % -% \item[\tikzlogo{} engine.]\index{package>\packagename{tikz}} +% \item[\tikzlogo{} engine.]\index{package>tikz=\packagename{tikz}|userman} % The \tikzlogo{} engine produces some extra space at the ends of the text. % \end{description} % @@ -1753,7 +1993,7 @@ end % % I want to elaborate the example given in \cref{sec:usage-ideas}, % \cref{it:correct-italics-angle} and generate less-angled italics for -% Libre~Caslon.\index{font>Libre Caslon} Here is a suitable map line taken from +% Libre~Caslon.\index{font>typeface>Libre Caslon|userman} Here is a suitable map line taken from % \filesystem{pdftex.map} on my system: % % \begin{multilinecodeexample} @@ -1824,7 +2064,8 @@ end % \end{example} % % -% \subsection{Combining \LaTeX{} and \command{dvipdfmx}}\label{sec:alternative-latex} +% \subsection{Combining \LaTeX{} and +% \texorpdfstring{\command{dvipdfmx}}{dvipdfmx}}\label{sec:alternative-latex} % % The alternative when using \LaTeX{} is similar the one elaborated in the previous section. % The font mapline gets modified by \cs{special} primitive @@ -1872,14 +2113,20 @@ end % % \MaybeStop{ % \clearpage -% \phantomsection -% \resetfancyhead -% \addcontentsline{toc}{section}{Change History} -% \PrintChanges +% \begingroup +% \setcounter{GlossaryColumns}{1} +% \phantomsection +% \label{sec:changes} +% \resetfancyhead +% \addtocontents{toc}{\bigskip} +% \addcontentsline{toc}{section}{\numberline{}Change History} +% \PrintChanges +% \endgroup % % \clearpage % \phantomsection -% \addcontentsline{toc}{section}{References} +% \addtocontents{toc}{\medskip} +% \addcontentsline{toc}{section}{\numberline{}References} % \begin{RaggedRight} % \begin{thebibliography}{88} % \bibitem{package:relsize} @@ -1986,20 +2233,31 @@ end % % % \clearpage -% \begin{RaggedRight} +% \begingroup % \setcounter{IndexColumns}{2} % \setlength{\columnsep}{30pt} -% \label{sec:index} % \phantomsection -% \addcontentsline{toc}{section}{Index} +% \label{sec:index} +% \addtocontents{toc}{\medskip} +% \addcontentsline{toc}{section}{\numberline{}Index} +% \raggedcolumns +% \def\codeidx##1{\linenumberdecoration\textbf{##1}} +% \def\main##1{\linenumberdecoration\underbar{\textbf{##1}}} +% \def\usage##1{\textit{\textbf{##1}}} % \PrintIndex -% \end{RaggedRight} +% \label{secend:index} +% \endgroup % } % % % \clearpage +% \toccontinuesonnextpage % \section{Package Code}\label{sec:package-code} -% \addtocontents{toc}{\begingroup\small} +% \addtocontents{toc}{\protect\begin{list}{}{\leftmargin=\subsectiontocindent\parsep=0pt}} +% \addtocontents{toc}{\protect\item} +% \addtocontents{toc}{\RaggedRight} +% \addtocontents{toc}{\small} +% \addtocontents{toc}{\tocsquashedsubsections} % \addtocontents{toc}{\protect\begin{multicols}{2}} % \addtocontents{toc}{\protect\raggedcolumns} % @@ -2008,12 +2266,15 @@ end % and explain its implementation details. % % +% \changes{v0.1a}{2024-6-2}{Add missing dependency on \packagename{etoolbox}. +% Fix suggested by \code{mbertucci47}.} % \begin{macrocode} %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{synthslant} - [2024/05/07 v0.1 Synthetically Slant glyphs] + [2024/07/08 v0.1a Synthetically Slant glyphs] +\RequirePackage{etoolbox} \RequirePackage{iftex} \RequirePackage{xkeyval} @@ -2094,12 +2355,16 @@ end % \begin{macrocode} \ExplSyntaxOn \fp_compare:nNnTF {\synthslant} < {.0} - {\PackageError{synthslant}{\string\synthslant\space <\space 0} - {Pass\space a\space value\space that\space is\space non-negative.}} + {\PackageError{synthslant} + {\string\synthslant\space <\space 0} + {Pass\space a\space value\space that\space + is\space nonnegative.}} {} \fp_compare:nNnTF {\synthnegslant} > {.0} - {\PackageError{synthslant}{\string\synthnegslant\space >\space 0} - {Pass\space a\space value\space that\space is\space non-positive.}} + {\PackageError{synthslant} + {\string\synthnegslant\space >\space 0} + {Pass\space a\space value\space that\space + is\space nonpositive.}} {} \ExplSyntaxOff @@ -2176,7 +2441,7 @@ end % \end{macro} % % -% \subsubsection{\acronym{PDF} Slant Engine} +% \subsubsection{\texorpdfstring{\acronym{PDF}}{PDF} Slant Engine} % % The \acronym{PDF}-engine works well and it is the best tested alternative. % @@ -2251,13 +2516,15 @@ end % \begin{macrocode} \fp_compare:nNnTF {#1} >= {.0} { - \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim - #1\l_tmpb_dim} + \box_set_wd:Nn \l_tmpa_box + {\l_tmpa_dim - #1\l_tmpb_dim} } { \draw_suspend_begin: \kern#1\l_tmpb_dim \draw_suspend_end: - \box_set_wd:Nn \l_tmpa_box {\l_tmpa_dim + #1\l_tmpb_dim} + \box_set_wd:Nn \l_tmpa_box + {\l_tmpa_dim + #1\l_tmpb_dim} } % \end{macrocode} % @@ -2348,7 +2615,8 @@ end % \begin{macrocode} \newcommand*{\synthslantbox@fontspect@shear@box}[2]{ \begingroup - \expandafter\fontspec[FakeSlant = #1]{\l_fontspec_family_tl} + \expandafter + \fontspec[FakeSlant=#1]{\l_fontspec_family_tl} #2 \endgroup } @@ -2473,8 +2741,12 @@ end % \begin{macrocode} \ifnum\synthslant@engine=4% fontspec \newrobustcmd*{\synthslantbox}[2]{% - \edef\synthslant@slant@value{#1}% definition for compatibility of both branches - \synthslantbox@fontspect@shear@box{\synthslant@slant@value}{#2}% +% \end{macrocode} +% The following (expanding) definition is only here for the compatibility of both branches. +% \begin{macrocode} + \edef\synthslant@slant@value{#1} + \synthslantbox@fontspect@shear@box{\synthslant@slant@value} + {#2}% } % \end{macrocode} % @@ -2530,7 +2802,8 @@ end \NewDocumentEnvironment{slantenvironment}{} {\upshape \ifcsdef{microtypecontext} - {\expandafter\microtypecontext\expandafter{\slantcontext}} + {\expandafter\microtypecontext + \expandafter{\slantcontext}} {}} {\ifcsdef{endmicrotypecontext} {\endmicrotypecontext} @@ -2557,8 +2830,8 @@ end % \end{macro} % % \begin{macro}{\synthslantbox@right@negslant@correction} -% We could play the same trick here as in \cs{synthslantbox@right@slant@correction} and use -% \cs{synthnegslant} instead of \cs{synthslant}. But my experiments show no need for a +% We could play the same trick here as in \cs{synthslantbox@\-right@\-slant@\-correction} and +% use \cs{synthnegslant} instead of \cs{synthslant}. But my experiments show no need for a % correction. Anyhow, this macro may be convenient to override someday. % % \begin{macrocode} @@ -2588,7 +2861,8 @@ end \NewDocumentEnvironment{negslantenvironment}{} {\itshape \ifcsdef{microtypecontext} - {\expandafter\microtypecontext\expandafter{\negslantcontext}} + {\expandafter\microtypecontext + \expandafter{\negslantcontext}} {}} {\ifcsdef{endmicrotypecontext} {\endmicrotypecontext} @@ -2622,7 +2896,7 @@ end % % % \addtocontents{toc}{\protect\end{multicols}} -% \addtocontents{toc}{\endgroup} +% \addtocontents{toc}{\protect\end{list}} % % % \Finale @@ -4889,7 +5163,7 @@ KJ8AAAAASUVORK5CYII= \setlength{\headheight}{0pt} \setlength{\headsep}{0pt} -\setlength{\overfullrule}{3pt} +\setlength{\overfullrule}{0pt} \pagestyle{plain} @@ -5254,6 +5528,20 @@ right: \code{\cs{textsynthslant}\{Show line-break\cs{-}ing in a sen\cs{-}tence.\ % % % +% \iffalse +%<*minimal-test> +\documentclass{minimal} + +\usepackage{synthslant} + +\begin{document} +\textsynthslant{abc} +\end{document} +%</minimal-test> +% \fi +% +% +% \endinput % % |