最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents...

90
最近の L A T E X は○○ 山下 弘展 2020 11 21 Online.tex 2020

Transcript of 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents...

Page 1: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

最近のLATEXは○○山下弘展

2020年 11月 21日Online.tex 2020

Page 2: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

自己紹介山下弘展 (Hironobu Yamashita)▶ Twitter, GitHub: @aminophen▶ 日本語TEX開発コミュニティ (texjporg)の人

▶ 仕事にTEX/LATEXは使いません▶ 好きな「ぼうし」の色は緑です

Page 3: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

自己紹介山下弘展 (Hironobu Yamashita)▶ Twitter, GitHub: @aminophen▶ 日本語TEX開発コミュニティ (texjporg)の人▶ 仕事にTEX/LATEXは使いません

▶ 好きな「ぼうし」の色は緑です

Page 4: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

自己紹介山下弘展 (Hironobu Yamashita)▶ Twitter, GitHub: @aminophen▶ 日本語TEX開発コミュニティ (texjporg)の人▶ 仕事にTEX/LATEXは使いません▶ 好きな「ぼうし」の色は緑です

Page 5: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石

最近のLATEXを知りたければ公式ドキュメントを読もう

(当然 )

Page 6: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石

最近のLATEXを知りたければ公式ドキュメントを読もう

(当然 )

Page 7: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数

初期~2014年1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 8: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 9: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 10: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 4

31 2020-02 532 2020-10 7

絶賛増量中

Page 11: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 5

32 2020-10 7

絶賛増量中

Page 12: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 13: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 14: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 15: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

定石LATEX 2𝜀付属文書 (texdoc ltnews)ページ数初期~2014年

1 1994-06 12 1994-12 13 1995-06 14 1995-12 15 1996-06 1

.

.16 2003-12 117 2005-12 218 2007-12 欠番19 2009-09 120 2011-06 221 2014-05 2

“New LaTeX2e bug-fix policy”22 2015-01 223 2015-10 224 2016-02 225 2016-03 126 2017-01 227 2017-04 1

“UTF-8: the new default input encoding”28 2018-04 329 2018-12 430 2019-10 431 2020-02 532 2020-10 7

絶賛増量中

Page 16: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

LATEX News Issue 31 (February 2020)LATEX NewsIssue 31, February 2020

Contents

Experiences with the LATEX -dev formats 49

Concerning this release . . . (LuaLATEX engine) 49

Improved load-times for expl3 49

Improvements to LATEX font selection: NFSS 50Extending the shape management in NFSS . . 50Extending the font series management in NFSS 50Font series defaults per document family . . . . 51Handling of nested emphasis . . . . . . . . . . 51Providing font family substitutions . . . . . . . 51Providing all text companion symbols by default 51New alias size function for use in .fd files . . 52Suppress unnecessary font substitution warnings 52

Other changes to the LATEX kernel 52UTF-8 characters in package descriptions . . . 52Fix inconsistent hook setting when

loading packages . . . . . . . . . . . . . . 52Avoid spurious warning if LY1 is made the

default encoding . . . . . . . . . . . . . . 52Ensure that \textbackslash remains robust . 52Make math delimiters robust in a different way 52Allow more write streams with filecontents

in LuaTEX . . . . . . . . . . . . . . . . . . 52Allow spaces in filecontents option list . . . 52New reverselist Lua callback type . . . . . . 52

Changes to packages in the graphics category 53Make color/graphics user-level commands robust 53

Changes to packages in the tools category 53Fixed column depth in boxed multicols . . . . 53Ensure that multicols does not lose text . . . 53Allow spaces in \hhline arguments . . . . . . 53

LATEX requirements on engine primitives 53

Experiences with the LATEX -dev formatsAs reported in the previous LATEX News, we have madea pre-release version of the LATEX kernel available asLATEX-dev. Overall, the approach of having an explicittesting release has been positive: it is now readilyavailable in TEX systems and is getting real usebeyond the team.

The current release has been tested by a number ofpeople, and we have had valuable feedback on a rangeof the new ideas. This has allowed us to fix issues inseveral of the new features, as described below.We wish to thank all the dedicated users who have

been trying out the development formats, and weencourage others to do so. Pre-testing in this way doesmean that, for the vast majority of users, problems aresolved before they even appear!

Concerning this release . . . (LuaLATEX engine)The new LuaHBTEX engine is LuaTEX with anembedded HarfBuzz library. HarfBuzz can be used bysetting a suitable renderer in the font declaration. Abasic interface for that is provided by fontspec. Thisadditional font renderer will greatly improve the shapingof various scripts when using LuaLATEX, many of whichare currently handled correctly only by X ETEX, whichalways uses HarfBuzz.To simplify testing of the new engine, binaries have

already been added to MiKTEX and TEX Live 2019and both distributions have already now changed theLuaLATEX-dev format to use it.Going forward, LuaLATEX (and LuaLATEX-dev) will

both use the LuaHBTEX engine. The timing of theswitch to the LuaHBTEX engine depends on thedistribution you use (for TEX Live this will be withTEX Live 2020).

Improved load-times for expl3The LATEX3 programming layer, expl3, has over thepast decade moved from being largely experimental tobroadly stable. It is now used in a significant number ofthird-party packages, most notably xparse, for defininginterfaces in cases where no expl3 code is “visible”. Inaddition, most LATEX documents compiled using X ETEXor LuaTEX load fontspec, which is written using expl3.The expl3 layer contains a non-trivial number of

macros, and when used with the X ETEX and LuaTEXengines, it also loads a large body of Unicode data. Thismeans that even on a fast computer, there is a relativelylarge load time when using expl3.For this release, the team have made adjustments in

the LATEX2ε kernel to pre-load a significant portion ofexpl3 when the format is built. This is transparent tothe user, other than the significant decrease in documentprocessing time: there will be no “pause” whilst loading

LATEX News, and the LATEX software, are brought to you by the LATEX3 Project Team; Copyright 2020, all rights reserved. –49

the Unicode data files. Loading expl3 in documents andpackages can continue to be done as usual; eventually, itwill be possible to omit\RequirePackage{expl3}entirely but, to support older formats, this is stillrecommended at present.

Improvements to LATEX’s font selectionmechanism (NFSS)Extending the shape management in NFSSOver time, more and more fonts have become availablefor use with LATEX. Many such font families offeradditional shapes such as small caps italic (scit), smallcaps slanted (scsl) or swash (sw). By using \fontshapethose shapes can be explicitly selected. For the swashshapes there is also \swshape and \textsw available.In the original font selection implementation a request

to select a new shape always overrode the current shape.With the 2020 release of LATEX this has changed and\fontshape can now be used to combine small capitalswith italic, slanted or swash letters, either by explicitlyasking for scit, etc., or by asking for italics whentypesetting already in small caps, and so forth.Using \upshape will still change italics or slanted

back to an upright shape but will not any longer alterthe small caps setting. To change small capitals backto upper/lower case you can now use \ulcshape (or\textulc) which in turn will not change the fontwith respect to italics, slanted or swash. There is oneexception: for compatibility reasons \upshape willchange small capitals back to upright (n shape), if thecurrent shape is sc. This is done so that something like\scshape...\upshape continues to work as before, butwe suggest that you don’t use that deprecated methodin new documents.Finally, if you want to reset the shape back to normal

you can use \normalshape which is a shorthand for\upshape\ulcshape.The way that shapes combine with each other is not

hardwired; it is customizable and extensible if there isever a need for this. The mappings are defined through\DeclareFontShapeChangeRule and the details fordevelopers are documented in source2e.pdf.The ideas for this interface extension have been

pioneered in fontspec by Will Robertson for Unicodeengines, and in fontaxes by Andreas Bühmann andMichael Ummels for pdfTEX; they are by now used inmany font support packages.

Extending the font series management in NFSSMany of the newer font families also come providedwith additional weights (thin, semi-bold, ultra-bold,etc.) or several running widths, such as condensed orextra-condensed. In some cases the number of different

values for series (weight plus width) is really impressive:for example, Noto Sans offers 36 fonts, from ultra-lightextra condensed to ultra-bold medium width.Already in its original design, NFSS supported 9

weight levels, from ultra-light (ul) to ultra-bold (ub),and also 9 width levels, from ultra-condensed (uc) toultra-expanded (ux): more than enough, even for a fontfamily like Noto Sans. Unfortunately, some font supportpackages nevertheless invented their own names, so inrecent years you have been able to find all kinds ofnon-standard series names (k, i, j and others), makingit impossible to combine different fonts successfullyusing the standard NFSS mechanisms.Over the course of the last year a small number

of individuals, notably, Bob Tennent, Michael Sharpeand Marc Penninga, have worked hard to bring thisunsatisfactory situation back under control; so todaywe are happy to report that the internal font supportfiles for more than a hundred font families are allback to following the standard NFSS conventions.Combining them is now again rather nice and easy, andfrom a technical perspective they can now be easilymatched; but, of course, there is still the task of choosingcombinations that visually work well together.In the original font selection implementation, a request

to select a new series always overrode the current one.This was reasonable because there were nearly no fontsavailable that offered anything other than a medium ora bold series. Now that this has changed and familiessuch as Noto Sans are available, combining weight andwidth into a single attribute is no longer appropriate.With the 2020 release of LATEX, the management ofseries therefore changed to allow independent settings ofthe weight and the width attributes of the series.For most users this change will be largely transparent

as LATEX offers only \textbf or \bfseries to selecta bolder face (and \textmd and \mdseries to returnto a medium series): there is no high-level commandfor selecting a condensed face, etc. However, using theNFSS low-level interface it is now possible to ask for, say,\fontseries{c}\selectfont to get a condensed face(suitable for a marginal note) and that would still allowthe use of \textbf inside the note, which would selecta bold-condensed face (and not a rather odd-lookingbold-extended face in the middle of condensed type).The expectation is that this functionality will be

used largely by class and package designers but, giventhat the low-level NFSS commands are usable on thedocument level and that they are not really difficult toapply, there are probably also a number of users whowill enjoy using these new possibilities that bring LATEXback into the premier league for font usage.The ways in which the different series values

combine with each other is not hardwired but is again

–50

customizable and extensible. The mappings are definedthrough \DeclareFontSeriesChangeRule and thedetails for developers are documented in source2e.pdf.

Font series defaults per document familyWith additional weights and widths now being availablein many font families, it is more likely that somebodywill want to match, say, a medium weight serif familywith a semi-light sans serif family, or that with onefamily one wants to use the bold-extended face when\textbf is used, while with another it should be bold(not extended) or semibold, etc.In the past this kind of extension was provided

by Bob Tennent’s mweights package, which has beenused in many font support packages. With the 2020release of LATEX this feature is now available out ofthe box. In addition we also offer a document-levelinterface to adjust the behavior of the high-level seriescommands \textbf, \textmd, and of their declarationforms \bfseries and \mdseries, so that they can havedifferent effects for the serif, sans serif and typewriterfamilies used in a document.For example, specifying\DeclareFontSeriesDefault[rm]{bf}{sb}\DeclareFontSeriesDefault[tt]{md}{lc}

