<<

LATEX&friends course in Helsinki a TEX/LATEX enthusiast’ view

Gaetano Zanghirati University of Ferrara, in cooperation with DOMAST Doctoral School in and

Helsinki, May 2019 Customizing

Customizing style and dimension Handle and creating counters for equations, theorems, sections, notes, . . . Customizing theorems and sections style Designing or modifying a Beamer template Customizing the template of a Beamer presentation

A course on LaTeX&friends .:. . Zanghirati & DOMAST .:. Helsinki, May 2019 Customizing font style and dimension

Originally, . Knuth conceived TEX to use its own font system: Default font family for TEX & Co.: Features: high quality, scalable, wide range of typographical fine tuning capabilities(Curves geometrical description) compilers allow use of other too There exist many different font types, such as: Type1: outline fonts(vector graphics), commonly used by /pdflatex Bitmap: raster graphics, usually have very poor quality (easily seen by zooming or printing) PS Type3: superset of Type1 with more functionalities from Postscript( .g., in the TEX world, Type3 fonts are often used to embed bitmap fonts)

Vector font Raster font A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Latin Modern vs super Computer Modern

Fonts get generated the first time they are required (it takes unusually long compilation time) METAFONT is internally a quite complex font system Most popular font systems are Truetype font (ttf) and OpenType font (otf) Modern compilers (e.g., and ) allow to make use of such popular fonts in LATEX documents With the standard compilers, those font types must first be converted (e.g., to Type1) to be available to LATEX Newest and improved versions have been developed during the years to exploit the technological advances of the devices (monitor, printers, beamers, . . . )

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Latin Modern vs super Computer Modern

Both Latin Modern (lmodern) and super Computer Modern (cm-super) are derived from Computer Modern (cm) font. cm-super is a vectorization of cm bitmap fonts, but mainly automatically done The vectorization of Latin Modern is “handmade” Latin Modern has revised metrics Latin Modern provides more , especially diacritical characters (72 text fonts, each one containing > 700 glyphs, and 20 math fonts) cm-super comes with more fonts but fewer glyphs Latin Modern development goes on.

[Stefan Kottwitz, StackExchange-TeX, 2010]

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Latin Modern vs super Computer Modern

Both are easy to use in any modern TEX distribution. cm-super takes up more in the distribution, but lmodern generally takes up more space in the generated PDF (lmodern uses font subroutines, which all must be put in the PDF) lmodern is available in the same optical sizes as Computer Modern, cm-super is available in more optical sizes, but...... cm-super should be used with the fix-cm package to fix a lot of broken design decisions (and to make the final PDF a bit smaller), which unfortunately, prevent to use most of the additional sizes Neither cm-super nor lmodern are as well-hinted (for onscreen reading) as the BlueSky Computer Modern fonts. Hinting is simply too hard to get right and the lmodern developers don’ focus on it Neither cm-super nor lmodern will give exactly identical page breaks as the traditional Computer Modern, but lmodern will be closer [Lev Bishop, Martin Scharrer, StackExchange-TeX, 2010, 2012] A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font logical structure

Font family: Roman (, rm) Sans serif (sf) Monospace (tt)

Font series (= width & weight)

Font shape Font size

Font structure (declarative form): Families: Computer Modern, Times, Arial, , . . . Categories: \rmdefault, \sfdefault, \ttdefault Series: boldface (\bfseries), medium (\mdseries), light, . . . Shape: italic (\itshape), slanted (\slshape), small caps (\scshape), upright (\upshape), outline, shaded, . . . Example: \renewcommand{\familydefault}{\rmdefault} Changing font: 1) select the family to change, 2) choose the new family Example: \renewcommand*{\rmdefault}{ppl}% Palatino Font switches: \normalfont, \rmfamily, \sffamily, \ttfamily A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font logical structure

Terminology for font families attributes: weight: thickness of the strokes that constitute its glyphs width: “horizontal” size of each , relative to its height series: combination of weight and width shape: variant of the geometrical aspect of a given (upright, italic,. . . ) size: the size at which the glyphs are expected to be view/printed if no zooming is applied optical size: the size range the typeface is designed for

Remember: (type designers have found that) the most visually appealing fonts are ones that are designed for a particular size range, not a given font arbitrary scaled up and down

0 The installation and use of OpenType fonts in LATEX", John D. Owens, TUGboat 27 (2006), 112–119. A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font logical structure

Command form: \textmd, \textbf, \textit, \textsl, \textsc, \textup, \emph, ... intended to be used in normal text have the advantage of maintaining consistency with other LATEX construct (e.g., automatically take care of italic corrections) intended to typeset short pieces of text in a specific font

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font sizes

Traditionally measured in printer points (pt): 1” = 72.27 pt ≈ 0.35mm (for PostScript 1” = 72 pt = 1 bp) TEX/LATEX: sizes available as (1.2) (\magstep...) Nowadays: either 6,7,8,. . . ,12,14,. . . ,20,24,30,36 or only one vectorized (scalable) design size Arbitrarily scalable fonts give not always best-looking results, because of human eyes perception (which is nonlinear)

10 predefined font sizes:

\tiny tiny \Large Large \scriptsize script \LARGE LARGE \footnotesize footnote \huge \small small huge \normalsize normal \Huge \large large Huge

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Actual font sizes

Standard classes AMS classes, (except Beamer) memoir Size 10pt 11pt 12pt 10pt 11pt 12pt Beamer \tiny 5 6 6 6 7 8 13.82 \scriptsize 7 8 8 7 8 9 16.59 \footnotesize 8 9 10 8 9 10 16.59 \small 9 10 10.95 9 10 10.95 16.59 \normalsize 10 10.95 12 10 10.95 12 19.907 \large 12 12 14.44 10.95 12 14.4 23.89 \Large 14.4 14.4 17.28 12 14.4 17.28 28.66 \LARGE 17.28 17.28 20.74 14.4 17.28 20.74 34.40 \huge 20.74 20.74 24.88 17.28 20.74 24.88 41.28 \Huge 24.88 24.88 24.88 20.74 24.88 24.88 41.28

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font default hooks and character access

