diff options
author | Karl Berry <karl@freefriends.org> | 2024-07-09 20:05:08 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2024-07-09 20:05:08 +0000 |
commit | 04b79c3d51cb074a178a9c1f58cde952d79d3b65 (patch) | |
tree | c970909c59e70f3102f6a2fa1c7847cfc8fd50eb /Master | |
parent | d04b314526ec59cf706b894571225d080746fe83 (diff) |
synthslant (9jul24)
git-svn-id: svn://tug.org/texlive/trunk@71755 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
16 files changed, 745 insertions, 382 deletions
diff --git a/Master/texmf-dist/doc/latex/synthslant/LICENSE b/Master/texmf-dist/doc/latex/synthslant/LICENSE index f8b699e6eb5..888d9e68e7a 100644 --- a/Master/texmf-dist/doc/latex/synthslant/LICENSE +++ b/Master/texmf-dist/doc/latex/synthslant/LICENSE @@ -355,11 +355,11 @@ Here is an example of such a notice and statement: %% Copyright 2005 M. Y. Name % % This work may be distributed and/or modified under the - % conditions of the LaTeX Project Public License, either version 1.3 + % conditions 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 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. diff --git a/Master/texmf-dist/doc/latex/synthslant/README.md b/Master/texmf-dist/doc/latex/synthslant/README.md index 1b1c7191893..efc20fd37ee 100644 --- a/Master/texmf-dist/doc/latex/synthslant/README.md +++ b/Master/texmf-dist/doc/latex/synthslant/README.md @@ -1,3 +1,6 @@ +![distcheck status](https://github.com/cspiel/synthslant/actions/workflows/distcheck.yml/badge.svg) + + # SynthSlant – Synthetic slanting of glyphs LaTeX package `synthslant` slants short pieces of text to the right or to the left. diff --git a/Master/texmf-dist/doc/latex/synthslant/RELEASE-HOWTO.md b/Master/texmf-dist/doc/latex/synthslant/RELEASE-HOWTO.md deleted file mode 100644 index 13435ef66d5..00000000000 --- a/Master/texmf-dist/doc/latex/synthslant/RELEASE-HOWTO.md +++ /dev/null @@ -1,51 +0,0 @@ -# How to prepare a new release - -... and not make too many mistakes. - - -1. Check that the work-area is clean with respect to **git**-tracked - files. - - ``` git status ``` - -1. Update the date stamp of `\ProvidesPackage`. - -1. (Temporarily) Zero the `\overfullrule`s of the documentation and - the example files. - -1. Thoroughly clean the work-area: - - ```make maintainer-clean``` - -1. Rebuild: - - ```make``` - -1. Check that all _*.sty_ and _*.pdf_ files are in good shape. - -1. Push the documentation files created in the previous step down into - the *docs* directory: - - ```make update-docs``` - -1. Undo the `\overfullrule` change. - -1. Commit the changes: - - ``` - git add . - ``` - - and finally - - ``` - git commit - ``` - -1. Tag the commit with the version string of `\ProvidesPackage`: - - ```git tag v1.23``` - -1. Push the changes to the public repository: - - ```git push origin master --tags``` diff --git a/Master/texmf-dist/doc/latex/synthslant/index.md b/Master/texmf-dist/doc/latex/synthslant/index.md deleted file mode 100644 index c8c312f3887..00000000000 --- a/Master/texmf-dist/doc/latex/synthslant/index.md +++ /dev/null @@ -1,4 +0,0 @@ -### Package Documentation - -- Comprehensive `synthslant` documentation: [synthslant.pdf](https://cspiel.github.io/synthslant/synthslant.pdf) -- `synthslant` test and demonstration: [synthslant-gauge.pdf](https://cspiel.github.io/synthslant/synthslant-gauge.pdf) diff --git a/Master/texmf-dist/doc/latex/synthslant/shear-transform.mp b/Master/texmf-dist/doc/latex/synthslant/shear-transform.mp index aeacb9a5841..2ae5591d18a 100644 --- a/Master/texmf-dist/doc/latex/synthslant/shear-transform.mp +++ b/Master/texmf-dist/doc/latex/synthslant/shear-transform.mp @@ -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'. diff --git a/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.pdf b/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.pdf Binary files differindex 425e7944efe..762c1e00a00 100644 --- a/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.pdf +++ b/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.pdf diff --git a/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.tex b/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.tex index dbea94e5cea..17de9acf55c 100644 --- a/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.tex +++ b/Master/texmf-dist/doc/latex/synthslant/synthslant-gauge.tex @@ -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'. @@ -134,7 +134,7 @@ \setlength{\headheight}{0pt} \setlength{\headsep}{0pt} -\setlength{\overfullrule}{3pt} +\setlength{\overfullrule}{0pt} \pagestyle{plain} diff --git a/Master/texmf-dist/doc/latex/synthslant/synthslant-minimal-test.tex b/Master/texmf-dist/doc/latex/synthslant/synthslant-minimal-test.tex new file mode 100644 index 00000000000..9f79f6d3d40 --- /dev/null +++ b/Master/texmf-dist/doc/latex/synthslant/synthslant-minimal-test.tex @@ -0,0 +1,39 @@ +%% +%% This is file `synthslant-minimal-test.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% synthslant.dtx (with options: `minimal-test') +%% +%% This is a generated file. +%% +%% 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.3c of this +%% license or (at your option) any later version. The latest version +%% of this license is in +%% 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'. +%% +%% The Current Maintainer of this work is Ch. L. Spiel. +%% +%% This work consists of the files synthslant.dtx and synthslant.ins +%% and the derived files synthslant.sty, synthslant-gauge.tex, +%% shear-transform.mp, and title.mp. +%% +%% +\documentclass{minimal} + +\usepackage{synthslant} + +\begin{document} +\textsynthslant{abc} +\end{document} +\endinput +%% +%% End of file `synthslant-minimal-test.tex'. diff --git a/Master/texmf-dist/doc/latex/synthslant/synthslant.gst b/Master/texmf-dist/doc/latex/synthslant/synthslant.gst new file mode 100644 index 00000000000..9d7be0ed103 --- /dev/null +++ b/Master/texmf-dist/doc/latex/synthslant/synthslant.gst @@ -0,0 +1,44 @@ +%% +%% This is file `synthslant.gst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% synthslant.dtx (with options: `changes-style') +%% +%% This is a generated file. +%% +%% 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.3c of this +%% license or (at your option) any later version. The latest version +%% of this license is in +%% 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'. +%% +%% The Current Maintainer of this work is Ch. L. Spiel. +%% +%% This work consists of the files synthslant.dtx and synthslant.ins +%% and the derived files synthslant.sty, synthslant-gauge.tex, +%% shear-transform.mp, and title.mp. +%% +%% +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 '!' diff --git a/Master/texmf-dist/doc/latex/synthslant/synthslant.ist b/Master/texmf-dist/doc/latex/synthslant/synthslant.ist index c593624beff..05784657484 100644 --- a/Master/texmf-dist/doc/latex/synthslant/synthslant.ist +++ b/Master/texmf-dist/doc/latex/synthslant/synthslant.ist @@ -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'. @@ -28,11 +28,12 @@ %% %% 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 '!' -\endinput -%% -%% End of file `synthslant.ist'. diff --git a/Master/texmf-dist/doc/latex/synthslant/synthslant.pdf b/Master/texmf-dist/doc/latex/synthslant/synthslant.pdf Binary files differindex 9b034b86c39..555101ee3c9 100644 --- a/Master/texmf-dist/doc/latex/synthslant/synthslant.pdf +++ b/Master/texmf-dist/doc/latex/synthslant/synthslant.pdf diff --git a/Master/texmf-dist/doc/latex/synthslant/title.mp b/Master/texmf-dist/doc/latex/synthslant/title.mp index 25658ecb985..57efebbae1a 100644 --- a/Master/texmf-dist/doc/latex/synthslant/title.mp +++ b/Master/texmf-dist/doc/latex/synthslant/title.mp @@ -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'. diff --git a/Master/texmf-dist/source/latex/synthslant/Makefile b/Master/texmf-dist/source/latex/synthslant/Makefile index d8de419230a..8ef77a6982b 100644 --- a/Master/texmf-dist/source/latex/synthslant/Makefile +++ b/Master/texmf-dist/source/latex/synthslant/Makefile @@ -19,8 +19,9 @@ DVIPS := dvips DVIPS_FLAGS := -d1 # debug \special{} -LATEX := /usr/bin/env max_print_line=2147483647 pdflatex -LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode +LATEX_PROPER := pdflatex +LATEX := /usr/bin/env max_print_line=2147483647 $(LATEX_PROPER) +LATEX_FLAGS := -file-line-error -halt-on-error -interaction=nonstopmode -output-directory=. LATEX_RERUN_TRIGGER := '^Package rerunfilecheck Warning: File [^ ]* has changed' LATEX_WARNING := '^LaTeX (|[A-Za-z0-9_]* )Warning:' @@ -33,18 +34,9 @@ METAPOST := mpost METAPOST_FLAGS := -file-line-error -interaction=nonstopmode -tex=latex -SPELLCHECK := aspell -SPELLCHECK_FLAGS := \ - --add-tex-command='citenum p' --add-tex-command='code p' \ - --add-tex-command='Cref p' --add-tex-command='cref p' \ - --add-tex-command='cs p' \ - --add-tex-command='DescribeEnv p' --add-tex-command='DescribeMacro p' \ - --add-tex-command='marg p' --add-tex-command='meta p' \ - --add-tex-command='oarg p' \ - --lang=en_US --mode=tex - - -SOURCE_FILES := LICENSE Makefile synthslant.dtx synthslant.ins +PROJECT_NAME := synthslant +SOURCE_FILES := LICENSE Makefile README.md synthslant.dtx synthslant.ins +DOCUMENTATION_FILES := synthslant-gauge.pdf synthslant.pdf @@ -57,7 +49,7 @@ sty: synthslant.sty .PHONY: pdf -pdf: doc gauge +pdf: doc gauge test .PHONY: doc @@ -68,19 +60,42 @@ doc: synthslant.pdf gauge: synthslant-gauge.pdf -.PHONY: cpio -cpio: - cd ..; \ - echo $(addprefix synthslant/,$(SOURCE_FILES)) | \ - cpio -o | \ - gzip > "synthslant-$$(date +%Y-%m-%d).cpio.gz" +.PHONY: test +test: synthslant-minimal-test.pdf + + +export TEMPORARY_DIRECTORY + + +.PHONY: dist +dist: + $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d)) + trap '$(RM) -r $(TEMPORARY_DIRECTORY); exit 1' HUP INT QUIT TERM; $(MAKE) __dist + $(RM) -r $(TEMPORARY_DIRECTORY) + + +.PHONY: __dist +__dist: LATEX_FLAGS += -interaction=batchmode +__dist: $(DOCUMENTATION_FILES) + test -d '$(TEMPORARY_DIRECTORY)' + test -w '$(TEMPORARY_DIRECTORY)' + mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) + cp $(SOURCE_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) + mkdir $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs + cp $(DOCUMENTATION_FILES) $(TEMPORARY_DIRECTORY)/$(PROJECT_NAME)/docs + tar czf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY) $(PROJECT_NAME) -.PHONY: tar -tar: - cd ..; \ - tar czf "synthslant-$$(date +%Y-%m-%d).tar.gz" \ - $(addprefix synthslant/,$(SOURCE_FILES)) +.PHONY: distcheck +distcheck: LATEX_FLAGS += -interaction=batchmode +distcheck: dist + $(eval TEMPORARY_DIRECTORY := $(shell mktemp -d)) + test -d '$(TEMPORARY_DIRECTORY)' + test -w '$(TEMPORARY_DIRECTORY)' + tar xzf $(PROJECT_NAME).tar.gz -C $(TEMPORARY_DIRECTORY) + $(MAKE) --directory=$(TEMPORARY_DIRECTORY)/$(PROJECT_NAME) LATEX_FLAGS='$(LATEX_FLAGS)' all + $(RM) -r $(TEMPORARY_DIRECTORY) + @printf '\n\ndistcheck passed.\n' .PHONY: clean @@ -91,6 +106,7 @@ clean: $(RM) mptextmp.* mpxerr.tex $(RM) README README.html RELEASE-HOWTO RELEASE-HOWTO.html $(RM) compare-with-the-gimp.eps compare-with-the-gimp.png + $(RM) $(PROJECT_NAME).tar.gz .PHONY: mostlyclean @@ -99,35 +115,27 @@ mostlyclean: clean .PHONY: maintainer-clean maintainer-clean: mostlyclean - $(RM) ./*.base64 ./*.ist ./*.mp ./*.sty ./*.tex + $(RM) ./*.base64 ./*.gst ./*.ist ./*.mp ./*.sty ./*.tex .PHONY: perf perf: synthslant-gauge.tex synthslant.sty - perf stat --repeat=10 -- $(LATEX) $(LATEX_FLAGS) -interaction batchmode -draftmode $< + perf stat --repeat=10 -- $(LATEX) $(LATEX_FLAGS) -interaction=batchmode -draftmode $< .PHONY: tool-check tool-check: - @printf '*** LATEX = "%s"\n' '$(LATEX)' - $(LATEX) --version + @printf '*** LATEX_PROPER = "%s"\n' '$(LATEX_PROPER)' + $(LATEX_PROPER) --version + @printf '\n\n*** BibTeX\n' + bibtex --version @printf '\n\n*** MAKEINDEX = "%s"\n' '$(MAKEINDEX)' - $(MAKEINDEX) < /dev/null + $(MAKEINDEX) < /dev/null @printf '\n\n*** METAPOST = "%s"\n' '$(METAPOST)' $(METAPOST) --version @printf '\n*** BASE64 = "%s"\n' '$(BASE64)' $(BASE64) --version - @printf '\n\nTool check passed.\n' - - -.PHONY: spell-check -spell-check: - @sed -e '\#<DISABLE-SPELL-CHECK/>#d' \ - -e '\#<DISABLE-SPELL-CHECK>#,\#</DISABLE-SPELL-CHECK>#d' < synthslant.dtx | \ - sed -e 's/^ *%%*//' | \ - sed -e 's/\\-//g' -e 's/|[^|]*|/ /g' | \ - $(SPELLCHECK) $(SPELLCHECK_FLAGS) list | \ - sort | uniq | fmt | sed -e 's/ / /g' + @printf '\n\ntool check passed.\n' .PHONY: update-docs @@ -142,8 +150,12 @@ all: Make everything there is to make. This is the .DEFAULT_GOAL. clean: Remove some products. -cpio: In the parent directory create a cpio(1) archive of the - project source files whose name is time-stamped. +dist: Create a tar file of the project source files and the PDF + documentation files. The archive is in the form and has a + name that CTAN prefers. + +distcheck: Create a tar file of the project source files, unpack it in + a different location and build all targets. doc: Build "synthslant.pdf" the Syntslant documentation. @@ -160,15 +172,22 @@ pdf: Build doc: and gauge:. sty: Only extract "synthslant.sty" from "synthslant.dtx". This operation requires LaTeX (-> $(LATEX)) and nothing else. -tar: In the parent directory create a tar(1) file of the project - source files whose name is time-stamped. +test: Run some tests. Currently only compiles a minimal document + to check whether "synthslant.sty" contains all the necessary + \RequirePackage directives. tool-check: Check whether some of the required tools to build the project are available. +update-docs: Copy the documentation files into the "docs" + sub-directory. + Selected Implicit Rules ----------------------- +%: %.html + Convert HTML to plain text. Requires w3m(1). + %.dvi %.pdf: %.dtx Run LaTeX or pdfLaTeX (-> $(LATEX)) on dtx source until a fix-point is reached. @@ -177,6 +196,9 @@ Selected Implicit Rules Run LaTeX or pdfLaTeX (-> $(LATEX)) on tex file until a fix-point is reached. +%.html: %.md + Convert markdown to HTML. Requires markdown(1). + %.mx.pdf: %.dvi Convert dvi to pdf via dvipdfmx (-> $(DVIPDFMX)). @@ -187,9 +209,9 @@ Selected Implicit Rules Some Explicit Rules ------------------- README.html: - Convert "README.md" to html. Requires markdown(1). + Convert "README.md" to html. -README: Convert "README.html" to plain text. Requires w3m(1). +README: Convert "README.html" to plain text. endef @@ -205,8 +227,8 @@ help: define MAKE_INDEX_AND_GLOSSARY sed -e '/@/d' < $*.idx > ,$*.idx; mv ,$*.idx $*.idx; \ -$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s synthslant.ist -t $*.ilg -o $*.ind $*.idx; \ -$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s gglo.ist -t $*.glg -o $*.gls $*.glo +$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.ist -t $*.ilg -o $*.ind $*.idx; \ +$(MAKEINDEX) $(MAKEINDEX_FLAGS) -s $*.gst -t $*.glg -o $*.gls $*.glo endef define GREP_LATEX_WARNINGS @@ -250,7 +272,13 @@ endef %.mps: %.mp - $(METAPOST) -s 'outputtemplate="%j.mps"' $(METAPOST_FLAGS) $< + $(METAPOST) -s 'outputtemplate="%j.mps"' $(METAPOST_FLAGS) $< || { \ + printf '=== $*.log ===\n'; \ + cat $*.log; \ + printf '\n\n=== mpxerr.log ===\n'; \ + cat mpxerr.log; \ + false; \ + } 1>&2 %.eps: %.png @@ -265,7 +293,8 @@ endef -synthslant.sty synthslant.ist synthslant-gauge.tex \ +synthslant.sty synthslant.ist \ +synthslant-gauge.tex synthslant-minimal-test.tex \ compare-with-the-gimp.png.base64 shear-transform.mp title.mp: \ synthslant.ins synthslant.dtx $(LATEX) $(LATEX_FLAGS) $< diff --git a/Master/texmf-dist/source/latex/synthslant/synthslant.dtx b/Master/texmf-dist/source/latex/synthslant/synthslant.dtx index f5424cf7fa1..6c052c64a7f 100644 --- a/Master/texmf-dist/source/latex/synthslant/synthslant.dtx +++ b/Master/texmf-dist/source/latex/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 % % diff --git a/Master/texmf-dist/source/latex/synthslant/synthslant.ins b/Master/texmf-dist/source/latex/synthslant/synthslant.ins index 845b4378b19..f7027fe6f5e 100644 --- a/Master/texmf-dist/source/latex/synthslant/synthslant.ins +++ b/Master/texmf-dist/source/latex/synthslant/synthslant.ins @@ -1,11 +1,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. @@ -23,11 +23,11 @@ This is a generated file. 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'. @@ -46,12 +46,15 @@ shear-transform.mp, and title.mp. \generate{\file{synthslant.sty}{\from{\source}{package}} \file{synthslant-gauge.tex}{\from{\source}{gauge}} - \file{synthslant.ist}{\from{\source}{index-style}}} + \file{synthslant-minimal-test.tex}{\from{\source}{minimal-test}}} \nopostamble -\generate{\file{title.mp}{\from{\source}{title}}} -\generate{\file{shear-transform.mp}{\from{\source}{shear-transform}}} +\generate{\file{shear-transform.mp}{\from{\source}{shear-transform}} + \file{synthslant.gst}{\from{\source}{changes-style}} + \file{synthslant.ist}{\from{\source}{index-style}} + \file{title.mp}{\from{\source}{title}}} + \nopreamble diff --git a/Master/texmf-dist/tex/latex/synthslant/synthslant.sty b/Master/texmf-dist/tex/latex/synthslant/synthslant.sty index 0cd75e5e330..42c27c2a428 100644 --- a/Master/texmf-dist/tex/latex/synthslant/synthslant.sty +++ b/Master/texmf-dist/tex/latex/synthslant/synthslant.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'. @@ -29,8 +29,9 @@ %% \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} @@ -60,12 +61,16 @@ \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 @@ -136,13 +141,15 @@ \box_set_dp:Nn \l_tmpa_box {\z@} \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} } \draw_box_use:N \l_tmpa_box \draw_end: @@ -181,7 +188,8 @@ \ExplSyntaxOn \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 } @@ -242,8 +250,9 @@ \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}% + \edef\synthslant@slant@value{#1} + \synthslantbox@fontspect@shear@box{\synthslant@slant@value} + {#2}% } \else \newrobustcmd*{\synthslantbox}[2]{% @@ -262,7 +271,8 @@ \NewDocumentEnvironment{slantenvironment}{} {\upshape \ifcsdef{microtypecontext} - {\expandafter\microtypecontext\expandafter{\slantcontext}} + {\expandafter\microtypecontext + \expandafter{\slantcontext}} {}} {\ifcsdef{endmicrotypecontext} {\endmicrotypecontext} @@ -285,7 +295,8 @@ \NewDocumentEnvironment{negslantenvironment}{} {\itshape \ifcsdef{microtypecontext} - {\expandafter\microtypecontext\expandafter{\negslantcontext}} + {\expandafter\microtypecontext + \expandafter{\negslantcontext}} {}} {\ifcsdef{endmicrotypecontext} {\endmicrotypecontext} |