in the document preamble would result in \textbfproducing semi-bold (sb) when typesetting in a romantypeface. The second line says that the typewriterdefault face (i.e., the medium series md) should be alight-condensed face. The optional argument here can beeither rm, sf or tt to indicate one of the three main fontfamilies in a document; if omitted you will change theoverall document default instead. In the first mandatoryargument you specify either md or bf and the secondmandatory argument then gives the desired series valuein NFSS nomenclature.

Handling of nested emphasisIn previous releases of LATEX, nested \emph commandsautomatically alternated between italics and upright.This mechanism has now been generalised so that youcan now specify for arbitrary nesting levels how emphasisshould be handled.The declaration \DeclareEmphSequence expects a

comma separated list of font declarations correspondingto increasing levels of emphasis. For example,\DeclareEmphSequence{\itshape,%

\upshape\scshape,\itshape}uses italics for the first, small capitals for the second,and italic small capitals for the third level (provided youuse a font that supports these shapes). If there are morenesting levels than provided, LATEX uses the declarationsstored in \emreset (by default \ulcshape\upshape) forthe next level and then restarts the list.

The mechanism tries to be “smart” by verifyingthat the given declarations actually alter the currentfont. If not, it continues and tries the next level—theassumption being that there was already a manual fontchange in the document to the font that is now supposedto be used for emphasis. Of course, this only works if thedeclarations in the list’s entries actually change the fontand not, for example, just the color. In such a scenarioone has to add \emforce to the entry, which directs themechanism to use the entry, even if the font attributesappear to be unchanged.

Providing font family substitutionsGiven that pdfTEX can only handle fonts with up to256 glyphs, a single font encoding can only supporta few languages. The T1 encoding, for example, doessupport many Latin-based scripts, but if you wantto write in Greek or Cyrillic then you will need toswitch encodings to LGR or T2A. Given that not everyfont family offers glyphs in such encodings, you mayend up with some default family (e.g., ComputerModern) that doesn’t blend in well with the chosendocument font. For such cases NFSS now offers\DeclareFontFamilySubstitution, for example:\DeclareFontFamilySubstitution{LGR}

{Montserrat-LF}{IBMPlexSans-TLF}tells LATEX that if you are typesetting in the sans seriffont Montserrat-LF and the Greek encoding LGR isasked for, then LATEX should use IBMPlexSans-TLF tofulfill the encoding request.The code is based on ideas from the substitutefont

package by Günter Milde, but the implementation isdifferent.

Providing all text companion symbols by defaultThe text companion encoding TS1 was originally notavailable by default, but only when the textcomppackage was loaded. The main reason for this waslimited availability of fonts with this encoding otherthan Computer Modern; another was the memoryrestrictions back in the nineties. These days neitherlimitation remains, so with the 2020 release all thesymbols provided with the textcomp package areavailable out of the box.Furthermore, an intelligent substitution mechanism

has been implemented so that glyphs missing in somefonts are automatically substituted with default glyphsthat are sans serif if you typeset in \textsf andmonospaced if you typeset using \texttt. In the pastthey were always taken from Computer Modern Romanif substitution was necessary.This is most noticeable with \oldstylenums which are

now taken from TS1 so that you no longer get 1234 but1234 when typesetting in sans serif fonts and 1234 whenusing typewriter fonts.

–51

If there ever is a need to use the original (in-ferior) definition, then that remains available as\legacyoldstylenums; and to fully revert to the oldbehavior there is also \UseLegacyTextSymbols. Thelatter declaration reverts \oldstylenums and alsochanges the footnote symbols, such as \textdagger,\textparagraph, etc., to pick up their glyphs from themath fonts instead of the current text font (this meansthey always keep the same shape and do not nicely blendin with the text font).With the text companion symbols as part of the

kernel, it is normally no longer necessary to load thetextcomp package, but for backwards compatibility thispackage will remain available. There is, however, oneuse case where it remains useful: if you load the packagewith the option error or warn then substitutions willchange their behavior and result in a LATEX error or aLATEX warning (on the terminal), respectively. Withoutthe package the substitution information only appearsin the .log file. If you use the option quiet, then eventhe information in the transcript is suppressed (which isnot really recommended).

New alias size function for use in .fd filesMost of the newer fonts supported in TEX have beenset up with the autoinst tool by Marc Penninga. Inthe past, this program set up each font using the facename chosen by that font’s designer, e.g., “regular”,“bold”, etc. These face names were then mapped bysubstitution to the standard NFSS series names, i.e.,“m” or “b”. As a result one got unnecessary substitutionwarnings such as “Font T1/abc/bold/n not found,using T1/abc/b/n instead”.We now provide a new NFSS size function, alias,

that can and will be used by autoinst in the future. Itprovides the same functionality as the subst functionbut is less vocal about its actions, so that only significantfont substitutions show up as warnings.

Suppress unnecessary font substitution warningsMany sans serif fonts do not have real italics but usuallyonly oblique/slanted shapes, so the substitution ofslanted for italics is natural and in fact many designerstalk about italic sans serif faces even if in reality theyare oblique.With nearly all sans serif font families, the LATEX

support files therefore silently substitute slanted if youask for \itshape or \textit. This is also true forComputer Modern in T1 encoding but in OT1 you got awarning on the terminal even though there is nothingyou can do about it. This has now been changed toan information message only, written to the .log file.

(github issue 172)

Other changes to the LATEX kernelUTF-8 characters in package descriptionsIn 2018 we made UTF-8 the default input encodingfor LATEX but we overlooked the case of non-ASCIIcharacters in the short package descriptions usedin declarations, e.g., in the optional argument to\ProvidesPackage. They worked (sometimes) before,but the switch to UTF-8 made them always generate anerror. This has been corrected. (github issue 52)

Fix inconsistent hook setting when loading packagesAs part of loading a package, the command\package.sty-h@@k gets defined. However, attemptingto load a package a second time resulted in this hookbecoming undefined again. Now the hook remainsdefined so that extra loading attempts do not changethe state of LATEX (relevant only to package developers).

(github issue 198)

Avoid spurious warning if LY1 is made the default encodingMaking LY1 the default encoding, as is done by somefont support packages, gave a spurious warning evenif \rmdefault was changed first. This was corrected.

(github issue 199)

Ensure that \textbackslash remains robustIn the last release we made most document-levelcommands robust, but \textbackslash became fragileagainwhenever \raggedright or similar typesettingwas used. This has been fixed. (github issue 203)

Make math delimiters robust in a different wayMaking math delimiters robust caused an issue in somesituations. This has been corrected. This also involveda correction to amsmath. (github issue 251)

Allow more write streams with filecontents in LuaTEXMost TEX engines only support a maximum of sixteenconcurrently open write streams, and when those havebeen used up, then filecontents or any other codetrying to open one will fail. In LuaTEX more writestreams are available and those can also now be utilised.

(github issue 238)

Allow spaces in filecontents option listLeaving spaces or newlines in the option list preventedthe options from being correctly recognized. Thishas been corrected. (github issue 256)

New reverselist Lua callback typeA new callback type, reverselist, was added:post_mlist_to_hlist_filter andpost_linebreak_filter are now of this type.

–52

Changes to packages in the graphics categoryMake color & graphics user-level commands robustSome of the user-level commands in color, graphics andgraphicx, such as \textcolor or \includegraphics,were still fragile so didn’t work in moving arguments.All of these are now robust. (github issue 208)

Changes to packages in the tools categoryFixed column depth in boxed multicolsThe multicols environment was setting \maxdepthwhen splitting boxes; but, due to the way the internalinterfaces of LATEX are designed, it should haveused \@maxdepth instead. As a result, balancedboxed multicols sometimes ended up having differentheights even if they had exactly the same content.

(github issue 190)

Ensure that multicols does not lose textThe multicols environment needs a set of consecutivelynumbered boxes to collect column material. The waythose got allocated could result in disaster if otherpackages allocated most boxes below box 255 (whichTEX always uses for the output page). In the originalimplementation that problem was avoided becauseone could only allocate box numbers below 255, butnowadays the LATEX allocation routine allows allocatingbox numbers both below and above 255. So theassumption that when asking for, say, 20 boxes youalways get a consecutive sequence of 20 box registernumbers became no longer true: some of the columnmaterial could end up in box 255, where it would getoverwritten. This has now been corrected by allocatingall necessary boxes with numbers above 255 wheneverthere aren’t enough lower-numbered registers available.

(github issue 237)

Allow spaces in \hhline argumentsThe \hhline command, which allows the specificationof rule segments in tabular environments, nowallows (but ignores) spaces between its tokens: so\hhline{: = : =} is now allowed and is equivalent to\hhline{:=:=}. This matches similar token argumentsin LATEX such as the [h t p] argument on floats. Asimilar change has been made to the extended \hhlinecommand in the colortbl package. (github issue 242)

LATEX requirements on engine primitivesSince the finalization of ε-TEX in 1999, a numberof additional ‘utility’ primitives have been added topdfTEX. Several of these are broadly useful and havebeen required by expl3 for some time, most notably\pdfstrcmp. Over time, a common set of these ‘post-ε-TEX’ primitives have been incorporated into X ETEX and(u)p-TEX; they were already available in LuaTEX.

A number of these additional primitives are needed tosupport new or improved functionality in LATEX. This isseen for example in the improved UTF-8 handling, whichuses \ifincsname. The following primitive functionality(which in LuaTEX may be achieved using Lua code) willtherefore be required by the LATEX kernel and corepackages from the start of 2021:

• \expanded

• \ifincsname

• \ifpdfprimitive

• \pdfcreationdate

• \pdfelapsedtime

• \pdffiledump

• \pdffilemoddate

• \pdffilesize

• \pdflastxpos

• \pdflastypos

• \pdfmdfivesum

• \pdfnormaldeviate

• \pdfpageheight

• \pdfpagewidth

• \pdfprimitive

• \pdfrandomseed

• \pdfresettimer

• \pdfsavepos

• \pdfsetrandomseed

• \pdfshellescape

• \pdfstrcmp

• \pdfuniformdeviate

For ease of reference, these primitives will be referredto as the ‘pdfTEX utilities’. With the exception of\expanded, these have been present in pdfTEX sincethe release of version 1.40.0 in 2007; \expanded wasadded for TEX Live 2019. Similarly, the full set of theseutility primitives has been available in X ETEX from the2019 TEX Live release, and has always been available inLuaTEX (some by Lua emulation). The Japanese pTEXand upTEX gained all of the above (except \ifincsname)for TEX Live 2019 and will both have that primitive alsofrom the 2020 release onward.At the same time, engines which are fully Unicode-

capable must provide the following three primitives:

• \Uchar • \Ucharcat • \Umathcode

Note that it has become standard practice to checkfor Unicode-aware engines by using the existence ofthe \Umathcode primitive. As such, this is already arequirement: engines lacking these primitives cannot useUnicode features of the LATEX2ε kernel or expl3. Notealso that upTEX can handle Unicode but it is not classedas a Unicode engine by the base LATEX code.

References[1] Frank Mittelbach: The LATEX release workflow and the

LATEX dev formats. In: TUGboat, 40#2, 2019.https://latex-project.org/publications/