Hook Default Description \encodingdefault OT1 econdigng scheme for “main font” \familydefault \rmdefault family selected for “main font” \seriesdefault series selected for “main font” \shapedefault n shape selected for “main font” \rmdefault cmr family selected by \rmfamily and \textrm \sfdefault cmss family selected by \sffamily and \textsf \ttdefault cmtt family selected by \ttfamily and \texttt \bfdefault bx series selected by \bfseries and \textbf \mddefault m series selected by \mdseries and \textmd \itdefault it shape selected by \itshape and \textit \sldefault sl shape selected by \slshape and \textsl \scdefault sc shape selected by \scshape and \textsc \updefault n shape selected by \upshape and \textup Accessing specific characters in the selected font: \fontencoding{T1}\selectfont \{215} → Œ; \symbol{’237} → §; \symbol{"DE} → Þ

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font-changing commands in math

Different mechanism: text font change commands give errors TEX and LATEX distinguish between 8 types of math chars (to correctly account for appropriate spacing) Two classes: symbols and alphabet characters Some entered from keyboard (most of the alphabet chars: , , . . . ), others given by commands (most of the symbols: \geq ≥, \int , \partial ∂,...)

PredefinedR math alphabet identifiers: Hook Effect \mathcal $\mathcal{T} \gets\{t\}$ T ← {t} \mathrm $\mathrm{supp}(S) \to [0,1]$ supp(S) → [0, 1] \mathbf $\mathbf{} = (1,0,2)^T$ v = (1, 0, 2)T 1 \mathsf $\mathsf{}(3,2) = \frac{1}{4}$ H(3, 2) = 4 \mathtt $\mathtt{Rq} \leq \Gamma$ Rq ≤ Γ \mathnormal $\mathnormal{zt} \approx \varphi$ zt ≈ ϕ \mathit $displ \neq \mathit{offset}$ displ 6= offset A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 So many fonts available!! http://www.tug.dk/FontCatalogue/ Serif families Cursive fonts Abbrv. Name Abbrv. Name cmr Computer Modern Roman (default) pzc Zapf Chancery lmr Latin Modern Roman pbk Bookman Math-dedicated fonts bch Charter Abbrv. Name pnc New Century Schoolbook cmm Computer Modern ppl Palatino (math italic) ptm Times cmsy Computer Modern beramono Mono (math symbols) luximono Luxi Mono zplm Palatino (math)

Sans serif families Typewriter families Abbrv. Name Abbrv. Name cmss Computer Modern Sans Serif cmtt Computer Modern Typewriter (default) (default) lmss Latin Modern Sans Serif lmtt Latin Modern pag Avant Garde pcr Courier phv

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Fonts: evolution

Knuth’s Computer Modern fonts were originally encoded in 7 bits format (128 chars): they didn’t support accented glyphs. Consequence: accented characters, created via the \accent TEX primitive, broke non-English-words hyphenation 1989: re-implementation as 8-bit-based encoding (256 chars), both internally and externally 1990: European Computer Modern (EC) fonts. Implementation: cm-super package, suppoting many encodings (T1, TS1, T2A, T2B, T2C, X2) EC fonts: not completely satisfactory re-implementation of CM fonts. Solution: the fix-cm package: Latin Modern are the Type 1 (T1) PostScript successors of Knuth’s Computer Modern fonts, with a lot of diacritical chars available (meeting almost all European Latin-based languages) and Latin Modern Math fonts. Loaded with lmodern package A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encodings

Characters typed on the keyboard are caught by the system as 1 to 4 bytes, depending on the way they are encoded The mapping from the encoded characters to their editor representation and to the corresponding glyph depends on how their encoding is interpreted TEX and LATEX have their own way to interpret the . (Roughly speacking) LATEX support is provided by packages Select the encoding in the preamble: \usepackage[encoding]{inputenc} or inside the document: \inputencoding{encoding}

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encodings

Encodings known to the inputenc package: (pos. 32–127 of the ASCII encoding, the remaining are made invalide); latinN with N =1,. . . ,5,9,10 (ISO Latin encodings); cpN with N = 850, 852, 858, 437, 437de, 865 (IBM code pages) or N =1250, 1252, 1257 (Windows code pages for central and eastern Europe, western Europe, Baltic); ansinew (same as cp1250, extension of latin1); applemac, maccce (Apple encoding standard and for central Europe) decmulti (old DEC Multinational character set encoding); next (Next character encoding); utf8 ( UTF-8 encoding limited support) utf8x (Unicode UTF-8 encoding extended support)

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encoding today

Main goal: have a package that allows the selection and defining input encodings by the characters in question themself The inputenx package is the successor of inputenc Encoding definition files are provided with the following improvements, compared to LATEX’s classical ones: More up-to-date and closer to the standards. Note: updating LATEX itself is difficult because of compatibility issues Solution: uses fresh encoding file names, prefixed with “-” Consequent use of \DeclareInputText as suggested by “The LATEX Companion. 2nd ed.”. Encoding names can also be given by various alias names and new ones are provided: currently 58 are detected, including those for Cyrillic, Ukranian and others. Two specials: x-utf8enc and x-verbatim Definition files: ix-name.def provides names for about 600 UTF-encoded diacritics characters (essentially taken from Adobe’s glyphlist)

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encoding today

New definitions can be used with the legacy package: \usepackage[x-iso-8859-15]{inputenc}% same as latin9 It’s better to use the new support: \usepackage[iso-8859-15]{inputenx}% same as latin9

Example: \usepackage[latin9]{inputenx} Großschreibung ¨ ¨ ˇ ˇ \begin{document} A˚ AÆ OØ S \fontencoding{OT1}\selectfont ˚a¨aæ ¨oø ˇsˇz \raggedright Großschreibung\par Tykk¨a¨atk¨osin¨a ÅÄÆÖØŠŽ\par teest¨a? å ä æ ö ø š ž\par Kyll¨a,mutta pid¨an \medskip my¨oskahvia Tykkäätkö sinä teestä?\par Kyllä, mutta pidän myös kahvia \end{document}

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 1 Font: input encoding today

Unicode: the file ix-utf8enc.dfu provides additions to inputenc’s file utf8enc.dfu It can be loaded after utf8.def: \usepackage[utf8]{inputenx}% or package‘inputenc’ \input{ix-utf8enc.dfu}

Verbatim material: verbatim encoding, with file x-verbatim.def, makes inactive all characters supported by package inputenc (catcode 12, ‘other’) Example of use: \usepackage{inputenx} \usepackage{fancyvrb} ... \begin{VerbatimOut}[codes={\InputEncoding{verbatim}}]{\jobname.tmp} Text with 8 bit characters. \end{VerbatimOut}

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encoding today

Advance: (semi)automatic detection of input encoding Package selinput allows selection of input encoding by mappings between the characters and their glyph names! \usepackage{selinput,textcomp} A¨¨ U¨a¨o¨uߨ Sˇ Zˇ ˇsˇz € \begin{document} \SelectInputMappings{% adieresis={ä}, germandbls={}, Euro={€},% German umlauts as scaron={š}, zcaron={ž}, Scaron={Š}, Zcaron={Ž}} UTF-8: ¨a¨o¨u \fontencoding{OT1}\selectfont Latin1: A˜¤A˜¶A˜¼ ÄÖÜäöüß Š Ž š ž €\par\bigskip German umlauts as\par Latin2: A˘¤A´s˘ A´z˘ \inputencoding{utf8} Latin3: ¤hˆˆ UTF-8: ^^c3^^a4^^c3^^b6^^c3^^bc\par \inputencoding{latin1} ASCII: Latin1: ^^c3^^a4^^c3^^b6^^c3^^bc\par cp1257: ´¤C´¶C´¼ ... \inputencoding{cp1257} cp1257: ^^c3^^a4^^c3^^b6^^c3^^bc \end{document} A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 1 Font: input encoding today

Advance: (semi)automatic detection of input encoding Package selinput allows selection of input encoding by mappings between the characters and their glyph names! \usepackage{selinput,textcomp} A¨O¨ U¨a¨o¨uߨ Sˇ Zˇ ˇsˇz € \begin{document} \SelectInputMappings{% adieresis={ä}, germandbls={ß}, Euro={€},% German umlauts as scaron={š}, zcaron={ž}, Scaron={Š}, Zcaron={Ž}} UTF-8: ¨a¨o¨u \fontencoding{OT1}\selectfont Latin1: A˜¤A˜¶A˜¼ ÄÖÜäöüß Š Ž š ž €\par\bigskip German umlauts as\par Latin2: A˘¤A´s˘ A´z˘ \inputencoding{utf8} Latin3: ¤hˆˆ UTF-8: ^^c3^^a4^^c3^^b6^^c3^^bc\par \inputencoding{latin1} ASCII: Latin1: ^^c3^^a4^^c3^^b6^^c3^^bc\par cp1257: C´¤C´¶C´¼ ... \inputencoding{cp1257} cp1257: ^^c3^^a4^^c3^^b6^^c3^^bc \end{document}

1

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encoding today

Advance: (semi)automatic detection of input encoding Package selinput allows selection of input encoding by mappings between the characters and their glyph names! \usepackage{selinput,textcomp} A¨O¨ U¨a¨o¨uߨ Sˇ Zˇ ˇsˇz € \begin{document} \SelectInputMappings{% adieresis={ä}, germandbls={ß}, Euro={€},% German umlauts as scaron={š}, zcaron={ž}, Scaron={Š}, Zcaron={Ž}} UTF-8: ¨a¨o¨u \fontencoding{OT1}\selectfont Latin1: A˜¤A˜¶A˜¼ ÄÖÜäöüß Š Ž š ž €\par\bigskip German umlauts as\par Latin2: A˘¤A´s˘ A´z˘ \inputencoding{utf8} Latin3: ¤hˆˆ UTF-8: ^^c3^^a4^^c3^^b6^^c3^^bc\par \inputencoding{latin1} ASCII: Latin1: ^^c3^^a4^^c3^^b6^^c3^^bc\par cp1257: C´¤C´¶C´¼ ... \inputencoding{cp1257} cp1257: ^^c3^^a4^^c3^^b6^^c3^^bc \end{document} A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 1 Font: input encoding today

selinput provides a command to restrict the search for the right input encoding: \SelectInputEncodingSet{enc1,enc2,...} Both \SelectInputEncodingSet and \SelectInputMappings can be put in the preamble and/or in the document Font encoding selection: \inputencoding{encoding} (for inputenc) or \InputEncoding{encoding} (for inputenx) Character association: \DeclareInputText{slot }{text } \DeclareInputMath{slot }{math }. Examples (from latin1.def): \DeclareInputText{214}{\AE} → Æ (text mode) \DeclareInputMath{188}{\} → µ (math mode) Special treatment of Unicode characters in utf8x.def (details: utf8ienc.dtx): \DeclareUnicodeCharacter{00E4}{\"a} → ä Package textcomp provides a lot of additional glyphs for diacritics and symbols for text: \capitalcaron␣A → A, \capitaltie␣EE → EE, \textcelsius ℃, \textcopyright ©, \texttrademark ™, \textmusicalnote ♪, \textleaf ,... A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encoding today

selinput package options: warning outputs the detected encoding name also to the terminal; ucs ensure the package ucs, supporting utf8x definition map, is loaded if UTF-8 is detected; utf8=... allows to load UTF-8 encoding files different from the default utf8.def additional inputenx commands: \CurrentInputEncodingName is the name of the encoding given as option to \usepackage or as argument to \InputEncoding. It can be an alias. Example: ascii, us-ascii, clean7bit, ascii-print, ascii-printable are all aliases for x-ascii.def (ASCII encoding with 8-bit chars disabled) \CurrentInputEncodingOption is the real encoding name (i.e., base encoding filename) \BeforeInputEncoding{code } and \AfterInputEncoding{code } allow to perform operations at the beginning and at the end of the encoding switches (\InputEncodingNameOld, \InputEncodingOptionOld and \InputEncodingNameNew are available in these hooks) A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: input encoding today

The underlying engine is the clever stringenc package, which provides the powerful \StringEncodingConvert command toconvert a string between different encodings (it supports both LATEX and plain TEX) Encoding definitions files is being re-casted in terms of stringenc (and have names prefixed by “se-”) They all are part of the oberdiek collection of packages contributed to CTAN (and mainteined) by Heiko Oberdiek (current rev. 30/11/2018) Note: in the inputenx documentation (currently v1.11 16/05/2016) the mentioned experimental inpmath package seems no longer available and the corresponding \DeclareMathMeaning command (which should substitute \DeclareInputMath) is undefined

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 (2) if it is already loaded, the font is selected; (3) otherwise LATEX search internal tables to find external font filename associated with the combination; (4) if a .tfm is found, it is loaded, otherwise font substitution takes place

Font: the output encoding scheme

LATEX follows its own New Font Selection Scheme (NFSS) NFSS allows rational font selection mechanism and independent changes to five font attributes Font families contains only a of all possible attributes combinations High-level font commands: to be used in the document Low-level font commands: intended to define new commands in packages or in the preamble \fontencoding{enc}, \fontfamily{fam}, \fontseries{ser}, \fontshape{sha}, \fontsize{size}{bslnskip} \selectfont Mechanism: (1) attributes combination gives a .tfm (text font metric) name;

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 (3) otherwise LATEX search internal tables to find external font filename associated with the combination; (4) if a .tfm is found, it is loaded, otherwise font substitution takes place

Font: the output encoding scheme

LATEX follows its own New Font Selection Scheme (NFSS) NFSS allows rational font selection mechanism and independent changes to five font attributes Font families contains only a subset of all possible attributes combinations High-level font commands: to be used in the document Low-level font commands: intended to define new commands in packages or in the preamble \fontencoding{enc}, \fontfamily{fam}, \fontseries{ser}, \fontshape{sha}, \fontsize{size}{bslnskip} \selectfont Mechanism: (1) attributes combination gives a .tfm (text font metric) name; (2) if it is already loaded, the font is selected;

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 (4) if a .tfm is found, it is loaded, otherwise font substitution takes place

Font: the output encoding scheme

LATEX follows its own New Font Selection Scheme (NFSS) NFSS allows rational font selection mechanism and independent changes to five font attributes Font families contains only a subset of all possible attributes combinations High-level font commands: to be used in the document Low-level font commands: intended to define new commands in packages or in the preamble \fontencoding{enc}, \fontfamily{fam}, \fontseries{ser}, \fontshape{sha}, \fontsize{size}{bslnskip} \selectfont Mechanism: (1) attributes combination gives a .tfm (text font metric) name; (2) if it is already loaded, the font is selected; (3) otherwise LATEX search internal tables to find external font filename associated with the combination;

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

LATEX follows its own New Font Selection Scheme (NFSS) NFSS allows rational font selection mechanism and independent changes to five font attributes Font families contains only a subset of all possible attributes combinations High-level font commands: to be used in the document Low-level font commands: intended to define new commands in packages or in the preamble \fontencoding{enc}, \fontfamily{fam}, \fontseries{ser}, \fontshape{sha}, \fontsize{size}{bslnskip} \selectfont Mechanism: (1) attributes combination gives a .tfm (text font metric) name; (2) if it is already loaded, the font is selected; (3) otherwise LATEX search internal tables to find external font filename associated with the combination; (4) if a .tfm is found, it is loaded, otherwise font substitution takes place A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: name convention

For encodings: Prefix description T standard 256-long text encoding TS symbols designed to extend a corresponding T encoding X text encodings not conforming to the strict requirements for T encodings M standard 256-long math encodings S other symbol encodings OT standard 128-long text encodings OM standard 128-long math encodings L local or systam-specific encodings E experimental encodings intended for wide distribution A other special applications U unknown or unclassified encodings For font families: should contain up to five lower case letters For font series: should contain up to four lower case letters For font shapes: should contain up to two lower case letters For symbol fonts: lower and upper case letters with no restriction Text symbols names: \text followed by the glyph name Math symbols names: \math followed by the glyph name A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

Standard (predefined) font encodings: encoding description declared by T1 LATEX text enc. (Latin, a..a. “Cork”) LATEX TS1 LATEX symbol enc. (Latin) LATEX T2A,,C LATEX text enc. (Cyrillic) Cyrillic support packages T3 LATEX phonetic alphabet enc. package TS3 LATEX phonetic alphabet enc. (extra symbols) tipa package T4 LATEX text enc. (African languages) — T5 LATEX text enc. (Vietnamese) — T7 LATEX text enc. (reserved for Greek) — OT1 TEX text enc. def. by Knuth LATEX OT2 TEX text enc. Cyrillic languages (obsolete) Cyrillic support packages OT3 TEX phonetic alphabet enc. (obsolete) — OT4 TEX text enc. extensions for Polish — OT6 TEX text enc. extensions for Armenian — OML TEX math enc. (italic) def. by Knuth LATEX OMS TEX math symbol enc. def. by Knuth LATEX OMX TEX math extended symbol enc. def. by Knuth LATEX X2 Extended text enc. (def. by Knuth (Cyrillic) Cyrillic support packages U Unknown enc. (arbitrary rubbish) LATEX Lhxx i Local enc. (for private encodings) — LV1 Encoding used with some VTEX fonts MicroPress LY1 Alternative to T1 encoding &Y

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

There are myriad of font families! Some of the most commonly used are

name description and samples cmr Computer Modern Roman cmss Computer Modern Sans cmtt Computer Modern Typewriter cmm CM Math Italic ΞϑΩ cmsy (CM Math Symbol) CM Math S†mbol∫ ÷ cmex (CM Math Extended)

ptm Adobe Times M Math Extended t phv Adobe Helvetica pcr Adobe Courier

line 1: \fontfamily{cmr}\selectfont Computer Modern Roman line 6 (only cmex10.tfm is available): (CM Math Extended)\hskip0.5em \usefont{OMX}{cmex}{m}{n}\selectfontCM\hskip1.0em% Math\hskip1.0em Extended\hskip1.0em \symbol{"04} \symbol{116}

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

cmex10 font table

´0 ´1 ´2 ´3 ´4 ´5 ´6 ´7 ´10x 64 65 66 67 68 69 70 71

´00x 0 1 2 3 4 5 6 7     D E F G ˝4x ˝0x ´11x 72 73 74 75 76 77 78 79 ´01x 8 9 10 11 12 13 14 15 H I K L M N O ´02x 16 17 18 19 20 21 22 23 ´12x 80 81 82 83 84 85 86 87 ˝5x         ˝1x ´13x P 88 89 R90 S 91 T 92 U 93 V 94 W 95 ´03x 24 25 26 27 28 29 30 31 X Y Z [ \ ] ^ _        ´14x 96 97 98 99 100 101 102 103 ´04x 32 33 34 35 36 37 38 39 ˝6x ´15x `104 a105 b106 c107 d108 e109 f110 g111 ! " # $ % & ' ˝2x 40 41 42 43 44 45 46 47 ´05x ´16x h 112 i 113 j 114 k 115 l 116 m 117 n 118 o119

( ) * + , - . / p q s t u v w ˝ 48 49 50 51 52 53 54 55 7x ´06x ´17x 120 121 122 123 124 125 126 127

˝3x ˝8 ˝9 ˝A ˝B ˝C ˝D ˝E ˝F ´07x 56 57  58  59  60  61  62 63 x y z { | } ~ 

       

Input position 77 (= "4D): the uppercase letter “M” Input position 97 (= "61): the lowercase letter “a” 2 Input position 116 (= "74): the lowercase letter “t”

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

It’s not so easy to identify the right .tfm file LATEX specs font TEX font name OT1 cmr m n 10 CM Roman 10 points cmr10 OT1 cmss m sl 1pc CM Sans Serif at 1 cmssi12 OML cmm m it 10pt CM Math Italic 10 points cmmi10 OMX cmex m n 10pt CM Math Extended 10 points cmex10 T1 ptm b it 1in PostScript Times Bold Italic 1 inch ptmb8t at 1in LATEX naming convention for font filenames: F TT W [V.] [N.] E DD Foundry Typeface name Weight Variant Encoding Expansion Design size p=Adobe tm=Times b=bold i=italic 8t=T1 n=narrow 10=10 pt

PSNFSS collection: a complete working setup of the LATEX NFSS for use with the common “Base 35” PostScript fonts (they are built into any Level 2 PostScript printing device and the ) plus and a number of free fonts. PostScript fonts have file extensions (.afm .pfa, .pfb, ecc.) AFM = Adobe Font Metrics, PFA = Printer Font ASCII, PFB = Printer Font Binary A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

OT1, T1 and TS1 encodings are available by appending “7t”, “8t”, “8c” to font name fam. series shape “external” PS font name ptm m n, sl, it, sc Times-Roman (ptmr), Times-Italic (ptmri) ptm b, (bx) n, sl, it, sc Times-Bold (ptmb), Times-BoldItalic (ptmbi) pbk m n, sl, it, sc Bookman-Light (pbkl), Bookman-LightItalic (pbkli) pbk b, (bx) n, sl, it, sc Bookman-Demi (pbkd), Bookman-DemiItalic (pbkdi) phv m n, sl, sc Helvetica (phvr), Helvetica-Oblique (phvro) phv b, (bx) n, sl, sc Helvetica-Bold (phvb), Helvetica-BoldOblique (phvbo) phv mc n, sl, sc Helvetica-Narrow (phvrrn), Helvetica-Narrow-Oblique (phvron) phv bc n, sl, sc Helvetica-Narrow-Bold (phvbrn), Helvetica-Narrow-BoldOblique (phvbon) pag m n, sl, it, sc AvantGuard-Book (pagk), AvantGuard-BookOblique (pagko) pag b, (bx) n, sl, it, sc AvantGuard-Demi (pagd), AvantGuard-DemiOblique (pagdo) Symbols and (U encoding only) psy m n Symbols (psyr) Σψµβολ pzd m n Zapf Dingbats (pzdr) 5<ËA DIB=

Font series attributes: weight and width Weight classes Width classes Ultra light ul Ultra condensed 50.0% uc Extra light el Extra condensed 62.5% ec Light l Condensed 75.0% c Semi light sl Semi condensed 87.5% sc Medium (normal) m Medium (normal) 100.0% m Semi bold sb Semi expanded 112.5% sx Bold b Expanded 125.0% x Extra bold eb Extra expanded 150.0% ex Ultra bold ub Ultra expanded 200.0% ux shape abbrev. normal (upright) n italic it Font shape attributes: slanted or oblique sl small caps sc upright italic ui OUTline o (with outline package) A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

A complete font change: \fontencoding{OT1}\fontfamily{cmss}\fontseries{bc}% \fontshape{sl}\fontsize{14}{16}\selectfont Alternatively, the \usefont command can be used (it automatically invokes \selectfont; possible \fontsize must be put immediately before it): \fontsize{10}{12}\usefont{OT1}{cmdh}{m}{n} OpenType1 Computer Modern Downhill medium upright at 10pts \DeclareFixedFont is used to define new commands that switch to a completely fixed font: \DeclareFixedFont{encoding}{family}{series}{shape}{size} Example: \DeclareFixedFont{\MyCodelineFont}% {\encodingdefault}{cmr}{m}{it}{7pt} \renewcommand{\theMyCodelineNum}% {\CodelineFont\fbox{line \arabic{MyCodelineNum}}} \theMyCodelineNum → line 312 Very fast (does not look up any internal table); definition is frozen A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Font: the output encoding scheme

Font substitution: \fontsize{14}{16}\usefont{OT1}{cmdh}{bc}{it} LaTeX Font Warning: Font shape ‘OT1/cmdh/bc/it’ undefined (Font) using ‘OT1/cmdh/m/n’ instead on input line 7

LaTeX Font Warning: Font shape ‘OT1/cmdh/bc/it’ in size <14> not available (Font) size <10> substituted on input line 7

Additional font encodings can be introduced with the commands: \DeclareFontEncoding{encoding}{text-settings}% {math-settings} \DeclareFontFamily{encoding}{family}{loading-settings} \DeclareFontShape{encoding}{family}{series}{shape}% {loading-info}{loading-settings} They enter the new font into the LATEX internal font tables. Example: \DeclareFontShape{T1}{emtt}{m}{n}{<-12> emtt10 <12-> emtt12}{}

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Looking at the available glyphs

When .tfm (Text Font Metric) are available, the package fonttable allows to show the glyphs in tabular form: \fonttable{font} ´0 ´1 ´2 ´3 ´4 ´5 ´6 ´7

´00x 0 1 2 3 4 5 6 7 ˝0x ´01x 8  9 10  11 12 ∴13 14 15

´02x  16 17 18 19 ♩ 20 21  22  23 ˝1x ´03x  24  25  26  27  28  29  30  31

´04x  32 ♀ 33 ♂ 34 ¤ 35  36  37  38 39 ˝2x ´05x 40 !41 " 42 # 43 $ 44 % 45 ♁ 46 ' 47

´06x ( 48 ) 49 * 50 + 51 , 52 - 53 ☼ 54 / 55 ˝3x ´07x 0 56 1 57 2 58 3 59 4 60 ◊ 61 6 62 7 63

´10x 8 64 9 65 ¬ 66 ; 67 < 68 = 69 > 70 ? 71 ˝4x wasy10 ´11x @ 72 A 73 B 74 C 75 D 76 E77 F78 G79

´12x H 80 I 81 J 82 K83 L84 85 86 87 ˝5x ´13x P 88 Q 89 R 90 91 92 U 93 V 94 W 95

´14x X 96 Y 97 Z 98 [ 99 \ 100 ] 101 ^ 102 _103 ˝6x ´15x ` 104 a105 b106 c 107 d 108 e109 f 110 ¢ 111

´16x h 112 þ 113 Þ 114 k 115 l 116 m 117 n 118 o 119 p q r s t u v w ˝7x ´17x 120 121 122 123 124 125 126 127 x y z { | } ~  ˝8 ˝9 ˝A ˝B ˝C ˝D ˝E ˝F

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Looking at the available glyphs

When .tfm (Text Font Metric) are available, the package fonttable allows to show the glyphs in tabular form: \fonttable{font} ´0 ´1 ´2 ´3 ´4 ´5 ´6 ´7

´20x 128 129 130 131 132 133 134 135 Ă Ą Ć Č Ď Ě Ę Ğ ˝8x ´21x Ĺ 136 Ľ 137 Ł 138 Ń 139 Ň 140 Ŋ 141 Ő 142 Ŕ 143

´22x 144 145 146 147 148 149 150 151 Ř Ś Š Ş Ť Ţ Ű Ů ˝9x ´23x Ÿ 152 Ź 153 Ž 154 Ż 155 IJ 156 İ 157 đ 158 § 159 ´24x 160 161 162 163 164 165 166 167 ă ą ć č ď ě ę ğ ˝Ax ´25x ĺ 168 ľ 169 ł 170 ń 171 ň 172 ŋ 173 ő 174 ŕ 175 ´26x 176 177 178 179 180 181 182 183 ř ś š ş ť ţ ű ů ˝Bx ´27x ÿ 184 ź 185 ž 186 ż 187 ij 188 ¡ 189 ¿ 190 £ 191 \fontrange{128}{255} OpenSans-BoldItalic-OSFigures-t1 ´30x 192 193 194 195 196 197 198 199 À Á Â Ã Ä Å Æ ˝Cx ´31x È 200 É 201 Ê 202 Ë 203 Ì 204 Í 205 Î 206 Ï 207

´32x 208 209 210 211 212 213 214 215 Ð Ñ Ò Ó Ô Õ Ö Œ ˝Dx ´33x Ø 216 Ù 217 Ú 218 Û 219 Ü 220 Ý 221 Þ 222 223 ´34x 224 225 226 227 228 229 230 231 à á â ã ä å æ ç ˝Ex ´35x è 232 é 233 ê 234 ë 235 ì 236 í 237 î 238 ï 239 ´36x 240 241 242 243 244 245 246 247 ð ñ ò ó ô õ ö œ ˝Fx ´37x ø 248 ù 249 ú 250 û 251 ü 252 ý 253 þ 254 ß 255 ˝8 ˝9 ˝A ˝B ˝C ˝D ˝E ˝F

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 2 Looking at the available glyphs

When .tfm (Text Font Metric) are available, the package fonttable allows to show the glyphs in tabular form: \fonttable{font}

´0 ´1 ´2 ´3 ´4 ´5 ´6 ´7

´00x 0 1 2 3 4 5 6 7 − · × ∗ ÷  ± ∓ ˝0x ´01x 8 9 10 11 12 13 14 15 ⊕ ⊗ ◦ • ´02x 16 17 18 19 20 21 22 23  ≡ ⊆ ⊇ ≤ ≥   ˝1x ´03x 24 25 26 27 28 29 30 31 ∼ ≈ ⊂ ⊃   ≺ ´04x 32 33 34 35 36 37 38 39 ← → ↑ ↓ ↔ % & ' ˝2x ´05x 40 41 42 43 44 45 46 ∝47 ⇐ ⇒ ⇑ ⇓ ⇔ - . ´06x 48 ∞49 50 51 52 53 54 55 0 ∈ 3 4 5 6 7 ˝3x ´07x 56 57 58 ∅59 60 61 62 63 ∀ ∃ ¬ < = > ⊥ ´10x 64 65 66 67 68 69 70 71 ℵ A B C D E F G ˝4x zplmb7y ´11x 72 73 74 75 76 77 78 79 H I J K L M N O ´12x 80 81 82 83 84 85 86 87 P Q R S T U V W ˝5x ´13x 88 89 90 91 92 93 94 95 X Y Z ∪ ∩ ] ∧ ∨ ´14x 96 97 98 99 100 101 102 103 ` a b c d e { } ˝6x ´15x 104 105 106 107 108 109 110 111 h i | k l m \ o ´16x 112 113 114 115 116 117 118 119 √ q ∇ ∫ t u v w ˝7x ´17x §120 †121 ‡122 ¶123 124 125 126 127 ♣ ♦ ♥ ♠ ˝8 ˝9 ˝A ˝B ˝C ˝D ˝E ˝F

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 3 Looking at the available glyphs

Some (among so many!) packages that provides access to text and symbol fonts:

bbding dingbat euler hvmath ifsym mathpazo psnfssx-8r ccfonts eulervm latexsym mathptmx palatino-nfss chancery eufrak lucold -ltx textcomp tipa charter eurosym luximono pifont wasysym cmbright fourier helvet marvosym psnfssx-luc

Obsolete: times, palatino, mathptm, mathpple,

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Looking at the available glyphs

Standard CM fonts are available at some sizes only: \fontfamily{cmr}\fontsize{3cm}{3.5cm}\selectfont A huge size!

LaTeX Font Warning: Font shape ‘OT1/cmr/m/n’ in size <142.26378> not available (Font) size <51.59> substituted on input line 11.

....

LaTeX Font Warning: Size substitutions with differences (Font) up to 90.67378pt have occurred.

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Looking at the available glyphs

fix-cm or type1cm packages allow CM fonts at arbitrary size \fontfamily{cmr}\fontsize{3cm}{3.5cm}\selectfont A huge size! A huge size!

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Mixing different input and output encodings

The packages inputenx/inputenc and fontenc allow to locally switch among encodings, in different document fragments: \usepackage{fix-cm} \usepackage[T2A,T1]{fontenc} Русский язык \usepackage[koi8-r,latin1]{inputenx} heißt auf Deutsch: die \newenvironment{Cyr}{\InputEncoding{koi8-r}% russische Sprache. \fontencoding{T2A}\selectfont}{} Sanoi suomen kielellä: \begin{document} \raggedright \begin{Cyr}òÕÓÓËÉÊ ÑÚÙË\end{Cyr}\par venäjän kieli heißt auf Deutsch: die russische Sprache.\par Sanoi suomen kielellä: venäjän kieli\par\bigskip Not all output Not all output encodings encodings have a full have a full set of glyphs:\par\smallskip set of glyphs: \fontfamily{cmr}\selectfont \j{} \ng{} \NG{} \textperthousand{}  ŋ Ŋ % % \textpertenthousand{} \par % % \fontfamily{ptm}\selectfont \j{} \ng{} \NG{} \textperthousand{} \textpertenthousand{} \end{document} 1 A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Adding custom TrueType Fonts

Official documentation: The font installation guide (01/12/2004) The LATEX 2ε font guide (27/11/2005) chap. 7 of The LATEX Companion, 2nd ed. (2004) Step-by-step instructions: www.radamir.com/tex/ttf-tex.htm (Win, , Mac) log.malchiodi.com/2014/11/04/using-truetype-fonts-... Fonts (mostly nonfree, but with demo): The LATEX Font Catalog( www.tug.dk/FontCatalogue) www.dafont.com https://www.urbanfonts.com/fonts

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Adding custom TrueType Fonts

Puzzle components: TFM “TEX Font Metrics” (.tfm) files: describe the dimensions of each character (glyph) and few font-wide parameters, (used by TEX for layout) PFB Type 1 fonts, “Printer Font Binary” (.pfb) files: Adobe PostScript Type 1 procedures describing the shape of each glyph. Are included by the output driver in the output file (PostScript, PDF, . . . ). VF “Virtual Font” (.vf) files: provide a mapping “glyphs in the .tfm” → “glyph order used by TEX” (i.e., specified with the encoding file). Not all fonts need them ENC “Encoding” (.enc) files: ordering of glyphs called “font-encoding vector”. Depends also on languages MAP “map” files (.map): tie the above files together. Specific to output drivers. Associate TFM and Type 1 font names with PFB files, to macth shapes of glyphs in those fonts. For TEX to typeset glyphs from a given font: all of them need to be properly installed for that font system databases must be updatedA course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Adding custom TrueType Fonts

Two tools available: fontinst: PostScript Type 1. Scripts of TEXcommands (not easy to use) otftottf: command-line tool accepting set of options for a single OpenType font file.

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Adding custom TrueType Fonts

Example: get OldeEnglish.zip from www.dafont.com, unzip it, then: mkdir tmpFonts mv OldeEnglish.ttf tmpFonts/oldenglish.ttf cd tmpFonts export TEXMFDIST=‘kpsewhich -var-value=TEXMFDIST‘# LaTeX distro root export TEXMFHOME=‘kpsewhich -var-value=TEXMFHOME‘ export TEXMFSYSVAR=‘kpsewhich -var-value=TEXMFSYSVAR‘ ttf2afm -e T1-WGL4.enc -o recoldenglish.afm oldenglish.ttf > Warning: ttf2afm (file oldenglish.ttf): glyph ’hungarumlaut’ not found ... > Warning: ttf2afm (file oldenglish.ttf): glyph ’Germandbls’ not found afm2tfm recoldenglish.afm -T T1-WGL4.enc recoldenglish.tfm >> urban.map Contents of file urban.map: recoldenglish OldeEnglish-Regular " T1Encoding ReEncodeFont "

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Adding custom TrueType Fonts mkdir $TEXMFDIST/fonts/afm/urban/oldenglish mkdir $TEXMFDIST/fonts/tfm/urban/oldenglish mkdir $TEXMFDIST/fonts//urban/oldenglish mv recoldenglish.afm $TEXMFDIST/fonts/afm/urban/oldenglish mv recoldenglish.tfm $TEXMFDIST/fonts/tfm/urban/oldenglish mv oldenglish.ttf $TEXMFDIST/fonts/truetype/urban/oldenglish updmap --sys --enable MixedMap=urban.map Contents of the file oldenglish.sty in $TEXMFDIST/tex//urban : \DeclareFontFamily{T1}{oldenglish}{}% %% every shape is mapped to medium normal(we got the DEMO font only) \DeclareFontShape{T1}{oldenglish}{b}{n}{<-> recoldenglish}{}% \DeclareFontShape{T1}{oldenglish}{bx}{n}{<->ssub * recoldenglish/b/n}{}% \DeclareFontShape{T1}{oldenglish}{m}{it}{<-> recoldenglish}{}% \usepackage[T1]{fontenc}% \renewcommand{\rmdefault}{oldenglish} \renewcommand{\sfdefault}{oldenglish}

Re-generate the database: texhash A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Adding custom TrueType Fonts

Example: \usepackage{lmodern,ragged2e} \usepackage{oldenglish} \usepackage[T1]{fontenc} With oldenglish: \usepackage{lipsum} Quisque ullamcorper placerat ipsum. Cras nibh. \begin{document} Morbi vel justo vitae lacus tincidunt ultrices. \large\raggedright {\usefont{T1}{lmr}{m}{n} Lorem ipsum dolor sit amet, consectetuer With \verb+oldenglish+:}\par adipiscing elit. \medskip 0123456789 \lipsum[4][1-4]\par 0123456789\par With fenna \bigskip Quisque ullamcorper placerat ipsum. Cras {\usefont{T1}{lmr}{m}{n} nibh. Morbi vel justo vitae lacus tincidunt ultrices. With \texttt{fenna}:}\par \medskip Lorem ipsum dolor sit amet, consectetuer \usefont{T1}{urb}{m}{n} adipiscing elit. \lipsum[4][1-4]\par 0123456789 0123456789 \end{document} 1 A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Using OpenType Fonts

OTF design principles: each unique combination of weight, width, optical size, and variant is associated with a separate font file Example: Kepler family: 6 weights (light, regular, medium, semibold, bold, black); 4 widths (condensed, semicondensed, regular, extended); 4 optical sizes (caption, regular, subhead, display); 2 vaiants (upright, italic) Total: 168 different OTF files! (some combinations are missed) the installation needs almost the same steps as that of TTF fonts the otftottf engine can automate the installation process via command-line options, if a TDS-compliant systemwide LATEX installation is already there (TDS = TEX Directory Structure) unfortunately, the program work on one single file at a time, so the installation of a full family either becomes an extremely time-consuming task, or requires scripting activity The installation and use of OpenType fonts in LATEX, John D. Owens, TUGboat 27 (2006). A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Alternatives

To access arbitrary system fonts: X TE EX/LuaTEX engines with fontspec package use commands like \setmainfont from that package compile with xelatex or lualatex

\usepackage{lipsum} \usepackage{fontspec} Morbi luctus, wisi viverra \setmainfont{Apple Chancery} faucibus pretium, nibh est \begin{document} \raggedright placerat odio, nec commodo \huge wisi enim eget quam. \lipsum[9][1]\par 0123456789 0123456789 \end{document}

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019 Alternatives

Pros X TE EX natively supports Unicode and assumes UTF-8 input encoding. It provides easy support for any kind of fonts, also non-TFM, with modern typographic technologies (OTF, AAT and Graphite) LuaTEX in addition provides embedded support for the Lua programming language both are available for all most popular (Linux, X, Windows) both come already bundled with most popular LATEX distributions both are intended to update and extend TEX capabilities both are actively developed and improved Cons both are not totally stable in all respects both are less widely used than standard LATEX, yet both are not supported/accepted by a number of journals, yet

A course on LaTeX&friends .:. G. Zanghirati & DOMAST .:. Helsinki, May 2019