summaryrefslogtreecommitdiff
path: root/Master/texmf-dist
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2024-04-07 19:57:11 +0000
committerKarl Berry <karl@freefriends.org>2024-04-07 19:57:11 +0000
commitd7b51429b4b44bdfc0dae16e10f936771f0d952d (patch)
tree1e890f9ebaa57f48b4203f87d409ed7cf79cc682 /Master/texmf-dist
parent337e06be53a710a168d655c8252b473996838ff5 (diff)
fontscale (7apr24)
git-svn-id: svn://tug.org/texlive/trunk@70882 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r--Master/texmf-dist/doc/latex/fontscale/fontscale-manual.pdfbin129635 -> 129725 bytes
-rw-r--r--Master/texmf-dist/doc/latex/fontscale/fontscale-manual.tex20
-rw-r--r--Master/texmf-dist/tex/latex/fontscale/fontscale.sty183
3 files changed, 105 insertions, 98 deletions
diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.pdf b/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.pdf
index 67af2fa36c5..d45ffefea94 100644
--- a/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.pdf
+++ b/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.tex b/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.tex
index bb08e2eff9c..0260881adee 100644
--- a/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.tex
+++ b/Master/texmf-dist/doc/latex/fontscale/fontscale-manual.tex
@@ -13,7 +13,7 @@ A user interface for setting document font sizes
Oliver Beery
-Version 1.1.0\quad{}31 March 2024
+Version 1.1.1\quad{}7 April 2024
\section{Introduction}
@@ -75,7 +75,7 @@ If the user would like to add this functionality or perhaps other features to th
\label{subsec:terminology}
When using the \pkg{fontscale} package, each font size, including the standard font size commands from \cs{tiny} to \cs{Huge}, has a step, scale, size, and baselineskip.
-The latter two parameters are the familiar first and second arguments to the low\-/level font command \cs{fontsize}\marg{\meta{size}}\marg{\meta{baselineskip}}.
+The latter two parameters are the familiar first and second arguments to the low\-/level font command \cs{fontsize}\marg{\meta{size}}\marg{\meta{skip}}.
The font scale is the relative font size; the ratio of the font size to \cs{normalsize}.
The font step is the number of font size gradations from \cs{normalsize}, which has a step of \num{0}.
Table~\ref{table:fontsteps} lists the font step of each font size command.
@@ -183,7 +183,7 @@ The keys \Key{\meta{font size command}\slash{}baselineskip} set the font baselin
\Key{\meta{font size command}}[\meta{size}]
\nopagebreak\newline
-\Key{\meta{font size command}}[\meta{size}/\meta{baselineskip}]
+\Key{\meta{font size command}}[\meta{size}/\meta{skip}]
The keys \Key{\meta{font size command}} set the keys \Key{\meta{font size command}\slash{}size} or \Key{\meta{font size command}\slash{}baselineskip} in a condensed format.
The latter format resembles traditional typographic notation where the size and leading of a text can be expressed as, for example, $10/12$ or $11/13$.
@@ -220,8 +220,8 @@ Caution: \cs{CurrentFontStep} will expand to nothing if the current step is unde
Internally, \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} use the kernel command \cs{f@size}.
\cs{CurrentFontSize} expands to \texttt{f@size pt}.
\cs{CurrentFontBaselineskip} expands to the kernel command \cs{f@baselineskip}.
-Note that the low\-/level font command \cs{fontsize}\marg{\meta{size}}\allowbreak\marg{\meta{baselineskip}} sets \cs{f@size} before expanding its second argument.
-This means that \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} may need to be first expanded if used in \meta{baselineskip}.
+Note that the low\-/level font command \cs{fontsize}\marg{\meta{size}}\allowbreak\marg{\meta{skip}} sets \cs{f@size} before expanding its second argument.
+This means that \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} may need to be first expanded if used in \meta{skip}.
This package provides the command \cs{SetFontSizeBaselineskip} as an alternative to \cs{fontsize} + \cs{selectfont} that avoids this issue (\S\ref{subsec:fontsize}).
\subsection{More font sizing commands}
@@ -229,7 +229,7 @@ This package provides the command \cs{SetFontSizeBaselineskip} as an alternative
The \pkg{fontscale} package provides the commands \cs{SetFontStep}, \cs{SetFontScale}, \cs{SetFontSize}, \cs{ScaleFont}, and \cs{SetFontSizeBaselineskip} which set the font size in different ways.
The first three commands have a starred version which sets the font size relative to the current font size.
-Internally, these commands all use the low\-/level font commands \cs{fontsize}\marg{\meta{size}}\allowbreak\marg{\meta{baselineskip}} and \cs{selectfont}.
+Internally, these commands all use the low\-/level font commands \cs{fontsize}\marg{\meta{size}}\allowbreak\marg{\meta{skip}} and \cs{selectfont}.
These commands should be used only in special cases.
Generally, users should prefer the font size commands from \cs{tiny} to \cs{Huge} for typographic and syntactic consistency, although \cs{SetFontStep*}\marg{\meta{integer}} can use a font size command directly.
@@ -280,15 +280,15 @@ For example, \cs{SetFontSize*}\marg{1} and \cs{SetFontSize*}\marg{-1pt} increase
\cs{ScaleFont}\marg{\meta{number}}
\KeepNextPar*
-Scales the current font size and the current font baselineskip by \meta{number}.
+Scales the current font size and the current font baselineskip by a factor of \meta{number}.
\cs{ScaleFont} resembles the \cs{scalefont} command provided by the \pkg{scalefnt} package, except that it uses floating point calculations and clears the stretch and shrink components of the font baselineskip.
For example, if the current font size and font baselineskip are \qty{10}{pt} and \qty{12}{pt}, using \cs{ScaleFont}\marg{0.8} will reduce them proportionally to \qty{8}{pt} and \qty{9.6}{pt}.
-\cs{SetFontSizeBaselineskip}\marg{\meta{size}}\marg{\meta{baselineskip}}
+\cs{SetFontSizeBaselineskip}\marg{\meta{size}}\marg{\meta{skip}}
\KeepNextPar*
-Sets the font size and font baselineskip to \meta{size} and \meta{baselineskip}.
-Both \meta{size} and \meta{baselineskip} supply a default unit of \unit{pt}.
+Sets the font size and font baselineskip to \meta{size} and \meta{skip}.
+Both \meta{size} and \meta{skip} supply a default unit of \unit{pt}.
\cs{SetFontSizeBaselineskip} can be used as an alternative to \cs{fontsize} + \cs{selectfont} as it avoids the issue with \cs{f@size} discussed in \S\ref{subsec:fontparameters}
\vfill\pagebreak%manual
diff --git a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
index 20474386211..3fd18ccd917 100644
--- a/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
+++ b/Master/texmf-dist/tex/latex/fontscale/fontscale.sty
@@ -8,8 +8,8 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{fontscale}
- {2024-03-31}
- {1.1.0}
+ {2024-04-07}
+ {1.1.1}
{A user interface for setting document font sizes}
% The 2023-10-10 l3kernel update added many 'e'-variants.
@@ -40,30 +40,15 @@
\fp_const:Nn \c_fontscale_normalsize_scale_fp { 1 }
-\seq_const_from_clist:Nn \c__fontscale_names_seq
+\tl_const:Nn \c__fontscale_names_tl
{
- tiny
- , scriptsize
- , footnotesize
- , small
- , normalsize
- , large
- , Large
- , LARGE
- , huge
- , Huge
+ {tiny} {scriptsize} {footnotesize} {small} {normalsize}
+ {large} {Large} {LARGE} {huge} {Huge}
}
-\seq_const_from_clist:Nn \c__fontscale_names_other_seq
+\tl_const:Nn \c__fontscale_names_other_tl
{
- tiny
- , scriptsize
- , footnotesize
- , small
- , large
- , Large
- , LARGE
- , huge
- , Huge
+ {tiny} {scriptsize} {footnotesize} {small}
+ {large} {Large} {LARGE} {huge} {Huge}
}
\prop_new:N \l_fontscale_tiny_prop
@@ -122,10 +107,13 @@
\skip_new:N \l_fontscale_huge_baselineskip_skip
\skip_new:N \l_fontscale_Huge_baselineskip_skip
-\fp_new:N \l__fontscale_normalsize_size_fp
\str_new:N \l__fontscale_typographic_scale_str
\tl_new:N \l__fontscale_keys_precompile_preamble_tl
+% Used in floating point expressions for speed.
+\fp_new:N \l__fontscale_normalsize_size_fp
+\fp_new:N \l__fontscale_musical_notes_fp
+
% Temporary variables
\fp_new:N \l__fontscale_step_fp
\tl_new:N \l__fontscale_step_tl
@@ -649,9 +637,9 @@
{ \skip_use:N \l_fontscale_normalsize_baselineskip_skip }
\normalsize
}
-% Sets the size, scale, and baselineskip of the other font size commands and
-% stores them in property lists. Issues a warning if the user sets both the
-% scale and size keys for the same font size command.
+% Sets the size, scale, and baselineskip of the other font size commands.
+% Issues a warning if the user sets both the scale and size keys for the same
+% font size command.
\cs_new_protected:Npn \__fontscale_keys_process_other_classic_xpt:n #1
{
\dim_set:cn { l_fontscale_#1_size_dim }
@@ -725,74 +713,90 @@
{
\l__fontscale_normalsize_size_fp * \l__fontscale_musical_ratio_fp
^ ( \use:c { c_fontscale_#1_step_fp }
- / \l__fontscale_musical_notes_int )
+ / \l__fontscale_musical_notes_fp )
}
}
}
\cs_new_protected:Npn \__fontscale_keys_process_other:
{
- \cs_set_eq:Nc \__fontscale_keys_process_other_typographic_scale:n
+ \str_case:on \l__fontscale_typographic_scale_str
{
- \str_case:on \l__fontscale_typographic_scale_str
- {
- { classic-10pt } { __fontscale_keys_process_other_classic_xpt:n }
- { classic-11pt } { __fontscale_keys_process_other_classic_xipt:n }
- { classic-12pt } { __fontscale_keys_process_other_classic_xiipt:n }
- { modular } { __fontscale_keys_process_other_modular:n }
- { musical } { __fontscale_keys_process_other_musical:n }
- }
+ { classic-10pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_typographic_scale:n
+ \__fontscale_keys_process_other_classic_xpt:n
+ }
+ { classic-11pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_typographic_scale:n
+ \__fontscale_keys_process_other_classic_xipt:n
+ }
+ { classic-12pt }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_typographic_scale:n
+ \__fontscale_keys_process_other_classic_xiipt:n
+ }
+ { modular }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_typographic_scale:n
+ \__fontscale_keys_process_other_modular:n
+ }
+ { musical }
+ {
+ \cs_set_eq:NN \__fontscale_keys_process_other_typographic_scale:n
+ \__fontscale_keys_process_other_musical:n
+ \fp_set:Nn \l__fontscale_musical_notes_fp
+ { \l__fontscale_musical_notes_int }
+ }
}
- \seq_map_inline:Nn \c__fontscale_names_other_seq
+ \tl_map_function:NN \c__fontscale_names_other_tl
+ \__fontscale_keys_process_other_aux:n
+ }
+\cs_new_protected:Npn \__fontscale_keys_process_other_aux:n #1
+ {
+ \quark_if_no_value:cF { l__fontscale_#1_size_tl }
{
- \quark_if_no_value:cF { l__fontscale_##1_size_tl }
- {
- \__fontscale_dim_set_with_default_unit:cn
- { l_fontscale_##1_size_dim }
- { \use:c { l__fontscale_##1_size_tl } }
- \quark_if_no_value:cF { l__fontscale_##1_scale_tl }
- {
- \msg_warning:nnn { fontscale } { key-font-scale-ignored } {##1}
- }
- \prg_break:
- }
- \quark_if_no_value:cF { l__fontscale_##1_scale_tl }
+ \__fontscale_dim_set_with_default_unit:cn { l_fontscale_#1_size_dim }
+ { \use:c { l__fontscale_#1_size_tl } }
+ \quark_if_no_value:cF { l__fontscale_#1_scale_tl }
+ { \msg_warning:nnn { fontscale } { key-font-scale-ignored } {#1} }
+ \prg_break:
+ }
+ \quark_if_no_value:cF { l__fontscale_#1_scale_tl }
+ {
+ \dim_set:cn { l_fontscale_#1_size_dim }
{
- \dim_set:cn { l_fontscale_##1_size_dim }
+ \fp_to_dim:n
{
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp
- * ( \use:c { l__fontscale_##1_scale_tl } )
- }
+ \l__fontscale_normalsize_size_fp
+ * ( \use:c { l__fontscale_#1_scale_tl } )
}
- \prg_break:
- }
- \prg_break:n
- { \__fontscale_keys_process_other_typographic_scale:n {##1} }
- \prg_break_point:
- \fp_set:cn { l_fontscale_##1_scale_fp }
- {
- \use:c { l_fontscale_##1_size_dim }
- / \l__fontscale_normalsize_size_fp
}
- \quark_if_no_value:cTF { l__fontscale_##1_baselineskip_tl }
+ \prg_break:
+ }
+ \prg_break:n { \__fontscale_keys_process_other_typographic_scale:n {#1} }
+ \prg_break_point:
+ \fp_set:cn { l_fontscale_#1_scale_fp }
+ { \use:c { l_fontscale_#1_size_dim } / \l__fontscale_normalsize_size_fp }
+ \quark_if_no_value:cTF { l__fontscale_#1_baselineskip_tl }
+ {
+ \skip_set:cn { l_fontscale_#1_baselineskip_skip }
{
- \skip_set:cn { l_fontscale_##1_baselineskip_skip }
+ \fp_to_dim:n
{
- \fp_to_dim:n
- {
- \use:c { l_fontscale_##1_size_dim }
- * \l__fontscale_baselineskip_size_ratio_fp
- }
+ \use:c { l_fontscale_#1_size_dim }
+ * \l__fontscale_baselineskip_size_ratio_fp
}
}
- {
- \__fontscale_skip_set_with_default_unit:cn
- { l_fontscale_##1_baselineskip_skip }
- { \use:c { l__fontscale_##1_baselineskip_tl } }
- }
+ }
+ {
+ \__fontscale_skip_set_with_default_unit:cn
+ { l_fontscale_#1_baselineskip_skip }
+ { \use:c { l__fontscale_#1_baselineskip_tl } }
}
}
+% Puts the scale, size, and baselineskip of the other font size commands in
+% property lists.
\cs_new_protected:Npn \__fontscale_keys_process_other_props:
{
\prop_put:Nne \l_fontscale_tiny_prop { scale }
@@ -991,7 +995,7 @@
{
\fp_eval:n
{
- \l__fontscale_musical_notes_int
+ \l__fontscale_musical_notes_fp
* ln ( \f@size / \l__fontscale_normalsize_size_fp )
/ ln ( \l__fontscale_musical_ratio_fp )
}
@@ -1040,7 +1044,7 @@
\c_fontscale_Huge_step_fp { \Huge }
}
{
- \str_case:onTF \l__fontscale_typographic_scale_str
+ \str_case:onF \l__fontscale_typographic_scale_str
{
{ modular }
{
@@ -1052,6 +1056,11 @@
* \l__fontscale_modular_ratio_fp ^ #1
}
}
+ {
+ \fp_to_dim:n
+ { \f@size * \l__fontscale_baselineskip_size_ratio_fp }
+ }
+ \selectfont
}
{ musical }
{
@@ -1061,18 +1070,16 @@
{
\l__fontscale_normalsize_size_fp
* \l__fontscale_musical_ratio_fp
- ^ ( #1 / \l__fontscale_musical_notes_int )
+ ^ ( #1 / \l__fontscale_musical_notes_fp )
}
}
+ {
+ \fp_to_dim:n
+ { \f@size * \l__fontscale_baselineskip_size_ratio_fp }
+ }
+ \selectfont
}
}
- {
- {
- \fp_to_dim:n
- { \f@size * \l__fontscale_baselineskip_size_ratio_fp }
- }
- \selectfont
- }
{ \msg_error:nn { fontscale } { font-step-out-of-bounds } }
}
}
@@ -1165,7 +1172,7 @@
{ \__fontscale_print_all_font_parameters: }
\cs_new_protected:Npn \__fontscale_print_all_font_parameters:
{
- \seq_map_inline:Nn \c__fontscale_names_seq
+ \tl_map_inline:Nn \c__fontscale_names_tl
{
\prop_get:cnN { l_fontscale_##1_prop } { step } \l__fontscale_step_tl
\prop_get:cnN { l_fontscale_##1_prop } { scale } \l__fontscale_scale_tl