[2] LATEX Project Team: LATEX2ε font selection.https://latex-project.org/help/documentation/fntguide.pdf

[3] LATEX documentation on the LATEX Project Website.https://latex-project.org/help/documentation/

–53

Page 17: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

LATEX News Issue 32 (October 2020)LATEX NewsIssue 32, October 2020

Contents

Introduction 54

Providing xparse in the format 54

A hook management system for LATEX 55

Other changes to the LATEX kernel 55\symbol in math mode for large Unicode values 55Correct Unicode value of \=y (y) . . . . . . . . 55Add support for Unicode soft hyphens . . . . . 55Fix capital accents in Unicode engines . . . . . 55Support calc in various kernel commands . . . 56Support ε-TEX length expressions in picture

coordinates . . . . . . . . . . . . . . . . . 56Spaces in filenames of included files . . . . . . . 56Avoid extra line in \centering, \raggedleft

or \raggedright . . . . . . . . . . . . . . 56Set a non-zero \baselineskip in text scripts . 56Spacing issues when using \linethickness . . 56Better support for the legacy series default

interface . . . . . . . . . . . . . . . . . . . 56Support for uncommon font series defaults . . . 56Checking the current font series context . . . . 56Avoid spurious package option warning . . . . . 56Adjusting fleqn . . . . . . . . . . . . . . . . . 57Provide \clap . . . . . . . . . . . . . . . . . . 57Fix to legacy math alphabet interface . . . . . 57Added tests for format, package and class dates 57Avoid problematic spaces after \verb . . . . . . 57Provide a way to copy robust commands. . . . . 57. . . and a way to \show them . . . . . . . . . . 57Merge l3docstrip into docstrip . . . . . . . . . . 58Support vertical typesetting with doc . . . . . 58Record the counter name stepped by

\refstepcounter . . . . . . . . . . . . . 58Native LuaTEX behavior for \- . . . . . . . . . 58Allow \par commands inside \typeout . . . . 58Spacing commands moved from amsmath to

the kernel . . . . . . . . . . . . . . . . . . 58Access raw glyphs in LuaTEX without

reloading fonts . . . . . . . . . . . . . . . 58Added a fourth empty argument to

\contentsline . . . . . . . . . . . . . . . 58LuaTEX callback new_graf made exclusive . 58

Changes to packages in the graphics category 58Generate a warning if existing color definition

is changed . . . . . . . . . . . . . . . . . . 58Specifying viewport in the graphics package . . 59Normalizing \endlinechar . . . . . . . . . . . 59Files with multiple parts . . . . . . . . . . . . . 59

Changes to packages in the tools category 59array: Support stretchable glue in w-columns . . 59array: Use math mode for w and W-cells in array 59array: Fix for \firsthline and \lasthline . . 59varioref: Support Japanese as a language option 59xr: Support for spaces in filenames . . . . . . . 59

Changes to packages in the amsmath category 59Placement corrections for two accent commands 59Fixes to aligned and gathered . . . . . . . . . 59Detect Unicode engines when setting

\std@minus and \std@equal . . . . . . . 59Use LuaTEX primitives where applicable . . . . 59

Changes to the babel package 60

IntroductionThe 2020-10-01 release of LATEX shows that work onimproving LATEX has again intensified. The two mostimportant new features are the kernel support for xparseand the introduction of the new hook managementsystem for LATEX, but as you can see there are manysmaller enhancements and bug fixes added to the kerneland various packages.

Providing xparse in the formatThe official interface in the LATEX2ε kernel for cre-ating document-level commands has always been\newcommand. This was a big step forward fromLATEX 2.09. However, it was still very limited in thetypes of command it can create: those taking at mostone optional argument in square brackets, then zero ormore mandatory arguments. Richer syntaxes requireduse of the TEX \def primitive along with appropriatelow-level macro programming.The LATEX team started work on a comprehensive

document-command parser, xparse, in the late 1990s. Inthe past decade, the experimental ideas it provides havebeen carefully worked through and moved to a stablefooting. As such, xparse is now used to define a very

LATEX News, and the LATEX software, are brought to you by the LATEX3 Project Team; Copyright 2020, all rights reserved. –54

large number of document and package commands. Itdoes this by providing a rich and self-consistent syntaxto describe a wide range of interfaces seen in LATEXpackages.The ideas developed in xparse are now sufficiently

well tested that the majority can be transferred into theLATEX kernel. Thus the following commands have beenadded

• \NewDocumentCommand, \RenewDocumentCommand,\ProvideDocumentCommand,\DeclareDocumentCommand

• \NewExpandableDocumentCommand,\RenewExpandableDocumentCommand,\ProvideExpandableDocumentCommand,\DeclareExpandableDocumentCommand

• \NewDocumentEnvironment,\RenewDocumentEnvironment,\ProvideDocumentEnvironment,\DeclareDocumentEnvironment

• \BooleanTrue \BooleanFalse• \IfBooleanTF, \IfBooleanT, \IfBooleanF• \IfNoValueTF, \IfNoValueT, \IfNoValueF• \IfValueTF, \IfValueT, \IfValueF• \SplitArgument, \SplitList, \TrimSpaces,

\ProcessList, \ReverseBoolean• \GetDocumentCommandArgSpec

\GetDocumentEnvironmentArgSpec

Most, but not all, of the argument types definedby xparse are now supported at the kernel level. Inparticular, the types g/G, l and u are not provided bythe kernel code; these are deprecated but still availableby explicitly loading xparse. All other argument typesare now available directly within the LATEX2ε kernel.

A hook management system for LATEXWith the fall 2020 release of LATEX we provide ageneral hook management system for the kernel and forpackages. This will allow packages to safely add codeto various kernel and package hooks and if necessarydefine rules to reorder the code in the hooks to resolvetypical package loading order issues. This hook systemis written in the L3 programming layer and thus formsthe first larger application within the kernel that makesuse of the LATEX3 functionality now available (if wediscount xparse which has already been available for along time as a separate package).The file lthooks.dtx holds the core management

code for hooks and defines basic hooks for environments(as previously offered by etoolbox), ltshipout.dtxprovides kernel hooks into the shipout process (makingpackages like atbegshi, etc., unnecessary) and the file

ltfilehook.dtx holds redefinitions for commands like\input or \usepackage so that they offer hooks ina similar fashion to what is provided by the filehookpackage.At the moment the integration is lightweight,

overwriting definitions made earlier during formatgeneration (though this will change after more thoroughtesting). For that reason the documentation isn’t in itsfinal form either and you have to read through threedifferent documents:

lthooks-doc.pdf Core management interface andbasic hooks for environments provided by the kernel.ltshipout-doc.pdf Hooks accessible while a page isbeing shipped out.ltfilehook-doc.pdf Hooks used when reading a file.

For those who wish to also study the code, replace -docwith -code, e.g., lthooks-code.pdf. All documentsshould be accessible via texdoc, e.g.,texdoc lthooks-doc

should open the core documentation for you.

Other changes to the LATEX kernel\symbol in math mode for large Unicode valuesThe LATEX2ε kernel defines the command \symbol,which allows characters to be typeset by entering their‘slot number’. With the LuaTEX and X ETEX engines,these slot numbers can extend to very large valuesto accommodate Unicode characters in the upperUnicode planes (e.g., bold mathematical capital A isslot number "1D400 in hex or 119808 in decimal). TheX ETEX engine did not allow \symbol in math mode forvalues above 216; this limitation has now been lifted.

(github issue 124)

Correct Unicode value of \=y (y)The Unicode slot for y was incorrectly pointing to theslot for Y. This has been corrected. (github issue 326)

Add support for Unicode soft hyphensFor a long time, the UTF-8 option for inputenc made theUnicode soft hyphen character (U+00AD) an alias forthe LATEX soft hyphen \-. The Unicode engines X ETEXand LuaTEX behaved differently though: They eitherignored U+00AD or interpreted it as an unconditionalhyphen. This inconsistency is fixed now and LATEXalways treats U+00AD as \-. (github issue 323)

Fix capital accents in Unicode enginesIn Unicode engines the capital accents such as\capitalcedilla, etc., have been implemented astrivial shorthands for the normal accents (because otherthan Computer Modern virtually no fonts supportthem), but that failed when hyperref got loaded. Thishas been corrected. (github issue 332)

–55

Support calc in various kernel commandsThe \hspace, \vspace, \addvspace, \\ and othercommands simply passed their argument to a TEXprimitive to produce the necessary space. As a result itwas impossible to specify anything other than a simpledimension value in such arguments. This has beenchanged, so that now calc syntax is also supported withthese commands. (github issue 152)

Support ε-TEX length expressions in picture coordinatesPicture mode coordinates specified with (_,_) previouslyaccepted multiples of \unitlength. They now also allowε-TEX length expressions (as used by the \glueexprprimitive although all uses in picture mode arenon-stretchy).So, valid uses include \put(2,2) as

previously, but now also uses suchas\put(\textwidth-5cm,0.4\textheight).Note that you can only use expressions with lengths;

\put(1+2,0) is not supported.

Spaces in filenames of included filesFile names containing spaces lead to unexpectedresults when used in the commands \include and\includeonly. This has now been fixed and theargument to \include can contain a file name containingspaces. Leading or trailing spaces will be stripped offbut spaces within the file name are kept. The argumentto \includeonly, which is a comma-separated listof files to process, can also contain spaces with anyleading and trailing spaces stripped from the individualfilenames while spaces in the file names will remainintact. (github issues 217 and 218)

Avoid extra line in \centering, \raggedleft or\raggedrightIf we aren’t justifying paragraphs then a very long word(longer than a line) could result in an unnecessary extraline in order to prevent a hyphen in the second-lastline of the paragraph. This is now avoided by setting\finalhyphendemerits to zero in unjustified settings.

(github issue 274)

Set a non-zero \baselineskip in text scriptsAs \textsuperscript and \textsubscript usuallycontain only a few characters on a single line the\baselineskip was set to zero. However, hyperref usesthat value to determine the height of a link box whichconsequently came out far too small. This has beenadjusted. (github issue 249)

Spacing issues when using \linethicknessIn some circumstances the use of \linethicknessintroduced a spurious space that shifted objects ina picture environment to the right. This has beencorrected. (github issue 274)

Better support for the legacy series default interfaceIn the initial implementation of LATEX’s font selectionscheme (NFSS) changes to any default were carried outby redefining some commands, e.g., \seriesdefault. In2019 we introduced various extensions and with it newmethods of customizing certain parts of NFSS, e.g., therecommended way for changing the series default(s) isnow through \DeclareFontSeriesDefault [1]. In thisrelease we improved the support for legacy documentsusing the old method to cover additional edge cases.

(github issues 306 and 315)

Support for uncommon font series defaultsIf a font family was set up with fairly unusual font seriesdefaults, e.g.,\renewcommand\ttdefault{lmvtt}\DeclareFontSeriesDefault[tt]{md}{lm}\DeclareFontSeriesDefault[tt]{bf}{bm}

then a switch between the main document families,e.g., \ttfamily...\rmfamily did not always correctlycontinue typesetting in medium or bold series if thatinvolved adjusting the values used by \mdseriesor \bfseries. This has now been corrected.

(github issue 291)

Checking the current font series contextSometimes it is necessary to define commands thatact differently when used in bold context (e.g., inside\textbf). Now that it is possible in LATEX to specify dif-ferent “bf” defaults based for each of the three meta fam-ilies (rm, sf and tt) via \DeclareFontSeriesDefault,it is no longer easy to answer the question “am I type-setting in a bold context?”. To help with this problem anew command was provided:

\IfFontSeriesContextTF{〈context〉}{〈true code〉}{〈false code〉}

The 〈context〉 can be either bf (bold) or md (medium)and depending on whether or not the current font isrecognized as being selected through \bfseries or\mdseries the 〈true code〉 or 〈false code〉 is executed.As an example\usepackage{bm} % (bold math)\newcommand\vbeta{\IfFontSeriesContextTF{bf}%

{\ensuremath{\bm{\beta}}}%{\ensuremath{\beta}}}

This way you can write \vbeta-isotopes and ifused in a heading it comes out in a bolder version.

(github issue 336)

Avoid spurious package option warningWhen a package is loaded with a number of options,say X, Y and Z, and then later another loading attemptwas made with a subset of the options or no options, itwas possible to get an error message that option X is not

–56

known to the package. This obviously incorrect errorwas due to a timing issue where the list of availableoptions got lost prematurely. This has now been fixed.

(github issue 22)

Adjusting fleqnIn amsmath the \mathindent parameter used with thefleqn design is a rubber length parameter allowing forsetting it to a value such as 1em minus 1em, i.e., so thatthe normal indentation can be reduced in case of verywide math displays. This is now also supported by theLATEX standard classes.In addition a compressible space between formula

and equation number in the equation environment gotadded when the fleqn option is used so that a verywide formula doesn’t bump into the equation number.

(github issue 252)

Provide \clapLATEX has inherited \llap and \rlap from plain TEX(zero-sized boxes whose content sticks out to the leftor right, respectively) but there isn’t a corresponding\clap command that centers the material. This missingcommand was added by several packages, e.g., mathtools,and has now been added to the kernel.

Fix to legacy math alphabet interfaceWhen using the LATEX 2.09 legacy math alphabetinterface, e.g., $\sf -1$ instead of $\mathsf{-1}$,an extra math Ord atom was added to the formula incase the math alphabet was used for the first time. Insome cases this math atom would change the spacing,e.g., change the unary minus sign into a binary minusin the above example. This has finally been fixed.

(gnats issue latex/3357)

Added tests for format, package and class datesTo implement compatibility code or to ensure thatcertain features are available it is helpful and oftennecessary to check the date of the format or that of apackage or class and execute different code based onthe result. For that, LATEX previously had only internalcommands (\@ifpackagelater and \@ifclasslater)for testing package or class names, but nothingreasonable for testing the format date. For the latterone had to resort to some obscure command \@ifl@t@rthat, given its cryptic name, was clearly never intendedfor use even in package or class code. Furthermore, eventhe existing interface commands were defective as theyare testing for “equal or later” and not for “later” astheir names indicate.We have therefore introduced three new CamelCase

commands as the official interface for such tests

\IfFormatAtLeastTF{〈date〉}{〈true code〉}{〈false code〉}

and for package and class tests

\IfClassAtLeastTF{〈class name〉}{〈date〉}{〈true code〉}{〈false code〉}

\IfPackageAtLeastTF{〈package name〉}{〈date〉}{〈true code〉}{〈false code〉}

For compatibility reasons the legacy commands remainavailable, but we suggest to replace them over time anduse the new interfaces in new code. (github issue 186)

Avoid problematic spaces after \verbIf a user typed \verb␣!~!␣foo instead of \verb!~!␣fooby mistake, then surprisingly the result was “!~!foo”without any warning or error. What happened was thatthe ␣ became the argument delimiter due to the rathercomplex processing done by \verb to render verbatim.This has been fixed and spaces directly following thecommand \verb or \verb* are now ignored as elsewhere.

(github issue 327)

Provide a way to copy robust commands. . .With the previous LATEX2ε release, several user-levelcommands were made robust, so the need for a wayto create copies of these commands (often to redefinethem) increased, and the LATEX2ε kernel didn’t have away to do so. Previously this functionality was providedin part by Heiko Oberdiek’s letltxmacro package, whichallows a robust command \foo to be copied to \barwith \LetLtxMacro\bar\foo.From this release onwards, the LATEX2ε kernel

provides \NewCommandCopy (and \Renew... and\Declare... variants) which functions almost like\LetLtxMacro. To the end user, both should work thesame way, and one shouldn’t need to worry about thedefinition of the command: \NewCommandCopy should dothe hard work.\NewCommandCopy knows about the different types of

definitions from the LATEX2ε kernel, and also from otherpackages, such as xparse’s command declarations like\NewDocumentCommand, and etoolbox’s \newrobustcmd,and it can be extended to cover further packages.

(github issue 239)

. . . and a way to \show themIt is sometimes necessary to look up the definition of acommand, and often one not only doesn’t know wherethat command is defined, but doesn’t know if it getsredefined by some package, so often enough looking atthe source doesn’t help. The typical way around thisproblem is to use TEX’s \show primitive to look at thedefinition of a command, which works fine until thecommand being \shown is robust. With \show\fracone sees> \frac=macro:->\protect \frac .

–57

which is not very helpful. To show the actual com-mand the user needed to notice that the real def-inition of \frac is in the \frac␣ macro and do\expandafter\show\csname frac\space\endcsname.But with the machinery for copying robust commands

in place it is already possible to examine a commandand detect (as far as a macro expansion language allows)how it was defined. \ShowCommand knows that and with\ShowCommand\frac the terminal will show

> \frac=robust macro:->\protect \frac .

> \frac =\long macro:#1#2->{\begingroup #1\endgroup \over #2}.

(github issue 373)

Merge l3docstrip into docstripThe file l3docstrip.tex offered a small extension over theoriginal docstrip.tex file supporting the %<@@=〈module 〉>syntax of expl3. This has been merged into docstripso that it can now be used for both traditional .dtxfiles and those containing code written in the L3programming layer language. (github issue 337)

Support vertical typesetting with docThe macrocode environment uses a trivlist internallyand as part of this sets up the \@labels box to containsome horizontal skips, but that box is never used. Asa result this generates an issue in some circumstancesif the typesetting direction is vertical. This has nowbeen corrected to support such use cases as well.

(github issue 344)

Record the counter name stepped by \refstepcounter\refstepcounter now stores the name of the counterin \@currentcounter. This allows packages like zrefand hyperref to store the name without having to patch\refstepcounter. (github issue 300)

Native LuaTEX behavior for \-LATEX changes \- to add a discretionary hyphen even if\hyphenchar is set to −1. This change is not necessaryunder LuaTEX because there \- is not affected by\hyphenchar in the first place. Therefore this behaviorhas been changed to ensure that LuaTEX’s (languagespecific) hyphenation characters are respected by \-.

Allow \par commands inside \typeout\typeout used to choke when seeing an empty line or a\par command in its argument. However, sometimes itis used to display arbitrary user input or code (wrapped,for example, in \unexpanded) which may contain explicit\par commands. This is now allowed. (github issue 335)

Spacing commands moved from amsmath to the kernelOriginally LATEX only provided a small set of spacingcommands for use in text and math; some of thecommands like \; were only supported in math mode.amsmath normalized and provided all of them in textand math. This code has now been moved to the kernelso that it is generally available.

command name(s) math text\, \thinspace xx x x\! \negthinspace xx xx\: \> \medspace x x x x\negmedspace xx xx\; \thickspace x x x x\negthickspace xx xx

(github issue 303)

Access raw glyphs in LuaTEX without reloading fontsLATEX’s definitions for \textquotesingle,\textasciigrave, and \textquotedbl for the TUencoding in LuaTEX need special handling to stopthe shaper from replacing these characters with curlyquotes. This used to be done by reloading the currentfont without the tlig feature, but that came withmultiple disadvantages: It behaves differently than thecorresponding X ETEX code and it is not very efficient.This code has now been replaced with an implementa-tion which injects a protected glyph node which is notaffected by font shaping. (github issue 165)

Added a fourth empty argument to \contentslineLATEX’s \addcontentsline writes a \contentslinecommand with three arguments to the .toc and similarfiles. hyperref redefines \addcontentsline to write afourth argument. The change unifies the number ofarguments by writing an additional empty brace group.

(github issue 370)

LuaTEX callback new_graf made exclusiveCorrected an incorrect callback type which causedreturn values from the new_graf callback to be ignoredand paragraph indentation to be suppressed. In thenew version, only one new_graf callback handler can beactive at a time, which allows this handler to take fullcontrol of paragraph indentation. (github issue 188)

Changes to packages in the graphics categoryGenerate a warning if existing color definition is changedIf a color is defined twice using \DefineNamedColor,no info text Redefining color ... in named colormodel ... was written to the log file, because ofa typo in the check. This has been corrected.

(gnats issue graphics/3635)

–58

Specifying viewport in the graphics packageSpecifying a BoundingBox does not really have mean-ing when including non-EPS graphics in pdfTEX andLuaTEX. For some years the graphicx package bb keyhas been interpreted (with a warning) as a viewportkey. This feature has been added to the two-argumentform of \includegraphics, which is mostly used in thegraphics package. \includegraphics[1,2][3,4]{file}will now be interpreted in pdfTEX andLuaTEX in the same way as graphicx’s\includegraphics[viewport=1 2 3 4]{file}.

Normalizing \endlinecharIf \endlinechar is set to −1 so that ends of lines areignored in special contexts, then a low level TEX errorwould be generated by code parsing BoundingBox com-ments. The package now locally sets \endlinechar toits standard value while reading files. (github issue 286)

Files with multiple partsSometimes one has a graphics file, say, file.svg, andconverts it to another format to include it in LATEX andends up with a file named file.svg.png. In previousreleases, if the user did \includegraphics{file.svg},an error would be raised and the graphics inclusionwould fail due to the unknown .svg extension. Thegraphics package now checks if the given extension isknown, and if it doesn’t, it tries appending the knownextensions until it finds a graphics file with a validextension, otherwise it falls back to the file as requested.

(github issue 355)

Changes to packages in the tools categoryarray: Support stretchable glue in w-columnsIf stretchable glue, e.g., \dotfill, is used in tabularcolumns made with the array package, it stretches as itwould in normal paragraph text. The one exception wasw-columns (but not W-columns) where it got forced toits nominal width (which in case of \hfill or \dotfillis 0 pt). This has been corrected and now w-columnsbehave like all other column types in this respect.

(github issue 270)

array: Use math mode for w and W-cells in arrayThe w and W-columns are LR-columns very similar tol, c and r. It is therefore natural to expect their cellcontent to be typeset in math mode instead of text modeif they are used in an array environment. This has nowbeen adjusted. Note that this is a breaking change inversion v2.5! If you have used w or W-columns in olderdocuments either add >{$}...<{$} for such columns orremove the $ signs in the cells. Alternatively, you canroll back to the old version by loading array with

\usepackage{array}[=v2.4]in such documents. (github issue 297)

array: Fix for \firsthline and \lasthlineReplacing \hline with \firsthline or \lasthlinecould lead in some cases to an increase of the tabularwidth. This has now been corrected. (github issue 322)

varioref: Support Japanese as a language optionThe package now recognizes japanese as a languageoption. The extra complication is that for grammaticalreasons \vref, \Vref, \vrefrange and \fullref needa structure different from all other languages currentlysupported. To accommodate this, \vrefformat,\Vrefformat, \vrefrangeformat, and \fullrefformathave been added to all languages. (github issue 352)

xr: Support for spaces in filenamesThe command \externaldocument, provided by xr, nowalso supports filenames with spaces, just like \includeand \includeonly. (github issue 223)

Changes to packages in the amsmath categoryPlacement corrections for two accent commandsThe accent commands \dddot and \ddddot (producingtriple and quadruple dot accents) moved the basecharacter vertically in certain situations if it was asingle glyph, e.g., $Q \dddot{Q}$ were not at the samebaseline. This has been corrected. (github issue 126)

Fixes to aligned and gatheredThe environments aligned and gathered have a trailingoptional argument to specify the vertical position ofthe environment with respect to the rest of the line.Allowed values are t, b and c but the code only testedfor b and t and assumed anything else must be c. Asa result, a formula starting with a bracket group wouldget mangled without warning—the group being droppedand interpreted as a request for centering. After morethan 25 years this has now been corrected. If sucha group is found a warning is given and the data isprocessed as part of the formula. (github issue 5)

Detect Unicode engines when setting \std@minus and\std@equalamsmath now detects the Unicode engines and usestheir extended commands to define \std@minus and\std@equal. This avoids a package like unicode-mathhaving to patch the code in the begin document hook tochange the commands.

Use LuaTEX primitives where applicableFor a number of years lualatex-math patched \frac,\genfrac and the subarray environment to make useof new luaTEX primitives. This code has now beenintegrated into amsmath.

–59

Changes to the babel packageMultilingual typesetting has evolved greatly in recentyears, and babel, like LATEX itself, has followed thefootsteps of Unicode and the W3C consortia to produceproper output in many languages.Furthermore, the traditional model to define and select

languages (which can be called “vertical”), based onclosed files, while still the preferred one in monolingualdocuments, is being extended with a new model (whichcan be called “horizontal”) based on services providedby babel, which allows defining and redefining localeswith the help of simple ini files based on key/valuepairs. The babel package provides about 250 of thesefiles, which have been generated with the help of theUnicode Common Language Data Repository.Thanks to the recent advances in lualatex and

luaotfload, babel currently provides services for biditypesetting, line breaking for Southeast Asian andCJK scripts, nonstandard hyphenation (like ff to ff-f),alphabetic and additive counters, automatic selection offonts and languages based on the script, etc. This meansbabel can be used to typeset a wide variety of languages,such as Russian, Arabic, Hindi, Thai, Japanese, Bangla,Amharic, Greek, and many others.In addition, since these ini files are easily parsable,

they can serve as a source for other packages.For further details take a look at the babel package

documentation [4].

References[1] LATEX Project Team: LATEX2ε news 31.

https://latex-project.org/news/latex2e-news/ltnews31.pdf

[2] LATEX documentation on the LATEX Project Website.https://latex-project.org/help/documentation/

[3] LATEX issue tracker.https://github.com/latex3/latex2e/issues/

[4] Javier Bezos and Johannes Braams.Babel—Localization and internationalization.https://www.ctan.org/pkg/babel

–60

Page 18: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

何がわかるか

最近の LATEXはどんどん変わっている特に今年 (2020)は大きな機能追加が目立つ▶ Improved load-times for expl3

▶ LATEXのフォーマットに expl3が最初から読み込まれた状態になった

▶ Improvements to LaTeX font selection: NFSS▶ LATEX上でフォントを管理するためのシステム

(NFSS)が大規模改修された▶ A hook management system for LATEX

▶ LATEXのフック管理システムの追加

Page 19: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=標準でexpl3できる

LATEX 2𝜀 2020-02-02以降:\usepackage{expl3}しなくても\ExplSyntaxOnできる

高機能な expl3で,プログラミングしよう!

…なんだけど, 隠れた注意点 があるこれは「プログラミングしない人」にも影響

Page 20: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=標準でexpl3できる

LATEX 2𝜀 2020-02-02以降:\usepackage{expl3}しなくても\ExplSyntaxOnできる

高機能な expl3で,プログラミングしよう!…なんだけど, 隠れた注意点 があるこれは「プログラミングしない人」にも影響

Page 21: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨

新習慣:DVIドライバは必ずグローバルオプションで指定しよう!

理由:LATEX 2𝜀 2020-02-02以降,expl3が最初から読み込まれているから

expl3はドライバ依存

Page 22: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨

新習慣:DVIドライバは必ずグローバルオプションで指定しよう!

理由:LATEX 2𝜀 2020-02-02以降,expl3が最初から読み込まれているから

expl3はドライバ依存

Page 23: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨例 1-1.単純なケース

1 \documentclass{article}2 \begin{document}3 ドライバ依存性はなさそうなソース4 \end{document}

$ latex test.tex (または platex test.tex)$ dvispc -s test.dvi <= \special が存在するか確認

▶ 昨年 (LATEX 2𝜀 2019-10-01 patch level 3)[1]

→ 特に \specialは見当たらず

Page 24: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨例 1-1.単純なケース

1 \documentclass{article}2 \begin{document}3 ドライバ依存性はなさそうなソース4 \end{document}

$ latex test.tex (または platex test.tex)$ dvispc -s test.dvi <= \special が存在するか確認

▶ 現在 (LATEX 2𝜀 2020-10-01 patch level 2)[1]{header=l3backend-dvips.pro}→ dvips用の \specialが発行されている!

Page 25: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨例1-2.グローバルオプションに[dvipdfmx]指定

1 \documentclass[dvipdfmx]{article}2 \begin{document}3 ドライバ依存性はなさそうなソース4 \end{document}

$ latex test.tex (または platex test.tex)

▶ 昨年 (LATEX 2𝜀 2019-10-01 patch level 3)

LaTeX Warning: Unused global option(s):[dvipdfmx].

→ 警告が出る!

Page 26: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨例1-2.グローバルオプションに[dvipdfmx]指定

1 \documentclass[dvipdfmx]{article}2 \begin{document}3 ドライバ依存性はなさそうなソース4 \end{document}

$ latex test.tex (または platex test.tex)

▶ 昨年 (LATEX 2𝜀 2019-10-01 patch level 3)

LaTeX Warning: Unused global option(s):[dvipdfmx].

→ 警告が出る!

Page 27: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨例1-2.グローバルオプションに[dvipdfmx]指定

1 \documentclass[dvipdfmx]{article}2 \begin{document}3 ドライバ依存性はなさそうなソース4 \end{document}

$ latex test.tex (または platex test.tex)

▶ 現在 (LATEX 2𝜀 2020-10-01 patch level 2)

LaTeX Warning: Unused global option(s):[dvipdfmx].

→ 警告はもう出ない!

Page 28: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨

例1-3.パッケージオプションに[dvipdfmx]指定1 \documentclass{article}2 \usepackage[dvipdfmx]{graphicx,color}3 \begin{document}4 虎さん5 \includegraphics[width=5cm]{tiger.eps}6 \end{document}

→今のところ,目に見える不具合なし。ただし,今後どうなるか怪しい?(expl3は dvips指定,graphicx/colorは dvipdfmx指定のため)

Page 29: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=ドライバオプション推奨

例1-3.パッケージオプションに[dvipdfmx]指定1 \documentclass{article}2 \usepackage[dvipdfmx]{graphicx,color}3 \begin{document}4 虎さん5 \includegraphics[width=5cm]{tiger.eps}6 \end{document}

→今のところ,目に見える不具合なし。ただし,今後どうなるか怪しい?(expl3は dvips指定,graphicx/colorは dvipdfmx指定のため)

Page 30: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=標準でexpl3できるLATEXへの expl3組み込みの陰で密かに消えたもの

Ωで動くLATEX

▶ Ω (Omega)上の LATEX:Λ (Lambda)▶ LATEXで 𝜀-TEX拡張が必須になり終了 (2017)

▶ Ă (Aleph: Ω+ 𝜀-TEX)上の LATEX:Ň (Lamed)▶ expl3のフォーマット組み込みで終了 (2020)

もう,忘れてしまおう (今までありがとう)

Page 31: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=標準でexpl3できるLATEXへの expl3組み込みの陰で密かに消えたもの

Ωで動くLATEX

▶ Ω (Omega)上の LATEX:Λ (Lambda)▶ LATEXで 𝜀-TEX拡張が必須になり終了 (2017)

▶ Ă (Aleph: Ω+ 𝜀-TEX)上の LATEX:Ň (Lamed)▶ expl3のフォーマット組み込みで終了 (2020)

もう,忘れてしまおう (今までありがとう)

Page 32: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=標準でexpl3できるLATEXへの expl3組み込みの陰で密かに消えたもの

Ωで動くLATEX

▶ Ω (Omega)上の LATEX:Λ (Lambda)▶ LATEXで 𝜀-TEX拡張が必須になり終了 (2017)

▶ Ă (Aleph: Ω+ 𝜀-TEX)上の LATEX:Ň (Lamed)▶ expl3のフォーマット組み込みで終了 (2020)

もう,忘れてしまおう (今までありがとう)

Page 33: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-1.(pdf)LATEX, pLATEX, upLATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

結果italic small caps

ただし,従来は出なかった警告が発生LaTeX Font Warning: Font shape ‘OT1/cmr/m/scit’ undefined(Font) using ‘OT1/cmr/m/sc’ instead on ...

Page 34: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-1.(pdf)LATEX, pLATEX, upLATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

結果italic small caps

ただし,従来は出なかった警告が発生LaTeX Font Warning: Font shape ‘OT1/cmr/m/scit’ undefined(Font) using ‘OT1/cmr/m/sc’ instead on ...

Page 35: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-2.LuaLATEX, X ELATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

結果 (LATEX 2𝜀 2019-10-01 patch level 3)

italic small caps

組版結果が変わり,警告も発生LaTeX Font Warning: Font shape ‘TU/lmr/m/scit’ undefined(Font) using ‘TU/lmr/m/scsl’ instead on ...

Page 36: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-2.LuaLATEX, X ELATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

結果 (LATEX 2𝜀 2020-10-01 patch level 2)

italic small caps

組版結果が変わり,警告も発生LaTeX Font Warning: Font shape ‘TU/lmr/m/scit’ undefined(Font) using ‘TU/lmr/m/scsl’ instead on ...

Page 37: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-3.(pdf)LATEX, pLATEX, upLATEXで確認

1 \documentclass{article}2 \usepackage{lmodern}% Latin Modern3 \begin{document}4 {\itshape italic % イタリックのグループ内で5 {\scshape small caps}} % スモールキャプスへ6 \end{document}

結果 (LATEX 2𝜀 2019-10-01 patch level 3)

italic small caps

組版結果が変わり,警告も発生LaTeX Font Warning: Font shape ‘T1/lmr/m/scit’ undefined(Font) using ‘T1/lmr/m/scsl’ instead on ...

Page 38: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-3.(pdf)LATEX, pLATEX, upLATEXで確認

1 \documentclass{article}2 \usepackage{lmodern}% Latin Modern3 \begin{document}4 {\itshape italic % イタリックのグループ内で5 {\scshape small caps}} % スモールキャプスへ6 \end{document}

結果 (LATEX 2𝜀 2020-10-01 patch level 2)

italic small caps

組版結果が変わり,警告も発生LaTeX Font Warning: Font shape ‘T1/lmr/m/scit’ undefined(Font) using ‘T1/lmr/m/scsl’ instead on ...

Page 39: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-4.pLATEX, upLATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic}4 \end{document}

結果italic

この場合は,従来出ていた警告が減るLaTeX Font Warning: Font shape ‘JT1/mc/m/it’ undefined(Font) using ‘JT1/mc/m/n’ instead on ...LaTeX Font Warning: Font shape ‘JY1/mc/m/it’ undefined(Font) using ‘JY1/mc/m/n’ instead on ...

Page 40: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-4.pLATEX, upLATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic}4 \end{document}

結果italic

この場合は,従来出ていた警告が減るLaTeX Font Warning: Font shape ‘JT1/mc/m/it’ undefined(Font) using ‘JT1/mc/m/n’ instead on ...LaTeX Font Warning: Font shape ‘JY1/mc/m/it’ undefined(Font) using ‘JY1/mc/m/n’ instead on ...

Page 41: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-4.pLATEX, upLATEXで確認

1 \documentclass{article}2 \begin{document}3 {\itshape italic}4 \end{document}

結果italic

この場合は,従来出ていた警告が減るLaTeX Font Warning: Font shape ‘JT1/mc/m/it’ undefined(Font) using ‘JT1/mc/m/n’ instead on ...LaTeX Font Warning: Font shape ‘JY1/mc/m/it’ undefined(Font) using ‘JY1/mc/m/n’ instead on ...

Page 42: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

復習:NFSSの 5属性(2.09→ 2𝜀の発明)▶ エンコーディング (OT1, T1, ...)▶ ファミリ (cmr, lmr, ...)▶ シリーズ (m, b, bx, ...)▶ シェープ (n, it, sl, sc, ...)▶ サイズ各属性をそれぞれ独立に選択できる

LATEX 2𝜀 2019-10-01 patch level 3以前:シリーズ,シェープはそれぞれ単一軸のみ

Page 43: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

復習:NFSSの 5属性(2.09→ 2𝜀の発明)▶ エンコーディング (OT1, T1, ...)▶ ファミリ (cmr, lmr, ...)▶ シリーズ (m, b, bx, ...)▶ シェープ (n, it, sl, sc, ...)▶ サイズ各属性をそれぞれ独立に選択できる

LATEX 2𝜀 2019-10-01 patch level 3以前:シリーズ,シェープはそれぞれ単一軸のみ

Page 44: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

復習:NFSSの 5属性(2.09→ 2𝜀の発明)▶ エンコーディング (OT1, T1, ...)▶ ファミリ (cmr, lmr, ...)▶ シリーズ (m, b, bx, ...)▶ シェープ (n, it, sl, sc, ...)▶ サイズ各属性をそれぞれ独立に選択できる

LATEX 2𝜀 2020-02-02以降:拡張版NFSS

シリーズ,シェープがそれぞれ複数軸に

Page 45: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

シリーズ属性への「軸」の概念導入→「ウェイト軸」と「字幅軸」▶ ウェイト:ul, el, l, sl, m, sb, b, eb, ub▶ 字幅:ec, c, sc, m, x

全部で 9× 5=45種類!

Notoならたくさん使える(原ノ味☃とも合わせやすい)▶ Noto Serif: 9ウェイト(字幅はmのみ)▶ Noto Sans: 9ウェイト× 4字幅(ec, c, sc, m)

Page 46: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

シリーズ属性への「軸」の概念導入→「ウェイト軸」と「字幅軸」▶ ウェイト:ul, el, l, sl, m, sb, b, eb, ub▶ 字幅:ec, c, sc, m, x

全部で 9× 5=45種類!Notoならたくさん使える(原ノ味☃とも合わせやすい)▶ Noto Serif: 9ウェイト(字幅はmのみ)▶ Noto Sans: 9ウェイト× 4字幅(ec, c, sc, m)

Page 47: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しいシェープ属性への「軸」の概念導入→「スモールキャプス軸」と「それ以外軸」▶ スモールキャプス:標準, sc, ssc▶ それ以外:標準, it, sl, SW

※ sw (\swshape, \textsw): swash字形(巻きひげ文字)全部で 3× 4=12種類!

例:EBGaramond

The snowman in “IPAMincho” is very similar to the onein “Ryumin” from Morisawa. However, in “MS Min-cho” from Microsoft, the snowman wears a black hat in-stead of white one.

Page 48: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しいシェープ属性への「軸」の概念導入→「スモールキャプス軸」と「それ以外軸」▶ スモールキャプス:標準, sc, ssc▶ それ以外:標準, it, sl, SW

※ sw (\swshape, \textsw): swash字形(巻きひげ文字)全部で 3× 4=12種類!例:EBGaramond italic

The snowman in “IPAMincho” is very similar to the onein “Ryumin” from Morisawa. However, in “MS Min-cho” from Microsoft, the snowman wears a black hat in-stead of white one.

Page 49: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しいシェープ属性への「軸」の概念導入→「スモールキャプス軸」と「それ以外軸」▶ スモールキャプス:標準, sc, ssc▶ それ以外:標準, it, sl, SW

※ sw (\swshape, \textsw): swash字形(巻きひげ文字)全部で 3× 4=12種類!例:EBGaramond swash

The snowman in “IPAMincho” is very similar to theone in “Ryumin” fromMorisawa. However, in “MSMincho” from Microsoft, the snowman wears a blackhat instead of white one.

Page 50: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい属性の「軸」を実現するために→シリーズ更新規則・シェープ更新規則▶ 現在のシリーズ/シェープに応じて最適なシリーズ/シェープへ切り替える

例:\DeclareFontSeriesChangeRule{m}{b}{b}{bx}▶ 現在のシリーズがmの時に bが選択されたら

▶ bが利用可能→ bを使う▶ bがない→ bxが利用可能なら bxで代替※ mのままには放っておかない!

こんなルールが膨大に定義されている

Page 51: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい属性の「軸」を実現するために→シリーズ更新規則・シェープ更新規則▶ 現在のシリーズ/シェープに応じて最適なシリーズ/シェープへ切り替える

例:\DeclareFontSeriesChangeRule{m}{b}{b}{bx}▶ 現在のシリーズがmの時に bが選択されたら

▶ bが利用可能→ bを使う▶ bがない→ bxが利用可能なら bxで代替※ mのままには放っておかない!

こんなルールが膨大に定義されている

Page 52: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {bc}{b}{bc}{}\DeclareFontSeriesChangeRule {bc}{c}{bc}{}\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc}\DeclareFontSeriesChangeRule {bc}{el}{elc}{}\DeclareFontSeriesChangeRule {bc}{l}{lc}{}\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc}\DeclareFontSeriesChangeRule {bc}{sl}{slc}{}\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {bc}{x}{bx}{}\DeclareFontSeriesChangeRule {bx}{b}{bx}{}\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<-----\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<-----\DeclareFontSeriesChangeRule {bx}{el}{elx}{}\DeclareFontSeriesChangeRule {bx}{l}{lx}{}\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {}\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<-----\DeclareFontSeriesChangeRule {bx}{sl}{slx} {}\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {bx}{x}{bx}{}\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<-----\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<-----\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<-----

Page 53: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<-----\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<-----\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<-----\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<-----\DeclareFontSeriesChangeRule {c}{b}{bc}{}\DeclareFontSeriesChangeRule {c}{eb}{ebc}{}\DeclareFontSeriesChangeRule {c}{el}{elc}{}\DeclareFontSeriesChangeRule {c}{l}{lc}{}\DeclareFontSeriesChangeRule {c}{sb}{sbc}{}\DeclareFontSeriesChangeRule {c}{sl}{slc}{}\DeclareFontSeriesChangeRule {c}{ub}{ubc}{}\DeclareFontSeriesChangeRule {c}{ul}{ulc}{}\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<-----\DeclareFontSeriesChangeRule {ebc}{b}{bc}{}\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{}\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc}\DeclareFontSeriesChangeRule {ebc}{el}{elc}{}\DeclareFontSeriesChangeRule {ebc}{l}{lc}{}\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc}\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{}\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{}\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<-----\DeclareFontSeriesChangeRule {ec}{b}{bec}{}

Page 54: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{}\DeclareFontSeriesChangeRule {ec}{el}{elec}{}\DeclareFontSeriesChangeRule {ec}{l}{lec}{}\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{}\DeclareFontSeriesChangeRule {ec}{sl}{slec}{}\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{}\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{}\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<-----\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<-----\DeclareFontSeriesChangeRule {sc}{b}{bsc}{}\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{}\DeclareFontSeriesChangeRule {sc}{el}{elsc}{}\DeclareFontSeriesChangeRule {sc}{l}{lsc}{}\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{}\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{}\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{}\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{}\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<-----\DeclareFontSeriesChangeRule {ebx}{b}{bx}{}\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{}\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{}\DeclareFontSeriesChangeRule {ebx}{el}{elx}{}\DeclareFontSeriesChangeRule {ebx}{l}{lx}{}\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{}\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{}\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{}

Page 55: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{}\DeclareFontSeriesChangeRule {eb}{c}{ebc}{}\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{}\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{}\DeclareFontSeriesChangeRule {eb}{x}{ebx}{}\DeclareFontSeriesChangeRule {elc}{b}{bc}{}\DeclareFontSeriesChangeRule {elc}{c}{elc}{}\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {elc}{ec}{elec}{}\DeclareFontSeriesChangeRule {elc}{el}{elc}{}\DeclareFontSeriesChangeRule {elc}{l}{lc}{}\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{}\DeclareFontSeriesChangeRule {elc}{sl}{slc}{}\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {elc}{x}{elx}{}\DeclareFontSeriesChangeRule {elx}{b}{bx}{}\DeclareFontSeriesChangeRule {elx}{c}{elc}{}\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {elx}{ec}{elec}{}\DeclareFontSeriesChangeRule {elx}{el}{elx}{}\DeclareFontSeriesChangeRule {elx}{l}{lx}{}\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{}\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{}

Page 56: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {elx}{sl}{slx}{}\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {elx}{x}{elx}{}\DeclareFontSeriesChangeRule {el}{c}{elc}{}\DeclareFontSeriesChangeRule {el}{ec}{elec}{}\DeclareFontSeriesChangeRule {el}{sc}{elsc}{}\DeclareFontSeriesChangeRule {el}{x}{elx}{}\DeclareFontSeriesChangeRule {lc}{b}{bc}{}\DeclareFontSeriesChangeRule {lc}{c}{lc}{}\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {lc}{ec}{lec}{}\DeclareFontSeriesChangeRule {lc}{el}{elc}{}\DeclareFontSeriesChangeRule {lc}{l}{lc}{}\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{}\DeclareFontSeriesChangeRule {lc}{sl}{slc}{}\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {lc}{x}{lx}{}\DeclareFontSeriesChangeRule {lx}{b}{bx}{}\DeclareFontSeriesChangeRule {lx}{c}{lc}{}\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {lx}{ec}{lec}{}\DeclareFontSeriesChangeRule {lx}{el}{elx}{}\DeclareFontSeriesChangeRule {lx}{l}{lx}{}\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{}

Page 57: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{}\DeclareFontSeriesChangeRule {lx}{sl}{slx}{}\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {lx}{x}{lx}{}\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<-----\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<-----\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<-----\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<-----\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<-----\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<-----\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<-----\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<-----\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<-----\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<-----\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<-----\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<-----\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<-----\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<-----\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<-----\DeclareFontSeriesChangeRule {sbc}{b}{bc}{}\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{}\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc}\DeclareFontSeriesChangeRule {sbc}{el}{elc}{}\DeclareFontSeriesChangeRule {sbc}{l}{lc}{}\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{}

Page 58: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc}\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{}\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{}\DeclareFontSeriesChangeRule {sbx}{b}{bx}{}\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{}\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{}\DeclareFontSeriesChangeRule {sbx}{el}{elx}{}\DeclareFontSeriesChangeRule {sbx}{l}{lx}{}\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{}\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{}\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{}\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{}\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<-----\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<-----\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<-----\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<-----\DeclareFontSeriesChangeRule {slc}{b}{bc}{}\DeclareFontSeriesChangeRule {slc}{c}{slc}{}\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {slc}{ec}{slec}{}\DeclareFontSeriesChangeRule {slc}{el}{elc}{}\DeclareFontSeriesChangeRule {slc}{l}{lc}{}

Page 59: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{}\DeclareFontSeriesChangeRule {slc}{sl}{slc}{}\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {slc}{x}{slx}{}\DeclareFontSeriesChangeRule {slx}{b}{bx}{}\DeclareFontSeriesChangeRule {slx}{c}{slc}{}\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {slx}{ec}{slec}{}\DeclareFontSeriesChangeRule {slx}{el}{elx}{}\DeclareFontSeriesChangeRule {slx}{l}{lx}{}\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{}\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{}\DeclareFontSeriesChangeRule {slx}{sl}{slx}{}\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {slx}{x}{slx}{}\DeclareFontSeriesChangeRule {sl}{c}{slc}{}\DeclareFontSeriesChangeRule {sl}{ec}{slec}{}\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{}\DeclareFontSeriesChangeRule {sl}{x}{slx}{}\DeclareFontSeriesChangeRule {ubc}{b}{bc}{}\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{}\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{}\DeclareFontSeriesChangeRule {ubc}{el}{elc}{}

Page 60: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {ubc}{l}{lc}{}\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{}\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{}\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{}\DeclareFontSeriesChangeRule {ubx}{b}{bx}{}\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{}\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{}\DeclareFontSeriesChangeRule {ubx}{el}{elx}{}\DeclareFontSeriesChangeRule {ubx}{l}{lx}{}\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{}\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{}\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{}\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{}\DeclareFontSeriesChangeRule {ub}{c}{ubc}{}\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{}\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{}\DeclareFontSeriesChangeRule {ub}{x}{ubx}{}\DeclareFontSeriesChangeRule {ulc}{b}{bc}{}\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{}\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{}\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc}

Page 61: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {ulc}{el}{elc}{}\DeclareFontSeriesChangeRule {ulc}{l}{lc}{}\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{}\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc}\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{}\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{}\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{}\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{}\DeclareFontSeriesChangeRule {ulx}{b}{bx}{}\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{}\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{}\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{}\DeclareFontSeriesChangeRule {ulx}{el}{elx}{}\DeclareFontSeriesChangeRule {ulx}{l}{lx}{}\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{}\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{}\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{}\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{}\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{}\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{}\DeclareFontSeriesChangeRule {ul}{c}{ulc}{}\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{}\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{}\DeclareFontSeriesChangeRule {ul}{x}{ulx}{}\DeclareFontSeriesChangeRule {x}{b}{bx}{}\DeclareFontSeriesChangeRule {x}{c}{c}{}\DeclareFontSeriesChangeRule {x}{eb}{ebx}{}

Page 62: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {x}{ec}{ec}{}\DeclareFontSeriesChangeRule {x}{el}{elx}{}\DeclareFontSeriesChangeRule {x}{l}{lx}{}\DeclareFontSeriesChangeRule {x}{sb}{sbx}{}\DeclareFontSeriesChangeRule {x}{sc}{sc}{}\DeclareFontSeriesChangeRule {x}{sl}{slx}{}\DeclareFontSeriesChangeRule {x}{ub}{ubx}{}\DeclareFontSeriesChangeRule {x}{ul}{ulx}{}\DeclareFontSeriesChangeRule {bc}{m?}{c}{}\DeclareFontSeriesChangeRule {bec}{m?}{ec}{}\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {bx}{m?}{x}{}\DeclareFontSeriesChangeRule {b}{m?}{m}{}\DeclareFontSeriesChangeRule {c}{m?}{c}{}\DeclareFontSeriesChangeRule {ebc}{m?}{c}{}\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{}\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {ebx}{m?}{x}{}\DeclareFontSeriesChangeRule {eb}{m?}{m}{}\DeclareFontSeriesChangeRule {ec}{m?}{ec}{}\DeclareFontSeriesChangeRule {elc}{m?}{c}{}\DeclareFontSeriesChangeRule {elec}{m?}{ec}{}\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {elx}{m?}{x}{}\DeclareFontSeriesChangeRule {el}{m?}{m}{}\DeclareFontSeriesChangeRule {lc}{m?}{c}{}\DeclareFontSeriesChangeRule {lec}{m?}{ec}{}

Page 63: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {lx}{m?}{x}{}\DeclareFontSeriesChangeRule {l}{m?}{m}{}\DeclareFontSeriesChangeRule {m}{m?}{m}{}\DeclareFontSeriesChangeRule {sbc}{m?}{c}{}\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{}\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {sbx}{m?}{x}{}\DeclareFontSeriesChangeRule {sb}{m?}{m}{}\DeclareFontSeriesChangeRule {sc}{m?}{sc}{}\DeclareFontSeriesChangeRule {slc}{m?}{c}{}\DeclareFontSeriesChangeRule {slec}{m?}{ec}{}\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {slx}{m?}{x}{}\DeclareFontSeriesChangeRule {sl}{m?}{m}{}\DeclareFontSeriesChangeRule {ubc}{m?}{c}{}\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{}\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {ubx}{m?}{x}{}\DeclareFontSeriesChangeRule {ub}{m?}{ub}{}\DeclareFontSeriesChangeRule {ulc}{m?}{c}{}\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{}\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{}\DeclareFontSeriesChangeRule {ulx}{m?}{x}{}\DeclareFontSeriesChangeRule {ul}{m?}{m}{}\DeclareFontSeriesChangeRule {x}{m?}{x}{}\DeclareFontSeriesChangeRule {bc}{?m}{b}{}

Page 64: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {bec}{?m}{b}{}\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}\DeclareFontSeriesChangeRule {bx}{?m}{b}{}\DeclareFontSeriesChangeRule {b}{?m}{b}{}\DeclareFontSeriesChangeRule {c}{?m}{m}{}\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{}\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{}\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{}\DeclareFontSeriesChangeRule {eb}{?m}{eb}{}\DeclareFontSeriesChangeRule {ec}{?m}{m}{}\DeclareFontSeriesChangeRule {elc}{?m}{el}{}\DeclareFontSeriesChangeRule {elec}{?m}{el}{}\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}\DeclareFontSeriesChangeRule {elx}{?m}{el}{}\DeclareFontSeriesChangeRule {el}{?m}{el}{}\DeclareFontSeriesChangeRule {lc}{?m}{l}{}\DeclareFontSeriesChangeRule {lec}{?m}{l}{}\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}\DeclareFontSeriesChangeRule {lx}{?m}{l}{}\DeclareFontSeriesChangeRule {l}{?m}{l}{}\DeclareFontSeriesChangeRule {m}{?m}{m}{}\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{}

Page 65: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{}\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{}\DeclareFontSeriesChangeRule {sb}{?m}{sb}{}\DeclareFontSeriesChangeRule {sc}{?m}{m}{}\DeclareFontSeriesChangeRule {sc}{?m}{m}{}\DeclareFontSeriesChangeRule {slc}{?m}{sl}{}\DeclareFontSeriesChangeRule {slec}{?m}{sl}{}\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}\DeclareFontSeriesChangeRule {slx}{?m}{sl}{}\DeclareFontSeriesChangeRule {sl}{?m}{sl}{}\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{}\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{}\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{}\DeclareFontSeriesChangeRule {ub}{?m}{m}{}\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{}\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{}\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{}\DeclareFontSeriesChangeRule {ul}{?m}{ul}{}\DeclareFontSeriesChangeRule {x}{?m}{m}{}

以上,シリーズ更新規則

Page 66: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontShapeChangeRule {n}{it} {it} {sl}\DeclareFontShapeChangeRule {n}{sl} {sl} {it}\DeclareFontShapeChangeRule {n}{ulc} {n} {}\DeclareFontShapeChangeRule {n}{up} {n} {}\DeclareFontShapeChangeRule {it}{sl} {sl} {it}\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl}\DeclareFontShapeChangeRule {it}{ulc} {it} {}\DeclareFontShapeChangeRule {it}{up} {n} {}\DeclareFontShapeChangeRule {sl}{it} {it} {sl}\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit}\DeclareFontShapeChangeRule {sl}{ulc} {sl} {}\DeclareFontShapeChangeRule {sl}{up} {n} {}\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl}\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit}\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw}\DeclareFontShapeChangeRule {sc}{ulc} {n} {}\DeclareFontShapeChangeRule {sc}{up} {n} {}\DeclareFontShapeChangeRule {scit}{it} {scit} {}\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit}\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit?\DeclareFontShapeChangeRule {scit}{sc} {scit} {}\DeclareFontShapeChangeRule {scit}{ulc} {it} {}\DeclareFontShapeChangeRule {scit}{up} {sc} {}\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl}\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {}\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl?\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {}

Page 67: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {}\DeclareFontShapeChangeRule {scsl}{up} {sc} {}\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw}\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {}\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {}\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {}\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {}\DeclareFontShapeChangeRule {scsw}{up} {sc} {}\DeclareFontShapeChangeRule {sw}{sc} {scsw} {}\DeclareFontShapeChangeRule {sw}{ulc} {sw} {}\DeclareFontShapeChangeRule {sw}{up} {n} {}

以上,シェープ更新規則

Page 68: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

シリーズ更新規則が役に立つ例 (forum:902)1 \documentclass{jsarticle}2 \usepackage{tgtermes,tgheros}% 太字を bに3 \usepackage{otf}% 日本語の太字を bxで定義4 \begin{document}5 ほげほげ{\bfseries ぴよぴよ}6 \end{document}

※ OTFパッケージではシリーズ bが未定義

▶ 旧NFSS:(bがないので)mのまま▶ 新NFSS:現在m→(bがないので)bxで代替

bxに代替されるおかげで太字になる!

Page 69: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

シリーズ更新規則が役に立つ例 (forum:902)1 \documentclass{jsarticle}2 \usepackage{tgtermes,tgheros}% 太字を bに3 \usepackage{otf}% 日本語の太字を bxで定義4 \begin{document}5 ほげほげ{\bfseries ぴよぴよ}6 \end{document}

※ OTFパッケージではシリーズ bが未定義▶ 旧NFSS:(bがないので)mのまま▶ 新NFSS:現在m→(bがないので)bxで代替

bxに代替されるおかげで太字になる!

Page 70: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

冒頭の「\itshapeと \scshapeの例」を振り返る

新NFSSのシェープ更新規則\DeclareFontShapeChangeRule{it}{sc}{scit}{scsl}

▶ 現在のシェープが itの時に scが選択されたら▶ scitが利用可能→ scitを使う▶ scitがない→ scslが利用可能なら scslで代替▶ scitも scslもない→仕方ないので scを使う

Page 71: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

冒頭の「\itshapeと \scshapeの例」を振り返る

新NFSSのシェープ更新規則\DeclareFontShapeChangeRule{it}{sc}{scit}{scsl}

▶ 現在のシェープが itの時に scが選択されたら▶ scitが利用可能→ scitを使う▶ scitがない→ scslが利用可能なら scslで代替▶ scitも scslもない→仕方ないので scを使う

Page 72: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい

冒頭の「\itshapeと \scshapeの例」を振り返る

新NFSSのシェープ更新規則\DeclareFontShapeChangeRule{it}{sc}{scit}{scsl}

▶ 現在のシェープが itの時に scが選択されたら▶ scitが利用可能→ scitを使う▶ scitがない→ scslが利用可能なら scslで代替▶ scitも scslもない→仕方ないので scを使う

Page 73: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-1(再掲).警告が増える

1 \documentclass{article}% (pdf)LaTeX, (u)pLaTeX2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

※ Computer Modern Romanでは n, it, sl, scのみ利用可能

▶ 旧NFSS:無条件に scを使う▶ 新NFSS:更新規則に従おうとしたが,

scitも scslもないので仕方なく scを使うLaTeX Font Warning: Font shape ‘OT1/cmr/m/scit’ undefined(Font) using ‘OT1/cmr/m/sc’ instead on ...

Page 74: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-1(再掲).警告が増える

1 \documentclass{article}% (pdf)LaTeX, (u)pLaTeX2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

※ Computer Modern Romanでは n, it, sl, scのみ利用可能

▶ 旧NFSS:無条件に scを使う

▶ 新NFSS:更新規則に従おうとしたが,scitも scslもないので仕方なく scを使う

LaTeX Font Warning: Font shape ‘OT1/cmr/m/scit’ undefined(Font) using ‘OT1/cmr/m/sc’ instead on ...

Page 75: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-1(再掲).警告が増える

1 \documentclass{article}% (pdf)LaTeX, (u)pLaTeX2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

※ Computer Modern Romanでは n, it, sl, scのみ利用可能

▶ 旧NFSS:無条件に scを使う▶ 新NFSS:更新規則に従おうとしたが,

scitも scslもないので仕方なく scを使うLaTeX Font Warning: Font shape ‘OT1/cmr/m/scit’ undefined(Font) using ‘OT1/cmr/m/sc’ instead on ...

Page 76: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-3(再掲).組版結果が変わり,警告も発生

1 \documentclass{article}% (pdf)LaTeX, (u)pLaTeX2 \usepackage{lmodern}% Latin Modern3 \begin{document}4 {\itshape italic % イタリックのグループ内で5 {\scshape small caps}} % スモールキャプスへ6 \end{document}

※ Latin Modern Romanでは scslも利用可能

▶ 旧NFSS:無条件に scを使う small caps

▶ 新NFSS:更新規則に従い,scitはないが,scslで代替可能 small caps

LaTeX Font Warning: Font shape ‘T1/lmr/m/scit’ undefined(Font) using ‘T1/lmr/m/scsl’ instead on ...

Page 77: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-3(再掲).組版結果が変わり,警告も発生

1 \documentclass{article}% (pdf)LaTeX, (u)pLaTeX2 \usepackage{lmodern}% Latin Modern3 \begin{document}4 {\itshape italic % イタリックのグループ内で5 {\scshape small caps}} % スモールキャプスへ6 \end{document}

※ Latin Modern Romanでは scslも利用可能▶ 旧NFSS:無条件に scを使う small caps

▶ 新NFSS:更新規則に従い,scitはないが,scslで代替可能 small caps

LaTeX Font Warning: Font shape ‘T1/lmr/m/scit’ undefined(Font) using ‘T1/lmr/m/scsl’ instead on ...

Page 78: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-3(再掲).組版結果が変わり,警告も発生

1 \documentclass{article}% (pdf)LaTeX, (u)pLaTeX2 \usepackage{lmodern}% Latin Modern3 \begin{document}4 {\itshape italic % イタリックのグループ内で5 {\scshape small caps}} % スモールキャプスへ6 \end{document}

※ Latin Modern Romanでは scslも利用可能▶ 旧NFSS:無条件に scを使う small caps

▶ 新NFSS:更新規則に従い,scitはないが,scslで代替可能 small caps

LaTeX Font Warning: Font shape ‘T1/lmr/m/scit’ undefined(Font) using ‘T1/lmr/m/scsl’ instead on ...

Page 79: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-2(再掲).組版結果が変わり,警告も発生

1 \documentclass{article}% LuaLaTeX, XeLaTeX2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

※ LuaLATEX, X ELATEXの既定:Latin Modern Roman

▶ 旧NFSS:無条件に scを使う small caps

▶ 新NFSS:更新規則に従うと,scitはないが,scslで代替可能 small caps

LaTeX Font Warning: Font shape ‘TU/lmr/m/scit’ undefined(Font) using ‘TU/lmr/m/scsl’ instead on ...

Page 80: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-2(再掲).組版結果が変わり,警告も発生

1 \documentclass{article}% LuaLaTeX, XeLaTeX2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

※ LuaLATEX, X ELATEXの既定:Latin Modern Roman

▶ 旧NFSS:無条件に scを使う small caps

▶ 新NFSS:更新規則に従うと,scitはないが,scslで代替可能 small caps

LaTeX Font Warning: Font shape ‘TU/lmr/m/scit’ undefined(Font) using ‘TU/lmr/m/scsl’ instead on ...

Page 81: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-2(再掲).組版結果が変わり,警告も発生

1 \documentclass{article}% LuaLaTeX, XeLaTeX2 \begin{document}3 {\itshape italic % イタリックのグループ内で4 {\scshape small caps}} % スモールキャプスへ5 \end{document}

※ LuaLATEX, X ELATEXの既定:Latin Modern Roman

▶ 旧NFSS:無条件に scを使う small caps

▶ 新NFSS:更新規則に従うと,scitはないが,scslで代替可能 small caps

LaTeX Font Warning: Font shape ‘TU/lmr/m/scit’ undefined(Font) using ‘TU/lmr/m/scsl’ instead on ...

Page 82: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-4(再掲).pLATEX, upLATEXで警告が減る

1 \documentclass{article}2 \begin{document}3 {\itshape italic}4 \end{document}

これは更新規則とは別の理由。

pLATEX 2𝜺 2020-04-12:\fontshapeの仕様変更旧仕様:欧文・和文の両方のシェープを変更。新仕様:欧文は変更。和文は未定義なら変更しない。※ \itshape = \fontshape{it}\selectfont

和文のシェープ itは未定義なので,敢えて変更しないように

Page 83: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フォント選択が新しい例 2-4(再掲).pLATEX, upLATEXで警告が減る

1 \documentclass{article}2 \begin{document}3 {\itshape italic}4 \end{document}

これは更新規則とは別の理由。pLATEX 2𝜺 2020-04-12:\fontshapeの仕様変更旧仕様:欧文・和文の両方のシェープを変更。新仕様:欧文は変更。和文は未定義なら変更しない。※ \itshape = \fontshape{it}\selectfont

和文のシェープ itは未定義なので,敢えて変更しないように

Page 84: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○=フックがたくさんLATEX 2𝜀 2020-10-01以降:▶ あるパッケージの読込後に○○する1

▶ ページ出力時に○○する2

▶ ... etc.

など,カスタムコードを挿入できる箇所(フックと呼ばれる)がたくさん用意されている。パッケージへの修正パッチなどを当てやすい。(拙作 plautopatchパッケージでも利用)

1従来は filehookパッケージの機能。2従来は atbegshiパッケージの機能。

Page 85: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○= LuaLATEXはLuaHBTEXで動くTEX Live 2019最終版の LuaLATEXThis is LuaTeX, Version 1.10.0 (TeX Live 2019)system commands enabled....LaTeX2e <2020-02-02> patch level 5

TEX Live 2020最新版の LuaLATEXThis is LuaHBTeX, Version 1.12.0 (TeX Live 2020)system commands enabled....LaTeX2e <2020-10-02> patch level 2

LuaHBTEX: LuaTEX + HarfBuzz

→強力なOpenTypeレイアウト機能を手に入れた

時代はLuaTEX

Page 86: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○= LuaLATEXはLuaHBTEXで動くTEX Live 2019最終版の LuaLATEXThis is LuaTeX, Version 1.10.0 (TeX Live 2019)system commands enabled....LaTeX2e <2020-02-02> patch level 5

TEX Live 2020最新版の LuaLATEXThis is LuaHBTeX, Version 1.12.0 (TeX Live 2020)system commands enabled....LaTeX2e <2020-10-02> patch level 2

LuaHBTEX: LuaTEX + HarfBuzz

→強力なOpenTypeレイアウト機能を手に入れた

時代はLuaTEX

Page 87: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

○○= LuaLATEXはLuaHBTEXで動くTEX Live 2019最終版の LuaLATEXThis is LuaTeX, Version 1.10.0 (TeX Live 2019)system commands enabled....LaTeX2e <2020-02-02> patch level 5

TEX Live 2020最新版の LuaLATEXThis is LuaHBTeX, Version 1.12.0 (TeX Live 2020)system commands enabled....LaTeX2e <2020-10-02> patch level 2

LuaHBTEX: LuaTEX + HarfBuzz

→強力なOpenTypeレイアウト機能を手に入れた

時代はLuaTEX

Page 88: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

結論

最近のLATEXは

日々進化している

Page 89: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

結論

機能追加に伴って,挙動の変化はつきもの。正しく活用するための知識と新習慣を今のうちに身につけておきましょう!

1. DVIドライバは必ずグローバルオプションに

2. 書体の変化にご注意

Page 90: 最近のLATEXはLATEX News Issue 31 (February 2020) LATEX News Issue 31, February 2020 Contents Experiences with the LATEX-devformats49 Concerning this release ...(LuaLATEX engine)49

まとめ

公式ドキュメントを読もう▶ LATEX News (ltnews.pdf)

▶ pLATEXニュース (plnewsc**.tex)