Hello community,
here is the log from the commit of package texlive-specs-z for openSUSE:Factory checked in at 2020-05-29 21:19:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/texlive-specs-z (Old)
and /work/SRC/openSUSE:Factory/.texlive-specs-z.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "texlive-specs-z"
Fri May 29 21:19:42 2020 rev:39 rq:806936 version:unknown
Changes:
--------
--- /work/SRC/openSUSE:Factory/texlive-specs-z/texlive-specs-z.changes 2019-11-07 23:12:44.148285658 +0100
+++ /work/SRC/openSUSE:Factory/.texlive-specs-z.new.3606/texlive-specs-z.changes 2020-05-29 21:35:00.966228202 +0200
@@ -1,0 +2,60 @@
+Mon May 18 08:47:10 UTC 2020 - Dr. Werner Fink
+
+- Enhance spec file generator to find missing .so man page
+ links for better dependency resolution (bsc#1171682)
+
+-------------------------------------------------------------------
+Wed May 13 13:59:14 UTC 2020 - Dr. Werner Fink
+
+- Modify patch texdoc_cnf.dif to ignore tlpkg/texlive.tlpdb as
+ kpathsea uses the ls-R files as well
+
+-------------------------------------------------------------------
+Tue May 12 09:03:38 UTC 2020 - Dr. Werner Fink
+
+- Correct obsoletes for new packages
+
+-------------------------------------------------------------------
+Wed May 6 11:27:35 UTC 2020 - Dr. Werner Fink
+
+- Scan *.def files as well for RequirePackage
+
+-------------------------------------------------------------------
+Tue May 5 13:55:07 UTC 2020 - Dr. Werner Fink
+
+- Add Requires to tex(epstopdf-base.sty) to fix package split
+ of texlive-epstopdf
+
+-------------------------------------------------------------------
+Mon May 4 09:00:25 UTC 2020 - Dr. Werner Fink
+
+- Skip *-dev packages from file dependendcy scanner as otherwise
+ we see doubling name space for some style files like amsmath.sty
+
+-------------------------------------------------------------------
+Mon Apr 27 06:52:15 UTC 2020 - Dr. Werner Fink
+
+- Add patch pythontex_p2top3.dif and a removes file to fully
+ switch pythontex packages of TeXLive to python3
+
+-------------------------------------------------------------------
+Mon Apr 20 10:29:02 UTC 2020 - Dr. Werner Fink
+
+- Update to TeXLive 2020
+ * Port patches
+ kpathsea_cnf.dif
+ latexpand_perl.dif
+ luaotfload_varfonts.dif
+ luatex_cnf.dif
+ musixtex_various.dif
+ * Delete patches not needed anymore as files have moved
+ tetex_scripts.dif
+ * Delete patche updmap-map_roboto.dif as fixed upstream
+ * Add new patches to catch moved files
+ texlive-scripts-extra_scripts.dif
+ texlive-scripts_scripts.dif
+ * Add new patch xetex_conf.dif to fit FHS location
+ * Remove TeXLive installer files breaking rpm database
+ texlive-scripts.removes
+
+-------------------------------------------------------------------
New:
----
xecyrmongolian.doc.tar.xz
xecyrmongolian.tar.xz
xelatex-dev.tar.xz
xepersian-hm.doc.tar.xz
xepersian-hm.tar.xz
xetex_conf.dif
xkcdcolors.doc.tar.xz
xkcdcolors.tar.xz
xpdfopen.doc.tar.xz
yazd-thesis.doc.tar.xz
yazd-thesis.tar.xz
yquant.doc.tar.xz
yquant.tar.xz
zref.doc.tar.xz
zref.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ texlive-specs-z.spec ++++++
++++ 11322 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/texlive-specs-z/texlive-specs-z.spec
++++ and /work/SRC/openSUSE:Factory/.texlive-specs-z.new.3606/texlive-specs-z.spec
++++++ xassoccnt.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xassoccnt.doc.tlpobj new/tlpkg/tlpobj/xassoccnt.doc.tlpobj
--- old/tlpkg/tlpobj/xassoccnt.doc.tlpobj 2019-02-28 04:15:13.000000000 +0100
+++ new/tlpkg/tlpobj/xassoccnt.doc.tlpobj 2020-03-04 23:55:20.000000000 +0100
@@ -1,6 +1,6 @@
name xassoccnt.doc
category Package
-revision 49516
+revision 54080
shortdesc doc files of xassoccnt
relocated 1
docfiles size=354
++++++ xassoccnt.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xassoccnt.tlpobj new/tlpkg/tlpobj/xassoccnt.tlpobj
--- old/tlpkg/tlpobj/xassoccnt.tlpobj 2019-02-28 04:15:14.000000000 +0100
+++ new/tlpkg/tlpobj/xassoccnt.tlpobj 2020-03-04 23:55:21.000000000 +0100
@@ -1,6 +1,6 @@
name xassoccnt
category Package
-revision 49516
+revision 54080
shortdesc Associated counters stepping simultaneously
relocated 1
longdesc This package provides a way of associating counters to an
@@ -15,9 +15,7 @@
runfiles size=31
RELOC/tex/latex/xassoccnt/xassoccnt.sty
catalogue-also assoccnt
-catalogue-contact-home http://www.ich-rede-mich-um-kopf-und-kragen.de
catalogue-ctan /macros/latex/contrib/xassoccnt
-catalogue-date 2018-12-28 09:34:58 +0100
catalogue-license lppl1.3
catalogue-topics counter-mgmt macro-supp
catalogue-version 1.7
++++++ xbmks.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xbmks/README.md new/doc/latex/xbmks/README.md
--- old/doc/latex/xbmks/README.md 2018-07-04 23:28:02.000000000 +0200
+++ new/doc/latex/xbmks/README.md 2020-01-18 22:21:48.000000000 +0100
@@ -1,6 +1,6 @@
The xbmks Package
Author: D. P. Story
-Dated: 2018/07/04
+Dated: 2020-01-16
Short description: Create a cross-document bookmark tree.
@@ -16,6 +16,9 @@
PDF Creator: no restrictions, use dvips->distiller|ps2pdf, pdflatex,
lualatex, or xelatex.
+What's New (2020/01/16) Minor modifications to conform to the
+new web.cfg, which is read, if it exists.
+
What's New (2018/07/04) Fixed a problem wherein the bookmarks do not appear
after an even number of compilations.
Binary files old/doc/latex/xbmks/docs/xbmksman.pdf and new/doc/latex/xbmks/docs/xbmksman.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xbmks/docs/xbmksman.tex new/doc/latex/xbmks/docs/xbmksman.tex
--- old/doc/latex/xbmks/docs/xbmksman.tex 2018-07-04 23:28:02.000000000 +0200
+++ new/doc/latex/xbmks/docs/xbmksman.tex 2020-01-18 22:21:48.000000000 +0100
@@ -11,12 +11,12 @@
aebxmp
]{aeb_pro}
\usepackage{aeb_mlink}
-\usepackage{xbmks}
\usepackage{graphicx,array}
%\usepackage{myriadpro}
%\usepackage{calibri}
\usepackage[altbullet]{lucidbry}
+\usepackage{xbmks}
\DeclareInitView{layoutmag={navitab:UseOutlines}}
\xbmksetup{colors={int=red},styles={intbf}}
@@ -63,7 +63,7 @@
email={dpstory@acrotex.net},
subject={Documentation for the xbmks package from AcroTeX: cross-document bookmarks},
talksite={\url{www.acrotex.net}},
- version={v2.0.2, 2018/07/04},
+ version={2.0.3, 2020/01/16},
Keywords={AcroTeX, bookmarks, cross-document, document bundle},
copyrightStatus=True,
copyrightNotice={Copyright (C) \the\year, D. P. Story},
Binary files old/doc/latex/xbmks/examples/doc1.pdf and new/doc/latex/xbmks/examples/doc1.pdf differ
Binary files old/doc/latex/xbmks/examples/doc2.pdf and new/doc/latex/xbmks/examples/doc2.pdf differ
Binary files old/doc/latex/xbmks/examples/master.pdf and new/doc/latex/xbmks/examples/master.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xbmks.doc.tlpobj new/tlpkg/tlpobj/xbmks.doc.tlpobj
--- old/tlpkg/tlpobj/xbmks.doc.tlpobj 2019-02-28 04:15:14.000000000 +0100
+++ new/tlpkg/tlpobj/xbmks.doc.tlpobj 2020-01-19 01:54:52.000000000 +0100
@@ -1,9 +1,9 @@
name xbmks.doc
category Package
-revision 48138
+revision 53448
shortdesc doc files of xbmks
relocated 1
-docfiles size=105
+docfiles size=118
RELOC/doc/latex/xbmks/README.md
RELOC/doc/latex/xbmks/docs/xbmks.pdf
RELOC/doc/latex/xbmks/docs/xbmksman.pdf
++++++ xbmks.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xbmks/xbmks.sty new/tex/latex/xbmks/xbmks.sty
--- old/tex/latex/xbmks/xbmks.sty 2018-07-04 23:28:02.000000000 +0200
+++ new/tex/latex/xbmks/xbmks.sty 2020-01-18 22:21:48.000000000 +0100
@@ -19,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[1997/12/01]
\ProvidesPackage{xbmks}
- [2018/07/04 v2.0.2 xbmks: Cross-document bookmarks (dps)]
+ [2020/01/16 v2.0.3 xbmks: Cross-document bookmarks (dps)]
\RequirePackage{xkeyval}
\RequirePackage{ifpdf}[2006/02/20]
\RequirePackage{ifxetex}[2006/08/21]
@@ -29,6 +29,8 @@
\DeclareOptionX{pdftex}{\def\xbmk@driver{xbmks-pdftex.def}}
\DeclareOptionX{luatex}{\def\xbmk@driver{xbmks-pdftex.def}}
\DeclareOptionX{xetex}{\def\xbmk@driver{xbmks-xetex.def}}
+\let\bWebCustomize\endinput
+\let\eWebCustomize\relax
\ifpdf\ExecuteOptionsX{pdftex}\else
\ifxetex\ExecuteOptionsX{xetex}\else
\let\ExecuteOptions@SAVE\ExecuteOptions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xbmks.tlpobj new/tlpkg/tlpobj/xbmks.tlpobj
--- old/tlpkg/tlpobj/xbmks.tlpobj 2019-02-28 04:15:14.000000000 +0100
+++ new/tlpkg/tlpobj/xbmks.tlpobj 2020-01-19 01:54:52.000000000 +0100
@@ -1,6 +1,6 @@
name xbmks
category Package
-revision 48138
+revision 53448
shortdesc Create a cross-document bookmark tree
relocated 1
longdesc The package defines the concept of a document bundle, which is
@@ -17,6 +17,5 @@
RELOC/tex/latex/xbmks/xbmks-xetex.def
RELOC/tex/latex/xbmks/xbmks.sty
catalogue-ctan /macros/latex/contrib/xbmks
-catalogue-date 2018-07-04 18:39:06 +0200
catalogue-license lppl1.2
catalogue-topics pdfprocess adobe-distiller
++++++ xcharter.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xcharter/README new/doc/fonts/xcharter/README
--- old/doc/fonts/xcharter/README 2018-08-27 23:40:13.000000000 +0200
+++ new/doc/fonts/xcharter/README 2020-01-24 22:46:53.000000000 +0100
@@ -1,6 +1,6 @@
XCharter Fonts
Michael Sharpe
- 2018-08-25
+ 2020-01-23
This package is an extension of Bitstream Charter, whose original license is reproduced below, as required under the terms of that license. The extension provides small caps, oldstyle figures and superior figures in all four styles, accompanied by LaTeX font support files. The font files themselves are in otf and pfb formats. The fonts are licensed as Free fonts under the same terms as the original from Bitstream. All other support files are subject to the LaTeX Project Public License. See
http://www.ctan.org/license/lppl1.3
@@ -19,10 +19,45 @@
BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-Portions of the font modifications are Copyright (c) 2009--2012, Andrey Panov; Copyright (c) 2013--2018, Michael Sharpe.
+Portions of the font modifications are Copyright (c) 2009--2012, Andrey Panov; Copyright (c) 2013--2020, Michael Sharpe.
-Current version: 1.116 2018-08-25
+Current version: 1.205 2020-01-23
+
+Changes in version 1.205
+Replaced the otf files, some of which had corrupted feature lookups.
+
+Changes in version 1.204
+1. Added the missing Dcroat glyphs in the otf files.
+2. Added Greek glyphs designed earlier for math use as text glyphs in the otf files. Currently, these are available only in Roman, Italic, Slanted and Bold, but the only ones with reasonably proper text spacing are Roman and Italic. These are not yet available to LaTeX users.
+3. For reasons I do not understand, with the current version of fontspec, loading XCharter with option Numbers={OldStyle} does not work, but RawFeature={+onum} does.
+
+Changes in version 1.203
+1. Corrected a bad LIGKERN entry affecting the >> ligature in t2 encodings.
+2. Modified the math italic and bold math italic v and w to be more shapely.
+3. Added a variant for of math italic and bold math italic y. These may be chosen using the alty option to newtxmath/charter.
+(Thanks Fabien Guillemot for suggestions concerning the last two items.)
+
+Changes in version 1.202
+Removed some tfm files which were duplicates of some in newtx.
+
+Changes in version 1.201
+Changed name of subscript adjustments file from xcharter.subs to newtx-xcharter-subs.tex.
+
+Changes in version 1.20
+The mathematical parts of fonts have been enhanced so that, when used with newtxmath, they can produce pdf files that satisfy PDF/A-1b. See the newtxmath documentation for details. Note that \hslash, \hbar, \lambdaslash and \lambdabar are now built from Charter glyphs.
+
+Changes in version 1.122
+1. Added many accented glyphs, so that XCharter can now be used to produce Romanized forms of Sanskrit, Tamil and Vietnamize, as well as other European languages.
+2. Modified a number of kerning pairs.
+
+Changes in version 1.121
+Added mark to mark tables so that in unicode text processing, single diacritics are correctly drawn even if there is no precomposed glyph.
+
+Changes in version 1.12
+1. Added new glyphs for Sharp-s and its small caps version as well as a new feature, ss01, to control whether to use these forms in unicode processing.
+2. Added feature cv01 to control shape of oldstyle "one" in unicode processing.
+3. Added kerning for parens and brackets as well as for some unusual letter combinations.
Changes in version 1.116
1. Corrected some kerns between quotesinglbase---U+201A (resp., quotedblbase---U+201E) and A, X. (Thanks to Ulrich Büchsel.)
Binary files old/doc/fonts/xcharter/newgermanfxch-crop.pdf and new/doc/fonts/xcharter/newgermanfxch-crop.pdf differ
Binary files old/doc/fonts/xcharter/newgermanfxch.pdf and new/doc/fonts/xcharter/newgermanfxch.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xcharter/newgermanfxch.tex new/doc/fonts/xcharter/newgermanfxch.tex
--- old/doc/fonts/xcharter/newgermanfxch.tex 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/fonts/xcharter/newgermanfxch.tex 2019-08-02 23:29:42.000000000 +0200
@@ -0,0 +1,121 @@
+% !TEX TS-program = XeLaTeX
+\documentclass[11pt]{article}
+\usepackage{geometry}
+\usepackage{fontspec}
+%\uccode`ß=\SS
+%\renewcommand{\SS}{{\addfontfeature{RawFeature=+ss02}\symbol{"1E9E}}}
+\defaultfontfeatures{Mapping=tex-text}
+\setromanfont{XCharter}
+\pagestyle{empty}
+%\setromanfont{cochineal}[StylisticSet=1]
+%\setromanfont{cochineal}[StylisticSet=1]
+%\setsansfont[Scale=MatchLowercase,Mapping=tex-text]{LMSans}
+%\setmonofont[Scale=MatchLowercase]{courierN}
+%\newunicodechar{ß}{\ss}
+%\usepackage{fonttable}
+%\usepackage[ngerman]{babel}
+%\usepackage{polyglossia}
+%\setmainlanguage{german}
+%\def\longs{\symbol{"017F}}
+\begin{document}
+\noindent \textbf{New symbols in XCharter:}
+\begin{center}
+ \begin{tabular}{@{} lcl @{}}
+ \hline
+ Glyph name & glyph & macro\\
+ \hline
+ {\tt uni1E9E} & \symbol{"1E9E} &\verb|\symbol{"1E9E}|\\
+ {\tt uni1E9E.ss01} & {\addfontfeature{StylisticSet=1}\symbol{"1E9E}} & \verb|{\addfontfeature{StylisticSet=1}\symbol{"1E9E}}| \\
+ {\tt germandbls.sc} & \textsc{\ss} & \verb|{\textsc{\ss}}| \\
+ {\tt germandbls.sc.ss01} & {\addfontfeature{StylisticSet=1}\textsc{\ss}} & \verb|{\addfontfeature{StylisticSet=1}\textsc{\ss}}| \\
+ \hline
+ \end{tabular}
+\end{center}
+
+%{\bfseries
+%\begin{center}
+% \begin{tabular}{@{} lcl @{}}
+% \hline
+% Glyph name & glyph & macro\\
+% \hline
+% {\tt uni1E9E} & \symbol{"1E9E} &\verb|\symbol{"1E9E}|\\
+% {\tt uni1E9E.alt} & {\addfontfeature{StylisticSet=1}\symbol{"1E9E}} & \verb|{\addfontfeature{StylisticSet=1}\symbol{"1E9E}}| \\
+% {\tt germandbls.sc.ss02} & {\addfontfeature{StylisticSet=1}\textsc{\ss}} & \verb|{\addfontfeature{StylisticSet=1}\textsc{\ss}}| \\
+% \hline
+% \end{tabular}
+%\end{center}
+%}
+\noindent \textbf{Effect of choice of {\tt StylisticSet}:}
+
+\begin{center}
+ \begin{tabular}{@{} ccccc @{}}
+ \hline
+ StylisticSet & \verb|\ss| & \verb|\SS| & \verb|\MakeUppercase{\ss}| & \verb|\textsc{\ss}| \\
+ \hline
+ None & \ss & \SS & \MakeUppercase{\ss} & \textsc{\ss}\\
+
+ =1 & {\addfontfeature{StylisticSet=1}\ss} & {\addfontfeature{StylisticSet=1}\SS} & {\addfontfeature{StylisticSet=1}\MakeUppercase{\ss}} & {\addfontfeature{StylisticSet=1}\textsc{\ss}}\\
+ \hline
+ \end{tabular}
+\end{center}
+
+\noindent \textbf{Choosing the shape of the oldstyle figure ``one'':}\\
+
+The default is \oldstylenums{1}. The choice is controlled by the feature \texttt{cv01}. To change this globally when you load XCharter, you may make oldstyle numbers the default with the alternate shape for ``one'':
+\begin{verbatim}
+\setmainfont{XCharter}[CharacterVariant={1:0},Numbers={OldStyle}]
+\end{verbatim}
+To set this for one-time use, you can write:
+\begin{verbatim}
+{\addfontfeature{CharacterVariant={1:0},Numbers={OldStyle}}1}
+\end{verbatim}
+to make $1$ render as {\addfontfeature{CharacterVariant={1:0},Numbers={OldStyle}}\oldstylenums{1}}. (According to its documentation, the first index $1$ in \verb|{1:0}| refers to the {\tt CharacterVariant} index, and the second index, $0$, refers to the first choice specified among the variant forms.)
+
+
+%{\itshape
+%\begin{center}
+% \begin{tabular}{@{} ccccc @{}}
+% \hline
+% StylisticSet & \verb|\ss| & \verb|\SS| & \verb|\MakeUppercase{\ss}| & \verb|\textsc{\ss}| \\
+% \hline
+% None & \ss & \SS & \MakeUppercase{\ss} & \textsc{\ss}\\
+%
+% =1 & {\addfontfeature{StylisticSet=1}\ss} & {\addfontfeature{StylisticSet=1}\SS} & {\addfontfeature{StylisticSet=1}\MakeUppercase{\ss}} & {\addfontfeature{StylisticSet=1}\textsc{\ss}}\\
+% \hline
+% \end{tabular}
+%\end{center}
+%}
+%
+%\bfseries
+%\begin{center}
+% \begin{tabular}{@{} ccccc @{}}
+% \hline
+% StylisticSet & \verb|\ss| & \verb|\SS| & \verb|\MakeUppercase{\ss}| & \verb|\textsc{\ss}| \\
+% \hline
+% None & \ss & \SS & \MakeUppercase{\ss} & \textsc{\ss}\\
+%
+% =1 & {\addfontfeature{StylisticSet=1}\ss} & {\addfontfeature{StylisticSet=1}\SS} & {\addfontfeature{StylisticSet=1}\MakeUppercase{\ss}} & {\addfontfeature{StylisticSet=1}\textsc{\ss}}\\
+% \hline
+% \end{tabular}
+%\end{center}
+%
+%\itshape
+%\begin{center}
+% \begin{tabular}{@{} ccccc @{}}
+% \hline
+% StylisticSet & \verb|\ss| & \verb|\SS| & \verb|\MakeUppercase{\ss}| & \verb|\textsc{\ss}| \\
+% \hline
+% None & \ss & \SS & \MakeUppercase{\ss} & \textsc{\ss}\\
+%
+% =1 & {\addfontfeature{StylisticSet=1}\ss} & {\addfontfeature{StylisticSet=1}\SS} & {\addfontfeature{StylisticSet=1}\MakeUppercase{\ss}} & {\addfontfeature{StylisticSet=1}\textsc{\ss}}\\
+% \hline
+% \end{tabular}
+%\end{center}
+
+%{\addfontfeature{StylisticSet=1}
+%
+%\ss\ \MakeUppercase{\ss} \SS\ \textsc{\ss}
+%
+%}
+%\expandafter\show\csname SS\endcsname
+\end{document}
\ No newline at end of file
Binary files old/doc/fonts/xcharter/xcharter-doc.pdf and new/doc/fonts/xcharter/xcharter-doc.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xcharter/xcharter-doc.tex new/doc/fonts/xcharter/xcharter-doc.tex
--- old/doc/fonts/xcharter/xcharter-doc.tex 2018-08-27 23:40:13.000000000 +0200
+++ new/doc/fonts/xcharter/xcharter-doc.tex 2019-11-22 23:14:57.000000000 +0100
@@ -1,20 +1,29 @@
-% !TEX TS-program = pdflatexmk
+% !TEX TS-program = pdflatexmk
\documentclass[11pt]{article}
+\pdfcompresslevel=0
+\pdfgentounicode=1
+\input glyphtounicode.tex
+\InputIfFileExists{glyphtounicode-cmr.tex}{}{}
+\InputIfFileExists{glyphtounicode-ntx.tex}{}{}
+\usepackage[a-1b]{pdfx} % version 1.6.4 or higher
\usepackage[margin=1in]{geometry}
\usepackage[parfill]{parskip}
-\pdfmapfile{=XCharter.map}
+\usepackage{graphicx}
+%\pdfmapfile{=XCharter.map}
+%\pdfmapfile{=newtx.map}
\usepackage[scaled=1.03,varqu,varl]{inconsolata}
\usepackage[type1]{cabin}
-\usepackage[scaled=.98,osfI]{XCharter}
+\usepackage[scaled=.98,osf]{XCharter}
\usepackage[OT2,T2A,T1]{fontenc}
\linespread{1.04}
-\usepackage[charter,vvarbb,scaled=1.05]{newtxmath}
+\usepackage[charter,alty,vvarbb,scaled=1.05]{newtxmath}
\usepackage[cal=boondoxo]{mathalfa}
\font\osfIfnt=XCharter-Roman-tosf-t1 at 11pt
\font\osffnt=XCharter1-Roman-tosf-t1 at 11pt
\usepackage{fonttable}
\usepackage{booktabs}
\usepackage{url}
+\def\Sha{{\usefont{OT2}{XCharter-TLF}{m}{n}\char88 }}
\newcommand\cyrtext{\fontfamily{XCharter-TLF}\fontencoding{OT2}\selectfont} % declaration
\DeclareTextFontCommand{\textcyr}{\cyrtext} %macro with argument
%\usepackage[cal=rsfso]{mathalfa}
@@ -62,8 +71,8 @@
\end{itemize}
-Three math packages seem to provide reasonable companions for \textsf{XCharter}. The first example uses Charter italics as math italics, but doesn't provide arbitrary scaling and doesn't sufficiently distinguish math italic v from mathematical Greek \verb|\nu|. Moreover, it is not easy to redefine \verb|\mathcal| to get a better math calligraphic alphabet---eg, the {\tt mathalfa} package fails. The second uses \textsf{libertine} italics and Greek in math mode, which is a good match to Charter in style and weight after scaling up, is arbitrarily scalable, has distinct math italic v and mathematical Greek \verb|\nu|, and is completely compatible with {\tt mathalfa}. The third is a new revision of {\tt newtxmath} with option {\tt charter} (or, equivalently, {\tt xcharter}), which substitutes Charter italics as math italics and, as of version 1.11, uses a newly developed family of Greek symbols in {regular,bold} $\times$ {upright, italic} to match the style and italic angle of XCharter. This version is scalable and has a math italic v (plus a matching w) distinct from \verb|\nu|. (The option {\tt noxchvw} to {\tt newtxmath} changes the v and w to be the original Charter italic glyphs, which may lead to issues with \verb|\nu|.)
-
+Three math packages seem to provide reasonable companions for \textsf{XCharter}. The first example uses Charter italics as math italics, but doesn't provide arbitrary scaling and doesn't sufficiently distinguish math italic v from mathematical Greek \verb|\nu|. Moreover, it is not easy to redefine \verb|\mathcal| to get a better math calligraphic alphabet---eg, the {\tt mathalfa} package fails. The second uses \textsf{libertine} italics and Greek in math mode, which is a good match to Charter in style and weight after scaling up, is arbitrarily scalable, has distinct math italic v and mathematical Greek \verb|\nu|, and is completely compatible with {\tt mathalfa}. The third is a new revision of {\tt newtxmath} with option {\tt charter} (or, equivalently, {\tt xcharter}), which substitutes Charter italics as math italics and, as of version 1.11, uses a newly developed family of Greek symbols in \{regular, bold\} $\times$ \{upright, italic\} to match the style and italic angle of XCharter. This version is scalable and has a math italic v (plus a matching w) distinct from \verb|\nu|. (The option {\tt noxchvw} to {\tt newtxmath} changes the v and w to be the original Charter italic glyphs, which may lead to issues with \verb|\nu|. The option {\tt alty} to {\tt newtxmath/charter}, new as of version {\tt 1.203}, substitutes $y$ for the default \emph{y} which, IMO, works better in combination with other math symbols because it lacks the problematic tail of \emph{y}.)
+%\newpage
\textsc{Example 1:}
\begin{verbatim}
@@ -77,7 +86,7 @@
\usepackage[scaled=.98,sups,osf]{XCharter}% lining figures in math, osf in text
\usepackage[scaled=1.04,varqu,varl]{inconsolata}% inconsolata typewriter
\usepackage[type1]{cabin}% sans serif
-\usepackage[libertine,vvarbb,scaled=1.07]{newtxmath}
+\usepackage[libertine,vvarbb,scaled=1.05]{newtxmath}
\usepackage[cal=boondoxo]{mathalfa}
\linespread{1.04}
\end{verbatim}
@@ -87,7 +96,7 @@
\usepackage[scaled=.98,sups,osf]{XCharter}% lining figures in math, osf in text
\usepackage[scaled=1.04,varqu,varl]{inconsolata}% inconsolata typewriter
\usepackage[type1]{cabin}% sans serif
-\usepackage[charter,vvarbb,scaled=1.07]{newtxmath}
+\usepackage[charter,vvarbb,scaled=1.05]{newtxmath}
\usepackage[cal=boondoxo]{mathalfa}
\linespread{1.04}
\end{verbatim}
@@ -97,11 +106,30 @@
\usepackage[scaled=.98,sups,osf]{XCharter}% osf in text, lining figures in math
\usepackage[scaled=1.04,varqu,varl]{inconsolata}% inconsolata typewriter
\usepackage[type1]{cabin}% sans serif
-\usepackage[charter,vvarbb,scaled=1.07]{newtxmath}
+\usepackage[charter,vvarbb,scaled=1.05]{newtxmath}
+\usepackage[cal=boondoxo]{mathalfa}
+\linespread{1.04}
+\end{verbatim}
+
+\textsc{Example 5:}
+\begin{verbatim}
+% Adds instructions to produce a pdf conforming tp PDF/A-1b
+\pdfcompresslevel=0
+\pdfgentounicode=1
+\input glyphtounicode.tex
+\InputIfFileExists{glyphtounicode-cmr.tex}{}{}
+\InputIfFileExists{glyphtounicode-ntx.tex}{}{}
+\usepackage[a-1b]{pdfx} % version 1.6.4 or higher
+\usepackage[<specify babel languages>]{babel}% load before XCharter
+\usepackage[scaled=.98,sups,osf]{XCharter}% osf in text, lining figures in math
+\usepackage[scaled=1.04,varqu,varl]{inconsolata}% inconsolata typewriter
+\usepackage[type1]{cabin}% sans serif
+\usepackage[charter,vvarbb,scaled=1.05]{newtxmath}
\usepackage[cal=boondoxo]{mathalfa}
\linespread{1.04}
\end{verbatim}
+
Here is a short sample based on the preamble of \textsc{Example 3}:\\[4pt]
\def\Pr{\ensuremath{\mathbb{P}}}
\def\rmd{\mathrm{d}}
@@ -158,7 +186,7 @@
\testlowgreekiu\testlowgreekiiu\testlowgreekiiiu}
\def\test#1{\; #1}
-\newpage
+%\newpage
\textbf{Greek letters in version 1.11:} \[\testupgreek\]
\[\testupgreekit\]
\[\testlowgreek\]
@@ -202,6 +230,10 @@
\textsc{XCharter-Roman-tlf-ot2.tfm}:\\
\fonttable{XCharter-Roman-tlf-ot2}
+This encoding contains the upright {\tt Sha} glyph in slot 88. This may be used in mathematical formulas by defining
+\verb|\def\Sha{{\usefont{OT2}{XCharter-TLF}{m}{n}\char88 }}|
+so that one may write \verb|$\text{\Sha}(A/K)$| for the Tate–Shafarevich group $\text{\Sha}(A/K)$.
+
\textsc{Example OT$2$ Preamble:}
\begin{verbatim}
@@ -287,4 +319,26 @@
It may be be possible to work out a scheme that would allow multiple scripts and languages to be used with {\tt serbianc} as the main or as a secondary language in {\tt babel}, but I have not succeeded in doing this with XCharter, and know of no other example that I might crib from.
%\textsc{Example 2:
+
+\section*{Opentype processing and German orthography}
+Prior to version {\tt1.12}, {\tt XCharter} offered only basic support for German orthography, having all required accented glyphs and the lower case \ss, as well as a small caps \textsc{\ss}. Under LaTeX, the T$1$ encoding contained \verb|S_S|. With unicode tex processing:
+\begin{verbatim}
+{\addfontfeature{StylisticSet=1}\ss\ \textsc{\ss}}
+\end{verbatim}
+typesets, as in LaTeX processing, to
+
+\ss\ \textsc{\ss}
+
+Note also that in unicode processing, in order to obtain the expected case change behavior, it may be necessary to add in your preamble:
+\begin{verbatim}
+\uccode`ß="1E9E
+\end{verbatim}
+
+
+ As of version {\tt1.12} of {\tt XCharter}, there are now glyphs in each style for {\tt U+1E9E} and for its small caps version, accessible under unicode TeX. The glyphs may be used as the uppercase and small caps versions of {\tt germandbls}. Currently, the new glyphs are not available in any of the LaTeX encodings and must be used via unicode TeX.
+
+The following tables show how to access the new glyphs in unicode TeX. Note that you will need to set {\tt StylisticSet=1} if you wish not to use the new sharp-s glyphs.
+
+\includegraphics{newgermanfxch-crop}
+
\end{document}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xcharter.doc.tlpobj new/tlpkg/tlpobj/xcharter.doc.tlpobj
--- old/tlpkg/tlpobj/xcharter.doc.tlpobj 2019-02-28 04:15:14.000000000 +0100
+++ new/tlpkg/tlpobj/xcharter.doc.tlpobj 2020-03-24 02:04:28.000000000 +0100
@@ -1,10 +1,13 @@
name xcharter.doc
category Package
-revision 48498
+revision 54512
shortdesc doc files of xcharter
relocated 1
-docfiles size=95
+docfiles size=193
RELOC/doc/fonts/xcharter/README
RELOC/doc/fonts/xcharter/altone.py
+ RELOC/doc/fonts/xcharter/newgermanfxch-crop.pdf
+ RELOC/doc/fonts/xcharter/newgermanfxch.pdf
+ RELOC/doc/fonts/xcharter/newgermanfxch.tex
RELOC/doc/fonts/xcharter/xcharter-doc.pdf
RELOC/doc/fonts/xcharter/xcharter-doc.tex
++++++ xcharter.tar.xz ++++++
++++ 28556 lines of diff (skipped)
++++++ xcite.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xcite/README new/doc/latex/xcite/README
--- old/doc/latex/xcite/README 2011-09-04 01:15:34.000000000 +0200
+++ new/doc/latex/xcite/README 2020-01-21 22:44:13.000000000 +0100
@@ -1,9 +1,13 @@
The xcite lets you use citations keys used in another
document, just like the package xr does with labels.
-This is version 1.0 of the package
+This is version 16383.99998 of the package.
-Copyright (C) 2011 by Enrico Gregorio
+Actually this is the final version which just loads
+xr, which now includes the facilities previously in
+xcite.
+
+Copyright (C) 2011-2020 by Enrico Gregorio
<Enrico dot Gregorio at univr dot it>
-------------------------------------------------------
@@ -37,5 +41,5 @@
o run "makeindex -s gglo.ist -o xcite.gls xcite.glo"
o run "pdflatex xcite.dtx"
-2011/09/02
+2020/01/21
Enrico Gregorio
Binary files old/doc/latex/xcite/xcite.pdf and new/doc/latex/xcite/xcite.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xcite.doc.tlpobj new/tlpkg/tlpobj/xcite.doc.tlpobj
--- old/tlpkg/tlpobj/xcite.doc.tlpobj 2019-02-28 04:15:17.000000000 +0100
+++ new/tlpkg/tlpobj/xcite.doc.tlpobj 2020-01-22 03:13:17.000000000 +0100
@@ -1,8 +1,8 @@
name xcite.doc
category Package
-revision 23783
+revision 53486
shortdesc doc files of xcite
relocated 1
-docfiles size=52
+docfiles size=40
RELOC/doc/latex/xcite/README
RELOC/doc/latex/xcite/xcite.pdf
++++++ xcite.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xcite/xcite.sty new/tex/latex/xcite/xcite.sty
--- old/tex/latex/xcite/xcite.sty 2011-09-04 01:15:34.000000000 +0200
+++ new/tex/latex/xcite/xcite.sty 2020-01-21 22:44:13.000000000 +0100
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 2011 by Enrico Gregorio
+%% Copyright (C) 2011-2020 by Enrico Gregorio
%% <Enrico dot Gregorio at univr dot it>
%% -------------------------------------------------------
%%
@@ -31,36 +31,8 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{xcite}
- [2011/09/02 v1.0 eXternal Citations (EG)]
-\newcommand\externalcitedocument[2][]{{%
- \makeatletter
- \def\XC@prefix{#1}%
- \XC@next#2.aux\relax\\}}
-\def\XC@next#1\relax#2\\{%
- \edef\XC@list{#2}%
- \XC@loop{#1}}
-\def\XC@aux{%
- \ifx\XC@list\@empty\else\expandafter\XC@explist\fi}
-\def\XC@explist{\expandafter\XC@next\XC@list\\}
-\def\XC@loop#1{\openin\@inputcheck#1\relax
- \ifeof\@inputcheck
- \PackageWarning{xc}{^^JNo file #1^^JLABELS NOT IMPORTED.^^J}%
- \expandafter\XC@aux
- \else
- \PackageInfo{xc}{IMPORTING LABELS FROM #1}%
- \expandafter\XC@read\fi}
-\def\XC@read{%
- \read\@inputcheck to\XC@line
- \expandafter\XC@test\XC@line...\XC@}
-\long\def\XC@test#1#2#3#4\XC@{%
- \ifx#1\bibcite
- \bibcite{\XC@prefix#2}{#3}%
- \else\ifx#1\@input
- \edef\XC@list{\XC@list#2\relax}%
- \fi\fi
- \ifeof\@inputcheck\expandafter\XC@aux
- \else\expandafter\XC@read\fi}
-
+ [2020/01/21 v16383.99998 eXternal Citations (EG)]
+\RequirePackage{xr}
\endinput
%%
%% End of file `xcite.sty'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xcite.tlpobj new/tlpkg/tlpobj/xcite.tlpobj
--- old/tlpkg/tlpobj/xcite.tlpobj 2019-02-28 04:15:17.000000000 +0100
+++ new/tlpkg/tlpobj/xcite.tlpobj 2020-01-22 03:13:17.000000000 +0100
@@ -1,14 +1,15 @@
name xcite
category Package
-revision 23783
+revision 53486
shortdesc Use citation keys from a different document
relocated 1
-longdesc The package lets you use citation keys from another document,
-longdesc just as the xr package allows cross-document use of labels.
+longdesc The package xcite is no longer necessary, because its
+longdesc functionality has been taken over by xr, so this final version
+longdesc is just a stub that loads xr.
runfiles size=1
RELOC/tex/latex/xcite/xcite.sty
+catalogue-also xr
catalogue-ctan /macros/latex/contrib/xcite
-catalogue-date 2016-06-24 19:18:15 +0200
-catalogue-license lppl1.3
-catalogue-topics cite-supp
-catalogue-version 1.0
+catalogue-license lppl1.3c
+catalogue-topics cite-supp obsolete
+catalogue-version 16383.99998
++++++ xcntperchap.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xcntperchap.doc.tlpobj new/tlpkg/tlpobj/xcntperchap.doc.tlpobj
--- old/tlpkg/tlpobj/xcntperchap.doc.tlpobj 2019-02-28 04:15:18.000000000 +0100
+++ new/tlpkg/tlpobj/xcntperchap.doc.tlpobj 2020-03-04 23:55:21.000000000 +0100
@@ -1,6 +1,6 @@
name xcntperchap.doc
category Package
-revision 46236
+revision 54080
shortdesc doc files of xcntperchap
relocated 1
docfiles size=102
++++++ xcntperchap.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xcntperchap.tlpobj new/tlpkg/tlpobj/xcntperchap.tlpobj
--- old/tlpkg/tlpobj/xcntperchap.tlpobj 2019-02-28 04:15:18.000000000 +0100
+++ new/tlpkg/tlpobj/xcntperchap.tlpobj 2020-03-04 23:55:21.000000000 +0100
@@ -1,6 +1,6 @@
name xcntperchap
category Package
-revision 46236
+revision 54080
shortdesc Track the number of subsections etc. that occur in a specified tracklevel
relocated 1
longdesc This package is the successor of cntperchap and allows to
@@ -8,9 +8,7 @@
runfiles size=3
RELOC/tex/latex/xcntperchap/xcntperchap.sty
catalogue-also cntperchap
-catalogue-contact-home http://www.ich-rede-mich-um-kopf-und-kragen.de
catalogue-ctan /macros/latex/contrib/xcntperchap
-catalogue-date 2018-01-05 22:19:02 +0100
catalogue-license lppl1.3
catalogue-topics counter-mgmt macro-supp
catalogue-version 0.5
++++++ xdvi.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/doc/man/man1/xdvi.1 new/texmf-dist/doc/man/man1/xdvi.1
--- old/texmf-dist/doc/man/man1/xdvi.1 2019-03-26 15:41:17.000000000 +0100
+++ new/texmf-dist/doc/man/man1/xdvi.1 2020-03-13 18:30:40.000000000 +0100
@@ -52,7 +52,7 @@
.de SB
\&\fB\s-1\&\\$1 \\$2\s0\fR
..
-.TH XDVI 1 "2016-04-02" "Xdvik 22.87.03"
+.TH XDVI 1 "2020-02-29" "Xdvik 22.87.04"
.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.\"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
.SH NAME
@@ -1885,7 +1885,7 @@
moves down the corresponding fraction of a window-full.
.\" Therefore, a more
.\" ``smooth'' scrolling using the ``Up'' and ``Down'' keys can be
-.\" achieved by the the following setting:
+.\" achieved by the following setting:
.\" .sp
.\" xdvi.mainTranslations: #override\e
.\" .br
@@ -3066,7 +3066,7 @@
mechanism, as a single argument after the `!'. Any arguments
listed in the
.B Dvips options
-field are segmented at whitespaces and passed as separate arguments to dvips.
+field are segmented at whitespace and passed as separate arguments to dvips.
If you e.g. want to print the file 2-up, you should enter
the following string into the
.B Printer
@@ -4133,6 +4133,7 @@
the
.B Kpathsea
documentation,
+.BR https://ctan.org/pkg/xdvi/ .
and the Xdvik home page at
.BR http://xdvi.sourceforge.net/ .
.SH AUTHORS
@@ -4147,10 +4148,9 @@
.PP
Code for the xdvik variant has been contributed
by many people, whose names are scattered across the
-source files. Xdvik is hosted on
-.B CTAN:dviware/xdvik
-and on SourceForge; for the most up-to-date information, please
-visit:
+source files.
+.PP
+For the most up-to-date information, please visit:
.PP
.B http://xdvi.sourceforge.net
.PP
Binary files old/texmf-dist/doc/man/man1/xdvi.man1.pdf and new/texmf-dist/doc/man/man1/xdvi.man1.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xdvi.doc.tlpobj new/tlpkg/tlpobj/xdvi.doc.tlpobj
--- old/tlpkg/tlpobj/xdvi.doc.tlpobj 2019-03-27 02:29:19.000000000 +0100
+++ new/tlpkg/tlpobj/xdvi.doc.tlpobj 2020-03-16 02:22:10.000000000 +0100
@@ -1,6 +1,6 @@
name xdvi.doc
category TLCore
-revision 50602
+revision 54338
shortdesc doc files of xdvi
docfiles size=70
texmf-dist/doc/man/man1/xdvi.1
++++++ xdvi.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xdvi.tlpobj new/tlpkg/tlpobj/xdvi.tlpobj
--- old/tlpkg/tlpobj/xdvi.tlpobj 2019-03-27 02:29:20.000000000 +0100
+++ new/tlpkg/tlpobj/xdvi.tlpobj 2020-03-16 02:22:10.000000000 +0100
@@ -1,6 +1,6 @@
name xdvi
category TLCore
-revision 50602
+revision 54338
shortdesc A DVI previewer for the X Window System
longdesc The canonical previewer for use on Unix and other X-windows
longdesc based systems. The distribution has been integrated with that
@@ -12,9 +12,7 @@
texmf-dist/xdvi/XDvi
texmf-dist/xdvi/pixmap/toolbar.xpm
texmf-dist/xdvi/pixmap/toolbar2.xpm
+catalogue-alias xdvik
catalogue-contact-repository http://xdvi.sourceforge.net/
-catalogue-ctan /dviware/xdvi
-catalogue-date 2018-08-16 21:33:21 +0200
catalogue-license other-free
catalogue-topics previewer
-catalogue-version 22.87
++++++ xechangebar.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xechangebar.doc.tlpobj new/tlpkg/tlpobj/xechangebar.doc.tlpobj
--- old/tlpkg/tlpobj/xechangebar.doc.tlpobj 2019-02-28 04:15:30.000000000 +0100
+++ new/tlpkg/tlpobj/xechangebar.doc.tlpobj 2020-03-04 23:55:22.000000000 +0100
@@ -1,6 +1,6 @@
name xechangebar.doc
category Package
-revision 44954
+revision 54080
shortdesc doc files of xechangebar
relocated 1
docfiles size=4
++++++ xechangebar.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xechangebar.tlpobj new/tlpkg/tlpobj/xechangebar.tlpobj
--- old/tlpkg/tlpobj/xechangebar.tlpobj 2019-02-28 04:15:30.000000000 +0100
+++ new/tlpkg/tlpobj/xechangebar.tlpobj 2020-03-04 23:55:22.000000000 +0100
@@ -1,17 +1,16 @@
name xechangebar
category Package
-revision 44954
+revision 54080
shortdesc An extension of package changebar that can be used with XeLaTeX
relocated 1
longdesc The package extends package changebar so it can be used with
longdesc XeLaTeX. It introduces the new option xetex for use with
longdesc XeLaTeX. Everything else remains the same and users should
-longdesc consult the original documenation for usage information.
+longdesc consult the original documentation for usage information.
runfiles size=9
RELOC/tex/xelatex/xechangebar/xechangebar.sty
catalogue-also changebar
catalogue-ctan /macros/xetex/latex/xechangebar
-catalogue-date 2017-08-06 05:28:53 +0200
catalogue-license lppl1.3
catalogue-topics editorial
catalogue-version 1.0
++++++ xecjk.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xelatex/xecjk/README.md new/doc/xelatex/xecjk/README.md
--- old/doc/xelatex/xecjk/README.md 2019-04-07 23:28:36.000000000 +0200
+++ new/doc/xelatex/xecjk/README.md 2020-02-10 23:12:31.000000000 +0100
@@ -20,8 +20,8 @@
---------------------
Copyright (C) 2007--2010 by Wenchang Sun
- Copyright (C) 2009--2019 by Leo Liu
- Copyright (C) 2012--2019 by Qing Lee
+ Copyright (C) 2009--2020 by Leo Liu
+ Copyright (C) 2012--2020 by Qing Lee
----------------------------------------------------------------------
This work may be distributed and/or modified under the
Binary files old/doc/xelatex/xecjk/xeCJK.pdf and new/doc/xelatex/xecjk/xeCJK.pdf differ
Binary files old/doc/xelatex/xecjk/xunicode-symbols.pdf and new/doc/xelatex/xecjk/xunicode-symbols.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xecjk.doc.tlpobj new/tlpkg/tlpobj/xecjk.doc.tlpobj
--- old/tlpkg/tlpobj/xecjk.doc.tlpobj 2019-04-08 01:40:32.000000000 +0200
+++ new/tlpkg/tlpobj/xecjk.doc.tlpobj 2020-02-19 01:55:58.000000000 +0100
@@ -1,6 +1,6 @@
name xecjk.doc
category Package
-revision 50852
+revision 53835
shortdesc doc files of xecjk
relocated 1
docfiles size=446
++++++ xecjk.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecjk/xeCJK-listings.sty new/tex/xelatex/xecjk/xeCJK-listings.sty
--- old/tex/xelatex/xecjk/xeCJK-listings.sty 2019-04-07 23:28:36.000000000 +0200
+++ new/tex/xelatex/xecjk/xeCJK-listings.sty 2020-02-18 23:31:44.000000000 +0100
@@ -7,8 +7,8 @@
%% xeCJK.dtx (with options: `listings')
%%
%% Copyright (C) 2007--2010 by Wenchang Sun
-%% Copyright (C) 2009--2019 by Leo Liu
-%% Copyright (C) 2012--2019 by Qing Lee
+%% Copyright (C) 2009--2020 by Leo Liu
+%% Copyright (C) 2012--2020 by Qing Lee
%% ----------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 8be031f 2019-04-07 23:30:14 +0800 Qing Lee $
+\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee $
{xeCJK patch file for listings}
\ProvidesExplPackage{xeCJK-listings}
- {\ExplFileDate}{3.7.2}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.2}{\ExplFileDescription}
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { xeCJK } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecjk/xeCJK.cfg new/tex/xelatex/xecjk/xeCJK.cfg
--- old/tex/xelatex/xecjk/xeCJK.cfg 2019-04-07 23:28:36.000000000 +0200
+++ new/tex/xelatex/xecjk/xeCJK.cfg 2020-02-18 23:31:44.000000000 +0100
@@ -6,10 +6,10 @@
%%
%% xeCJK.dtx (with options: `config')
%%
-\GetIdInfo$Id: xeCJK.dtx 8be031f 2019-04-07 23:30:14 +0800 Qing Lee $
+\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee $
{Configuration file for xeCJK package}
\ProvidesExplFile{\ExplFileName.cfg}
- {\ExplFileDate}{3.7.2}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.2}{\ExplFileDescription}
%%
%%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecjk/xeCJK.sty new/tex/xelatex/xecjk/xeCJK.sty
--- old/tex/xelatex/xecjk/xeCJK.sty 2019-04-07 23:28:36.000000000 +0200
+++ new/tex/xelatex/xecjk/xeCJK.sty 2020-02-18 23:31:44.000000000 +0100
@@ -7,8 +7,8 @@
%% xeCJK.dtx (with options: `package')
%%
%% Copyright (C) 2007--2010 by Wenchang Sun
-%% Copyright (C) 2009--2019 by Leo Liu
-%% Copyright (C) 2012--2019 by Qing Lee
+%% Copyright (C) 2009--2020 by Leo Liu
+%% Copyright (C) 2012--2020 by Qing Lee
%% ----------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 8be031f 2019-04-07 23:30:14 +0800 Qing Lee $
+\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee $
{Typesetting CJK scripts with XeLaTeX}
\ProvidesExplPackage{\ExplFileName}
- {\ExplFileDate}{3.7.2}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.2}{\ExplFileDescription}
\msg_new:nnn { xeCJK } { Require-XeTeX }
{
The~xeCJK~package~requires~XeTeX~to~function.\\\\
@@ -49,7 +49,7 @@
using~your~TeX~package~manager~or~from~CTAN.\\
\str_if_eq:nnT {#1} { expl3 } { Loading~xeCJK~will~abort! }
}
-\@ifpackagelater { expl3 } { 2019/03/05 } { }
+\@ifpackagelater { expl3 } { 2020/02/08 } { }
{ \msg_critical:nnn { xeCJK } { l3-too-old } { expl3 } }
\prg_new_conditional:Npnn \xeCJK_if_package_loaded:n #1 { p , T , F , TF }
{
@@ -67,21 +67,19 @@
The~`#1'~package~and~xeCJK~are~incompatible.\\\\
Please~load~it~after~xeCJK.
}
-\clist_map_inline:nn { CJKfntef , CJKnumb }
+\clist_map_inline:nn { CJKnumb }
{
\xeCJK_if_package_loaded:nT {#1}
{ \msg_error:nnn { xeCJK } { after-package } {#1} }
}
-\clist_map_inline:nn { CJKulem , CJKvert , CJKpunct , CJKutf8 , CJK }
+\clist_map_inline:nn
+ { CJKfntef , CJKulem , CJKvert , CJKpunct , CJKutf8 , CJK }
{
\xeCJK_if_package_loaded:nTF {#1}
{ \msg_error:nnn { xeCJK } { incompatible-package } {#1} }
{ \tl_const:cn { ver@ #1 . \c__xeCJK_package_ext_tl } { 9999/99/99 } }
}
-\RequirePackage { xtemplate }
-\@ifpackagelater { xtemplate } { 2012/11/10 } { }
- { \msg_error:nnn { xeCJK } { l3-too-old } { xtemplate } }
-\RequirePackage { xparse , l3keys2e }
+\RequirePackage { l3keys2e , xtemplate , xparse }
\tl_new:N \l__xeCJK_tmp_tl
\int_new:N \l__xeCJK_tmp_int
\box_new:N \l__xeCJK_tmp_box
@@ -101,8 +99,8 @@
\cs_new_protected_nopar:Npn \xeCJK_allow_break:
{ \tex_penalty:D \c_zero_int }
\cs_new_protected_nopar:Npn \xeCJK_no_break:
- { \tex_penalty:D \c__xeCJK_ten_thousand_int }
-\int_const:Nn \c__xeCJK_ten_thousand_int { 10 000 }
+ { \tex_penalty:D \c__xeCJK_nobreak_penalty_int }
+\int_const:Nn \c__xeCJK_nobreak_penalty_int { 10 000 }
\tl_new:N \g__xeCJK_at_end_preamble_hook_tl
\tl_new:N \g__xeCJK_after_preamble_hook_tl
\tl_new:N \g__xeCJK_after_end_preamble_hook_tl
@@ -182,11 +180,9 @@
\cs_set_eq:NN #2 \__xeCJK_swap_cs_aux:w
\cs_undefine:N \__xeCJK_swap_cs_aux:w
}
-\cs_new_protected_nopar:Npn \xeCJK_font_gset_to_current:c #1
- {
- \exp_last_unbraced:Nco \cs_gset_eq:NN
- {#1} \tex_the:D \tex_font:D
- }
+\cs_new_protected_nopar:Npn \xeCJK_font_gset_to_current:N #1
+ { \exp_after:wN \cs_gset_eq:NN \exp_after:wN #1 \tex_the:D \tex_font:D }
+\cs_generate_variant:Nn \xeCJK_font_gset_to_current:N { c }
\prg_new_conditional:Npnn \xeCJK_glyph_if_exist:N #1 { p , T , F , TF }
{
\tex_iffontchar:D \tex_font:D `#1 \exp_stop_f:
@@ -292,8 +288,10 @@
\cs_new_protected:Npn \xeCJK_peek_catcode_ignore_spaces:NTF #1#2#3
{
\cs_set_eq:NN \l__xeCJK_peek_search_token #1 \scan_stop:
- \tl_set:Nn \__xeCJK_peek_catcode_true:w { \group_align_safe_end: #2 }
- \tl_set:Nn \__xeCJK_peek_catcode_false:w { \group_align_safe_end: #3 }
+ \cs_set_protected:Npx \__xeCJK_peek_catcode_true:w
+ { \exp_not:N \group_align_safe_end: \exp_not:n {#2} }
+ \cs_set_protected:Npx \__xeCJK_peek_catcode_false:w
+ { \exp_not:N \group_align_safe_end: \exp_not:n {#3} }
\bool_set_false:N \l__xeCJK_peek_ignore_spaces_bool
\group_align_safe_begin:
\peek_after:Nw \__xeCJK_peek_catcode_ignore_spaces_branches:w
@@ -317,25 +315,9 @@
\fi:
}
\cs_new_eq:NN \l__xeCJK_peek_search_token ?
-\tl_new:N \__xeCJK_peek_catcode_true:w
-\tl_new:N \__xeCJK_peek_catcode_false:w
+\cs_new_eq:NN \__xeCJK_peek_catcode_true:w \prg_do_nothing:
+\cs_new_eq:NN \__xeCJK_peek_catcode_false:w \prg_do_nothing:
\bool_new:N \l__xeCJK_peek_ignore_spaces_bool
-\cs_new_protected:Npn \xeCJK_peek_after_ignore_spaces:nw #1
- {
- \tl_set:Nn \__xeCJK_peek_after_do:w { \group_align_safe_end: #1 }
- \group_align_safe_begin:
- \peek_after:Nw \__xeCJK_peek_ignore_spaces_branches:w
- }
-\cs_new_protected_nopar:Npn \__xeCJK_peek_ignore_spaces_branches:w
- {
- \if_meaning:w \l_peek_token \c_space_token
- \exp_after:wN \peek_after:Nw
- \exp_after:wN \__xeCJK_peek_ignore_spaces_branches:w
- \tex_romannumeral:D 0
- \else:
- \exp_after:wN \__xeCJK_peek_after_do:w
- \fi:
- }
\cs_new_nopar:Npn \xeCJK_token_value_class:N #1
{ \tex_XeTeXcharclass:D \xeCJK_token_value_charcode:N #1 }
\cs_new_nopar:Npn \xeCJK_token_value_charcode:N #1
@@ -551,6 +533,8 @@
"17000 -> "187FF ,
"18800 -> "18AFF ,
"1B000 -> "1B0FF ,
+ "1B100 -> "1B12F ,
+ "1B130 -> "1B16F ,
"1F200 -> "1F2FF ,
"20000 -> "2A6DF ,
"2A700 -> "2B73F ,
@@ -928,10 +912,7 @@
\cs_new_protected_nopar:Npn \__xeCJK_check_for_glue_auxiii:
{
\bool_if:NT \l__xeCJK_last_penalty_bool
- {
- \__xeCJK_add_offset_skip:N \l__xeCJK_last_skip
- \tex_penalty:D \l__xeCJK_last_penalty_int
- }
+ { \tex_penalty:D \l__xeCJK_last_penalty_int }
\skip_horizontal:N \l__xeCJK_last_skip
\tl_if_eq:NNF \l__xeCJK_aligni_tl \c__xeCJK_left_tl { \CJKglue }
}
@@ -1195,7 +1176,6 @@
{
\__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\xeCJK_class_group_end:
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\exp_after:wN \xeCJK_punct_node:N \g__xeCJK_last_punct_tl
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\tex_ignorespaces:D
@@ -1232,7 +1212,6 @@
{ \__xeCJK_use_dim_or_skip:nNN { bound_kern } #1 #2 }
\dim_compare:nNnF \l__xeCJK_tmp_dim = \l__xeCJK_last_bound_dim
{ \__xeCJK_punct_bound_kern_ratio:NN #1 #2 }
- \__xeCJK_add_offset_skip:N \l__xeCJK_punct_kern_skip
\bool_if:NTF \l__xeCJK_last_penalty_bool
{
\tex_penalty:D \l__xeCJK_last_penalty_int
@@ -1241,17 +1220,6 @@
{ \__xeCJK_punct_bound_kern_aux:NNN #1 #2 }
\l__xeCJK_punct_kern_skip
}
-\cs_new_protected_nopar:Npn \__xeCJK_add_offset_skip:N #1
- {
- \tl_if_eq:NNF \l__xeCJK_aligni_tl \c__xeCJK_left_tl
- {
- \int_compare:nNnT \tex_lastnodetype:D = { 11 }
- {
- \skip_add:Nn #1 { \tex_lastskip:D }
- \tex_unskip:D
- }
- }
- }
\skip_new:N \l__xeCJK_punct_kern_skip
\cs_new_protected_nopar:Npn \__xeCJK_punct_bound_kern_ratio:NN #1#2
{
@@ -1334,13 +1302,6 @@
depth \c_zero_dim
height \c_zero_dim \scan_stop:
}
-\cs_new_protected_nopar:Npn \__xeCJK_punct_offset:NN #1#2
- {
- \dim_set:Nn \l__xeCJK_tmp_dim
- { - \__xeCJK_use_punct_dim:nNN { offset } #1 #2 }
- \dim_compare:nNnF \l__xeCJK_tmp_dim = \c_zero_dim
- { \__xeCJK_punct_hskip:n { \l__xeCJK_tmp_dim } }
- }
\cs_new_protected_nopar:Npn \__xeCJK_punct_glue:NN #1#2
{ \__xeCJK_punct_hskip:n { \__xeCJK_use_dim_or_skip:nNN { glue } #1 #2 } }
\cs_new_eq:NN \__xeCJK_punct_hskip:n \skip_horizontal:n
@@ -1367,7 +1328,7 @@
\exp_after:wN \__xeCJK_punct_if_right:NT #1
{ \__xeCJK_punct_rule:NN \c__xeCJK_right_tl #1 }
\__xeCJK_punct_breakable_kern:n
- { \__xeCJK_use_dim_or_skip:nNN { break_kern } #1 #2 }
+ { \__xeCJK_use_dim_or_skip:nNN { bound_kern } #1 #2 }
\__xeCJK_punct_if_right:NF #2
{ \__xeCJK_punct_rule:NN \c__xeCJK_left_tl #2 }
}
@@ -1399,7 +1360,7 @@
}
\cs_new_protected_nopar:Npn \__xeCJK_nobreak_zero_glue:
{
- \tex_penalty:D \c__xeCJK_ten_thousand_int
+ \tex_penalty:D \c__xeCJK_nobreak_penalty_int
\skip_horizontal:N \c_zero_skip
}
\cs_new_protected_nopar:Npn \__xeCJK_zero_glue:
@@ -1407,7 +1368,6 @@
\cs_new_protected_nopar:Npn \xeCJK_FullRight_and_CJK:
{
\__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_select_font:
\CJKglue
@@ -1416,7 +1376,6 @@
{
\__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\xeCJK_class_group_end:
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
}
\cs_new_protected_nopar:Npn \xeCJK_Default_and_FullLeft:nN #1#2
@@ -1432,10 +1391,7 @@
\CJKpunctsymbol #2
}
\cs_new_protected_nopar:Npn \__xeCJK_Default_and_FullLeft_glue:N #1
- {
- \__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
- \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
- }
+ { \__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1 }
\cs_new_protected_nopar:Npn \xeCJK_CJK_and_FullLeft:N #1
{
\xeCJK_get_punct_bounds:NN \c__xeCJK_left_tl #1
@@ -1449,13 +1405,11 @@
{
\CJKglue
\__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
- \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
}
\cs_new_protected_nopar:Npn \xeCJK_Boundary_and_FullLeft:N #1
{
\xeCJK_get_punct_bounds:NN \c__xeCJK_left_tl #1
\__xeCJK_Boundary_and_FullLeft_glue:N #1
- \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
\xeCJK_class_group_begin:
\xeCJK_select_punct_font:
\xeCJK_clear_Boundary_and_CJK_toks:
@@ -1598,7 +1552,7 @@
{
\skip_set_eq:NN \l__xeCJK_last_skip \tex_lastskip:D
\tex_unskip:D
- \int_compare:nNnTF \tex_lastpenalty:D = { 1000 }
+ \int_compare:nNnTF \tex_lastpenalty:D = \c__xeCJK_nobreak_penalty_int
{ \__xeCJK_if_last_punct_auxi:TF { \use_i:nn } }
{
\xeCJK_if_last_node:TF
@@ -1644,7 +1598,7 @@
\bool_if:NF \l__xeCJK_last_penalty_bool
{
\bool_set_true:N \l__xeCJK_last_penalty_bool
- \int_set:Nn \l__xeCJK_last_penalty_int { 1000 }
+ \int_set_eq:NN \l__xeCJK_last_penalty_int \c__xeCJK_nobreak_penalty_int
}
\xeCJK_if_last_node:TF
{ \__xeCJK_if_last_punct_auxii:TF { \use_i:nn } }
@@ -1801,17 +1755,13 @@
\group_insert_after:N \xeCJK_no_break:
}
{ \group_align_safe_end: }
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\exp_after:wN \xeCJK_punct_node:N \g__xeCJK_last_punct_tl
\xeCJK_class_group_end:
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
}
\prg_generate_conditional_variant:Nnn \tl_case:Nn { No } { TF , F }
\cs_new_protected_nopar:Npn \xeCJK_check_FullRight_symbol:Nw #1
- {
- \xeCJK_peek_after_ignore_spaces:nw
- { \__xeCJK_save_FullRight_symbol:N #1 }
- }
+ { \peek_remove_spaces:n { \__xeCJK_save_FullRight_symbol:N #1 } }
\cs_new_protected:Npn \xeCJK_cs_case_keys_define:nNNnn #1#2#3#4#5
{
\tl_new:N #2
@@ -1899,7 +1849,7 @@
\keys_define:nn { xeCJK / options }
{
WidowPenalty .int_set:N = \l__xeCJK_widow_penalty_int ,
- WidowPenalty .default:n = { 1000 }
+ WidowPenalty .default:n = { 10 000 }
}
\cs_new_protected_nopar:Npn \xeCJK_widow_penalty:
{ \tex_penalty:D \l__xeCJK_widow_penalty_int }
@@ -2441,6 +2391,7 @@
\__xeCJK_save_punct_dim:nNNn { rule } #1 #2 { \c_zero_dim }
\__xeCJK_save_punct_dim:nNNn { glue } #1 #2 { \c_zero_dim }
\__xeCJK_save_punct_dim:nNNn { offset } #1 #2 { \c_zero_dim }
+ \__xeCJK_save_punct_dim:nNNn { margin } #1 #2 { \c_zero_dim }
\__xeCJK_save_punct_dim:nNNn { bound } \c__xeCJK_left_tl {#2} { \c_zero_dim }
\__xeCJK_save_punct_dim:nNNn { bound } \c__xeCJK_right_tl {#2} { \c_zero_dim }
\__xeCJK_save_punct_skip:nNNn { glue } #1 #2 { \c_zero_skip }
@@ -2506,11 +2457,9 @@
\cs_new_protected_nopar:Npn \__xeCJK_save_punct_kerning_plain:NN #1#2
{
\__xeCJK_save_punct_dim:nNNn { kern } #1 #2 { \c_zero_dim }
- \__xeCJK_save_punct_dim:nNNn { break_kern } #1 #2 { \c_zero_dim }
\__xeCJK_save_punct_dim:nNNn { bound_kern } #1 #2 { \c_zero_dim }
\__xeCJK_save_punct_dim:nNNn { bound_width } #1 #2 { \c_zero_dim }
\__xeCJK_save_punct_skip:nNNn { kern } #1 #2 { \c_zero_skip }
- \__xeCJK_save_punct_skip:nNNn { break_kern } #1 #2 { \c_zero_skip }
\__xeCJK_save_punct_skip:nNNn { bound_kern } #1 #2 { \c_zero_skip }
}
\cs_new_protected_nopar:Npn \__xeCJK_save_punct_kerning:NN
@@ -2533,7 +2482,7 @@
}
{ \__xeCJK_calc_punct_width:N #2 }
}
- \dim_set:Nn \l__xeCJK_tmp_dim
+ \dim_set:Nn \l__xeCJK_margin_dim
{
\dim_max:nn
{ \l__xeCJK_margin_minimum_dim }
@@ -2572,24 +2521,9 @@
}
}
}
- \__xeCJK_save_punct_dim:nNNn { glue } #1 #2 { \l__xeCJK_tmp_dim }
- \__xeCJK_save_punct_skip:nNNnnn { glue } #1 #2
- { \l__xeCJK_tmp_dim }
- {
- \__xeCJK_punct_if_middle:NTF #2
- {
- ( \__xeCJK_use_punct_dim:nN { width } #2 -
- \__xeCJK_use_punct_dim:nN { dimen } #2 ) / 2
- - \l__xeCJK_tmp_dim
- }
- { \l__xeCJK_bound_dim - \l__xeCJK_tmp_dim }
- }
- {
- \__xeCJK_punct_if_middle:NTF #2
- { .5 \l__xeCJK_tmp_dim }
- { \l__xeCJK_tmp_dim - \l__xeCJK_reverse_bound_dim }
- }
+ \__xeCJK_save_punct_dim:nNNn { margin } #1 #2 { \l__xeCJK_margin_dim }
}
+\dim_new:N \l__xeCJK_margin_dim
\cs_new_nopar:Npn \__xeCJK_calc_punct_width:N #1
{
\__xeCJK_punct_if_middle:NTF #1
@@ -2646,7 +2580,7 @@
\__xeCJK_punct_if_middle:NTF #2
{
\l__xeCJK_tmp_dim
- - ( \__xeCJK_use_punct_dim:nNN { glue } #1 #2 )
+ - \l__xeCJK_margin_dim
- ( \__xeCJK_use_punct_dim:nN { dimen } #2 )
}
{
@@ -2665,15 +2599,33 @@
}
\__xeCJK_save_punct_dim:nNNn { offset } #1 #2
{ \l__xeCJK_tmp_dim }
- \__xeCJK_save_punct_dim:nNNn { rule } #1 #2
- { - \l__xeCJK_bound_dim + \l__xeCJK_tmp_dim }
+ \__xeCJK_save_punct_dim:nNNn { rule } #1 #2
+ { \l__xeCJK_tmp_dim - \l__xeCJK_bound_dim }
+ \__xeCJK_save_punct_dim:nNNn { glue } #1 #2
+ { \l__xeCJK_margin_dim - \l__xeCJK_tmp_dim }
+ \__xeCJK_save_punct_skip:nNNnnn { glue } #1 #2
+ { \l__xeCJK_margin_dim - \l__xeCJK_tmp_dim }
+ {
+ \__xeCJK_punct_if_middle:NTF #2
+ {
+ ( \__xeCJK_use_punct_dim:nN { width } #2 -
+ \__xeCJK_use_punct_dim:nN { dimen } #2 ) / 2
+ - \l__xeCJK_margin_dim
+ }
+ { \l__xeCJK_bound_dim - \l__xeCJK_margin_dim }
+ }
+ {
+ \__xeCJK_punct_if_middle:NTF #2
+ { .5 \l__xeCJK_margin_dim }
+ { \l__xeCJK_margin_dim - \l__xeCJK_reverse_bound_dim }
+ }
}
\cs_new_nopar:Npn \__xeCJK_punct_width_or_ratio:nN #1#2
{
\dim_compare:nNnTF { \use:c { l__xeCJK_#1_punct_width_dim } } < \c_max_dim
{ \use:c { l__xeCJK_#1_punct_width_dim } }
{
- \fp_compare:nNnTF { \use:c { l__xeCJK_#1_punct_ratio_fp } } ? \c_zero_fp
+ \fp_if_nan:nTF { \use:c { l__xeCJK_#1_punct_ratio_fp } }
{ \c_max_dim }
{
\fp_use:c { l__xeCJK_#1_punct_ratio_fp }
@@ -2694,7 +2646,7 @@
}
\cs_new_protected_nopar:Npn \xeCJK_punct_kerning_process:NN #1#2
{
- \dim_set:Nn \l__xeCJK_original_margin_dim
+ \dim_set:Nn \l__xeCJK_margin_dim
{ \__xeCJK_original_kerning_margin:NN #1 #2 }
\dim_set:Nn \l__xeCJK_minimum_bound_dim
{ \__xeCJK_punct_min_bound:NN #1 #2 }
@@ -2719,33 +2671,13 @@
\__xeCJK_punct_if_right:NTF #1
{
\__xeCJK_punct_if_right:NTF #2
- {
- \__xeCJK_save_kerning:nNNNN
- { bound_kern } \c__xeCJK_left_tl #2 #1 #2
- \__xeCJK_save_kerning:nnnNN
- { break_kern } { offset } { bound }
- }
- {
- \__xeCJK_save_kerning:nnNN
- { break_kern } { offset } #1 #2
- \__xeCJK_save_kerning_aux:nnNN
- { bound_kern } { \l__xeCJK_kerning_margin_dim }
- }
+ { \__xeCJK_save_kerning:nnnNN { bound_kern } { offset } { bound } }
+ { \__xeCJK_save_kerning:nnNN { bound_kern } { offset } }
}
{
\__xeCJK_punct_if_right:NTF #2
- {
- \__xeCJK_save_kerning:nnNN
- { bound_kern } { bound } #1 #2
- \__xeCJK_save_kerning_aux:nnNN
- { break_kern } { \l__xeCJK_tmp_dim }
- }
- {
- \__xeCJK_save_kerning:nNNNN
- { bound_kern } \c__xeCJK_right_tl #1 #1 #2
- \__xeCJK_save_kerning:nnnNN
- { break_kern } { bound } { offset }
- }
+ { \__xeCJK_save_kerning:nnNN { bound_kern } { bound } }
+ { \__xeCJK_save_kerning:nnnNN { bound_kern } { bound } { offset } }
}
#1 #2
}
@@ -2753,11 +2685,10 @@
{
\bool_if:NTF \l__xeCJK_enabled_kerning_bool
{ \__xeCJK_calc_kerning_margin:NN #1 #2 }
- { \l__xeCJK_original_margin_dim }
+ { \l__xeCJK_margin_dim }
}
\dim_new:N \l__xeCJK_minimum_bound_dim
\dim_new:N \l__xeCJK_kerning_margin_dim
-\dim_new:N \l__xeCJK_original_margin_dim
\cs_new_protected_nopar:Npn \__xeCJK_save_kerning:nnNN #1#2
{ \__xeCJK_save_kerning:nnnNN {#1} {#2} {#2} }
\cs_new_protected_nopar:Npn \__xeCJK_save_kerning:nnnNN #1#2#3#4#5
@@ -2768,23 +2699,10 @@
- ( \__xeCJK_use_punct_dim:nNN {#2} \c__xeCJK_right_tl #4 )
- ( \__xeCJK_use_punct_dim:nNN {#3} \c__xeCJK_left_tl #5 )
}
- \__xeCJK_save_kerning_aux:nnNN {#1} { \l__xeCJK_tmp_dim } #4 #5
- }
-\cs_new_protected_nopar:Npn \__xeCJK_save_kerning:nNNNN #1#2#3#4#5
- {
- \dim_set:Nn \l__xeCJK_tmp_dim
- {
- \l__xeCJK_kerning_margin_dim
- - ( \__xeCJK_use_punct_dim:nNN { bound } #2 #3 )
- }
- \__xeCJK_save_kerning_aux:nnNN {#1} { \l__xeCJK_tmp_dim } #4 #5
- }
-\cs_new_protected_nopar:Npn \__xeCJK_save_kerning_aux:nnNN #1#2#3#4
- {
- \__xeCJK_save_punct_dim:nNNn {#1} #3 #4 {#2}
- \__xeCJK_save_punct_skip:nNNnnn {#1} #3 #4
- {#2}
- { \l__xeCJK_original_margin_dim - \l__xeCJK_kerning_margin_dim }
+ \__xeCJK_save_punct_dim:nNNn {#1} #4 #5 { \l__xeCJK_tmp_dim }
+ \__xeCJK_save_punct_skip:nNNnnn {#1} #4 #5
+ { \l__xeCJK_tmp_dim }
+ { \l__xeCJK_margin_dim - \l__xeCJK_kerning_margin_dim }
{ \l__xeCJK_kerning_margin_dim - \l__xeCJK_minimum_bound_dim }
}
\cs_new_nopar:Npn \__xeCJK_original_kerning_margin:NN #1#2
@@ -2792,10 +2710,10 @@
\dim_eval:n
{
\__xeCJK_use_punct_dim:nNN
- { \__xeCJK_punct_if_right:NTF #1 { glue } { bound } } \c__xeCJK_right_tl #1
+ { \__xeCJK_punct_if_right:NTF #1 { margin } { bound } } \c__xeCJK_right_tl #1
+
\__xeCJK_use_punct_dim:nNN
- { \__xeCJK_punct_if_right:NTF #2 { bound } { glue } } \c__xeCJK_left_tl #2
+ { \__xeCJK_punct_if_right:NTF #2 { bound } { margin } } \c__xeCJK_left_tl #2
}
}
\cs_new_nopar:Npn \__xeCJK_calc_kerning_margin:NN #1#2
@@ -2818,7 +2736,7 @@
\dim_compare:nNnTF \l__xeCJK_kerning_total_width_dim < \c_max_dim
{ \__xeCJK_calc_kerning_margin:nNN \l__xeCJK_kerning_total_width_dim }
{
- \fp_compare:nNnTF \l__xeCJK_kerning_total_ratio_fp ? \c_zero_fp
+ \fp_if_nan:nTF { \l__xeCJK_kerning_total_ratio_fp }
{
\xeCJK_if_same_class:NNTF #1 #2
{ \__xeCJK_kerning_width_or_ratio:nNN { same } }
@@ -2842,14 +2760,14 @@
\dim_compare:nNnTF { \use:c { l__xeCJK_#1_align_margin_dim } } < \c_max_dim
{ \use:c { l__xeCJK_#1_align_margin_dim } }
{
- \fp_compare:nNnTF { \use:c { l__xeCJK_#1_align_ratio_fp } } ? \c_zero_fp
+ \fp_if_nan:nTF { \use:c { l__xeCJK_#1_align_ratio_fp } }
{
\dim_compare:nNnTF \l__xeCJK_kerning_margin_width_dim < \c_max_dim
{ \l__xeCJK_kerning_margin_width_dim \use_none:n }
{ \fp_use:N \l__xeCJK_kerning_margin_ratio_fp \use:n }
}
{ \fp_use:c { l__xeCJK_#1_align_ratio_fp } \use:n }
- { \l__xeCJK_original_margin_dim }
+ { \l__xeCJK_margin_dim }
}
}
\cs_new_nopar:Npn \__xeCJK_punct_min_bound:NN #1#2
@@ -2872,10 +2790,10 @@
{
(#1)
- ( \__xeCJK_use_punct_dim:nNN
- { \__xeCJK_punct_if_right:NTF #2 { bound } { glue } }
+ { \__xeCJK_punct_if_right:NTF #2 { bound } { margin } }
\c__xeCJK_left_tl #2 )
- ( \__xeCJK_use_punct_dim:nNN
- { \__xeCJK_punct_if_right:NTF #3 { glue } { bound } }
+ { \__xeCJK_punct_if_right:NTF #3 { margin } { bound } }
\c__xeCJK_right_tl #3 )
- ( \__xeCJK_use_punct_dim:nN { dimen } #2 )
- ( \__xeCJK_use_punct_dim:nN { dimen } #3 )
@@ -3375,22 +3293,31 @@
{ \__xeCJK_font_csname:n { \CJK@family } }
\cs_new_protected_nopar:Npn \xeCJK_select_font:
{
- \exp_args:Nc \cs_if_exist_use:NF { \l_xeCJK_current_font_tl }
- {
- \__xeCJK_family_use:n { \l_xeCJK_family_tl }
- \xeCJK_font_gset_to_current:c { \l_xeCJK_current_font_tl }
- }
+ \__xeCJK_select_font:cn
+ { \l_xeCJK_current_font_tl }
+ { \l_xeCJK_family_tl }
}
+\cs_new_protected_nopar:Npn \__xeCJK_select_font:Nn #1#2
+ {
+ \cs_if_exist:NF #1 { \__xeCJK_font_initial:Nn #1 {#2} }
+ #1
+ }
+\cs_generate_variant:Nn \__xeCJK_select_font:Nn { c }
\tl_new:N \l__xeCJK_current_coor_tl
\cs_new_eq:NN \xeCJK@setfont \xeCJK_select_font:
+\cs_new_protected_nopar:Npn \__xeCJK_font_initial:Nn #1#2
+ {
+ \group_begin:
+ \__xeCJK_family_use:n {#2}
+ \xeCJK_font_gset_to_current:N #1
+ \group_end:
+ }
\cs_new_eq:NN \xeCJK_select_punct_font: \xeCJK_select_font:
\cs_new_protected_nopar:Npn \__xeCJK_select_punct_font_aux:
{
- \exp_args:Nc \cs_if_exist_use:NF { \l_xeCJK_current_punct_font_tl }
- {
- \__xeCJK_family_use:n { \l_xeCJK_punct_family_tl }
- \xeCJK_font_gset_to_current:c { \l_xeCJK_current_punct_font_tl }
- }
+ \__xeCJK_select_font:cn
+ { \l_xeCJK_current_punct_font_tl }
+ { \l_xeCJK_punct_family_tl }
}
\tl_new:N \CJK@punctfamily
\tl_new:N \l_xeCJK_punct_family_tl
@@ -3412,14 +3339,22 @@
\__xeCJK_msg_new:nn { CJK-block } { Switch~from~block~`#1'~to~`#2'. }
\cs_new_protected_nopar:Npn \xeCJK_select_font:n #1
{
- \exp_args:Nc \cs_if_exist_use:NF
+ \__xeCJK_select_font:cnn
{ \__xeCJK_font_csname:n { \CJK@family/#1 } }
- {
- \xeCJK_block_family:nn { \l_xeCJK_family_tl } {#1}
- \__xeCJK_family_use:n { \l_xeCJK_family_tl/#1 }
- \xeCJK_font_gset_to_current:c
- { \__xeCJK_font_csname:n { \CJK@family/#1 } }
- }
+ { \l_xeCJK_family_tl }
+ {#1}
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_select_font:Nnn #1#2#3
+ {
+ \cs_if_exist:NF #1
+ { \__xeCJK_block_font_initial:Nnn #1 {#2} {#3} }
+ #1
+ }
+\cs_generate_variant:Nn \__xeCJK_select_font:Nnn { c }
+\cs_new_protected_nopar:Npn \__xeCJK_block_font_initial:Nnn #1#2#3
+ {
+ \xeCJK_block_family:nn {#2} {#3}
+ \__xeCJK_font_initial:Nn #1 { #2/#3 }
}
\cs_new_protected_nopar:Npn \xeCJK_block_family:nn #1#2
{
@@ -3437,20 +3372,47 @@
{ xeCJK/family/#1 }
\cs_new_nopar:Npn \__xeCJK_family_nfss_csname:n #1
{ xeCJK/family/nfss/#1 }
-\cs_new_nopar:Npn \__xeCJK_family_use:n #1
+\cs_new_protected_nopar:Npn \__xeCJK_family_use:n #1
{ \use:c { \__xeCJK_family_nfss_csname:n {#1} } }
\cs_new_protected_nopar:Npn \__xeCJK_gset_family_nfss_cs:nn #1#2
{
\prop_gput:Nnn \g__xeCJK_family_name_prop {#1} {#2}
\cs_gset_protected_nopar:cpx
{ \__xeCJK_family_nfss_csname:n {#1} }
+ { \__xeCJK_nfss_family:nn { \c__xeCJK_encoding_tl } {#2} }
+ }
+\cs_generate_variant:Nn \__xeCJK_gset_family_nfss_cs:nn { xx }
+\cs_if_exist:NTF \fontseriesforce
+ {
+ \cs_new_protected_nopar:Npn \__xeCJK_nfss_family:nn #1#2
{
- \exp_not:N \fontencoding { \c__xeCJK_encoding_tl }
- \tl_set:Nn \exp_not:N \f@family {#2}
- \exp_not:N \selectfont
+ \fontencoding {#1}
+ \str_if_eq:eeF { \f@series } { \bfdefault }
+ {
+ \str_case_e:nn { \f@family }
+ {
+ { \rmdefault } { \__xeCJK_nfss_series:n { rm } }
+ { \sfdefault } { \__xeCJK_nfss_series:n { sf } }
+ { \ttdefault } { \__xeCJK_nfss_series:n { tt } }
+ }
+ }
+ \fontfamily {#2}
+ \selectfont
+ }
+ \cs_new_protected_nopar:Npn \__xeCJK_nfss_series:n #1
+ {
+ \str_if_eq:eeT { \f@series } { \use:c { bfseries@#1 } }
+ { \fontseriesforce { \bfdefault } }
+ }
+ }
+ {
+ \cs_new_protected_nopar:Npn \__xeCJK_nfss_family:nn #1#2
+ {
+ \fontencoding {#1}
+ \tl_set:Nn \f@family {#2}
+ \selectfont
}
}
-\cs_generate_variant:Nn \__xeCJK_gset_family_nfss_cs:nn { xx }
\prg_new_protected_conditional:Npnn \xeCJK_family_if_exist:n #1 { T , F , TF }
{
\prop_get:NnNTF \g__xeCJK_family_name_prop
@@ -3532,7 +3494,7 @@
\tl_new:N \CJK@family
\cs_new_protected_nopar:Npn \__xeCJK_gobble_CJKfamily:
{ \cs_set_eq:NN \CJKfamily \__xeCJK_gobble_CJKfamily:wn }
-\DeclareExpandableDocumentCommand \__xeCJK_gobble_CJKfamily:wn { t+ t- m } { }
+\NewExpandableDocumentCommand \__xeCJK_gobble_CJKfamily:wn { t+ t- m } { }
\cs_new_protected_nopar:Npn \xeCJK_family_if_exist_use:n #1
{
\xeCJK_family_if_exist:nTF {#1}
@@ -3597,26 +3559,28 @@
{
\__xeCJK_pass_args:nnnn
{ \xeCJK_set_family:nnn { \CJKrmdefault } } {#1} {#2}
- { \normalfont }
+ { \__xeCJK_preamble_family:n { \CJKrmdefault } }
}
\cs_new_eq:NN \setCJKromanfont \setCJKmainfont
\NewDocumentCommand \setCJKsansfont { o m }
{
\__xeCJK_pass_args:nnnn
{ \xeCJK_set_family:nnn { \CJKsfdefault } } {#1} {#2}
- { \normalfont }
+ { \__xeCJK_preamble_family:n { \CJKsfdefault } }
}
\NewDocumentCommand \setCJKmonofont { o m }
{
\__xeCJK_pass_args:nnnn
{ \xeCJK_set_family:nnn { \CJKttdefault } } {#1} {#2}
- { \normalfont }
+ { \__xeCJK_preamble_family:n { \CJKttdefault } }
}
\@onlypreamble \setCJKmainfont
\@onlypreamble \setCJKmathfont
\@onlypreamble \setCJKsansfont
\@onlypreamble \setCJKmonofont
\@onlypreamble \setCJKromanfont
+\cs_new_protected_nopar:Npn \__xeCJK_preamble_family:n #1
+ { \str_if_eq:eeT {#1} { \CJKfamilydefault } { \normalfont } }
\NewDocumentCommand \setCJKfamilyfont { m o m }
{
\__xeCJK_pass_args:nnnn
@@ -3912,12 +3876,12 @@
\cs_new_protected_nopar:Npn \xeCJK_declare_mathfont:nn #1#2
{
\xeCJK_declare_symbol_font:nnnnn {#1} { \c__xeCJK_encoding_tl }
- {#2} { \mddefault } { \updefault }
+ {#2} { \mddefault } { \shapedefault }
\cs_if_free:cF
- { \c__xeCJK_encoding_tl/#2/\bfdefault/\updefault }
+ { \c__xeCJK_encoding_tl/#2/\bfdefault/\shapedefault }
{
\SetSymbolFont {#1} { bold } { \c__xeCJK_encoding_tl }
- {#2} { \bfdefault } { \updefault }
+ {#2} { \bfdefault } { \shapedefault }
}
\prop_gput:Nnx \g__xeCJK_fam_prop {#2} { \exp_not:c { sym #1 } }
}
@@ -4220,41 +4184,51 @@
}
\fp_new:N \l__xeCJK_scale_factor_fp
\prop_new:N \g__xeCJK_scale_family_prop
-\cs_new_protected_nopar:Npn \xeCJK_visible_space:
+\cs_new_protected_nopar:Npn \xeCJK_setup_visible_space:
{
\xeCJK_make_boundary:
\xeCJK_glyph_if_exist:NTF { ^^^^2423 }
- { ^^^^2423 }
+ { \tl_set:Nn \l__xeCJK_visible_space_tl { ^^^^2423 } }
{
\int_compare:nNnTF { \tex_XeTeXfonttype:D \tex_font:D } = \c_zero_int
{
- \str_if_eq:eeTF { \f@family } { \ttdefault }
- { \c_catcode_other_space_tl }
- { \textvisiblespace }
+ \tl_set:Nx \l__xeCJK_visible_space_tl
+ {
+ \str_if_eq:eeTF { \f@family } { \ttdefault }
+ { \c_catcode_other_space_tl }
+ { \exp_not:N \textvisiblespace }
+ }
}
- { \xeCJK_visible_space_fallback: }
+ { \__xeCJK_visible_space_fallback: }
}
+ \cs_set_eq:NN \@xobeysp \l__xeCJK_visible_space_tl
}
-\AtEndOfPackage
- { \cs_gset_eq:NN \fontspec_visible_space: \xeCJK_visible_space: }
-\cs_new_protected_nopar:Npn \xeCJK_visible_space_fallback:
- { {
- \cs_if_exist_use:cF { xeCJK/space/\curr@fontshape/\f@size }
- { \xeCJK_set_visible_space_font: }
- ^^^^2423
- } }
-\cs_new_protected_nopar:Npn \xeCJK_set_visible_space_font:
+\tl_new:N \l__xeCJK_visible_space_tl
+\cs_set_eq:NN \@setupverbvisiblespace \xeCJK_setup_visible_space:
+\cs_new_protected_nopar:Npn \__xeCJK_visible_space_fallback:
{
- \tl_set:Nx \l__xeCJK_current_coor_tl
+ \exp_args:Nc \__xeCJK_visible_space_fallback_auxi:N
{ xeCJK/space/\curr@fontshape/\f@size }
- \exp_args:No \__xeCJK_set_visible_space_size:n
- { \dim_use:N \tex_fontdimen:D 2 ~ \tex_font:D }
- \xeCJK_font_gset_to_current:c { \l__xeCJK_current_coor_tl }
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_visible_space_fallback_auxi:N #1
+ {
+ \cs_if_exist:NF #1
+ { \__xeCJK_visible_space_fallback_auxii:N #1 }
+ \tl_set:Nn \l__xeCJK_visible_space_tl {#1}
+ }
+\cs_new_protected_nopar:Npn \__xeCJK_visible_space_fallback_auxii:N #1
+ {
+ \group_begin:
+ \exp_args:No \__xeCJK_set_visible_space_size:n
+ { \dim_use:N \tex_fontdimen:D 2 ~ \tex_font:D }
+ \cs_new_protected_nopar:Npx #1
+ { \group_begin: \tex_the:D \tex_font:D ^^^^2423 \group_end: }
+ \group_end:
}
\cs_new_protected_nopar:Npn \__xeCJK_set_visible_space_size:n #1
{
- \fontencoding { \g_fontspec_encoding_tl }
- \tl_set:Nx \f@family { lmtt }
+ \fontencoding { \UnicodeEncodingName }
+ \tl_set:Nn \f@family { lmtt }
\selectfont
\dim_compare:nNnF {#1} = { \tex_fontdimen:D 2 ~ \tex_font:D }
{
@@ -4354,7 +4328,7 @@
PunctStyle = quanjiao ,
NewLineCS = { \par \[ } ,
EnvCS = { \begin \end } ,
- WidowPenalty = 1000 ,
+ WidowPenalty = { 10 000 } ,
NoBreakCS = { \footnote \footnotemark \nobreak } ,
KaiMingPunct = { ^^^^3002 ^^^^ff0e ^^^^ff1f ^^^^ff01 } ,
LongPunct = { ^^^^2014 ^^^^2e3a ^^^^2025 ^^^^2026 } ,
@@ -4364,7 +4338,7 @@
\defaultCJKfontfeatures { Script = CJK }
\xeCJKsetwidth { ^^^^2013 } { 0.5 em }
\ProcessKeysOptions { xeCJK / options }
-\RequirePackage { fontspec } [ 2019/03/15 ]
+\RequirePackage { fontspec } [ 2020/02/03 ]
\tl_const:Nx \c__xeCJK_encoding_tl { \g_fontspec_encoding_tl }
\keys_define:nn { xeCJK / options }
{
@@ -4373,7 +4347,7 @@
}
\__xeCJK_msg_new:nn { option-invalid }
{
- The~`#1'~option~only~can~be~set~in~the~optional~argument~to~the\\
+ The~`#1'~option~can~only~be~set~in~the~optional~argument~to~the\\
\token_to_str:N \usepackage \ command~when~xeCJK~is~being~loaded.\\\\
Please~do~not~set~it~via~the~\token_to_str:N \xeCJKsetup \ command.
}
@@ -4420,33 +4394,6 @@
\xeCJK_set_char_class:nnn {#1} {#2} {#3}
\xeCJKResetPunctClass
}
-\cs_new_protected_nopar:Npn \xeCJK_fix_hbar:
- {
- \cs_if_free:NF \symlegacymaths
- {
- \group_begin:
- \cs_set_nopar:Npn \__xeCJK_tmp:w
- { { \mathchar '26 \mkern -9mu h } }
- \exp_after:wN \group_end:
- \if_meaning:w \__xeCJK_tmp:w \hbar
- \cs_set_protected_nopar:Npx \hbar
- { {
- \mathchar
- \int_eval:n { \symlegacymaths * 256 + '26 } ~
- \mkern -9mu h
- } }
- \fi:
- }
- }
-\cs_if_exist:NTF \fontspec_maybe_setup_maths:
- {
- \cs_gset_protected_nopar:Npx \fontspec_maybe_setup_maths:
- {
- \exp_not:o { \fontspec_maybe_setup_maths: }
- \xeCJK_fix_hbar:
- }
- }
- { \AtBeginDocument { \xeCJK_fix_hbar: } }
\cs_new_protected_nopar:Npn \xeCJK@update@fam
{
\addto@hook \everymath
@@ -4486,20 +4433,6 @@
{ \cs_if_exist_p:N \Url@MathSetup }
{ \tl_put_right:Nn \Url@MathSetup { \xeCJK@update@fam } }
}
-\@ifpackagelater { fontspec } { 2014/06/21 } { }
- {
- \cs_gset_protected_nopar:Npx \fontspec_setup_maths:
- {
- \exp_not:o
- {
- \fontspec_setup_maths:
- \bool_lazy_or:nnT
- { \tl_if_empty_p:N \g__fontspec_bfmathrm_tl }
- { \tl_if_empty_p:N \g_fontspec_bfmathrm_tl }
- { \DeclareSymbolFontAlphabet \mathrm { operators } }
- }
- }
- }
\cs_new_protected_nopar:Npn \__xeCJK_math_robust:N #1
{
\group_begin: \exp_args:NcNc \group_end:
@@ -4566,59 +4499,40 @@
\__xeCJK_math_robust:N \endmath
}
\__xeCJK_math_robust:N \ensuremath
-\__xeCJK_msg_new:nn { conflict-package }
- {
- The~`#1'~package~is~too~old. \\
- Please~update~an~up~to~date~version~of~it\\
- using~your~TeX~package~manager~or~from~CTAN.
- }
-\xeCJK_if_package_loaded:nTF { realscripts }
+\cs_if_exist:NTF \@rmfamilyhook
{
- \@ifpackagelater { realscripts } { 2010/10/10 } { }
+ \cs_set_eq:NN \xeCJK@family \xeCJK_switch_family:x
+ \g@addto@macro \@rmfamilyhook { \xeCJK@family { \CJKrmdefault } }
+ \g@addto@macro \@sffamilyhook { \xeCJK@family { \CJKsfdefault } }
+ \g@addto@macro \@ttfamilyhook { \xeCJK@family { \CJKttdefault } }
+ \exp_args:Nc \g@addto@macro
{
- \__xeCJK_error:nx { conflict-package }
- {
- \xeCJK_if_package_loaded:nTF { xltxtra }
- { xltxtra } { realscripts }
- }
+ \cs_if_exist:NTF \@defaultfamilyhook
+ { @defaultfamilyhook } { normalfont ~ }
}
+ { \xeCJK@family { \CJKfamilydefault } }
}
{
- \cs_new_eq:NN \__xeCJK_dim_max:nn \dim_max:nn
- \cs_new_eq:NN \__xeCJK_dim_min:nn \dim_min:nn
- \__xeCJK_at_end_preamble:n
+ \RenewDocumentCommand \fontfamily { m }
{
- \xeCJK_if_package_loaded:nT { realscripts }
- {
- \@ifpackagelater { realscripts } { 2010/10/10 } { }
- {
- \cs_gset_eq:NN \dim_max:nn \__xeCJK_dim_max:nn
- \cs_gset_eq:NN \dim_min:nn \__xeCJK_dim_min:nn
- }
- }
- \cs_undefine:N \__xeCJK_dim_max:nn
- \cs_undefine:N \__xeCJK_dim_min:nn
+ \tl_set:Nx \f@family {#1}
+ \xeCJK@fontfamily {#1}
}
- }
-\RenewDocumentCommand \fontfamily { m }
- {
- \tl_set:Nx \f@family {#1}
- \xeCJK@fontfamily {#1}
- }
-\cs_new_protected_nopar:Npn \xeCJK@fontfamily #1
- {
- \str_if_eq:nnTF {#1} { \familydefault }
- { \xeCJK_switch_family:x { \CJKfamilydefault } }
- { \__xeCJK_update_family_aux: }
- }
-\cs_new_protected_nopar:Npn \__xeCJK_update_family_aux:
- {
- \str_case_e:nn { \f@family }
+ \cs_new_protected_nopar:Npn \xeCJK@fontfamily #1
{
- { \rmdefault } { \xeCJK_switch_family:x { \CJKrmdefault } }
- { \sfdefault } { \xeCJK_switch_family:x { \CJKsfdefault } }
- { \ttdefault } { \xeCJK_switch_family:x { \CJKttdefault } }
- { \familydefault } { \xeCJK_switch_family:x { \CJKfamilydefault } }
+ \str_if_eq:nnTF {#1} { \familydefault }
+ { \xeCJK_switch_family:x { \CJKfamilydefault } }
+ { \__xeCJK_update_family_aux: }
+ }
+ \cs_new_protected_nopar:Npn \__xeCJK_update_family_aux:
+ {
+ \str_case_e:nn { \f@family }
+ {
+ { \rmdefault } { \xeCJK_switch_family:x { \CJKrmdefault } }
+ { \sfdefault } { \xeCJK_switch_family:x { \CJKsfdefault } }
+ { \ttdefault } { \xeCJK_switch_family:x { \CJKttdefault } }
+ { \familydefault } { \xeCJK_switch_family:x { \CJKfamilydefault } }
+ }
}
}
\cs_new_eq:NN \xeCJK@fix@penalty \fix@penalty
@@ -4908,22 +4822,6 @@
{ \cs_if_exist_p:N \icprotect }
{ \exp_after:wN \tex_let:D \cs:w cprotect \cs_end: \icprotect }
}
-\cs_if_eq:NNTF \ifCTEX@fntef \tex_iftrue:D
- { \AtEndOfPackage { \RequirePackage { xeCJKfntef } } }
- {
- \__xeCJK_at_end_preamble:n
- {
- \xeCJK_if_package_loaded:nF { xeCJKfntef }
- {
- \xeCJK_if_package_loaded:nTF { CJKfntef }
- { \RequirePackage { xeCJKfntef } }
- {
- \xeCJK_if_package_loaded:nT { ulem }
- { \RequirePackage { xeCJKfntef } }
- }
- }
- }
- }
\__xeCJK_at_end_preamble:n
{
\xeCJK_if_package_loaded:nT { listings }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecjk/xeCJKfntef.sty new/tex/xelatex/xecjk/xeCJKfntef.sty
--- old/tex/xelatex/xecjk/xeCJKfntef.sty 2019-04-07 23:28:36.000000000 +0200
+++ new/tex/xelatex/xecjk/xeCJKfntef.sty 2020-02-18 23:31:44.000000000 +0100
@@ -7,8 +7,8 @@
%% xeCJK.dtx (with options: `fntef')
%%
%% Copyright (C) 2007--2010 by Wenchang Sun
-%% Copyright (C) 2009--2019 by Leo Liu
-%% Copyright (C) 2012--2019 by Qing Lee
+%% Copyright (C) 2009--2020 by Leo Liu
+%% Copyright (C) 2012--2020 by Qing Lee
%% ----------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -29,17 +29,15 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 8be031f 2019-04-07 23:30:14 +0800 Qing Lee $
+\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee $
{xeCJK font effect}
\ProvidesExplPackage{xeCJKfntef}
- {\ExplFileDate}{3.7.2}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.2}{\ExplFileDescription}
\PassOptionsToPackage { normalem } { ulem }
\DeclareOption* { \PassOptionsToPackage { \CurrentOption } { ulem } }
\ProcessOptions \scan_stop:
\RequirePackage { xeCJK }
\RequirePackage { ulem }
-\file_if_exist:nT { CJKfntef.sty }
- { \RequirePackage { CJKfntef } }
\addto@hook \UL@hook { \xeCJK_hook_for_ulem: }
\cs_new_protected_nopar:Npn \xeCJK_hook_for_ulem:
{
@@ -427,7 +425,6 @@
\UL@stop
\__xeCJK_ulem_skip_punct_begin:
\__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
- \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
\UL@start
}
{ \__xeCJK_ulem_Default_and_FullLeft_glue:N #1 }
@@ -452,7 +449,6 @@
\__xeCJK_ulem_skip_punct_begin:
\__xeCJK_ulem_punct_ccglue:
\__xeCJK_punct_glue:NN \c__xeCJK_left_tl #1
- \__xeCJK_punct_offset:NN \c__xeCJK_left_tl #1
\UL@start
\__xeCJK_ulem_class_group_begin:
\xeCJK_select_punct_font:
@@ -553,7 +549,6 @@
\__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\xeCJK_class_group_end:
\UL@stop
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_ulem_skip_punct_end:
\UL@start
@@ -567,7 +562,6 @@
\__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\xeCJK_class_group_end:
\UL@stop
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_ulem_skip_punct_end:
\UL@start
@@ -582,7 +576,6 @@
\__xeCJK_punct_rule:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\xeCJK_class_group_end:
\UL@stop
- \__xeCJK_punct_offset:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_punct_glue:NN \c__xeCJK_right_tl \g__xeCJK_last_punct_tl
\__xeCJK_ulem_punct_ccglue:
\__xeCJK_ulem_skip_punct_end:
@@ -653,7 +646,7 @@
\xeCJK_ulem_boot:NNNn #1#2#3 {#4}
\xeCJK_ulem_on:n
}
-\DeclareDocumentCommand \CJKunderline { s t- s o }
+\NewDocumentCommand \CJKunderline { s t- s o }
{
\xeCJK_ulem_group_begin:
\xeCJK_fntef_boot:nnNNNn { underline } { uline } #1#2#3 {#4}
@@ -669,9 +662,9 @@
}
\xeCJK_ulem_on:n
}
-\DeclareDocumentCommand \varCJKunderline { }
+\NewDocumentCommand \varCJKunderline { }
{ \CJKunderline - }
-\DeclareDocumentCommand \CJKunderwave { s t- s o }
+\NewDocumentCommand \CJKunderwave { s t- s o }
{
\xeCJK_ulem_group_begin:
\xeCJK_fntef_boot:nnNNNn { underwave } { uwave } #1#2#3 {#4}
@@ -681,7 +674,7 @@
{ \l__xeCJK_uwave_format_tl \l__xeCJK_uwave_symbol_tl }
\xeCJK_ulem_on:n
}
-\DeclareDocumentCommand \CJKunderdblline { s t- s o }
+\NewDocumentCommand \CJKunderdblline { s t- s o }
{
\xeCJK_ulem_group_begin:
\xeCJK_fntef_boot:nnNNNn { underdblline } { udbline } #1#2#3 {#4}
@@ -705,7 +698,7 @@
}
\xeCJK_ulem_on:n
}
-\DeclareDocumentCommand \CJKsout { s t- s o }
+\NewDocumentCommand \CJKsout { s t- s o }
{
\xeCJK_ulem_group_begin:
\xeCJK_fntef_boot:nnNNNn { sout } { sout } #1#2#3 {#4}
@@ -724,7 +717,7 @@
}
\xeCJK_ulem_on:n
}
-\DeclareDocumentCommand \CJKxout { s t- s o }
+\NewDocumentCommand \CJKxout { s t- s o }
{
\xeCJK_ulem_group_begin:
\xeCJK_fntef_boot:nnNNNn { xout } { xout } #1#2#3 {#4}
@@ -741,7 +734,7 @@
}
\xeCJK_ulem_on:n
}
-\DeclareDocumentCommand \CJKunderanyline { s t- s o m m }
+\NewDocumentCommand \CJKunderanyline { s t- s o m m }
{
\xeCJK_ulem_group_begin:
\xeCJK_ulem_boot:NNNn #1#2#3 {#4}
@@ -931,12 +924,12 @@
xout / format = \color { blue }
}
}
-\DeclareDocumentCommand \CJKunderanysymbol { o m m m }
+\NewDocumentCommand \CJKunderanysymbol { o m m m }
{
\xeCJK_under_symbol:nnnnnn { symbol } { symbol } {#1} {#2} {#3} {#4}
\tex_ignorespaces:D
}
-\DeclareDocumentCommand \CJKunderdot { o m }
+\NewDocumentCommand \CJKunderdot { o m }
{
\xeCJK_under_symbol:nnnnnn { underdot } { udot }
{#1}
@@ -1040,7 +1033,7 @@
\box_use:N \l__xeCJK_under_symbol_box
\xeCJK_no_break: \__xeCJK_under_CJKsymbol:N
}
-\DeclareDocumentEnvironment { CJKfilltwosides } { O { c } m }
+\NewDocumentEnvironment { CJKfilltwosides } { O { c } m }
{
\use:x { \exp_not:N \minipage [#1] { \dim_eval:n {#2} } }
\cs_set_eq:NN \CJKglue \xeCJK_fntef_hfilll:
@@ -1049,7 +1042,7 @@
\endminipage
\ignorespacesafterend
}
-\DeclareDocumentEnvironment { CJKfilltwosides* } { O { c } m +b }
+\NewDocumentEnvironment { CJKfilltwosides* } { O { c } m +b }
{
\mode_leave_vertical:
\cs_set_eq:NN \CJKglue \xeCJK_fntef_hfilll:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecjk/xunicode-addon.sty new/tex/xelatex/xecjk/xunicode-addon.sty
--- old/tex/xelatex/xecjk/xunicode-addon.sty 2019-04-07 23:28:36.000000000 +0200
+++ new/tex/xelatex/xecjk/xunicode-addon.sty 2020-02-18 23:31:44.000000000 +0100
@@ -7,8 +7,8 @@
%% xeCJK.dtx (with options: `xunicode')
%%
%% Copyright (C) 2007--2010 by Wenchang Sun
-%% Copyright (C) 2009--2019 by Leo Liu
-%% Copyright (C) 2012--2019 by Qing Lee
+%% Copyright (C) 2009--2020 by Leo Liu
+%% Copyright (C) 2012--2020 by Qing Lee
%% ----------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -29,10 +29,10 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo$Id: xeCJK.dtx 8be031f 2019-04-07 23:30:14 +0800 Qing Lee $
+\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee $
{addon file for xunicode}
\ProvidesExplPackage{xunicode-addon}
- {\ExplFileDate}{3.7.2}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.2}{\ExplFileDescription}
\bool_lazy_or:nnF
{ \sys_if_engine_xetex_p: }
{ \sys_if_engine_luatex_p: }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecjk/xunicode-extra.def new/tex/xelatex/xecjk/xunicode-extra.def
--- old/tex/xelatex/xecjk/xunicode-extra.def 2019-04-07 23:28:36.000000000 +0200
+++ new/tex/xelatex/xecjk/xunicode-extra.def 2020-02-18 23:31:44.000000000 +0100
@@ -7,8 +7,8 @@
%% xeCJK.dtx (with options: `xunextra')
%%
%% Copyright (C) 2007--2010 by Wenchang Sun
-%% Copyright (C) 2009--2019 by Leo Liu
-%% Copyright (C) 2012--2019 by Qing Lee
+%% Copyright (C) 2009--2020 by Leo Liu
+%% Copyright (C) 2012--2020 by Qing Lee
%% ----------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -27,10 +27,10 @@
%%
%% ----------------------------------------------------------------------
%%
-\GetIdInfo$Id: xeCJK.dtx 8be031f 2019-04-07 23:30:14 +0800 Qing Lee $
+\GetIdInfo$Id: xeCJK.dtx 165cecc 2020-02-18 20:38:34 +0800 Qing Lee $
{extra definition for xunicode}
\ProvidesExplFile{xunicode-extra.def}
- {\ExplFileDate}{3.7.2}{\ExplFileDescription}
+ {\ExplFileDate}{3.8.2}{\ExplFileDescription}
\DeclareUTFSymbol\texthyphenationpoint{"2027}
\DeclareUTFSymbol\texttwoemdash{"2E3A}
\DeclareUTFComposite\textsuperscript
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xecjk.tlpobj new/tlpkg/tlpobj/xecjk.tlpobj
--- old/tlpkg/tlpobj/xecjk.tlpobj 2019-04-08 01:40:33.000000000 +0200
+++ new/tlpkg/tlpobj/xecjk.tlpobj 2020-02-19 01:55:59.000000000 +0100
@@ -1,13 +1,13 @@
name xecjk
category Package
-revision 50852
+revision 53835
shortdesc Support for CJK documents in XeLaTeX
relocated 1
longdesc A LaTeX package for typesetting CJK documents in the way users
longdesc have become used to, in the CJK package. The package requires a
longdesc current version of xtemplate (and hence of the current LaTeX3
longdesc development environment).
-runfiles size=131
+runfiles size=130
RELOC/fonts/misc/xetex/fontmapping/xecjk/full-stop.map
RELOC/fonts/misc/xetex/fontmapping/xecjk/full-stop.tec
RELOC/fonts/misc/xetex/fontmapping/xecjk/fullwidth-stop.map
@@ -27,7 +27,6 @@
catalogue-contact-repository https://github.com/CTeX-org/ctex-kit
catalogue-contact-support https://github.com/CTeX-org/ctex-kit/issues
catalogue-ctan /macros/xetex/latex/xecjk
-catalogue-date 2019-04-07 19:45:54 +0200
catalogue-license lppl1.3c
catalogue-topics chinese japanese korean xetex expl3
-catalogue-version 3.7.2
+catalogue-version 3.8.2
++++++ xecyr.doc.tar.xz ++++++
++++ 3352 lines of diff (skipped)
++++++ xecyr.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xelatex/xecyr/xecyr.sty new/tex/xelatex/xecyr/xecyr.sty
--- old/tex/xelatex/xecyr/xecyr.sty 1970-01-01 01:00:00.000000000 +0100
+++ new/tex/xelatex/xecyr/xecyr.sty 2019-10-07 23:05:00.000000000 +0200
@@ -0,0 +1,336 @@
+\ProvidesPackage{xecyr}%
+ [2019/10/04 v1.2 Definitions for Cyrillic Babel and XeLaTeX/LuaTeX compatibility]
+
+\RequirePackage{ifluatex}
+\RequirePackage{ifxetex}
+
+\newif\if@EXT
+\DeclareOption{ext}{\@EXTtrue}
+\DeclareOption{noext}{\@EXTfalse}
+\newif\if@MIS
+\DeclareOption{mis}{\@MIStrue}
+\DeclareOption{nomis}{\@MISfalse}
+
+\ExecuteOptions{ext,nomis}
+\ProcessOptions
+
+\if@MIS
+ \RequirePackage{misccorr}
+\fi
+
+\ifluatex
+ \if@EXT
+ \RequirePackage{luatextra}
+ \defaultfontfeatures{Mapping=tex-text}
+ \fi
+\else
+ \ifxetex
+ \if@EXT
+ \RequirePackage{xltxtra}
+ \defaultfontfeatures{Mapping=tex-text}
+ \fi
+ \else % pdflatex/inputenc hack
+ \RequirePackage[utf8]{inputenc}
+ \def\setmainfont#1{}
+ \def\setsansfont#1{}
+ \def\setmonofont#1{}
+ \endinput
+ \fi
+\fi
+
+\@ifpackageloaded{xunicode}{}{\RequirePackage{xunicode}}
+
+%%% Cyrillic letter TeX definitions for XeTeX/LuaTeX
+% This definition set is complete for all Slavic Cyrillic
+% languages (Russian, Ukrainian, Belorussian,
+% Rusyn, Serbian, Macedonian and Bulgarian alphabets).
+%
+% It has not been confirmed as complete, but might be, for those
+% non-Slavic Cyrillic languages:
+% Ossetian, Khalka, Buryat, Kalmyk, Kyrgyz, Tatar, Uzbek
+% Azerbaijani, Kazakh, Abkhaz, Chukchi.
+
+%%% Part I
+%%% Cyrillic letters defined as a continuous stretch
+%%% in Unicode and most common 8-bit encodings which define them:
+
+\DeclareUTFcharacter[\UTFencname]{x0410}{\CYRA} % А
+\DeclareUTFcharacter[\UTFencname]{x0430}{\cyra} % а
+\DeclareUTFcharacter[\UTFencname]{x0411}{\CYRB} % Б
+\DeclareUTFcharacter[\UTFencname]{x0431}{\cyrb} % б
+\DeclareUTFcharacter[\UTFencname]{x0412}{\CYRV} % В
+\DeclareUTFcharacter[\UTFencname]{x0432}{\cyrv} % в
+\DeclareUTFcharacter[\UTFencname]{x0413}{\CYRG} % Г
+\DeclareUTFcharacter[\UTFencname]{x0433}{\cyrg} % г
+\DeclareUTFcharacter[\UTFencname]{x0414}{\CYRD} % Д
+\DeclareUTFcharacter[\UTFencname]{x0434}{\cyrd} % д
+\DeclareUTFcharacter[\UTFencname]{x0415}{\CYRE} % Е
+\DeclareUTFcharacter[\UTFencname]{x0435}{\cyre} % е
+\DeclareUTFcharacter[\UTFencname]{x0416}{\CYRZH} % Ж
+\DeclareUTFcharacter[\UTFencname]{x0436}{\cyrzh} % ж
+\DeclareUTFcharacter[\UTFencname]{x0417}{\CYRZ} % З
+\DeclareUTFcharacter[\UTFencname]{x0437}{\cyrz} % з
+\DeclareUTFcharacter[\UTFencname]{x0418}{\CYRI} % И
+\DeclareUTFcharacter[\UTFencname]{x0438}{\cyri} % и
+\DeclareUTFcharacter[\UTFencname]{x0419}{\CYRISHRT} % Й
+\DeclareUTFcharacter[\UTFencname]{x0439}{\cyrishrt} % й
+\DeclareUTFcharacter[\UTFencname]{x041A}{\CYRK} % К
+\DeclareUTFcharacter[\UTFencname]{x043A}{\cyrk} % к
+\DeclareUTFcharacter[\UTFencname]{x041B}{\CYRL} % Л
+\DeclareUTFcharacter[\UTFencname]{x043B}{\cyrl} % л
+\DeclareUTFcharacter[\UTFencname]{x041C}{\CYRM} % М
+\DeclareUTFcharacter[\UTFencname]{x043C}{\cyrm} % м
+\DeclareUTFcharacter[\UTFencname]{x041D}{\CYRN} % Н
+\DeclareUTFcharacter[\UTFencname]{x043D}{\cyrn} % н
+\DeclareUTFcharacter[\UTFencname]{x041E}{\CYRO} % О
+\DeclareUTFcharacter[\UTFencname]{x043E}{\cyro} % о
+\DeclareUTFcharacter[\UTFencname]{x041F}{\CYRP} % П
+\DeclareUTFcharacter[\UTFencname]{x043F}{\cyrp} % п
+\DeclareUTFcharacter[\UTFencname]{x0420}{\CYRR} % Р
+\DeclareUTFcharacter[\UTFencname]{x0440}{\cyrr} % р
+\DeclareUTFcharacter[\UTFencname]{x0421}{\CYRS} % С
+\DeclareUTFcharacter[\UTFencname]{x0441}{\cyrs} % с
+\DeclareUTFcharacter[\UTFencname]{x0422}{\CYRT} % Т
+\DeclareUTFcharacter[\UTFencname]{x0442}{\cyrt} % т
+\DeclareUTFcharacter[\UTFencname]{x0423}{\CYRU} % У
+\DeclareUTFcharacter[\UTFencname]{x0443}{\cyru} % у
+\DeclareUTFcharacter[\UTFencname]{x0424}{\CYRF} % Ф
+\DeclareUTFcharacter[\UTFencname]{x0444}{\cyrf} % ф
+\DeclareUTFcharacter[\UTFencname]{x0425}{\CYRH} % Х
+\DeclareUTFcharacter[\UTFencname]{x0445}{\cyrh} % х
+\DeclareUTFcharacter[\UTFencname]{x0426}{\CYRC} % Ц
+\DeclareUTFcharacter[\UTFencname]{x0446}{\cyrc} % ц
+\DeclareUTFcharacter[\UTFencname]{x0427}{\CYRCH} % Ч
+\DeclareUTFcharacter[\UTFencname]{x0447}{\cyrch} % ч
+\DeclareUTFcharacter[\UTFencname]{x0428}{\CYRSH} % Ш
+\DeclareUTFcharacter[\UTFencname]{x0448}{\cyrsh} % ш
+\DeclareUTFcharacter[\UTFencname]{x0429}{\CYRSHCH} % Щ
+\DeclareUTFcharacter[\UTFencname]{x0449}{\cyrshch} % щ
+\DeclareUTFcharacter[\UTFencname]{x042A}{\CYRHRDSN} % Ъ
+\DeclareUTFcharacter[\UTFencname]{x044A}{\cyrhrdsn} % ъ
+\DeclareUTFcharacter[\UTFencname]{x042B}{\CYRERY} % Ы
+\DeclareUTFcharacter[\UTFencname]{x044B}{\cyrery} % ы
+\DeclareUTFcharacter[\UTFencname]{x042C}{\CYRSFTSN} % Ь
+\DeclareUTFcharacter[\UTFencname]{x044C}{\cyrsftsn} % ь
+\DeclareUTFcharacter[\UTFencname]{x042D}{\CYREREV} % Э
+\DeclareUTFcharacter[\UTFencname]{x044D}{\cyrerev} % э
+\DeclareUTFcharacter[\UTFencname]{x042E}{\CYRYU} % Ю
+\DeclareUTFcharacter[\UTFencname]{x044E}{\cyryu} % ю
+\DeclareUTFcharacter[\UTFencname]{x042F}{\CYRYA} % Я
+\DeclareUTFcharacter[\UTFencname]{x044F}{\cyrya} % я
+
+%%% Part II
+%%% Cyrillic letters not defined as continuous stretches,
+%%% but available in common 8-bit cyrillic encodings,
+%%% like cp1251 and iso-8859-5, sorted by languages
+%%% they're used in for ease of checking:
+
+% Common to many languages:
+\DeclareUTFcharacter[\UTFencname]{x0401}{\CYRYO} % Ё
+\DeclareUTFcharacter[\UTFencname]{x0451}{\cyryo} % ё
+% Belorussian-Uzbek:
+\DeclareUTFcharacter[\UTFencname]{x040E}{\CYRUSHRT} % Ў
+\DeclareUTFcharacter[\UTFencname]{x045E}{\cyrushrt} % ў
+% Ukrainian-Rusyn:
+\DeclareUTFcharacter[\UTFencname]{x0490}{\CYRGUP} % Ґ
+\DeclareUTFcharacter[\UTFencname]{x0491}{\cyrgup} % ґ
+\DeclareUTFcharacter[\UTFencname]{x0407}{\CYRYI} % Ї
+\DeclareUTFcharacter[\UTFencname]{x0457}{\cyryi} % ї
+\DeclareUTFcharacter[\UTFencname]{x0404}{\CYRIE} % Є
+\DeclareUTFcharacter[\UTFencname]{x0454}{\cyrie} % є
+% Ukrainian-Belorussian-Rusyn-Kazakh:
+\DeclareUTFcharacter[\UTFencname]{x0406}{\CYRII} % І
+\DeclareUTFcharacter[\UTFencname]{x0456}{\cyrii} % і
+% Serbian-Macedonian-Azerbaijani:
+\DeclareUTFcharacter[\UTFencname]{x0408}{\CYRJE} % Ј
+\DeclareUTFcharacter[\UTFencname]{x0458}{\cyrje} % ј
+% Serbian-Macedonian-Abkhaz:
+\DeclareUTFcharacter[\UTFencname]{x040F}{\CYRDZHE} % Џ
+\DeclareUTFcharacter[\UTFencname]{x045F}{\cyrdzhe} % џ
+% Serbian-Macedonian:
+\DeclareUTFcharacter[\UTFencname]{x0409}{\CYRLJE} % Љ
+\DeclareUTFcharacter[\UTFencname]{x0459}{\cyrlje} % љ
+\DeclareUTFcharacter[\UTFencname]{x040A}{\CYRNJE} % Њ
+\DeclareUTFcharacter[\UTFencname]{x045A}{\cyrnje} % њ
+% Serbian:
+\DeclareUTFcharacter[\UTFencname]{x0402}{\CYRDJE} % Ђ
+\DeclareUTFcharacter[\UTFencname]{x0452}{\cyrdje} % ђ
+\DeclareUTFcharacter[\UTFencname]{x040B}{\CYRTSHE} % Ћ
+\DeclareUTFcharacter[\UTFencname]{x045B}{\cyrtshe} % ћ
+% Macedonian:
+\DeclareUTFcharacter[\UTFencname]{x0405}{\CYRDZE} % Ѕ
+\DeclareUTFcharacter[\UTFencname]{x0455}{\cyrdze} % ѕ
+\DeclareUTFcharacter[\UTFencname]{x0403}{\CYRGJE} % Ѓ
+\DeclareUTFcharacter[\UTFencname]{x0453}{\cyrgje} % ѓ
+\DeclareUTFcharacter[\UTFencname]{x040C}{\CYRKJE} % Ќ
+\DeclareUTFcharacter[\UTFencname]{x045C}{\cyrkje} % ќ
+
+%%% Part III
+%%% Non-Slavic Cyrillic letters, waiting for their experts
+%%% to be confirmed as correct.
+%%% From here on, we're out of the frequently used 8-bit land
+%%% and into mostly Unicode territory.
+
+% Azerbaijani-Abkhaz-Kalmyk-Kazakh-Tatar:
+\DeclareUTFcharacter[\UTFencname]{x04D8}{\CYRSCHWA} % Ә
+\DeclareUTFcharacter[\UTFencname]{x04D9}{\cyrschwa} % ә
+% Azerbaijani-Kyrgyz-Buryat-Kazakh-Tatar:
+\DeclareUTFcharacter[\UTFencname]{x04BA}{\CYRSHHA} % Һ
+\DeclareUTFcharacter[\UTFencname]{x04BB}{\cyrshha} % һ
+% Azerbaijani-Kyrgyz-Buryat-Kalmyk-Kazakh-Tatar:
+\DeclareUTFcharacter[\UTFencname]{x04E8}{\CYROTLD} % Ө
+\DeclareUTFcharacter[\UTFencname]{x04E9}{\cyrotld} % ө
+\DeclareUTFcharacter[\UTFencname]{x04AE}{\CYRY} % Ү
+\DeclareUTFcharacter[\UTFencname]{x04AF}{\cyry} % ү
+% Azerbaijani-Tajik-Kazakh-Uzbek:
+\DeclareUTFcharacter[\UTFencname]{x0492}{\CYRGHCRS} % Ғ
+\DeclareUTFcharacter[\UTFencname]{x0493}{\cyrghcrs} % ғ
+% Tajik-Abkhaz-Kazakh-Uzbek:
+\DeclareUTFcharacter[\UTFencname]{x049A}{\CYRKDSC} % Қ
+\DeclareUTFcharacter[\UTFencname]{x049B}{\cyrkdsc} % қ
+% Tajik-Abkhaz-Uzbek:
+\DeclareUTFcharacter[\UTFencname]{x04B2}{\CYRHDSC} % Ҳ
+\DeclareUTFcharacter[\UTFencname]{x04B3}{\cyrhdsc} % ҳ
+% Tajik-Abkhaz:
+\DeclareUTFcharacter[\UTFencname]{x04B6}{\CYRCHRDSC} % Ҷ
+\DeclareUTFcharacter[\UTFencname]{x04B7}{\cyrchrdsc} % ҷ
+% Kalmyk-Kyrguz-Tatar:
+\DeclareUTFcharacter[\UTFencname]{x04A2}{\CYRNDSC} % Ң
+\DeclareUTFcharacter[\UTFencname]{x04A3}{\cyrndsc} % ң
+% Kalmyk-Tatar:
+\DeclareUTFcharacter[\UTFencname]{x0496}{\CYRZHDSC} % Җ
+\DeclareUTFcharacter[\UTFencname]{x0497}{\cyrzhdsc} % җ
+% Ossetian:
+\DeclareUTFcharacter[\UTFencname]{x04D4}{\CYRAE} % Ӕ
+\DeclareUTFcharacter[\UTFencname]{x04D5}{\cyrae} % ӕ
+% Azerbaijani:
+\DeclareUTFcharacter[\UTFencname]{x04B8}{\CYRCHVCRS} % Ҹ
+\DeclareUTFcharacter[\UTFencname]{x04B9}{\cyrchvcrs} % ҹ
+\DeclareUTFcharacter[\UTFencname]{x049C}{\CYRKVCRS} % Ҝ
+\DeclareUTFcharacter[\UTFencname]{x049D}{\cyrkvcrs} % ҝ
+% Kazakh:
+\DeclareUTFcharacter[\UTFencname]{x04B0}{\CYRYHCRS} % Ұ
+\DeclareUTFcharacter[\UTFencname]{x04B1}{\cyryhcrs} % ұ
+% Abkhaz:
+\DeclareUTFcharacter[\UTFencname]{x0494}{\CYRGHK} % Ҕ
+\DeclareUTFcharacter[\UTFencname]{x0495}{\cyrghk} % ҕ
+\DeclareUTFcharacter[\UTFencname]{x04E0}{\CYRABHDZE} % Ӡ
+\DeclareUTFcharacter[\UTFencname]{x04E1}{\cyrabhdze} % ӡ
+\DeclareUTFcharacter[\UTFencname]{x049E}{\CYRKHCRS} % Ҟ
+\DeclareUTFcharacter[\UTFencname]{x049F}{\cyrkhcrs} % ҟ
+\DeclareUTFcharacter[\UTFencname]{x04A6}{\CYRPHK} % Ҧ
+\DeclareUTFcharacter[\UTFencname]{x04A7}{\cyrphk} % ҧ
+\DeclareUTFcharacter[\UTFencname]{x04AC}{\CYRTDSC} % Ҭ
+\DeclareUTFcharacter[\UTFencname]{x04AD}{\cyrtdsc} % ҭ
+\DeclareUTFcharacter[\UTFencname]{x04B4}{\CYRTETSE} % Ҵ
+\DeclareUTFcharacter[\UTFencname]{x04B5}{\cyrtetse} % ҵ
+\DeclareUTFcharacter[\UTFencname]{x04BC}{\CYRABHCH} % Ҽ
+\DeclareUTFcharacter[\UTFencname]{x04BD}{\cyrabhch} % ҽ
+\DeclareUTFcharacter[\UTFencname]{x04BE}{\CYRABHCHDSC} % Ҿ
+\DeclareUTFcharacter[\UTFencname]{x04BF}{\cyrabhchdsc} % ҿ
+\DeclareUTFcharacter[\UTFencname]{x04A8}{\CYRABHHA} % Ҩ
+\DeclareUTFcharacter[\UTFencname]{x04A9}{\cyrabhha} % ҩ
+% Chukchi:
+\DeclareUTFcharacter[\UTFencname]{x04C3}{\CYRKHK} % Ӄ
+\DeclareUTFcharacter[\UTFencname]{x04C4}{\cyrkhk} % ӄ
+\DeclareUTFcharacter[\UTFencname]{x04C7}{\CYRNHK} % Ӈ
+\DeclareUTFcharacter[\UTFencname]{x04C8}{\cyrnhk} % ӈ
+
+%% P.S. Tajik and Chuvash, while mentioned,
+%% have letters which are apparently missing and are NOT complete.
+
+%%% Part IV
+%%% Historical letters, needed to support old orthographies.
+\DeclareUTFcharacter[\UTFencname]{x0462}{\CYRYAT} % Ѣ
+\DeclareUTFcharacter[\UTFencname]{x0463}{\cyryat} % ѣ
+\DeclareUTFcharacter[\UTFencname]{x046A}{\CYRBYUS} % Ѫ
+\DeclareUTFcharacter[\UTFencname]{x046B}{\cyrbyus} % ѫ
+\DeclareUTFcharacter[\UTFencname]{x0474}{\CYRIZH} % Ѵ
+\DeclareUTFcharacter[\UTFencname]{x0475}{\cyrizh} % ѵ
+\DeclareUTFcharacter[\UTFencname]{x0472}{\CYRFITA} % Ѳ
+\DeclareUTFcharacter[\UTFencname]{x0473}{\cyrfita} % ѳ
+
+%%% Part V
+%%% UNRECOGNISED NON-SLAVIC CYRILLIC LETTERS
+%%% Belong to languages not mentioned herein.
+
+\DeclareUTFcharacter[\UTFencname]{x04C0}{\CYRpalochka} % Ӏ
+\DeclareUTFcharacter[\UTFencname]{x0498}{\CYRZDSC} % Ҙ
+\DeclareUTFcharacter[\UTFencname]{x0499}{\cyrzdsc} % ҙ
+\DeclareUTFcharacter[\UTFencname]{x04A0}{\CYRKBEAK} % Ҡ
+\DeclareUTFcharacter[\UTFencname]{x04A1}{\cyrkbeak} % ҡ
+\DeclareUTFcharacter[\UTFencname]{x04A4}{\CYRNG} % Ҥ
+\DeclareUTFcharacter[\UTFencname]{x04A5}{\cyrng} % ҥ
+\DeclareUTFcharacter[\UTFencname]{x04AA}{\CYRSDSC} % Ҫ
+\DeclareUTFcharacter[\UTFencname]{x04AB}{\cyrsdsc} % ҫ
+\DeclareUTFcharacter[\UTFencname]{x04CB}{\CYRCHLDSC} % Ӌ
+\DeclareUTFcharacter[\UTFencname]{x04CC}{\cyrchldsc} % ӌ
+
+%% These are probably improperly named either in TeX or Unicode,
+%% since their Unicode names and TeX names do not match.
+%% TeX definitely treats them as the same symbol though.
+\DeclareUTFcharacter[\UTFencname]{x04CD}{\CYRMDSC} % Ӎ
+\DeclareUTFcharacter[\UTFencname]{x04CE}{\cyrmdsc} % ӎ
+\DeclareUTFcharacter[\UTFencname]{x04C5}{\CYRLDSC} % Ӆ
+\DeclareUTFcharacter[\UTFencname]{x04C6}{\cyrldsc} % ӆ
+
+%% These two letters are part of proposed Unicode for Kurdish
+%% and their codepoints may or may not change upon inclusion.
+\DeclareUTFcharacter[\UTFencname]{x051A}{\CYRQ}
+\DeclareUTFcharacter[\UTFencname]{x051B}{\cyrq}
+\DeclareUTFcharacter[\UTFencname]{x051C}{\CYRW}
+\DeclareUTFcharacter[\UTFencname]{x051D}{\cyrw}
+
+%%% Part VII
+%%% PUNCTUATION AND UNCLEAR CASES
+%%% Exotic (punctuation, letters...)
+%%% (this list is probably incomplete)
+
+% A dash - Defined in cyrillic.mtx to be emdash
+% and should have been emdash all along.
+\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
+
+% Exotic angle brackets.
+% Might still be unprintable for you.
+\DeclareUTFcharacter[\UTFencname]{x27E8}{\cyrlangle}
+\DeclareUTFcharacter[\UTFencname]{x27E9}{\cyrrangle}
+
+% This particular association is not certain but I guess
+% we'll hear about it when someone trips over it.
+\DeclareUTFcharacter[\UTFencname]{x0510}{\CYREPS}
+\DeclareUTFcharacter[\UTFencname]{x0511}{\cyreps}
+
+% Can't confirm those, but I'm positive the codepoints are correct:
+\DeclareUTFcharacter[\UTFencname]{x04F6}{\CYRGDSC}
+\DeclareUTFcharacter[\UTFencname]{x04F7}{\cyrgdsc}
+\DeclareUTFcharacter[\UTFencname]{x04FC}{\CYRHHK}
+\DeclareUTFcharacter[\UTFencname]{x04FD}{\cyrhhk}
+\DeclareUTFcharacter[\UTFencname]{x0512}{\CYRLHK}
+\DeclareUTFcharacter[\UTFencname]{x0513}{\cyrlhk}
+
+% I could not assign these in a way that would make sense,
+% since I couldn't find matches in cyrillic unicode table.
+
+%\DeclareUTFcharacter[\UTFencname]{x????}{\CYRNLHK}
+%\DeclareUTFcharacter[\UTFencname]{x????}{\cyrnlhk}
+%\DeclareUTFcharacter[\UTFencname]{x????}{\CYRRDSC}
+%\DeclareUTFcharacter[\UTFencname]{x????}{\cyrrdsc}
+
+% Oddities:
+% I don't see a letter like that in Unicode cyrillic table.
+% I've no idea what is it doing in a cyrillic encoding either.
+%\DeclareUTFcharacter[\UTFencname]{x????}{\CYRDELTA}
+%\DeclareUTFcharacter[\UTFencname]{x????}{\cyrdelta}
+
+% Quotes
+% Ligatures << and >> are working only with the last versions of "tex-text.map"
+% and "tex-text.tec" (http://scripts.sil.org/svn-view/xetex/TRUNK)
+\DeclareUTFcharacter[\UTFencname]{x00AB}{\flqq}
+\DeclareUTFcharacter[\UTFencname]{x00BB}{\frqq}
+\DeclareUTFcharacter[\UTFencname]{x201E}{\glqq}
+\DeclareUTFcharacter[\UTFencname]{x201C}{\grqq}
+
+% To make it (and "--- -like shortcuts) work, "xecyr" must be loaded _after_ babel.
+\def\cyrdash{\hbox to.8em{--\hss--}}
+
+\endinput
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/generic/xecyr/xu-ruenhyph.tex new/texmf-dist/tex/generic/xecyr/xu-ruenhyph.tex
--- old/texmf-dist/tex/generic/xecyr/xu-ruenhyph.tex 2008-03-10 01:27:31.000000000 +0100
+++ new/texmf-dist/tex/generic/xecyr/xu-ruenhyph.tex 1970-01-01 01:00:00.000000000 +0100
@@ -1,59 +0,0 @@
-% xu-ruenhyph.tex
-% Wrapper for XeTeX to read combined Russian/English hyphenation patterns
-% Alexey Shipunov, 2008/02/16-08-19
-% Public domain
-
-\begingroup
-
-% Please uncomment the pattern value you need before creating a new
-% format file containing Russian hyphenation patterns:
-
-\ifx\Pattern\undefined
-\def\Pattern{al}
-%\def\Pattern{as}
-%\def\Pattern{ct}
-%\def\Pattern{dv}
-%\def\Pattern{mg}
-%\def\Pattern{vl}
-%\def\Pattern{zn}
-\fi
-
-% For non-XeTeX use, also check the encoding options in ruhyphen.tex
-
-\expandafter\ifx\csname XeTeXrevision\endcsname\relax
-
- \input hyphen
- \input enrhm2
- \input ruhyphen
-
-\else
-
- \let\PATTERNS=\patterns
- \def\patterns{%
- \XeTeXinputencoding "KOI8-R"
- \PATTERNS
- }
-
- \input hyphen
- \input enrhm2
- \input ruhyph\Pattern
- \input cyryo\Pattern
-
- % additional patterns from ruhyphen.tex, converted to Unicode
- \PATTERNS{.^^^^043d^^^^04358 8^^^^043d^^^^0435.}
- \PATTERNS{8^^^^0431^^^^044a. 8^^^^0432^^^^044a. 8^^^^0433^^^^044a.
- 8^^^^0434^^^^044a. 8^^^^0436^^^^044a. 8^^^^0437^^^^044a.
- 8^^^^043a^^^^044a. 8^^^^043b^^^^044a. 8^^^^043c^^^^044a.
- 8^^^^043d^^^^044a. 8^^^^043f^^^^044a. 8^^^^0440^^^^044a.
- 8^^^^0441^^^^044a. 8^^^^0442^^^^044a. 8^^^^0444^^^^044a.
- 8^^^^0445^^^^044a. 8^^^^0446^^^^044a. 8^^^^0447^^^^044a.
- 8^^^^0448^^^^044a. 8^^^^0449^^^^044a.}
-
-\fi
-
-\endgroup
-
-\lefthyphenmin2 % settings copied from ruhyphen.tex
-\righthyphenmin2
-
-\endinput
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/xelatex/xecyr/xecyr.sty new/texmf-dist/tex/xelatex/xecyr/xecyr.sty
--- old/texmf-dist/tex/xelatex/xecyr/xecyr.sty 2010-10-27 02:16:58.000000000 +0200
+++ new/texmf-dist/tex/xelatex/xecyr/xecyr.sty 1970-01-01 01:00:00.000000000 +0100
@@ -1,321 +0,0 @@
-% Modified from Evgenie Medvedev <medvedev at project7.ru> by A. Shipunov (plantago@herba.msu.ru)
-
-\ProvidesPackage{xecyr}%
- [2008/03/08 v1.0 Definitions for Cyrillic Babel/XeLaTeX compatibility]
-
-\newif\if@EXT
-\DeclareOption{ext}{\@EXTtrue}
-\DeclareOption{noext}{\@EXTfalse}
-\newif\if@MIS
-\DeclareOption{mis}{\@MIStrue}
-\DeclareOption{nomis}{\@MISfalse}
-
-\ExecuteOptions{ext,nomis}
-\ProcessOptions
-
-\if@MIS
- \RequirePackage{misccorr}
- \XeTeXinputencoding "KOI8-R"
-\fi
-
-\if@EXT
- \PassOptionsToPackage{cm-default}{fontspec}
- \RequirePackage{xltxtra}
-\fi
-
-\RequirePackage{xunicode}
-
-%%% Cyrillic letter TeX definitions for XeTeX
-% This definition set is complete for all Slavic Cyrillic
-% languages (Russian, Ukrainian, Belorussian,
-% Rusyn, Serbian, Macedonian and Bulgarian alphabets).
-%
-% It has not been confirmed as complete, but might be, for those
-% non-Slavic Cyrillic languages:
-% Ossetian, Khalka, Buryat, Kalmyk, Kyrgyz, Tatar, Uzbek
-% Azerbaijani, Kazakh, Abkhaz, Chukchi.
-
-%%% Part I
-%%% Cyrillic letters defined as a continuous stretch
-%%% in Unicode and most common 8-bit encodings which define them:
-
-\DeclareUTFcharacter[\UTFencname]{x0410}{\CYRA} % А
-\DeclareUTFcharacter[\UTFencname]{x0430}{\cyra} % а
-\DeclareUTFcharacter[\UTFencname]{x0411}{\CYRB} % Б
-\DeclareUTFcharacter[\UTFencname]{x0431}{\cyrb} % б
-\DeclareUTFcharacter[\UTFencname]{x0412}{\CYRV} % В
-\DeclareUTFcharacter[\UTFencname]{x0432}{\cyrv} % в
-\DeclareUTFcharacter[\UTFencname]{x0413}{\CYRG} % Г
-\DeclareUTFcharacter[\UTFencname]{x0433}{\cyrg} % г
-\DeclareUTFcharacter[\UTFencname]{x0414}{\CYRD} % Д
-\DeclareUTFcharacter[\UTFencname]{x0434}{\cyrd} % д
-\DeclareUTFcharacter[\UTFencname]{x0415}{\CYRE} % Е
-\DeclareUTFcharacter[\UTFencname]{x0435}{\cyre} % е
-\DeclareUTFcharacter[\UTFencname]{x0416}{\CYRZH} % Ж
-\DeclareUTFcharacter[\UTFencname]{x0436}{\cyrzh} % ж
-\DeclareUTFcharacter[\UTFencname]{x0417}{\CYRZ} % З
-\DeclareUTFcharacter[\UTFencname]{x0437}{\cyrz} % з
-\DeclareUTFcharacter[\UTFencname]{x0418}{\CYRI} % И
-\DeclareUTFcharacter[\UTFencname]{x0438}{\cyri} % и
-\DeclareUTFcharacter[\UTFencname]{x0419}{\CYRISHRT} % Й
-\DeclareUTFcharacter[\UTFencname]{x0439}{\cyrishrt} % й
-\DeclareUTFcharacter[\UTFencname]{x041A}{\CYRK} % К
-\DeclareUTFcharacter[\UTFencname]{x043A}{\cyrk} % к
-\DeclareUTFcharacter[\UTFencname]{x041B}{\CYRL} % Л
-\DeclareUTFcharacter[\UTFencname]{x043B}{\cyrl} % л
-\DeclareUTFcharacter[\UTFencname]{x041C}{\CYRM} % М
-\DeclareUTFcharacter[\UTFencname]{x043C}{\cyrm} % м
-\DeclareUTFcharacter[\UTFencname]{x041D}{\CYRN} % Н
-\DeclareUTFcharacter[\UTFencname]{x043D}{\cyrn} % н
-\DeclareUTFcharacter[\UTFencname]{x041E}{\CYRO} % О
-\DeclareUTFcharacter[\UTFencname]{x043E}{\cyro} % о
-\DeclareUTFcharacter[\UTFencname]{x041F}{\CYRP} % П
-\DeclareUTFcharacter[\UTFencname]{x043F}{\cyrp} % п
-\DeclareUTFcharacter[\UTFencname]{x0420}{\CYRR} % Р
-\DeclareUTFcharacter[\UTFencname]{x0440}{\cyrr} % р
-\DeclareUTFcharacter[\UTFencname]{x0421}{\CYRS} % С
-\DeclareUTFcharacter[\UTFencname]{x0441}{\cyrs} % с
-\DeclareUTFcharacter[\UTFencname]{x0422}{\CYRT} % Т
-\DeclareUTFcharacter[\UTFencname]{x0442}{\cyrt} % т
-\DeclareUTFcharacter[\UTFencname]{x0423}{\CYRU} % У
-\DeclareUTFcharacter[\UTFencname]{x0443}{\cyru} % у
-\DeclareUTFcharacter[\UTFencname]{x0424}{\CYRF} % Ф
-\DeclareUTFcharacter[\UTFencname]{x0444}{\cyrf} % ф
-\DeclareUTFcharacter[\UTFencname]{x0425}{\CYRH} % Х
-\DeclareUTFcharacter[\UTFencname]{x0445}{\cyrh} % х
-\DeclareUTFcharacter[\UTFencname]{x0426}{\CYRC} % Ц
-\DeclareUTFcharacter[\UTFencname]{x0446}{\cyrc} % ц
-\DeclareUTFcharacter[\UTFencname]{x0427}{\CYRCH} % Ч
-\DeclareUTFcharacter[\UTFencname]{x0447}{\cyrch} % ч
-\DeclareUTFcharacter[\UTFencname]{x0428}{\CYRSH} % Ш
-\DeclareUTFcharacter[\UTFencname]{x0448}{\cyrsh} % ш
-\DeclareUTFcharacter[\UTFencname]{x0429}{\CYRSHCH} % Щ
-\DeclareUTFcharacter[\UTFencname]{x0449}{\cyrshch} % щ
-\DeclareUTFcharacter[\UTFencname]{x042A}{\CYRHRDSN} % Ъ
-\DeclareUTFcharacter[\UTFencname]{x044A}{\cyrhrdsn} % ъ
-\DeclareUTFcharacter[\UTFencname]{x042B}{\CYRERY} % Ы
-\DeclareUTFcharacter[\UTFencname]{x044B}{\cyrery} % ы
-\DeclareUTFcharacter[\UTFencname]{x042C}{\CYRSFTSN} % Ь
-\DeclareUTFcharacter[\UTFencname]{x044C}{\cyrsftsn} % ь
-\DeclareUTFcharacter[\UTFencname]{x042D}{\CYREREV} % Э
-\DeclareUTFcharacter[\UTFencname]{x044D}{\cyrerev} % э
-\DeclareUTFcharacter[\UTFencname]{x042E}{\CYRYU} % Ю
-\DeclareUTFcharacter[\UTFencname]{x044E}{\cyryu} % ю
-\DeclareUTFcharacter[\UTFencname]{x042F}{\CYRYA} % Я
-\DeclareUTFcharacter[\UTFencname]{x044F}{\cyrya} % я
-
-%%% Part II
-%%% Cyrillic letters not defined as continuous stretches,
-%%% but available in common 8-bit cyrillic encodings,
-%%% like cp1251 and iso-8859-5, sorted by languages
-%%% they're used in for ease of checking:
-
-% Common to many languages:
-\DeclareUTFcharacter[\UTFencname]{x0401}{\CYRYO} % Ё
-\DeclareUTFcharacter[\UTFencname]{x0451}{\cyryo} % ё
-% Belorussian-Uzbek:
-\DeclareUTFcharacter[\UTFencname]{x040E}{\CYRUSHRT} % Ў
-\DeclareUTFcharacter[\UTFencname]{x045E}{\cyrushrt} % ў
-% Ukrainian-Rusyn:
-\DeclareUTFcharacter[\UTFencname]{x0490}{\CYRGUP} % Ґ
-\DeclareUTFcharacter[\UTFencname]{x0491}{\cyrgup} % ґ
-\DeclareUTFcharacter[\UTFencname]{x0407}{\CYRYI} % Ї
-\DeclareUTFcharacter[\UTFencname]{x0457}{\cyryi} % ї
-\DeclareUTFcharacter[\UTFencname]{x0404}{\CYRIE} % Є
-\DeclareUTFcharacter[\UTFencname]{x0454}{\cyrie} % є
-% Ukrainian-Belorussian-Rusyn-Kazakh:
-\DeclareUTFcharacter[\UTFencname]{x0406}{\CYRII} % І
-\DeclareUTFcharacter[\UTFencname]{x0456}{\cyrii} % і
-% Serbian-Macedonian-Azerbaijani:
-\DeclareUTFcharacter[\UTFencname]{x0408}{\CYRJE} % Ј
-\DeclareUTFcharacter[\UTFencname]{x0458}{\cyrje} % ј
-% Serbian-Macedonian-Abkhaz:
-\DeclareUTFcharacter[\UTFencname]{x040F}{\CYRDZHE} % Џ
-\DeclareUTFcharacter[\UTFencname]{x045F}{\cyrdzhe} % џ
-% Serbian-Macedonian:
-\DeclareUTFcharacter[\UTFencname]{x0409}{\CYRLJE} % Љ
-\DeclareUTFcharacter[\UTFencname]{x0459}{\cyrlje} % љ
-\DeclareUTFcharacter[\UTFencname]{x040A}{\CYRNJE} % Њ
-\DeclareUTFcharacter[\UTFencname]{x045A}{\cyrnje} % њ
-% Serbian:
-\DeclareUTFcharacter[\UTFencname]{x0402}{\CYRDJE} % Ђ
-\DeclareUTFcharacter[\UTFencname]{x0452}{\cyrdje} % ђ
-\DeclareUTFcharacter[\UTFencname]{x040B}{\CYRTSHE} % Ћ
-\DeclareUTFcharacter[\UTFencname]{x045B}{\cyrtshe} % ћ
-% Macedonian:
-\DeclareUTFcharacter[\UTFencname]{x0405}{\CYRDZE} % Ѕ
-\DeclareUTFcharacter[\UTFencname]{x0455}{\cyrdze} % ѕ
-\DeclareUTFcharacter[\UTFencname]{x0403}{\CYRGJE} % Ѓ
-\DeclareUTFcharacter[\UTFencname]{x0453}{\cyrgje} % ѓ
-\DeclareUTFcharacter[\UTFencname]{x040C}{\CYRKJE} % Ќ
-\DeclareUTFcharacter[\UTFencname]{x045C}{\cyrkje} % ќ
-
-%%% Part III
-%%% Non-Slavic Cyrillic letters, waiting for their experts
-%%% to be confirmed as correct.
-%%% From here on, we're out of the frequently used 8-bit land
-%%% and into mostly Unicode territory.
-
-% Azerbaijani-Abkhaz-Kalmyk-Kazakh-Tatar:
-\DeclareUTFcharacter[\UTFencname]{x04D8}{\CYRSCHWA} % Ә
-\DeclareUTFcharacter[\UTFencname]{x04D9}{\cyrschwa} % ә
-% Azerbaijani-Kyrgyz-Buryat-Kazakh-Tatar:
-\DeclareUTFcharacter[\UTFencname]{x04BA}{\CYRSHHA} % Һ
-\DeclareUTFcharacter[\UTFencname]{x04BB}{\cyrshha} % һ
-% Azerbaijani-Kyrgyz-Buryat-Kalmyk-Kazakh-Tatar:
-\DeclareUTFcharacter[\UTFencname]{x04E8}{\CYROTLD} % Ө
-\DeclareUTFcharacter[\UTFencname]{x04E9}{\cyrotld} % ө
-\DeclareUTFcharacter[\UTFencname]{x04AE}{\CYRY} % Ү
-\DeclareUTFcharacter[\UTFencname]{x04AF}{\cyry} % ү
-% Azerbaijani-Tajik-Kazakh-Uzbek:
-\DeclareUTFcharacter[\UTFencname]{x0492}{\CYRGHCRS} % Ғ
-\DeclareUTFcharacter[\UTFencname]{x0493}{\cyrghcrs} % ғ
-% Tajik-Abkhaz-Kazakh-Uzbek:
-\DeclareUTFcharacter[\UTFencname]{x049A}{\CYRKDSC} % Қ
-\DeclareUTFcharacter[\UTFencname]{x049B}{\cyrkdsc} % қ
-% Tajik-Abkhaz-Uzbek:
-\DeclareUTFcharacter[\UTFencname]{x04B2}{\CYRHDSC} % Ҳ
-\DeclareUTFcharacter[\UTFencname]{x04B3}{\cyrhdsc} % ҳ
-% Tajik-Abkhaz:
-\DeclareUTFcharacter[\UTFencname]{x04B6}{\CYRCHRDSC} % Ҷ
-\DeclareUTFcharacter[\UTFencname]{x04B7}{\cyrchrdsc} % ҷ
-% Kalmyk-Kyrguz-Tatar:
-\DeclareUTFcharacter[\UTFencname]{x04A2}{\CYRNDSC} % Ң
-\DeclareUTFcharacter[\UTFencname]{x04A3}{\cyrndsc} % ң
-% Kalmyk-Tatar:
-\DeclareUTFcharacter[\UTFencname]{x0496}{\CYRZHDSC} % Җ
-\DeclareUTFcharacter[\UTFencname]{x0497}{\cyrzhdsc} % җ
-% Ossetian:
-\DeclareUTFcharacter[\UTFencname]{x04D4}{\CYRAE} % Ӕ
-\DeclareUTFcharacter[\UTFencname]{x04D5}{\cyrae} % ӕ
-% Azerbaijani:
-\DeclareUTFcharacter[\UTFencname]{x04B8}{\CYRCHVCRS} % Ҹ
-\DeclareUTFcharacter[\UTFencname]{x04B9}{\cyrchvcrs} % ҹ
-\DeclareUTFcharacter[\UTFencname]{x049C}{\CYRKVCRS} % Ҝ
-\DeclareUTFcharacter[\UTFencname]{x049D}{\cyrkvcrs} % ҝ
-% Kazakh:
-\DeclareUTFcharacter[\UTFencname]{x04B0}{\CYRYHCRS} % Ұ
-\DeclareUTFcharacter[\UTFencname]{x04B1}{\cyryhcrs} % ұ
-% Abkhaz:
-\DeclareUTFcharacter[\UTFencname]{x0494}{\CYRGHK} % Ҕ
-\DeclareUTFcharacter[\UTFencname]{x0495}{\cyrghk} % ҕ
-\DeclareUTFcharacter[\UTFencname]{x04E0}{\CYRABHDZE} % Ӡ
-\DeclareUTFcharacter[\UTFencname]{x04E1}{\cyrabhdze} % ӡ
-\DeclareUTFcharacter[\UTFencname]{x049E}{\CYRKHCRS} % Ҟ
-\DeclareUTFcharacter[\UTFencname]{x049F}{\cyrkhcrs} % ҟ
-\DeclareUTFcharacter[\UTFencname]{x04A6}{\CYRPHK} % Ҧ
-\DeclareUTFcharacter[\UTFencname]{x04A7}{\cyrphk} % ҧ
-\DeclareUTFcharacter[\UTFencname]{x04AC}{\CYRTDSC} % Ҭ
-\DeclareUTFcharacter[\UTFencname]{x04AD}{\cyrtdsc} % ҭ
-\DeclareUTFcharacter[\UTFencname]{x04B4}{\CYRTETSE} % Ҵ
-\DeclareUTFcharacter[\UTFencname]{x04B5}{\cyrtetse} % ҵ
-\DeclareUTFcharacter[\UTFencname]{x04BC}{\CYRABHCH} % Ҽ
-\DeclareUTFcharacter[\UTFencname]{x04BD}{\cyrabhch} % ҽ
-\DeclareUTFcharacter[\UTFencname]{x04BE}{\CYRABHCHDSC} % Ҿ
-\DeclareUTFcharacter[\UTFencname]{x04BF}{\cyrabhchdsc} % ҿ
-\DeclareUTFcharacter[\UTFencname]{x04A8}{\CYRABHHA} % Ҩ
-\DeclareUTFcharacter[\UTFencname]{x04A9}{\cyrabhha} % ҩ
-% Chukchi:
-\DeclareUTFcharacter[\UTFencname]{x04C3}{\CYRKHK} % Ӄ
-\DeclareUTFcharacter[\UTFencname]{x04C4}{\cyrkhk} % ӄ
-\DeclareUTFcharacter[\UTFencname]{x04C7}{\CYRNHK} % Ӈ
-\DeclareUTFcharacter[\UTFencname]{x04C8}{\cyrnhk} % ӈ
-
-%% P.S. Tajik and Chuvash, while mentioned,
-%% have letters which are apparently missing and are NOT complete.
-
-%%% Part IV
-%%% Historical letters, needed to support old orthographies.
-\DeclareUTFcharacter[\UTFencname]{x0462}{\CYRYAT} % Ѣ
-\DeclareUTFcharacter[\UTFencname]{x0463}{\cyryat} % ѣ
-\DeclareUTFcharacter[\UTFencname]{x046A}{\CYRBYUS} % Ѫ
-\DeclareUTFcharacter[\UTFencname]{x046B}{\cyrbyus} % ѫ
-\DeclareUTFcharacter[\UTFencname]{x0474}{\CYRIZH} % Ѵ
-\DeclareUTFcharacter[\UTFencname]{x0475}{\cyrizh} % ѵ
-\DeclareUTFcharacter[\UTFencname]{x0472}{\CYRFITA} % Ѳ
-\DeclareUTFcharacter[\UTFencname]{x0473}{\cyrfita} % ѳ
-
-%%% Part V
-%%% UNRECOGNISED NON-SLAVIC CYRILLIC LETTERS
-%%% Belong to languages not mentioned herein.
-
-\DeclareUTFcharacter[\UTFencname]{x04C0}{\CYRpalochka} % Ӏ
-\DeclareUTFcharacter[\UTFencname]{x0498}{\CYRZDSC} % Ҙ
-\DeclareUTFcharacter[\UTFencname]{x0499}{\cyrzdsc} % ҙ
-\DeclareUTFcharacter[\UTFencname]{x04A0}{\CYRKBEAK} % Ҡ
-\DeclareUTFcharacter[\UTFencname]{x04A1}{\cyrkbeak} % ҡ
-\DeclareUTFcharacter[\UTFencname]{x04A4}{\CYRNG} % Ҥ
-\DeclareUTFcharacter[\UTFencname]{x04A5}{\cyrng} % ҥ
-\DeclareUTFcharacter[\UTFencname]{x04AA}{\CYRSDSC} % Ҫ
-\DeclareUTFcharacter[\UTFencname]{x04AB}{\cyrsdsc} % ҫ
-\DeclareUTFcharacter[\UTFencname]{x04CB}{\CYRCHLDSC} % Ӌ
-\DeclareUTFcharacter[\UTFencname]{x04CC}{\cyrchldsc} % ӌ
-
-%% These are probably improperly named either in TeX or Unicode,
-%% since their Unicode names and TeX names do not match.
-%% TeX definitely treats them as the same symbol though.
-\DeclareUTFcharacter[\UTFencname]{x04CD}{\CYRMDSC} % Ӎ
-\DeclareUTFcharacter[\UTFencname]{x04CE}{\cyrmdsc} % ӎ
-\DeclareUTFcharacter[\UTFencname]{x04C5}{\CYRLDSC} % Ӆ
-\DeclareUTFcharacter[\UTFencname]{x04C6}{\cyrldsc} % ӆ
-
-%% These two letters are part of proposed Unicode for Kurdish
-%% and their codepoints may or may not change upon inclusion.
-\DeclareUTFcharacter[\UTFencname]{x051A}{\CYRQ}
-\DeclareUTFcharacter[\UTFencname]{x051B}{\cyrq}
-\DeclareUTFcharacter[\UTFencname]{x051C}{\CYRW}
-\DeclareUTFcharacter[\UTFencname]{x051D}{\cyrw}
-
-%%% Part VII
-%%% PUNCTUATION AND UNCLEAR CASES
-%%% Exotic (punctuation, letters...)
-%%% (this list is probably incomplete)
-
-% A dash - Defined in cyrillic.mtx to be emdash
-% and should have been emdash all along.
-\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-
-% Exotic angle brackets.
-% Might still be unprintable for you.
-\DeclareUTFcharacter[\UTFencname]{x27E8}{\cyrlangle}
-\DeclareUTFcharacter[\UTFencname]{x27E9}{\cyrrangle}
-
-% This particular association is not certain but I guess
-% we'll hear about it when someone trips over it.
-\DeclareUTFcharacter[\UTFencname]{x0510}{\CYREPS}
-\DeclareUTFcharacter[\UTFencname]{x0511}{\cyreps}
-
-% Can't confirm those, but I'm positive the codepoints are correct:
-\DeclareUTFcharacter[\UTFencname]{x04F6}{\CYRGDSC}
-\DeclareUTFcharacter[\UTFencname]{x04F7}{\cyrgdsc}
-\DeclareUTFcharacter[\UTFencname]{x04FC}{\CYRHHK}
-\DeclareUTFcharacter[\UTFencname]{x04FD}{\cyrhhk}
-\DeclareUTFcharacter[\UTFencname]{x0512}{\CYRLHK}
-\DeclareUTFcharacter[\UTFencname]{x0513}{\cyrlhk}
-
-% I could not assign these in a way that would make sense,
-% since I couldn't find matches in cyrillic unicode table.
-
-%\DeclareUTFcharacter[\UTFencname]{x????}{\CYRNLHK}
-%\DeclareUTFcharacter[\UTFencname]{x????}{\cyrnlhk}
-%\DeclareUTFcharacter[\UTFencname]{x????}{\CYRRDSC}
-%\DeclareUTFcharacter[\UTFencname]{x????}{\cyrrdsc}
-
-% Oddities:
-% I don't see a letter like that in Unicode cyrillic table.
-% I've no idea what is it doing in a cyrillic encoding either.
-%\DeclareUTFcharacter[\UTFencname]{x????}{\CYRDELTA}
-%\DeclareUTFcharacter[\UTFencname]{x????}{\cyrdelta}
-
-% Quotes
-% Ligatures << and >> are working only with the last versions of "tex-text.map"
-% and "tex-text.tec" (http://scripts.sil.org/svn-view/xetex/TRUNK)
-\DeclareUTFcharacter[\UTFencname]{x00AB}{\flqq}
-\DeclareUTFcharacter[\UTFencname]{x00BB}{\frqq}
-\DeclareUTFcharacter[\UTFencname]{x201E}{\glqq}
-\DeclareUTFcharacter[\UTFencname]{x201C}{\grqq}
-
-% To make it (and "--- -like shortcuts) work, "xecyr" must be loaded _after_ babel.
-\def\cyrdash{\hbox to.8em{--\hss--}}
-
-\endinput
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xecyr.tlpobj new/tlpkg/tlpobj/xecyr.tlpobj
--- old/tlpkg/tlpobj/xecyr.tlpobj 2019-02-28 04:15:32.000000000 +0100
+++ new/tlpkg/tlpobj/xecyr.tlpobj 2020-03-15 02:48:17.000000000 +0100
@@ -1,15 +1,13 @@
name xecyr
category Package
-revision 20221
+revision 54308
shortdesc Using Cyrillic languages in XeTeX
+relocated 1
longdesc Helper tools for using Cyrillic languages with XeLaTeX and
longdesc babel.
-depend xecyr.ARCH
-runfiles size=5
- texmf-dist/tex/generic/xecyr/xu-ruenhyph.tex
- texmf-dist/tex/xelatex/xecyr/xecyr.sty
+runfiles size=4
+ RELOC/tex/xelatex/xecyr/xecyr.sty
catalogue-ctan /macros/xetex/latex/xecyr
-catalogue-date 2016-06-24 19:18:15 +0200
-catalogue-license lppl
+catalogue-license lppl1.3
catalogue-topics cyrillic xetex
-catalogue-version 1.1
+catalogue-version 1.2
++++++ xepersian.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xelatex/xepersian/README new/doc/xelatex/xepersian/README
--- old/doc/xelatex/xepersian/README 2019-03-03 23:12:40.000000000 +0100
+++ new/doc/xelatex/xepersian/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,30 +0,0 @@
-____________________
-The XePersian package
-v22.6
-
-The xepersian package provides a convenient interface for
-typesetting Persian and English texts in LaTeX, using XeTeX
-engine.
-
-If you want to report any bugs or typos and corrections in the
-documentation, or ask for any new features, or suggest any
-improvements, or ask any questions about the package, then
-please use the issue tracker:
-
- https://github.com/vafa-ac/xepersian/issues
-
-In doing so, please always explain your issue well enough, and always
-include a minimal working example showing the issue.
-
-Current version release date: 2019/03/03
-______________
-Vafa Khalighi
-
-Copyright (c) 2008--2019
-Distributed under the LaTeX Project Public License
-It may be distributed and/or modified under the LaTeX Project Public License,
-version 1.3c or higher (your choice). The latest version of
-this license is at: http://www.latex-project.org/lppl.txt
-
-This work is “author-maintained” (as per LPPL maintenance status)
-by Vafa Khalighi.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xelatex/xepersian/README.txt new/doc/xelatex/xepersian/README.txt
--- old/doc/xelatex/xepersian/README.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/xelatex/xepersian/README.txt 2020-02-01 23:12:02.000000000 +0100
@@ -0,0 +1,31 @@
+____________________
+The XePersian package
+v22.8
+
+The xepersian package provides a convenient interface for
+typesetting Persian and English texts in LaTeX, using XeTeX
+engine.
+
+If you want to report any bugs or typos and corrections in the
+documentation, or ask for any new features, or suggest any
+improvements, or ask any questions about the package, then
+please use the issue tracker:
+
+ https://github.com/bidi-tex/xepersian/issues
+
+In doing so, please always explain your issue well enough, and always
+include a minimal working example showing the issue.
+
+Current version release date: 2020-01-31
+______________
+
+Copyright (c) Vafa Khalighi 2007-2019
+ bidi-tex GitHub Organisation 2018-2020
+
+Distributed under the LaTeX Project Public License
+It may be distributed and/or modified under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is “author-maintained” (as per LPPL maintenance status)
+by bidi-tex GitHub Organisation.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xelatex/xepersian/ftxe-0.12.py new/doc/xelatex/xepersian/ftxe-0.12.py
--- old/doc/xelatex/xepersian/ftxe-0.12.py 2016-10-08 00:28:23.000000000 +0200
+++ new/doc/xelatex/xepersian/ftxe-0.12.py 2019-05-01 00:35:35.000000000 +0200
@@ -1,4 +1,4 @@
-# This program is free software: you can redistribute it and/or modify
+# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
Binary files old/doc/xelatex/xepersian/xepersian-doc.pdf and new/doc/xelatex/xepersian/xepersian-doc.pdf differ
Binary files old/doc/xelatex/xepersian/xepersian.pdf and new/doc/xelatex/xepersian/xepersian.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xepersian.doc.tlpobj new/tlpkg/tlpobj/xepersian.doc.tlpobj
--- old/tlpkg/tlpobj/xepersian.doc.tlpobj 2019-03-04 02:24:25.000000000 +0100
+++ new/tlpkg/tlpobj/xepersian.doc.tlpobj 2020-02-02 01:58:20.000000000 +0100
@@ -1,10 +1,10 @@
name xepersian.doc
category Package
-revision 50213
+revision 53625
shortdesc doc files of xepersian
relocated 1
-docfiles size=315
- RELOC/doc/xelatex/xepersian/README
+docfiles size=302
+ RELOC/doc/xelatex/xepersian/README.txt
RELOC/doc/xelatex/xepersian/dkun-0.3.py
RELOC/doc/xelatex/xepersian/dkun-0.4.py
RELOC/doc/xelatex/xepersian/ftxe-0.12.py
++++++ xepersian.tar.xz ++++++
++++ 2956 lines of diff (skipped)
++++++ xesearch.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xesearch/README new/doc/xetex/xesearch/README
--- old/doc/xetex/xesearch/README 2009-11-17 02:34:23.000000000 +0100
+++ new/doc/xetex/xesearch/README 2019-08-19 22:30:58.000000000 +0200
@@ -1,4 +1,4 @@
-This is the README file for xesearch.sty v.0.1.
+This is the README file for xesearch.sty v.0.2.
Read xesearch.pdf for the documentation.
t-xeseach.tex is a third party file to use
XeSearch in ConTeXt.
@@ -16,7 +16,7 @@
To typeset the documentation, run XeLaTeX
on xesearch.tex with the 'produce' option
-commented out on line 5.
+commented out on line 8.
To create xesearch.sty and t-xesearch.teX,
run (Xe)LaTeX again, but uncomment 'produce'
@@ -24,6 +24,10 @@
Licensing of this package is covered by LPPL.
-Any reaction is welcome: zappathustra@free.fr
+Originally written by Paul Isambert, the package is
+now maintained by Yuri Robbers.
+
+Any reaction is welcome: yuri.robbers@gmail.com
+
+Yuri Robbers
-Paul Isambert
\ No newline at end of file
Binary files old/doc/xetex/xesearch/xesearch.pdf and new/doc/xetex/xesearch/xesearch.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xesearch/xesearch.tex new/doc/xetex/xesearch/xesearch.tex
--- old/doc/xetex/xesearch/xesearch.tex 2009-11-17 02:34:23.000000000 +0100
+++ new/doc/xetex/xesearch/xesearch.tex 2019-08-19 22:30:58.000000000 +0200
@@ -5,11 +5,11 @@
\ifnum\month<10 \edef\month{0\the\month}\else \edef\month{\the\month}\fi
\ifnum\day<10 \edef\day{0\the\day}\else \edef\day{\the\day}\fi
\documentclass[article(11pt),%
-%produce,% Uncomment this line to produce xesearch.sty
+% produce,% Uncomment this line to produce xesearch.sty
index]{codedoc}
% CodeDoc declaration
-\ProduceFile{xesearch.sty}[xesearch][v.0.1][\the\year/\month/\day]
+\ProduceFile{xesearch.sty}[xesearch][v.0.2][\the\year/\month/\day]
@@ -408,7 +408,16 @@
\parindent0pt
\Change{\FileDate}
{%
-Corrected for ConTeXt (thanks to Wolfgang Schuster):\par
+Corrected for new versions of the XeTeX executable (thanks to Yuri Robbers):\par
+The XeTeX executable now has an increased number of character classes to 4096. This
+has been accomodated by also increasing xesearch's upper bound from 255 to 4095. Not
+changing xesearch would result in an error. For compatibility with other versions of
+the executable, this solution has been implemented using system primitives rather than
+hard coded numbers.
+}
+\Change{2009/11/04}
+{%
+v.0.1 Corrected for ConTeXt (thanks to Wolfgang Schuster):\par
Now there's a third party file, \texttt{t-xesearch.tex}, so that
xesearch can be properly loaded with \texttt{\bslash usemodule[xesearch]}.\par
The clash between ConTeXt's \texttt{\bslash unexpanded} macro and XeTeX's
@@ -2041,9 +2050,9 @@
out of which letters and delimiters will be taken.
�
/
-\chardef\xs@NatDel=255
-\chardef\xs@lrDel=254
-\chardef\xs@Classes=253
+\chardef\xs@NatDel=\e@alloc@intercharclass@top
+\chardef\xs@lrDel=\numexpr\e@alloc@intercharclass@top-1\relax
+\chardef\xs@Classes=\numexpr\e@alloc@intercharclass@top-2\relax
\chardef\xs@Classless=0
\XeTeXinterchartoks\xs@lrDel\xs@Classless={\xs@LearnLetter}
\XeTeXinterchartoks\xs@NatDel\xs@Classless={\xs@LearnLetter}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xesearch.doc.tlpobj new/tlpkg/tlpobj/xesearch.doc.tlpobj
--- old/tlpkg/tlpobj/xesearch.doc.tlpobj 2019-02-28 04:15:33.000000000 +0100
+++ new/tlpkg/tlpobj/xesearch.doc.tlpobj 2019-08-20 01:54:01.000000000 +0200
@@ -1,9 +1,9 @@
name xesearch.doc
category Package
-revision 16041
+revision 51908
shortdesc doc files of xesearch
relocated 1
-docfiles size=191
+docfiles size=170
RELOC/doc/xetex/xesearch/README
RELOC/doc/xetex/xesearch/xesearch.pdf
RELOC/doc/xetex/xesearch/xesearch.tex
++++++ xesearch.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xesearch/t-xesearch.tex new/tex/xetex/xesearch/t-xesearch.tex
--- old/tex/xetex/xesearch/t-xesearch.tex 2009-11-17 02:34:23.000000000 +0100
+++ new/tex/xetex/xesearch/t-xesearch.tex 2019-08-19 22:30:58.000000000 +0200
@@ -5,11 +5,11 @@
% without the `produce' option.
%
% SOURCE: xesearch.tex
-% DATE: 2009.11.04
+% DATE: 2019.04.24
% VERSION: v.0.1
%D \module
%D [ file=t-xesearch,
-%D version=2009.11.04,
+%D version=2019.04.24,
%D title=\CONTEXT\ User Module,
%D subtitle=XeSearch,
%D author=Paul Isambert,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xesearch/xesearch.sty new/tex/xetex/xesearch/xesearch.sty
--- old/tex/xetex/xesearch/xesearch.sty 2009-11-17 02:34:23.000000000 +0100
+++ new/tex/xetex/xesearch/xesearch.sty 2019-08-19 22:30:58.000000000 +0200
@@ -5,8 +5,8 @@
% without the `produce' option.
%
% SOURCE: xesearch.tex
-% DATE: 2009/11/04
-% VERSION: v.0.1
+% DATE: 2019/04/24
+% VERSION: v.0.2
\ifx\csname XeTeXrevision\endcsname\relax
\errmessage{You need XeTeX to run xesearch. It won't be loaded.}
\expandafter\endinput
@@ -39,7 +39,7 @@
\xs@ChangeCatcodes
\ifdefined\ProvidesPackage
\def\xs@err#1{\PackageError{xesearch}{#1}{}}
- \ProvidesPackage{xesearch}[2009/11/04 v.0.1 Searching documents.]
+ \ProvidesPackage{xesearch}[2019/04/24 v.0.2 Searching documents.]
\else
\def\MessageBreak{^^J}
\def\xs@err#1{%
@@ -84,9 +84,9 @@
\newif\ifxs@Match
\newtoks\xs@DefToks
\newtoks\xs@NoReplaceToks
-\chardef\xs@NatDel=255
-\chardef\xs@lrDel=254
-\chardef\xs@Classes=253
+\chardef\xs@NatDel=\e@alloc@intercharclass@top
+\chardef\xs@lrDel=\numexpr\e@alloc@intercharclass@top-1\relax
+\chardef\xs@Classes=\numexpr\e@alloc@intercharclass@top-2\relax
\chardef\xs@Classless=0
\XeTeXinterchartoks\xs@lrDel\xs@Classless={\xs@LearnLetter}
\XeTeXinterchartoks\xs@NatDel\xs@Classless={\xs@LearnLetter}
@@ -1038,7 +1038,7 @@
}
\def\xs@SearchOne#1{%
\ifx#1\xs@end
- \let\xs@next\relax
+ \let\xs@next\relax^^I
\else
\let\xs@next\xs@SearchOne
\expandafter\def\csname xs@#1@WhatNext\endcsname##1\xs@end,{}%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xesearch.tlpobj new/tlpkg/tlpobj/xesearch.tlpobj
--- old/tlpkg/tlpobj/xesearch.tlpobj 2019-02-28 04:15:33.000000000 +0100
+++ new/tlpkg/tlpobj/xesearch.tlpobj 2019-08-20 01:54:01.000000000 +0200
@@ -1,6 +1,6 @@
name xesearch
category Package
-revision 16041
+revision 51908
shortdesc A string finder for XeTeX
relocated 1
longdesc The package finds strings (e.g. (parts of) words or phrases)
@@ -16,6 +16,7 @@
RELOC/tex/xetex/xesearch/xesearch.sty
catalogue-also toolbox etoolbox etextools
catalogue-ctan /macros/xetex/generic/xesearch
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2019-08-17 18:03:17 +0200
catalogue-license lppl
catalogue-topics string xetex
+catalogue-version 0.2
++++++ xetex.doc.tar.xz ++++++
Binary files old/texmf-dist/doc/man/man1/xelatex.man1.pdf and new/texmf-dist/doc/man/man1/xelatex.man1.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/doc/man/man1/xetex.1 new/texmf-dist/doc/man/man1/xetex.1
--- old/texmf-dist/doc/man/man1/xetex.1 2019-02-28 20:09:21.000000000 +0100
+++ new/texmf-dist/doc/man/man1/xetex.1 2020-03-04 17:04:42.000000000 +0100
@@ -1,4 +1,4 @@
-.TH XETEX 1 "10 July 2018" "Web2C 2019"
+.TH XETEX 1 "10 July 2018" "Web2C 2020"
.\"=====================================================================
.if t .ds TX \fRT\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X\fP
.if n .ds TX TeX
Binary files old/texmf-dist/doc/man/man1/xetex.man1.pdf and new/texmf-dist/doc/man/man1/xetex.man1.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xetex.doc.tlpobj new/tlpkg/tlpobj/xetex.doc.tlpobj
--- old/tlpkg/tlpobj/xetex.doc.tlpobj 2019-03-27 02:29:20.000000000 +0100
+++ new/tlpkg/tlpobj/xetex.doc.tlpobj 2020-03-14 01:44:25.000000000 +0100
@@ -1,6 +1,6 @@
name xetex.doc
category TLCore
-revision 50602
+revision 54276
shortdesc doc files of xetex
docfiles size=170
texmf-dist/doc/man/man1/xelatex.1
++++++ xetex.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xetex.tlpobj new/tlpkg/tlpobj/xetex.tlpobj
--- old/tlpkg/tlpobj/xetex.tlpobj 2019-03-27 02:29:20.000000000 +0100
+++ new/tlpkg/tlpobj/xetex.tlpobj 2020-03-14 01:44:25.000000000 +0100
@@ -1,6 +1,6 @@
name xetex
category TLCore
-revision 50602
+revision 54276
shortdesc An extended variant of TeX for use with Unicode sources
longdesc XeTeX is a TeX typesetting engine using Unicode and supporting
longdesc modern font technologies such as OpenType, TrueType or Apple
@@ -25,10 +25,12 @@
depend etex
depend plain
depend babel
+depend l3kernel
depend latex-fonts
+depend lm
depend xetex.ARCH
execute AddFormat name=xetex engine=xetex patterns=language.def options="-etex xetex.ini" fmttriggers=cm,hyphen-base,tex-ini-files,unicode-data,etex,plain
-execute AddFormat name=xelatex engine=xetex patterns=language.dat options="-etex xelatex.ini" fmttriggers=cm,hyphen-base,tex-ini-files,unicode-data,babel,latex,latex-fonts
+execute AddFormat name=xelatex engine=xetex patterns=language.dat options="-etex xelatex.ini" fmttriggers=cm,hyphen-base,tex-ini-files,unicode-data,babel,l3kernel,latex,latex-fonts,lm
postaction script file=tlpkg/tlpostcode/xetex.pl
runfiles size=6
texmf-dist/fonts/misc/xetex/fontmapping/base/qx-unicode.map
@@ -41,6 +43,5 @@
catalogue-contact-home http://tug.org/xetex
catalogue-contact-repository https://tug.org/svn/texlive/trunk/Build/source/texk/web2c/xetexdir
catalogue-contact-support http://lists.tug.org/xetex
-catalogue-date 2018-12-26 09:45:23 +0100
catalogue-license other-free
catalogue-topics engine
++++++ xetex_conf.dif ++++++
---
tlpkg/tlpostcode/xetex.pl | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- tlpkg/tlpostcode/xetex.pl
+++ tlpkg/tlpostcode/xetex.pl 2020-03-30 07:29:08.995431714 +0000
@@ -98,7 +98,7 @@ sub do_install {
<fontconfig>
';
for my $t (qw/opentype truetype type1/) {
- print FONTSCONF " <dir>$texdir/texmf-dist/fonts/$t</dir>\n";
+ print FONTSCONF " <dir>$texdir/fonts/$t</dir>\n";
}
print FONTSCONF "</fontconfig>\n";
close(FONTSCONF)
++++++ xetexko.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xetexko/ChangeLog new/doc/xetex/xetexko/ChangeLog
--- old/doc/xetex/xetexko/ChangeLog 2018-08-08 23:06:27.000000000 +0200
+++ new/doc/xetex/xetexko/ChangeLog 2020-02-17 23:18:35.000000000 +0100
@@ -1,3 +1,17 @@
+2020-02-17 Dohyun Kim <nomos at ktug org>
+
+ Version 2.23
+
+ * xetexko-font.sty: unbatang/undotum as default hangul fonts;
+ suppress bx font warnings and make \bfseries work again;
+ use latex's newly introduced \@{rm,sf,tt,default}familyhook
+
+2019-12-01 Dohyun Kim <nomos at ktug org>
+
+ Version 2.22
+
+ * xetexko-font.sty: expl3 deprecation removals
+
2018-08-08 Dohyun Kim <nomos at ktug org>
Version 2.21
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xetexko/README new/doc/xetex/xetexko/README
--- old/doc/xetex/xetexko/README 2018-08-08 23:06:27.000000000 +0200
+++ new/doc/xetex/xetexko/README 2020-02-17 23:18:35.000000000 +0100
@@ -1,4 +1,4 @@
-XeTeX-ko Package version 2.21 (2018/08/08)
+XeTeX-ko Package version 2.23 (2020/02/17)
=========================================
XeTeX-ko is a macro package for Xe(La)TeX which supports typesetting
@@ -75,7 +75,7 @@
Load Hanja captions. Also adjusts spacing as [hangul] option does.
Note that [unfonts] option is removed starting with v2.10, and so
-Nanum TrueType will be used when no Hangul/Hanja font is declared.
+Un TrueType will be used when no Hangul/Hanja font is declared.
Hangul Font Commands
Binary files old/doc/xetex/xetexko/xetexko-doc.pdf and new/doc/xetex/xetexko/xetexko-doc.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xetexko/xetexko-doc.tex new/doc/xetex/xetexko/xetexko-doc.tex
--- old/doc/xetex/xetexko/xetexko-doc.tex 2018-08-08 23:06:27.000000000 +0200
+++ new/doc/xetex/xetexko/xetexko-doc.tex 2020-02-17 23:18:35.000000000 +0100
@@ -7,15 +7,20 @@
\documentclass[a4paper]{article}
\usepackage[hmargin=3.8cm]{geometry}
\usepackage[hangul]{xetexko}
+\defaultfontfeatures+{Script=Hangul, Language=Korean}
\setmainhangulfont{Noto Serif CJK KR}[
- Script=Hangul, Language=Korean,
- UprightFont=* Light,
- BoldFont=* Bold,
+ UprightFont=* Light, BoldFont=* Bold,
]
\setsanshangulfont{Noto Sans CJK KR}[
- Script=Hangul, Language=Korean,
UprightFont=* DemiLight,
]
+\setmathhangulfont{Noto Sans CJK KR}[
+ SizeFeatures={
+ {Size=-6, Font=* Medium},
+ {Size=6-9, Font=*},
+ {Size=9-, Font=* DemiLight},
+ },
+]
\usepackage{xetexko-hanging, hologo, xcolor, ulem}
\usepackage[bookmarksnumbered,hidelinks]{hyperref}
@@ -54,12 +59,13 @@
\def\hemph#1{\textsf{\bfseries #1}}
\def\hparen#1{{\small\hangulparens(#1)}}
\def\hparens#1{\leavevmode\unskip---{\small #1}---\ignorespaces}
+\def\keyword#1{\leavevmode\marginpar{\hfuzz\maxdimen\footnotesize\cs{#1}}}
\begin{document}
\title{\xetexko\ 간단 매뉴얼}
\author{Dohyun Kim \normalsize <\texttt{nomos at ktug org}> \and
\normalsize <\url{http://github.com/dohyunkim/xetexko}>}
-\date{Version 2.21\quad 2018/08/08}
+\date{Version 2.23\quad 2020/02/17}
\maketitle
\begin{quote}\small
@@ -95,16 +101,16 @@
\item \hyperref[sec:fontopts]
{\cs{defaulthangulfontfeatures}와 \cs{defaulthanjafontfeatures}
명령이 생겼다.}
- \item[v2.9]---
- \item \hyperref[sec:fontcmds]
- {영문폰트에 한글·한자 자형이 없고 한글·한자 폰트도 따로 지시하지 않았다면
- 나눔 트루타입을 한글·한자 글꼴의 기본값으로 사용한다.}
\item[v2.10]---
\item 패키지 옵션 \texttt{[unfonts]}를 더는 지원하지 않는다. 이 옵션을
- 사용한 기존 문서는 기본 글꼴인 나눔 트루타입으로 식자될 것이다.
+ 사용한 기존 문서는 기본 글꼴인 은글꼴 트루타입으로 식자될 것이다.
\item[v2.13]---
\item \hyperref[sec:verttype]
{\texttt{horizontal} 환경이 추가되었다.}
+ \item[v2.23]---
+ \item \hyperref[sec:fontcmds]
+ {디폴트 한글 폰트가 나눔글꼴에서 은글꼴로 변경되었다.}
+
\end{itemize}
\end{quote}
@@ -137,7 +143,7 @@
\section{\xetexko\ 부르기}\label{sec:loading}
\xetexko\ 로드하기: \cs{usepackage\{xetexko\}} 혹은 \cs{usepackage\{kotex\}}.
-이 명령으로 fontspec 및 xunicode 패키지도 함께 불러들인다.
+이 명령으로 fontspec 패키지도 함께 불러들인다.
fontspec에 옵션을 주려면 \xetexko를 부르기 전에 fontspec을 따로 로드하면 된다.
\begin{plaintex}
@@ -146,10 +152,10 @@
패키지 옵션:
\begin{description}\hangulquotes
-\item[ hangul ] `제1장' `표' `차례' 등 한글 표제를 이용한다.
+\item[ hangul ] `제~1~장' `표' `차례' 등 한글 표제를 이용한다.
절 제목 이하에는 한글 표제가 붙지 않고 숫자로만 표현된다.
한글이 주된 언어라고 인식하여 줄간격 조정도 수행한다.
-\item[ hanja ] `第1章' `表' `目次' 등 한자 표제를 이용한다.
+\item[ hanja ] `第~1~章' `表' `目次' 등 한자 표제를 이용한다.
절 제목 이하에는 한자 표제가 붙지 않고 숫자로만 표현된다.
한글이 주된 언어라고 인식하여 줄간격 조정도 수행한다.
\end{description}
@@ -173,9 +179,8 @@
한글폰트를 따로 지정하지 않으면 영문폰트가 한글에도 사용된다.
한자폰트를 따로 지정하지 않으면 한글폰트가 한자에도 적용된다.
\LaTeX 에서는 영문폰트에 한글·한자 글리프가 없고 한글·한자 폰트도 따로
-지시하지 않았다면 \hemph{나눔 트루타입을 한글·한자 글꼴의 기본값}으로
-사용한다.\footnote{나눔 글꼴을 찾을 수 없다면 바탕/돋움 글꼴을 이용하고
- 그마저도 없다면 한글·한자가 식자되지 않을 뿐, 에러를 발생시키지는 않는다.}
+지시하지 않았다면 \hemph{은바탕/은돋움 트루타입}을 한글·한자 글꼴의 기본값으로
+사용한다.
\begin{plaintex}
플레인텍이라면 다음처럼 한다.
@@ -186,6 +191,7 @@
\end{verbatim}
\end{plaintex}
+\keyword{fallbackhanjafont}%
\cs{fallbackhanjafont}를 정의해두면 \hemph{한자 글꼴에도 없는 한자}를
이 글꼴에서 찾아 식자한다. \verb|\newfontfamily| 명령 등으로 정의한다.
@@ -214,6 +220,7 @@
참고로, 한자와 한글을 같은 글꼴로 식자하고 싶을 때 글꼴 설정을
번거롭게 두 번 할 필요 없이 한글 글꼴만 설정한 뒤 간단히
+\keyword{hanjabyhangulfont}%
\cs{hanjabyhangulfont}를 선언하면 된다.%
\footnote{앞 절의 main/sans 글꼴 명령들과 달리 한글 폰트가 자동으로
한자에도 적용되지 않는다는 말이다. 어쨌든 이미 한자 폰트가 지정돼 있는
@@ -410,7 +417,10 @@
폰트가 이런 기능을 제공해야만 가능한 일이다.\footnote{%
이런 기능을 제공하는 폰트로는 윈도즈~8에 번들된 맑은고딕이
있으며 공개폰트로는 은바탕, 함초롬~LVT, Source Han Sans (본고딕),
-Noto Sans CJK, 나눔명조옛한글, 나눔바른고딕옛한글 등이 있다.}
+Source Han Serif (본명조), Noto Sans CJK, Noto Serif CJK,
+나눔명조옛한글, 나눔바른고딕옛한글, KoPubWorld 바탕, KoPubWorld 돋움 등이 있다.
+또한 \textsf{\char"1112\char"119E\char"11AB글}에 번들된 함초롬 글꼴에도
+최근 옛한글 지원이 추가되었다.}
\begin{figure}
\begin{example}
@@ -442,24 +452,25 @@
\section{세로쓰기}\label{sec:verttype}
세로쓰기를 위한 글꼴 지정은 다음과 같다.
-역시 고급 오픈타입 기능을 이용하는 것이므로
-폰트가 이를 지원해야 한다.%
-\footnote{만일 폰트의 세로쓰기 글자폭이 가로쓰기와 다르다면
+역시 고급 오픈타입 기능을 이용하는 것이므로 폰트가 이를 지원해야 한다.%
+\footnote{폰트의 세로쓰기 글자폭이 가로쓰기와 다르다면
\cs{verticalem=1.05em} 같은 선언을 미리 해두는 게 좋다.}
\begin{verbatim}
- \setmainhangulfont{Adobe Myungjo Std}[ Vertical=RotatedGlyphs ]
+ \setmainhangulfont{Noto Sans CJK KR}[
+ Vertical=Alternates, RawFeature=vertical ]
\end{verbatim}
+\keyword{verticaltypesetting}%
문서 전체를 세로쓰기할 때 \cs{verticaltypesetting}을 선언하면
-면주는 그대로 두고 본문만 세로쓰기한다.\footnote{당연히 면주의 글꼴에는
+면주는 그대로 두고 본문만 세로쓰기한다.\footnote{면주의 글꼴에는
\texttt{Vertical} 옵션이 없어야 할 것이다.
면주 글꼴을 따로 지정하는 것은 사용자의 몫이다. }
-문서의 일부를 세로쓰기 하려면 vertical 환경을 이용한다.
+문서의 일부를 세로쓰기 하려면 \verb|vertical| 환경을 이용한다.
vertical 환경의 인자는 세로쓰기 박스의 세로 길이이다.
보통 그 뒤에 세로쓰기에 사용할 글꼴 명령이 온다.
\begin{figure}
\begin{example}
\hfil\begin{vertical}{16em}
- \sffamily\addhangulfontfeatures{Vertical=RotatedGlyphs,CharRaise=.5ex,
+ \sffamily\addhangulfontfeatures{Vertical=Alternates,CharRaise=.5ex,
RawFeature=vertical}
\hanjabyhangulfont \parindent-1em\leftskip1em
\noindent 님의 침묵 (The Silent Beloved)
@@ -480,7 +491,8 @@
\begin{verbatim}
\begin{vertical}{12em}
- \hangulfontspec{Adobe Myungjo Std}[ Vertical=RotatedGlyphs ]
+ \hangulfontspec{Noto Sans CJK KR}[
+ Vertical=Alternates, RawFeature=vertical ]
세로쓰기로 식자할 부분
\end{vertical}
\end{verbatim}
@@ -493,24 +505,25 @@
\begin{plaintex}
플레인텍이라면,
\begin{verbatim}
- \vertical{16em}\hangulfont="Adobe Myungjo Std:vertical"
+ \vertical{16em}\hangulfont="Noto Sans CJK KR:vertical;+vert"
세로쓰기로 식자할 부분
\endvertical
\end{verbatim}
\end{plaintex}
-세로쓰기 도중에 문서의 일부를 가로쓰기하려면 horizontal 환경을 이용하라.
+세로쓰기 도중에 문서의 일부를 가로쓰기로 삽입하려면
+\verb|horizontal| 환경을 이용한다.
horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한다.
가로쓰기 영역의 폰트 설정은 사용자의 몫이다.
\section{고문헌·일본어·중국어}
띄어쓰기가 없는 옛문헌이나 일본어 단락 따위를 삽입할 때
-japanese 혹은 chinese 환경을 선언하는 것이 좋다.
+\verb|japanese| 혹은 \verb|chinese| 환경을 선언하는 것이 좋다.
들여쓰기\footnote {들여쓰기 기본값은 japanese는 1em 이고 chinese는 2em 이다.}
및 자간 조절이 자동으로 이루어지며
사용자가 입력한 불필요한 공백도 없애준다.
-Schinese 환경은 chinese의 다른 이름이다.
-Tchinese도 제공하는데 중국어 번체 글꼴을 사용한다면 이 환경을 이용하라.
+\verb|Schinese| 환경은 chinese의 다른 이름이다.
+\verb|Tchinese|도 제공하는데 중국어 번체 글꼴을 사용한다면 이 환경을 이용하라.
일반적으로 우리 고문헌 조판에는 japanese 환경이 더 적합하다.
\begin{figure}
@@ -526,9 +539,9 @@
\caption{고문헌 조판 보기. japanese 환경을 이용했다.}\label{fig:ancientdoc}
\end{figure}
+\keyword{inhibitglue}%
\cs{inhibitglue} 명령은 일본어 등 환경에서 가끔 유용한데,
-해당 지점에 자동 삽입되는 공백을 영(zero)으로
-만들어준다.
+해당 지점에 자동 삽입되는 공백을 영(zero)으로 만들어준다.
\section{매달린 구두점}
마침표, 쉼표, 인용부호를 판면 바깥에 식자하여 행 끝에 매달리게 만든다.
@@ -565,7 +578,11 @@
수식 한글은 따로 설정하지 않으면 문서의 기본 글꼴을 따라가지만
굳이 설정하려면 다음과 같이 한다. 이 명령은 플레인텍에서도 쓸 수 있다.
\begin{verbatim}
- \setmathhangulfont{NanumGothic}
+ \setmathhangulfont{Noto Sans CJK KR}[
+ SizeFeatures={ {Size=-6, Font=* Medium},
+ {Size=6-9, Font=*},
+ {Size=9-, Font=* DemiLight} }
+ ]
\end{verbatim}
현재 한글만 쓸 수 있게 설정되어 있다.
한자도 수식에 직접 입력하려면 사용자는
@@ -588,6 +605,7 @@
\end{verbatim}
\section{드러냄표}
+\keyword{dotemph}%
\dotemph{드러냄표} 강조도 \kotex 과 대동소이하다.
기본은 글자 위에 점을 찍는 형태이나 다음 명령을 이용해 개인적으로 선호하는
기호를 드러냄표로 쓸 수 있다.
@@ -620,7 +638,8 @@
플레인텍에서는 패키지 로드 후 사용자가 \cs{xetexkoulemsupport}
명령을 내려주어야 한다.
\end{plaintex}
-%\hfill \fboxsep=-\fboxrule \fbox{\vbox to1em{\hbox to1em{\hss}\vss}}
+
+\hfill \fboxsep=-\fboxrule \fbox{\vbox to1em{\hbox to1em{\hss}\vss}}
\end{document}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xetexko.doc.tlpobj new/tlpkg/tlpobj/xetexko.doc.tlpobj
--- old/tlpkg/tlpobj/xetexko.doc.tlpobj 2019-02-28 04:18:28.000000000 +0100
+++ new/tlpkg/tlpobj/xetexko.doc.tlpobj 2020-02-18 01:54:48.000000000 +0100
@@ -1,9 +1,9 @@
name xetexko.doc
category Package
-revision 48378
+revision 53826
shortdesc doc files of xetexko
relocated 1
-docfiles size=65
+docfiles size=67
RELOC/doc/xetex/xetexko/ChangeLog
RELOC/doc/xetex/xetexko/README
RELOC/doc/xetex/xetexko/xetexko-doc.pdf
++++++ xetexko.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xetexko/xetexko-font.sty new/tex/xetex/xetexko/xetexko-font.sty
--- old/tex/xetex/xetexko/xetexko-font.sty 2018-08-08 23:06:27.000000000 +0200
+++ new/tex/xetex/xetexko/xetexko-font.sty 2020-02-17 23:18:35.000000000 +0100
@@ -1,6 +1,6 @@
% xetexko-font.sty
%
-% Copyright (c) 2013-2018 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -10,11 +10,10 @@
% and version 1.3c or later is part of all distributions of LaTeX
% version 2006/05/20 or later.
-\ProvidesPackage{xetexko-font}[2018/08/08 v2.21 LaTeX Font commands for XeTeX-ko]
+\NeedsTeXFormat{LaTeX2e}[2020/02/02]
+\ProvidesPackage{xetexko-font}[2020/02/17 v2.23 LaTeX Font commands for XeTeX-ko]
-\let\xetexko@f@size\f@size
-\RequirePackage{fontspec}[2018/07/30]
-\let\f@size\xetexko@f@size
+\RequirePackage{fontspec}[2020/02/03]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% for old hangul rendering
@@ -25,30 +24,35 @@
% hangul font options
\tl_new:N \l_xtxko_font_opts_tl
\tl_new:N \l_xtxko_font_opts_init_tl
+\tl_new:N \l_xtxko_hangul_font_opts_init_tl
+\tl_new:N \l_xtxko_hanja_font_opts_init_tl
+\tl_new:N \l_xtxko_rem_tl
+\int_const:Nn \c__xtxko_one_int { 1 }
+\int_const:Nn \c__xtxko_two_int { 2 }
\tl_set:Nn \l_xtxko_font_opts_init_tl
{
- \tl_clear:N \xetexkointerhchar
- \tl_clear:N \xetexkolowerexclamation
- \tl_clear:N \xetexkolowerperiod
- \tl_clear:N \xetexkolowercomma
- \tl_clear:N \xetexkolowerquestion
- \tl_clear:N \xetexkopostexclamationkern
- \tl_clear:N \xetexkopostperiodkern
- \tl_clear:N \xetexkopostcommakern
- \tl_clear:N \xetexkopostquestionkern
- \tl_clear:N \xetexkopreexclamationkern
- \tl_clear:N \xetexkopreperiodkern
- \tl_clear:N \xetexkoprecommakern
- \tl_clear:N \xetexkoprequestionkern
- \tl_clear:N \xetexkoquoteraise
- \tl_clear:N \xetexkoquotewidth
- \tl_clear:N \xetexkocharraise
- \tl_set:Nn \xetexkohu {0.05em}
- \tl_set:Nn \xetexkopostmathskip {\dim_eval:n {\xetexkohu*2}}
+ \cs_set_eq:NN \xetexkointerhchar \c_empty_tl
+ \cs_set_eq:NN \xetexkolowerexclamation \c_empty_tl
+ \cs_set_eq:NN \xetexkolowerperiod \c_empty_tl
+ \cs_set_eq:NN \xetexkolowercomma \c_empty_tl
+ \cs_set_eq:NN \xetexkolowerquestion \c_empty_tl
+ \cs_set_eq:NN \xetexkopostexclamationkern \c_empty_tl
+ \cs_set_eq:NN \xetexkopostperiodkern \c_empty_tl
+ \cs_set_eq:NN \xetexkopostcommakern \c_empty_tl
+ \cs_set_eq:NN \xetexkopostquestionkern \c_empty_tl
+ \cs_set_eq:NN \xetexkopreexclamationkern \c_empty_tl
+ \cs_set_eq:NN \xetexkopreperiodkern \c_empty_tl
+ \cs_set_eq:NN \xetexkoprecommakern \c_empty_tl
+ \cs_set_eq:NN \xetexkoprequestionkern \c_empty_tl
+ \cs_set_eq:NN \xetexkoquoteraise \c_empty_tl
+ \cs_set_eq:NN \xetexkoquotewidth \c_empty_tl
+ \cs_set_eq:NN \xetexkocharraise \c_empty_tl
+ \cs_set_nopar:Npn \xetexkohu {0.05em}
+ \cs_set_nopar:Npn \xetexkopostmathskip {\dim_eval:n {\xetexkohu*2}}
}
\cs_new:Nn \__xtxko_add_font_opt:Nn
{
- \tl_put_right:Nn \l_xtxko_font_opts_tl { \tl_set:Nn #1 {#2} }
+ \tl_put_right:Nn \l_xtxko_font_opts_tl { \cs_set_nopar:Npn #1 {#2} }
}
\keys_define:nn { xtxko-font }
{
@@ -93,7 +97,6 @@
PunctRaise .meta:n = { lowerperiod = { \dim_eval:n {-#1} } } ,
CharRaise .meta:n = { charraise = {#1} } ,
}
-\tl_new:N \l_xtxko_rem_tl
\tl_set_eq:NN \l_xtxko_hangul_font_opts_init_tl \l_xtxko_font_opts_init_tl
\cs_new:Nn \__xtxko_hangul_assign_font_opts:n
{
@@ -108,73 +111,113 @@
}
\cs_new:Nn \__xtxko_def_XKhan__fonts:nnn
{
- \tl_if_eq:NNF #1 \relax
+ \cs_if_eq:NNF #1 \relax
{
- \tl_if_eq:ccT \familydefault #2
+ \str_if_eq:eeT \familydefault #2
{
- \tl_if_eq:NNTF \XKhangulfont #1
+ \cs_if_eq:NNTF \XKhangulfont #1
{
- \tl_set:Nn #1
+ \cs_set_nopar:Npn #1
{
\XK@storeltnfont
- \chardef\XKcurrentfont \c_one #3
+ \chardef\XKcurrentfont \c__xtxko_one_int #3
\XK@storecjkfont
}
}
{
- \tl_set:Nn #1
+ \cs_set_nopar:Npn #1
{
\XK@storeltnfont
- \chardef\XKcurrentfont \c_two #3
+ \chardef\XKcurrentfont \c__xtxko_two_int #3
\XK@storecjkfont
}
}
+ \cs_if_eq:NNTF \rmdefault #2
+ {
+ \cs_set_eq:NN \XK@default@korean@font \XK@rm@korean@font
+ }
+ {
+ \cs_if_eq:NNTF \sfdefault #2
+ {
+ \cs_set_eq:NN \XK@default@korean@font \XK@sf@korean@font
+ }
+ {
+ \cs_set_eq:NN \XK@default@korean@font \XK@tt@korean@font
+ }
+ }
}
}
}
+% suppress bx font warnings
+\cs_new_nopar:Npn \l_xetexko_pacify_bfseries {
+ \tl_map_inline:nn { \mddefault \bfdefault }
+ {
+ \cs_if_exist:cF { \g_fontspec_encoding_tl/\l_fontspec_family_tl/##1/\updefault }
+ {
+ \cs_set_eq:cc
+ { \g_fontspec_encoding_tl/\l_fontspec_family_tl/##1/\updefault }
+ { \g_fontspec_encoding_tl/\l_fontspec_family_tl/##1/\shapedefault }
+ }
+ }
+ \tl_map_inline:nn { \shapedefault \updefault \itdefault \sldefault }
+ {
+ \cs_if_exist:cF { \g_fontspec_encoding_tl/\l_fontspec_family_tl/bx/##1 }
+ {
+ \cs_set_eq:cc
+ { \g_fontspec_encoding_tl/\l_fontspec_family_tl/bx/##1 }
+ { \g_fontspec_encoding_tl/\l_fontspec_family_tl/\bfdefault/##1 }
+ }
+ }
+}
%%%%%%%%%%%%%%%%%%%%
% user font commands
\DeclareDocumentCommand \setmainhangulfont { O{} m O{} }
{
- \__xtxko_hangul_assign_font_opts:n {#1,#3}
- \setfontfamily \kormainfont [\l_xtxko_rem_tl] {#2}
+ \__xtxko_hangul_assign_font_opts:n {Ligatures=TeX,#1,#3}
+ \setfontfamily \kormainfont {#2} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
\tl_put_right:NV \kormainfont \l_xtxko_font_opts_tl
\__xtxko_def_XKhan__fonts:nnn \XKhangulfont \rmdefault \kormainfont
\ignorespaces
}
\DeclareDocumentCommand \setsanshangulfont { O{} m O{} }
{
- \__xtxko_hangul_assign_font_opts:n {#1,#3}
- \setfontfamily \korsansfont [\l_xtxko_rem_tl] {#2}
+ \__xtxko_hangul_assign_font_opts:n {Ligatures=TeX,#1,#3}
+ \setfontfamily \korsansfont {#2} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
\tl_put_right:NV \korsansfont \l_xtxko_font_opts_tl
\__xtxko_def_XKhan__fonts:nnn \XKhangulfont \sfdefault \korsansfont
\ignorespaces
}
\DeclareDocumentCommand \setmonohangulfont { O{} m O{} }
{
- \setfontfamily \kormonofont [#1,#3] {#2}
+ \setfontfamily \kormonofont {#2} [#1,#3]
+ \l_xetexko_pacify_bfseries
\__xtxko_def_XKhan__fonts:nnn \XKhangulfont \ttdefault \kormonofont
\ignorespaces
}
\DeclareDocumentCommand \setmainhanjafont { O{} m O{} }
{
- \__xtxko_hanja_assign_font_opts:n {#1,#3}
- \setfontfamily \hnjmainfont [\l_xtxko_rem_tl] {#2}
+ \__xtxko_hanja_assign_font_opts:n {Ligatures=TeX,#1,#3}
+ \setfontfamily \hnjmainfont {#2} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
\tl_put_right:NV \hnjmainfont \l_xtxko_font_opts_tl
\__xtxko_def_XKhan__fonts:nnn \XKhanjafont \rmdefault \hnjmainfont
\ignorespaces
}
\DeclareDocumentCommand \setsanshanjafont { O{} m O{} }
{
- \__xtxko_hanja_assign_font_opts:n {#1,#3}
- \setfontfamily \hnjsansfont [\l_xtxko_rem_tl] {#2}
+ \__xtxko_hanja_assign_font_opts:n {Ligatures=TeX,#1,#3}
+ \setfontfamily \hnjsansfont {#2} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
\tl_put_right:NV \hnjsansfont \l_xtxko_font_opts_tl
\__xtxko_def_XKhan__fonts:nnn \XKhanjafont \sfdefault \hnjsansfont
\ignorespaces
}
\DeclareDocumentCommand \setmonohanjafont { O{} m O{} }
{
- \setfontfamily \hnjmonofont [#1,#3] {#2}
+ \setfontfamily \hnjmonofont {#2} [#1,#3]
+ \l_xetexko_pacify_bfseries
\__xtxko_def_XKhan__fonts:nnn \XKhanjafont \ttdefault \hnjmonofont
\ignorespaces
}
@@ -182,12 +225,13 @@
\DeclareDocumentCommand \adhochangulfont { O{} m O{} }
{
\__xtxko_hangul_assign_font_opts:n {#1,#3}
- \setfontfamily \XK@adhoc@hangul@font [\l_xtxko_rem_tl] {#2}
+ \setfontfamily \XK@adhoc@hangul@font {#2} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
\tl_put_right:NV \XK@adhoc@hangul@font \l_xtxko_font_opts_tl
- \tl_set:Nn \XKhangulfont
+ \cs_set_nopar:Npn \XKhangulfont
{
\XK@storeltnfont
- \tl_set_eq:NN \XKcurrentfont \c_one
+ \cs_set_eq:NN \XKcurrentfont \c__xtxko_one_int
\XK@adhoc@hangul@font
\XK@storecjkfont
}
@@ -197,12 +241,13 @@
\DeclareDocumentCommand \adhochanjafont { O{} m O{} }
{
\__xtxko_hanja_assign_font_opts:n {#1,#3}
- \setfontfamily \XK@adhoc@hanja@font [\l_xtxko_rem_tl] {#2}
+ \setfontfamily \XK@adhoc@hanja@font {#2} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
\tl_put_right:NV \XK@adhoc@hanja@font \l_xtxko_font_opts_tl
- \tl_set:Nn \XKhanjafont
+ \cs_set_nopar:Npn \XKhanjafont
{
\XK@storeltnfont
- \tl_set_eq:NN \XKcurrentfont \c_two
+ \cs_set_eq:NN \XKcurrentfont \c__xtxko_two_int
\XK@adhoc@hanja@font
\XK@storecjkfont
}
@@ -213,16 +258,15 @@
\DeclareDocumentCommand \newhangulfontfamily { m O{} m O{} }
{
\__xtxko_hangul_assign_font_opts:n {#2,#4}
- \exp_args:Nc \setfontfamily { XK@newfont@family \token_to_str:N #1 }
- [\l_xtxko_rem_tl] {#3}
- \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 }
- \l_xtxko_font_opts_tl
+ \exp_args:Nc \setfontfamily { XK@newfont@family \token_to_str:N #1 } {#3} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
+ \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 } \l_xtxko_font_opts_tl
\DeclareRobustCommand #1
{
- \tl_set:Nn \XKhangulfont
+ \cs_set_nopar:Npn \XKhangulfont
{
\XK@storeltnfont
- \tl_set_eq:NN \XKcurrentfont \c_one
+ \cs_set_eq:NN \XKcurrentfont \c__xtxko_one_int
\use:c { XK@newfont@family \token_to_str:N #1 }
\XK@storecjkfont
}
@@ -231,16 +275,15 @@
\DeclareDocumentCommand \newhanjafontfamily { m O{} m O{} }
{
\__xtxko_hanja_assign_font_opts:n {#2,#4}
- \exp_args:Nc \setfontfamily { XK@newfont@family \token_to_str:N #1 }
- [\l_xtxko_rem_tl] {#3}
- \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 }
- \l_xtxko_font_opts_tl
+ \exp_args:Nc \setfontfamily { XK@newfont@family \token_to_str:N #1 } {#3} [\l_xtxko_rem_tl]
+ \l_xetexko_pacify_bfseries
+ \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 } \l_xtxko_font_opts_tl
\DeclareRobustCommand #1
{
- \tl_set:Nn \XKhanjafont
+ \cs_set_nopar:Npn \XKhanjafont
{
\XK@storeltnfont
- \tl_set_eq:NN \XKcurrentfont \c_two
+ \cs_set_eq:NN \XKcurrentfont \c__xtxko_two_int
\use:c { XK@newfont@family \token_to_str:N #1 }
\XK@storecjkfont
}
@@ -249,16 +292,14 @@
\DeclareDocumentCommand \newhangulfontface { m O{} m O{} }
{
\__xtxko_hangul_assign_font_opts:n {#2,#4}
- \exp_args:Nc \newfontface { XK@newfont@family \token_to_str:N #1 }
- [\l_xtxko_rem_tl] {#3}
- \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 }
- \l_xtxko_font_opts_tl
+ \exp_args:Nc \setfontface { XK@newfont@family \token_to_str:N #1 } {#3} [\l_xtxko_rem_tl]
+ \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 } \l_xtxko_font_opts_tl
\DeclareRobustCommand #1
{
- \tl_set:Nn \XKhangulfont
+ \cs_set_nopar:Npn \XKhangulfont
{
\XK@storeltnfont
- \tl_set_eq:NN \XKcurrentfont \c_one
+ \cs_set_eq:NN \XKcurrentfont \c__xtxko_one_int
\use:c { XK@newfont@family \token_to_str:N #1 }
\XK@storecjkfont
}
@@ -267,33 +308,52 @@
\DeclareDocumentCommand \newhanjafontface { m O{} m O{} }
{
\__xtxko_hanja_assign_font_opts:n {#2,#4}
- \exp_args:Nc \newfontface { XK@newfont@family \token_to_str:N #1 }
- [\l_xtxko_rem_tl] {#3}
- \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 }
- \l_xtxko_font_opts_tl
+ \exp_args:Nc \setfontface { XK@newfont@family \token_to_str:N #1 } {#3} [\l_xtxko_rem_tl]
+ \tl_put_right:cV { XK@newfont@family \token_to_str:N #1 } \l_xtxko_font_opts_tl
\DeclareRobustCommand #1
{
- \tl_set:Nn \XKhanjafont
+ \cs_set_nopar:Npn \XKhanjafont
{
\XK@storeltnfont
- \tl_set_eq:NN \XKcurrentfont \c_two
+ \cs_set_eq:NN \XKcurrentfont \c__xtxko_two_int
\use:c { XK@newfont@family \token_to_str:N #1 }
\XK@storecjkfont
}
}
}
%% add{hangul,hanja}fontfeature[s]
+\cs_set_nopar:Npn \xetexkopacifybfseries {
+ \tl_map_inline:nn { \mddefault \bfdefault }
+ {
+ \cs_if_exist:cF { \f@encoding/\f@family/##1/\updefault }
+ {
+ \cs_gset_eq:cc
+ { \f@encoding/\f@family/##1/\updefault }
+ { \f@encoding/\f@family/##1/\shapedefault }
+ }
+ }
+ \tl_map_inline:nn { \shapedefault \updefault \itdefault \sldefault }
+ {
+ \cs_if_exist:cF { \f@encoding/\f@family/bx/##1 }
+ {
+ \cs_gset_eq:cc
+ { \f@encoding/\f@family/bx/##1 }
+ { \f@encoding/\f@family/\bfdefault/##1 }
+ }
+ }
+}
\DeclareDocumentCommand \addhangulfontfeature { m }
{
\group_begin:
- \XKhangulfont
+ \fontseries\mddefault\fontshape\shapedefault \XKhangulfont
\tl_clear:N \l_xtxko_font_opts_tl
\keys_set_known:nxN { xtxko-font } {#1} \l_xtxko_rem_tl
\addfontfeature {\l_xtxko_rem_tl}
+ \xetexkopacifybfseries
\use:x
{
\group_end:
- \exp_not:N \tl_set:Nn \exp_not:N \XKhangulfont
+ \exp_not:N \cs_set_nopar:Npn \exp_not:N \XKhangulfont
{
\exp_not:V \XKhangulfont
\exp_not:N \fontfamily { \f@family } \exp_not:N \selectfont
@@ -307,14 +367,15 @@
\DeclareDocumentCommand \addhanjafontfeature { m }
{
\group_begin:
- \XKhanjafont
+ \fontseries\mddefault\fontshape\shapedefault \XKhanjafont
\tl_clear:N \l_xtxko_font_opts_tl
\keys_set_known:nxN { xtxko-font } {#1} \l_xtxko_rem_tl
\addfontfeature {\l_xtxko_rem_tl}
+ \xetexkopacifybfseries
\use:x
{
\group_end:
- \exp_not:N \tl_set:Nn \exp_not:N \XKhanjafont
+ \exp_not:N \cs_set_nopar:Npn \exp_not:N \XKhanjafont
{
\exp_not:V \XKhanjafont
\exp_not:N \fontfamily { \f@family } \exp_not:N \selectfont
@@ -325,12 +386,7 @@
\ignorespaces
}
\cs_set_eq:NN \addhanjafontfeatures \addhanjafontfeature
-%% default font features
-\defaultfontfeatures
- [
- \kormainfont, \korsansfont, \hnjmainfont, \hnjsansfont,
- ]
- {Ligatures=TeX}
+%% default hangul font features
\DeclareDocumentCommand \defaulthangulfontfeatures { t+ o m } % o is ignored
{
\IfBooleanTF {#1}
@@ -359,6 +415,7 @@
\DeclareDocumentCommand \setmathhangulfont { O{} m O{} }
{
\fontspec_set_family:Nnn \xetexko@math@hangul@family {#1,#3} {#2}
+ \l_xetexko_pacify_bfseries
}
%%%%%%%%%%%%%%%%%%%%
%% xetexkofontregime
@@ -378,27 +435,6 @@
\use:c { #2marks }
\keys_set:nn { xtxko-char } { #1,#3 }
}
-%% fontspec 2018
-\RenewDocumentCommand \setmainfont { O{} m O{} }
- {
- \__fontspec_main_setmainfont:nn {#1,#3} {#2}
- \protected\edef\rmfamily{\unexpanded\expandafter{\rmfamily\XK@rm@korean@font}}
- \ignorespaces
- }
-\RenewDocumentCommand \setsansfont { O{} m O{} }
- {
- \__fontspec_main_setsansfont:nn {#1,#3} {#2}
- \protected\edef\sffamily{\unexpanded\expandafter{\sffamily\XK@sf@korean@font}}
- \ignorespaces
- }
-\RenewDocumentCommand \setmonofont { O{} m O{} }
- {
- \__fontspec_main_setmonofont:nn {#1,#3} {#2}
- \protected\edef\ttfamily{\unexpanded\expandafter{\ttfamily\XK@tt@korean@font
- \disablehangulspacing}}
- \ignorespaces
- }
-\cs_set_eq:NN \setromanfont \setmainfont
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -468,103 +504,64 @@
\XK@storecjkfont
}%
\fi
+ \disablehangulspacing
}
-\protected\edef\rmfamily{\unexpanded\expandafter{\rmfamily\XK@rm@korean@font}}
-\protected\edef\sffamily{\unexpanded\expandafter{\sffamily\XK@sf@korean@font}}
-\protected\edef\ttfamily{\unexpanded\expandafter{\ttfamily
- \XK@tt@korean@font\disablehangulspacing
-}}
+% using latex 2020's font family hooks
+\edef\@rmfamilyhook{\unexpanded\expandafter{\@rmfamilyhook \XK@rm@korean@font}}
+\edef\@sffamilyhook{\unexpanded\expandafter{\@sffamilyhook \XK@sf@korean@font}}
+\edef\@ttfamilyhook{\unexpanded\expandafter{\@ttfamilyhook \XK@tt@korean@font}}
+\edef\@defaultfamilyhook{\unexpanded\expandafter{\@defaultfamilyhook
+ \XK@default@korean@font }}
+\let\XK@default@korean@font\relax
+
\edef\verbatim@font{\unexpanded\expandafter{\verbatim@font
\disablehangulspacingandlinebreak
\let\XKstoreprevfont\XKlatinfont
}}
% for default font loading
-\def\XKiffontisaccessible#1#2#3{%
- \begingroup
- \suppressfontnotfounderror\@ne
- \font\x="#1" at 10pt
- \expandafter
- \endgroup
- \ifx\x\nullfont #3\else #2\fi
-}
-\def\XKiffonthasunichar#1#2#3#4{%
- \begingroup #1\expandafter\endgroup
+\def\XKiffontfamilyhasunichar#1#2#3#4{%
+ \begingroup \fontfamily{#1}\selectfont\expandafter\endgroup
\iffontchar\font"#2\relax #3\else #4\fi
}
\AtBeginDocument{%
%%%%%%%%%%%%%%%%%%%%%%%%%%
- % default main hangul: nanummyeongjo, batang if absent
+ % default main hangul: unbatang
\ifdefined\kormainfont\else
- \XKiffonthasunichar{\fontfamily\rmdefault\selectfont}{AC00}
+ \XKiffontfamilyhasunichar{\rmdefault}{AC00}
{\let\kormainfont\relax}
- {\XKiffontisaccessible{NanumMyeongjoExtraBold}
- {\setmainhangulfont{NanumMyeongjo}[Renderer=OpenType,BoldFont=*ExtraBold]}
- {\XKiffontisaccessible{NanumMyeongjo}
- {\setmainhangulfont{NanumMyeongjo}[Renderer=OpenType]}
- {\XKiffontisaccessible{Batang}
- {\setmainhangulfont{Batang}[AutoFakeBold]}
- {\let\kormainfont\relax}%
- }%
- }%
- }%
- \fi
- % default main hanja: nanumgothic, batang if absent
- \ifdefined\hnjmainfont\else
- \XKiffonthasunichar{\kormainfont}{4E00}
- {\let\hnjmainfont\kormainfont}
- {\XKiffontisaccessible{NanumGothic}
- {\setmainhanjafont{NanumGothic}[Renderer=OpenType]}
- {\XKiffontisaccessible{Batang}
- {\setmainhanjafont{Batang}[AutoFakeBold]}
- {\let\hnjmainfont\kormainfont}%
- }%
+ {\IfFontExistsTF{UnBatang.ttf}
+ {\setmainhangulfont{UnBatang.ttf}[BoldFont=UnBatangBold.ttf]}
+ {\let\kormainfont\relax}%
}%
\fi
- % default sans hangul: nanumgothic, dotum if absent
+ \ifdefined\hnjmainfont\else \let\hnjmainfont\kormainfont \fi
+
+ % default sans hangul: undotum
\ifdefined\korsansfont\else
- \XKiffonthasunichar{\fontfamily\sfdefault\selectfont}{AC00}
+ \XKiffontfamilyhasunichar{\sfdefault}{AC00}
{\let\korsansfont\relax}
- {\XKiffontisaccessible{NanumGothic}
- {\setsanshangulfont{NanumGothic}[Renderer=OpenType]}
- {\XKiffontisaccessible{Dotum}
- {\setsanshangulfont{Dotum}[AutoFakeBold]}
- {\let\korsansfont\relax}%
- }%
- }%
- \fi
- % default sans hanja: nanumgothic, dotum if absent
- \ifdefined\hnjsansfont\else
- \XKiffonthasunichar{\korsansfont}{4E00}
- {\let\hnjsansfont\korsansfont}
- {\XKiffontisaccessible{NanumGothic}
- {\setsanshanjafont{NanumGothic}[Renderer=OpenType]}
- {\XKiffontisaccessible{Dotum}
- {\setsanshanjafont{Dotum}[AutoFakeBold]}
- {\let\hnjsansfont\korsansfont}%
- }%
+ {\IfFontExistsTF{UnDotum.ttf}
+ {\setsanshangulfont{UnDotum.ttf}[BoldFont=UnDotumBold.ttf]}
+ {\let\korsansfont\relax}%
}%
\fi
+ \ifdefined\hnjsansfont\else \let\hnjsansfont\korsansfont \fi
+
\ifdefined\kormonofont\else \let\kormonofont\korsansfont \fi
\ifdefined\hnjmonofont\else \let\hnjmonofont\kormonofont \fi
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% reset hangul font and normalfont
-\expandafter\ifx\familydefault\rmdefault
- \XK@rm@korean@font
- \protected\edef\normalfont{\unexpanded\expandafter{\normalfont
- \XK@rm@korean@font}}
-\else \expandafter\ifx\familydefault\sfdefault
- \XK@sf@korean@font
- \protected\edef\normalfont{\unexpanded\expandafter{\normalfont
- \XK@sf@korean@font}}
-\else
- \XK@tt@korean@font
- \protected\edef\normalfont{\unexpanded\expandafter{\normalfont
- \XK@tt@korean@font}}
-\fi\fi
-\let\reset@font\normalfont
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % reset hangul font and normalfont
+ \expandafter\ifx\familydefault\sfdefault
+ \let\XK@default@korean@font\XK@sf@korean@font
+ \else \expandafter\ifx\familydefault\ttdefault
+ \let\XK@default@korean@font\XK@tt@korean@font
+ \else
+ \let\XK@default@korean@font\XK@rm@korean@font
+ \fi\fi
+ \XK@default@korean@font
%%%%%%%%%%%%%%%%%%%%%
% hangul in math mode
\begingroup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xetexko/xetexko-hanging.sty new/tex/xetex/xetexko/xetexko-hanging.sty
--- old/tex/xetex/xetexko/xetexko-hanging.sty 2018-04-06 23:37:37.000000000 +0200
+++ new/tex/xetex/xetexko/xetexko-hanging.sty 2020-02-17 23:18:35.000000000 +0100
@@ -1,6 +1,6 @@
% xetexko-hanging.sty
%
-% Copyright (c) 2013-2018 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,7 +13,7 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
\ProvidesPackage{xetexko-hanging}
- [2018/04/06 v2.18 Hanging punctuations for XeTeX-ko]
+ [2020/02/17 v2.23 Hanging punctuations for XeTeX-ko]
\fi
\chardef\catcodeofATcharacter\catcode`@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xetexko/xetexko-josa.sty new/tex/xetex/xetexko/xetexko-josa.sty
--- old/tex/xetex/xetexko/xetexko-josa.sty 2018-04-06 23:37:37.000000000 +0200
+++ new/tex/xetex/xetexko/xetexko-josa.sty 2020-02-17 23:18:35.000000000 +0100
@@ -1,6 +1,6 @@
% xetexko-josa.sty
%
-% Copyright (c) 2013-2018 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -12,7 +12,7 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
- \ProvidesPackage{xetexko-josa}[2018/04/06 v2.18 Auto-josa for XeTeX-ko]
+ \ProvidesPackage{xetexko-josa}[2020/02/17 v2.23 Auto-josa for XeTeX-ko]
\fi
\unless\ifcsname @tempcnta\endcsname
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xetexko/xetexko-space.sty new/tex/xetex/xetexko/xetexko-space.sty
--- old/tex/xetex/xetexko/xetexko-space.sty 2018-04-30 19:05:30.000000000 +0200
+++ new/tex/xetex/xetexko/xetexko-space.sty 2020-02-17 23:18:35.000000000 +0100
@@ -1,6 +1,6 @@
% xetexko-space.sty
%
-% Copyright (c) 2013-2018 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,7 +13,7 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
\ProvidesPackage{xetexko-space}
- [2018/04/19 v2.19 Spacings and fonts for XeTeX-ko]
+ [2020/02/17 v2.23 Spacings and fonts for XeTeX-ko]
\fi
%%% we need XeTeX > 0.997
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xetexko/xetexko-vertical.sty new/tex/xetex/xetexko/xetexko-vertical.sty
--- old/tex/xetex/xetexko/xetexko-vertical.sty 2018-04-06 23:37:37.000000000 +0200
+++ new/tex/xetex/xetexko/xetexko-vertical.sty 2020-02-17 23:18:35.000000000 +0100
@@ -1,6 +1,6 @@
% xetexko-vertical.sty
%
-% Copyright (c) 2013-2018 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,7 +13,7 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
\ProvidesPackage{xetexko-vertical}
- [2018/04/06 v2.18 Vertical environment for XeTeX-ko]
+ [2020/02/17 v2.23 Vertical environment for XeTeX-ko]
\fi
% do not veticalize headline/footline
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/xetex/xetexko/xetexko.sty new/tex/xetex/xetexko/xetexko.sty
--- old/tex/xetex/xetexko/xetexko.sty 2018-04-30 19:05:30.000000000 +0200
+++ new/tex/xetex/xetexko/xetexko.sty 2020-02-17 23:18:35.000000000 +0100
@@ -1,6 +1,6 @@
% xetexko.sty
%
-% Copyright (c) 2013-2018 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -12,7 +12,7 @@
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname ProvidesPackage\endcsname\relax\else
- \ProvidesPackage{xetexko}[2018/04/19 v2.19 Typesetting Korean with XeTeX]
+ \ProvidesPackage{xetexko}[2020/02/17 v2.23 Typesetting Korean with XeTeX]
\fi
\begingroup\expandafter\expandafter\expandafter\endgroup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xetexko.tlpobj new/tlpkg/tlpobj/xetexko.tlpobj
--- old/tlpkg/tlpobj/xetexko.tlpobj 2019-02-28 04:18:28.000000000 +0100
+++ new/tlpkg/tlpobj/xetexko.tlpobj 2020-02-18 01:54:48.000000000 +0100
@@ -1,13 +1,13 @@
name xetexko
category Package
-revision 48378
+revision 53826
shortdesc Typeset Korean with Xe(La)TeX
relocated 1
longdesc The package supports typesetting Korean documents (including
longdesc old Hangul texts), using XeTeX. It enhances the existing
longdesc support, in XeTeX, providing features that provide quality
-longdesc typesetting. This package requires cjk-ko package for its full
-longdesc functionality.
+longdesc typesetting. This package requires the cjk-ko package for its
+longdesc full functionality.
runfiles size=78
RELOC/tex/xetex/xetexko/hanja_hangul.tab
RELOC/tex/xetex/xetexko/hanjacom_hangul.tab
@@ -20,7 +20,6 @@
RELOC/tex/xetex/xetexko/xetexko.sty
catalogue-contact-repository https://github.com/dohyunkim/xetexko
catalogue-ctan /macros/xetex/generic/xetexko
-catalogue-date 2018-08-08 09:37:17 +0200
-catalogue-license lppl1.3
+catalogue-license lppl1.3c
catalogue-topics korean xetex
-catalogue-version 2.21
+catalogue-version 2.23
++++++ xetexref.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xetexref/README.txt new/doc/xetex/xetexref/README.txt
--- old/doc/xetex/xetexref/README.txt 2019-03-05 23:33:18.000000000 +0100
+++ new/doc/xetex/xetexref/README.txt 2019-12-09 22:52:18.000000000 +0100
@@ -17,6 +17,7 @@
## Legalities
Copyright 2007-2019 Will Robertson
+Copyright 2019 Hironobu Yamashita
Copyright 2018 Joseph Wright
Copyright 2011-2017 Karl Berry
Copyright 2013 Khaled Hosny.
Binary files old/doc/xetex/xetexref/xetex-reference.pdf and new/doc/xetex/xetexref/xetex-reference.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/xetex/xetexref/xetex-reference.tex new/doc/xetex/xetexref/xetex-reference.tex
--- old/doc/xetex/xetexref/xetex-reference.tex 2019-03-05 23:33:18.000000000 +0100
+++ new/doc/xetex/xetexref/xetex-reference.tex 2019-12-09 22:52:18.000000000 +0100
@@ -1,6 +1,4 @@
-% Copyright 2007-2017 Will Robertson
-% Copyright 2011 Karl Berry
-% Copyright 2013 Khaled Hosny
+% Copyright for this work included in README.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -21,7 +19,7 @@
\title{The \xetex reference guide\\\url{https://ctan.org/pkg/xetexref}}
\author{Will Robertson \and Khaled Hosny \and Karl Berry}
-\date{2019-03-05}
+\date{\VERSION}
\suppressfontnotfounderror=1
@@ -555,6 +553,13 @@
\XeTeXuseglyphmetrics=1 \fbox{a}\fbox{A}\fbox{j}\fbox{J}
\end{example}
+\cmd|\XeTeXgenerateactualtext|
+\xarg{integer}
+\desc{Controls the output of \texttt{/ActualText} entry. Default is 0.
+When set to 1, the \texttt{/ActualText} entry is added to the output PDF
+for better copy/paste and search in PDF viewers.}
+\endcmd
+
\subsection{OpenType fonts}
\cmd|\XeTeXOTcountscripts|
@@ -887,7 +892,8 @@
\cmd|\Ucharcat|
\xarg{number}
\xarg{catcode}
-\desc{Expands to a character token with slot \meta{number} and \meta{catcode} specified.}
+\desc{Expands to a character token with slot \meta{number} and \meta{catcode} specified.
+The values allowed for \meta{catcode} are: 1--4, 6--8 and 10--13.}
\endcmd
\begin{example}
@@ -922,11 +928,11 @@
\opteq
\xarg{interchar class}
\desc{Assigns a class corresponding to \xarg{interchar class} (range
-0–255) to a \xarg{char slot}. Most characters are class 0 by
+0–4095) to a \xarg{char slot}. Most characters are class 0 by
default. Class 1 is for CJK ideographs, classes 2 and 3 are CJK
-punctuation. The boundary of a text string is considered class 255,
+punctuation. The boundary of a text string is considered class 4095,
wherever there is a boundary between a ‘run’ of characters and something
-else — glue, kern, math, box, etc. Special case class 256 is ignored;
+else — glue, kern, math, box, etc. Special case class 4096 is ignored;
useful for diacritics so I’m told.}
\endcmd
@@ -1170,6 +1176,12 @@
\subsection{Programming}
+\cmd|\expanded|
+\xarg{general text}
+\desc{Carries out full expansion of a token list like \texttt{\char`\\message},
+but it is still expandable.}
+\endcmd
+
\cmd|\ifincsname...(\else...)\fi|
\desc{\tex conditional to branch true if the expansion occurs within
\texttt{\char`\\csname ... \char`\\endcsname}.}
@@ -1212,9 +1224,9 @@
\xarg{arg one}
\xarg{arg two}
\desc{Compares the full expansion of the two token list
-arguments. Expands to zero if they are the same, less than one if the
+arguments. Expands to zero if they are the same, $-1$ if the
first argument sorts lower (lexicographically) than the second argument,
-and greater than one if vice versa.}
+and~$1$ if vice versa.}
\endcmd
\begin{example}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xetexref.doc.tlpobj new/tlpkg/tlpobj/xetexref.doc.tlpobj
--- old/tlpkg/tlpobj/xetexref.doc.tlpobj 2019-03-06 02:24:30.000000000 +0100
+++ new/tlpkg/tlpobj/xetexref.doc.tlpobj 2019-12-10 01:55:09.000000000 +0100
@@ -1,9 +1,9 @@
name xetexref.doc
category Package
-revision 50244
+revision 53068
shortdesc doc files of xetexref
relocated 1
-docfiles size=49
+docfiles size=48
RELOC/doc/xetex/xetexref/README.txt
RELOC/doc/xetex/xetexref/xetex-reference.pdf
RELOC/doc/xetex/xetexref/xetex-reference.tex
++++++ xfakebold.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xfakebold/Changes new/doc/latex/xfakebold/Changes
--- old/doc/latex/xfakebold/Changes 2018-08-22 23:31:55.000000000 +0200
+++ new/doc/latex/xfakebold/Changes 2019-12-30 23:18:02.000000000 +0100
@@ -1,5 +1,7 @@
xfakebold.sty ----------------
+v 0.06 2019-12-29 support for xetex and ptex with (x)dvipdfmx
+v 0.05 2019-09-21 fix pdflatex
v 0.04 2018-08-21 typo in \fake@bold
v 0.03 2018-08-07 small fixes and typos in the documentation
v 0.02 2018-07-25 fix bug in pdflatex part
Binary files old/doc/latex/xfakebold/xfakebold-doc.pdf and new/doc/latex/xfakebold/xfakebold-doc.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xfakebold/xfakebold-doc.tex new/doc/latex/xfakebold/xfakebold-doc.tex
--- old/doc/latex/xfakebold/xfakebold-doc.tex 2018-08-22 23:31:55.000000000 +0200
+++ new/doc/latex/xfakebold/xfakebold-doc.tex 2019-12-30 23:18:02.000000000 +0100
@@ -1,14 +1,18 @@
-% $Id: xfakebold-doc.tex 793 2018-08-06 16:39:25Z herbert $
+% $Id: xfakebold-doc.tex 1125 2019-12-29 21:34:19Z herbert $
\listfiles
\documentclass[english]{article}
\usepackage{dejavu-otf}
+\usepackage{xfp}
+\ExplSyntaxOn
+\let\PI\c_pi_fp
+\ExplSyntaxOff
\usepackage{xfakebold}
\usepackage{graphicx}
%\pdfcompresslevel=0
\usepackage{babel}
\usepackage[a4paper,tmargin=1cm,bmargin=1.5cm,includeheadfoot]{geometry}
\usepackage{listings}
-\title{\texttt{xfakebold}, v. 0.04\\ using bold characters with \texttt{pdflatex} or \texttt{lualatex}}
+\title{\texttt{xfakebold}, v. 0.06\\ using bold characters with\\ \texttt{pdflatex}, \texttt{lualatex} or \texttt{xelatex}}
\author{Herbert Voß}
\lstset{basicstyle=\ttfamily\small,language={[LaTeX]TeX},frame=lrtb}
@@ -21,13 +25,13 @@
\begin{abstract}
The package fakes a vector font with outline characters by the text render of PDF.
It writes directly into the pdf output with \verb|\pdfliteral| (pdflatex ) or \verb|\pdfextension| \verb|literal|
-(lualatex). The package defines two macros which can be used in text and in math mode. However, for the text
+(lualatex) or \verb|\special| (xelatex). The package defines two macros which can be used in text and in math mode. However, for the text
mode one should use the bold version of the text font which should be available in most cases. This is different to the
math mode where only some free math fonts provide a bold version.
\end{abstract}
\vfill
-\small Thanks to: Will Robertson;
+\small Thanks to: Will Robertson; Yusuke Terada;
%\meaning\setBold
%\meaning\unsetBold
@@ -37,6 +41,8 @@
\section{How does it work?}
PDF knows different text render modes for outline fonts.
+\ifxetex\else% Only for the test run with xelatex
+
\def\OFF{\pdfextension literal direct { 0 Tr 0 w }\relax}
\def\Verb|#1|{\texttt{\{#1\}}}
@@ -49,7 +55,7 @@
\makebox[3cm][l]{Mode 2 \Verb| 2 Tr 0 w |} \tabular{l}\pdfextension literal direct { 2 Tr 0 w }\scalebox{10}{OTTO} OTTO\OFF\endtabular
\makebox[3cm][l]{Mode 2 \Verb| 2 Tr 0.3 w |} \tabular{l}\pdfextension literal direct { 2 Tr 0.3 w }\scalebox{10}{OTTO} OTTO\OFF\endtabular
-
+\fi
In mode 0 the character is filled but without drawing its outline which can be seen when printing in mode 1, where
the linewidth of the outline is the smallest one which the system allows. Setting the linewidth to 0.3\,bp, which is
@@ -58,7 +64,7 @@
makes it more bold.
-\section{Optional argument}
+\section{Optional package argument}
The only package option is \verb|bold| which is preset by 0.3, which is the linewidth of
the outlines of the characters.
@@ -68,65 +74,156 @@
makes the characters more bold.
+\section{The macros}
+
+\begin{lstlisting}
+\setBold[<optional value>]
+\unsetBold
+\end{lstlisting}
+
+Without using the optional argument the default setting is used.
+
+
+
+
\section{The example code}
+The following examples use the value for $\pi$, defined in \LaTeX3 as \verb|\c_pi_fp|. To get rid of
+the L3-syntax we define a new variable:
+
+\begin{lstlisting}
+\ExplSyntaxOn
+\let\PI\c_pi_fp
+\ExplSyntaxOff
+\end{lstlisting}
+
+\subsection{Default setting}
\begin{lstlisting}
\documentclass{article}
\usepackage{xfakebold}
\begin{document}
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
\setBold\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
\unsetBold\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
\end{document}
\end{lstlisting}
-\section{The output}
+\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\setBold\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\unsetBold\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+
+
+\section{Loading the package with another value}
+
+\begin{lstlisting}
+\documentclass{article}
+\usepackage[bold=1]{xfakebold}
+\begin{document}
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
\setBold\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
\unsetBold\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\end{document}
+\end{lstlisting}
+\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
-\vspace{2cm}\noindent
-The same for \verb|\usepackage[bold=1]{xfakebold}|:
+\ifxetex\special{pdf:literal direct 2 Tr 1 w }%
+\else\pdfextension literal direct { 2 Tr 1 w }\relax\fi
+\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
-\gdef\setBold{\pdfextension literal direct { 2 Tr 1 w }\relax}
-\gdef\unsetBold{\pdfextension literal direct { 0 Tr 0 w }\relax}
+\ifxetex\special{pdf:literal direct 0 Tr 0 w }%
+\else\pdfextension literal direct { 0 Tr 0 w }\relax\fi
\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
-\setBold\noindent
+\section{Using the optional argument of the macro}
+
+\begin{lstlisting}
+\documentclass{article}
+\usepackage{xfakebold}
+\begin{document}
+\setBold[0.01]\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
-\unsetBold\noindent
+\setBold[0.2]\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+
+\setBold[0.6]\noindent
An example:
-$\pi^{\pi}=\directlua{tex.print(math.pi^math.pi)}$ and
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\unsetBold
+\setBold\noindent% Using the deafult value
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\unsetBold
+\end{document}
+\end{lstlisting}
+\setBold[0.01]\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+
+\setBold[0.2]\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+
+\setBold[0.6]\noindent
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\unsetBold
+
+\setBold\noindent% Using the deafult value
+An example:
+$\pi^{\pi}=\fpeval{\PI^\PI}$ and
+$\displaystyle\int\limits_1^{\infty}\frac1{x^2}\symup dx=1$
+\unsetBold
\end{document}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xfakebold.doc.tlpobj new/tlpkg/tlpobj/xfakebold.doc.tlpobj
--- old/tlpkg/tlpobj/xfakebold.doc.tlpobj 2019-02-28 04:18:28.000000000 +0100
+++ new/tlpkg/tlpobj/xfakebold.doc.tlpobj 2020-04-19 18:10:21.000000000 +0200
@@ -1,9 +1,9 @@
name xfakebold.doc
category Package
-revision 48460
+revision 54779
shortdesc doc files of xfakebold
relocated 1
-docfiles size=24
+docfiles size=28
RELOC/doc/latex/xfakebold/Changes
RELOC/doc/latex/xfakebold/README
RELOC/doc/latex/xfakebold/xfakebold-doc.pdf
++++++ xfakebold.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xfakebold/xfakebold.sty new/tex/latex/xfakebold/xfakebold.sty
--- old/tex/latex/xfakebold/xfakebold.sty 2018-08-22 23:31:55.000000000 +0200
+++ new/tex/latex/xfakebold/xfakebold.sty 2019-12-30 23:18:02.000000000 +0100
@@ -1,8 +1,8 @@
-% $Id: xfakebold.sty 793 2018-08-06 16:39:25Z herbert $
+% $Id: xfakebold.sty 1125 2019-12-29 21:34:19Z herbert $
%%
%% This is file `xfakebold.sty',
%%
-%% Copyright (C) 2018 Herbert Voss
+%% Copyright (C) 1919, 2020 Herbert Voss
%%
%% It may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -13,40 +13,82 @@
%% version 2005/12/01 or later.
%%
%%
-\ProvidesPackage{xfakebold}[2018/08/21 v0.04 using bold characters]
-\RequirePackage{ifluatex,ifxetex,xkeyval}
-
-\def\setBold{}
-\def\unsetBold{}
-\def\fake@bold{0.3}%
-
-\DeclareOptionX{bold}{%
- \def\fake@bold{#1}%
- \ifdim\fake@bold pt > \p@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{xfakebold}[1919/12/29 v0.06 using bold characters]
+\RequirePackage{xkeyval}
+
+\@ifpackagelater{iftex}{2019/10/24}{%
+ \RequirePackage{ifxetex,ifluatex,ifpdf}
+}{%
+ \RequirePackage{iftex}
+}
+
+\def\fkbld@bold{0.3 }%
+
+\def\fkbld@checkboldness#1{%
+ \ifdim#1pt > \z@
+ \def\fkbld@bold{#1 }%
\else
- \PackageWarning{fakebold}{The value must be greater than 0. Will chooose 0.3}%
- \def\fake@bold{0.3}%
- \fi}
-
-\ProcessOptionsX
-
-\ifxetex
- \typeout{We have XeTeX}%
- \PackageWarning{fakebold}%
- {^^J No LuaTeX or PDFTeX running!
- ^^J For Xe(La)TeX use the FakeBold option from package fontspec!
- \def\fake@bold{-1}}%
-\fi
-
-\ifluatex
- \def\setBold{\pdfextension literal direct { 2 Tr \fake@bold\space w }\relax}
- \def\unsetBold{\pdfextension literal direct { 0 Tr 0 w }\relax}
- \typeout{We have LuaTeX}%
-\else
- \ifdim\fake@bold pt < \p@ \else
- \def\setBold{\pdfliteral direct { 2 Tr \fake@bold\space w }\relax}
- \def\unsetBold{\pdfliteral direct { 0 Tr 0 w }\relax}
- \typeout{We have pdfTeX}%
+ \PackageWarning{fakebold}{The value must be greater than 0. Will choose 0.3 instead!}%
+ \def\fkbld@bold{0.3 }%
+ \fi
+}
+
+\DeclareOptionX{bold}{\fkbld@checkboldness{#1}}
+
+\ProcessOptionsX*
+
+\newcommand\setBold[1][]{%
+ \begingroup
+ \if$#1$\else
+ \fkbld@checkboldness{#1}%
+ \fi
+ \ifxetex
+ \special{pdf:literal direct 2 Tr \fkbld@bold w }\relax
+ \else
+ \ifluatex
+ \pdfextension literal direct { 2 Tr \fkbld@bold w }\relax
+ \else
+ \ifpdftex
+ \ifnum\pdfoutput=\@ne
+ \pdfliteral direct { 2 Tr #1 w }\relax
+ \else
+ \special{pdf:literal direct 2 Tr \fkbld@bold w }\relax
+ \fi
+ \else
+ \ifpdf
+ \PackageWarning{fakebold}{!Unsupported engine! fakebold is disabled.}
+ \else
+ \special{pdf:literal direct 2 Tr \fkbld@bold w }\relax
+ \fi
+ \fi
+ \fi
+ \fi
+ \endgroup
+ \ignorespaces
+}
+\newcommand\unsetBold{%
+ \ifxetex
+ \special{pdf:literal direct 0 Tr 0 w }\relax
+ \else
+ \ifluatex
+ \pdfextension literal direct { 0 Tr 0 w }\relax
+ \else
+ \ifpdftex
+ \ifnum\pdfoutput=\@ne
+ \pdfliteral direct { 0 Tr 0 w }\relax
+ \else
+ \special{pdf:literal direct 0 Tr 0 w }\relax
+ \fi
+ \else
+ \ifpdf
+ \else
+ \special{pdf:literal direct 0 Tr 0 w }\relax
+ \fi
+ \fi
+ \fi
\fi
-\fi
+ \ignorespaces
+}
+\endinput
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xfakebold.tlpobj new/tlpkg/tlpobj/xfakebold.tlpobj
--- old/tlpkg/tlpobj/xfakebold.tlpobj 2019-02-28 04:18:28.000000000 +0100
+++ new/tlpkg/tlpobj/xfakebold.tlpobj 2020-04-19 18:10:21.000000000 +0200
@@ -1,6 +1,6 @@
name xfakebold
category Package
-revision 48460
+revision 54779
shortdesc Fake a regular font for bold characters
relocated 1
longdesc This package uses PDF's text rendering to modify the linewidth
@@ -9,10 +9,10 @@
longdesc package works both in text and in math mode, for pdfLaTeX as
longdesc well as for LuaLaTeX. The package depends on ifluatex, ifxetex,
longdesc and xkeyval.
+depend iftex
runfiles size=1
RELOC/tex/latex/xfakebold/xfakebold.sty
catalogue-ctan /macros/latex/contrib/xfakebold
-catalogue-date 2018-08-22 15:59:18 +0200
catalogue-license lppl1.3c
catalogue-topics font-supp-misc font-util pdf-feat
-catalogue-version 0.04
+catalogue-version 0.06
++++++ xindex.doc.tar.xz ++++++
++++ 1795 lines of diff (skipped)
++++++ xindex.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/scripts/xindex/xindex.lua new/texmf-dist/scripts/xindex/xindex.lua
--- old/texmf-dist/scripts/xindex/xindex.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/scripts/xindex/xindex.lua 2019-11-22 23:19:47.000000000 +0100
@@ -8,7 +8,7 @@
-----------------------------------------------------------------------
xindex = xindex or { }
- local version = 0.10
+ local version = 0.19
xindex.version = version
--xindex.self = "xindex"
@@ -29,6 +29,8 @@
kpse.set_program_name("luatex")
+local f = kpse.find_file("lualibs.lua")
+print ("filename "..f)
require("lualibs") -- all part of LuaTeX
require('unicode')
require('string')
@@ -156,13 +158,20 @@
cfg = require(Config_File)
writeLog(2," ... done\n",0)
+-- Create the character list maps for faster sorting
+
+alphabet_lower_map = CreateCharListMap(alphabet_lower)
+alphabet_upper_map = CreateCharListMap(alphabet_upper)
+
local esc_char = args.escapechar
writeLog(2,"Escapechar = "..esc_char.."\n",1)
escape_chars = { -- by default " is the escape char
- {esc_char..'"', '//escapedquote//', '\\"{}' },
- {esc_char..'@', '//escapedat//', '@' },
- {esc_char..'|', '//escapedvert//', "|" },
- {esc_char..'!', '//scapedexcl//', '!' }
+ {esc_char..'"', '//escapedquote//', '\\"{}' },
+ {esc_char..'@', '//escapedat//', '@' },
+ {esc_char..'|', '//escapedvert//', '|' },
+ {esc_char..'!', '//scapedexcl//', '!' },
+ {esc_char..'(', '//escapedparenleft//', '(' },
+ {esc_char..')', '//escapedparenright//',')' }
}
language = string.lower(args["language"])
@@ -197,4 +206,3 @@
logFile:close()
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua new/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua 2019-11-22 23:19:47.000000000 +0100
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.10,
+ version = 0.20,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -15,10 +15,12 @@
}
escape_chars = { -- by default " is the escape char
- {'""', "\\escapedquote", "\"{}" },
- {'"@', "\\escapedat", "@" },
- {'"|', "\\escapedvert", "|" },
- {'"!', "\\escapedexcl", "!" }
+ {'""', "\\escapedquote", '\"{}' },
+ {'"@', "\\escapedat", "@" },
+ {'"|', "\\escapedvert", "|" },
+ {'"!', "\\escapedexcl", "!" },
+ {'"(', "\\escapedparenleft", "(" },
+ {'")', "\\escapedparenright", ")" }
}
itemPageDelimiter = "," -- Hello, 14
@@ -29,12 +31,15 @@
sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17"
indexOpening = "" -- commands after \begin{theindex}
+rangeSymbol = "--"
+idxnewletter = "\\textbf" -- Only valid if -n is not set
--[[
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
]]
+
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
{ 'a', 'á', 'à', 'å', 'æ', },
@@ -42,24 +47,24 @@
{ 'b' },
{ 'c', 'ç' },
{ 'd' },
- { 'e', 'é', 'è', 'ë' },
+ { 'e', 'é', 'è', 'ë', 'ê' },
{ 'f' },
{ 'g' },
{ 'h' },
- { 'i', 'í', 'ì', 'ï' },
+ { 'i', 'í', 'ì', 'î', 'ï' },
{ 'j' },
{ 'k' },
{ 'l' },
{ 'm' },
{ 'n', 'ñ' },
- { 'o', 'ó', 'ò', 'ø', 'œ'},
+ { 'o', 'ó', 'ò', 'ô', 'ø', 'œ', 'ø'},
{ 'oe', 'ö' },
{ 'p' },
{ 'q' },
{ 'r' },
{ 's', 'š', 'ß' },
{ 't' },
- { 'u', 'ú', 'ù' },
+ { 'u', 'ú', 'ù', 'û'},
{ 'ue', 'ü' },
{ 'v' },
{ 'w' },
@@ -69,29 +74,29 @@
}
alphabet_upper = { -- for sorting
{ ' ' },
- { 'A', 'Á', 'À', 'Å', 'Æ'},
+ { 'A', 'Á', 'À', 'Å', 'Æ', 'Â'},
{ 'AE', 'Ä'},
{ 'B' },
{ 'C', 'Ç' },
{ 'D' },
- { 'E', 'È', 'È', 'Ë' },
+ { 'E', 'È', 'É', 'Ë', 'Ê' },
{ 'F' },
{ 'G' },
{ 'H' },
- { 'I', 'Í', 'Ì', 'Ï' },
+ { 'I', 'Í', 'Ì', 'Ï', 'Î' },
{ 'J' },
{ 'K' },
{ 'L' },
{ 'M' },
{ 'N', 'Ñ' },
- { 'O', 'Ó', 'Ò', 'Ø','Œ' },
+ { 'O', 'Ó', 'Ò', 'Ø','Œ', 'Ø', 'Ô' },
{ 'OE', 'Ö' },
{ 'P' },
{ 'Q' },
{ 'R' },
{ 'S', 'Š' },
{ 'T' },
- { 'U', 'Ú', 'Ù' },
+ { 'U', 'Ú', 'Ù', 'Û' },
{ 'UE', 'Ü' },
{ 'V' },
{ 'W' },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua new/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-HAdW-eKO.lua 2019-11-22 23:19:47.000000000 +0100
@@ -9,7 +9,7 @@
-- configuration for index files of the Heidelberger Akademie der Wissenschaften
if not modules then modules = { } end modules ['xindex-HAdW-eKO'] = {
- version = 0.10,
+ version = 0.20,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -26,9 +26,18 @@
sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17"
indexOpening = "" -- commands after \begin{theindex}
+rangeSymbol = "--"
+idxnewletter = "\\textbf" -- Only valid if -n is not set
case_sensitive = false -- speeds up running
+folium = {
+ de = {"f.", "ff."},
+ en = {"f.", "ff."},
+ fr = {"\\,sq","\\,sqq"},
+}
+
+
--[[
Each character's position in this array-like table determines its 'priority'.
Several characters in the same slot have the same 'priority'.
@@ -92,6 +101,8 @@
{ 'Z' }
}
+--alphabet_lower_map = CreateCharListMap(alphabet_lower)-- jetzt in xindex.lua
+--alphabet_upper_map = CreateCharListMap(alphabet_upper)
--\indexentry{Ackers, Carolus}{VII/1-715}
--\indexentry{Bremen!Adalbert I. von, Erzbischof}{VII/2/1-948}
@@ -213,7 +224,7 @@
function replaceRomanB(r)
local i = romanToNumber(r)
if i then return "!//"..string.format("%05d",i).."//."
- else return r
+ else return ("!"..r..".") -- to catch something Neuneburg!a.d. Weichsel
end
end
@@ -313,4 +324,3 @@
end
end
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-base.lua new/texmf-dist/tex/lualatex/xindex/xindex-base.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-base.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-base.lua 2019-11-22 23:19:47.000000000 +0100
@@ -6,7 +6,7 @@
-- LICENSE: LPPL1.3
-----------------------------------------------------------------------
-local info = { version = 0.10}
+local info = { version = 0.20 }
-- check config
if pageNoPrefixDel ~= "" then
@@ -58,10 +58,25 @@
writeLog(1,"\n------------------ end list after getEntryAndPage() ------------------------\n",2)
writeLog(2,"Sorting entries: for LARGE idx files it can take some minutes ... \n",0)
-if SORTprehook then Index = SORTprehook(Index) end
+if SORTprehook then
+ writeLog(2, "PreHook begin\n", 0)
+ Index = SORTprehook(Index)
+ writeLog(2, "PreHook end\n", 0)
+end
+
+writeLog(2, "GenerateSortKeys begin\n", 0)
+GenerateSortKeys(Index)
+writeLog(2, "GenerateSortKeys end\n", 0)
+
k = 0
+writeLog(2, "Sort begin\n", 0)
table.sort(Index,UTFCompare)
-if SORTposthook then Index = SORTposthook(Index) end
+writeLog(2, "Sort end\n", 0)
+if SORTposthook then
+ writeLog(2, "PostHook begin\n", 0)
+ Index = SORTposthook(Index)
+ writeLog(2, "PostHook end\n", 0)
+end
writeLog(1,"\n------------------ Start list after table.sort(Index,UTFCompare)------------\n",2)
printList(Index,2)
@@ -85,7 +100,6 @@
writeLog(2,"done\n",0)
-
writeLog(2,"Replace @-operator ...\n",0)
writeLog(1,"------------------ Start list before compressEntryList(Index)------------\n",1)
writeLog(1,require 'xindex-pretty'.dump(Index),3) -- only for internal dump
@@ -106,6 +120,9 @@
end
]] -- no more needed, we redo the setting
+if SORTendhook then
+ NewIndex = SORTendhook(NewIndex)
+end
outFile:write("\n")
outFile:write("\\begin{theindex}\n")
@@ -128,7 +145,7 @@
local oldChar = ""
local excl = 0 -- number of ! symbols in one entry
local lastItems = {"","",""}
-
+indLines = 0
writeLog(2,"Start writing .ind file ... \n",0)
-- first the special cases for symbols and numbers:
@@ -155,10 +172,12 @@
if charType == 0 then
numbers = false
symbols = true
+ letters = false
end
if charType == 1 then
numbers = true
symbols = false
+ letters = false
end
if charType > 1 then
numbers = false
@@ -170,7 +189,7 @@
if firstSLine then
firstSLine = false
if not no_headings then
- outFile:write("\\textbf{"..index_header[1].."}")
+ outFile:write("\\par"..idxnewletter.."{"..index_header[1].."}")
if (labelPrefix == "") then
outFile:write("\\label{xindex-"..index_header[1].."}\n\\nopagebreak[4]\n")
else
@@ -192,7 +211,7 @@
firstNLine = false
outFile:write("\n\\indexspace\n")
if not no_headings then
- outFile:write("\\textbf{"..index_header[2].."}")
+ outFile:write(idxnewletter.."{"..index_header[2].."}")
if (labelPrefix == "") then
outFile:write("\\label{xindex-"..index_header[2].."}\n\\nopagebreak[4]\n")
else
@@ -213,7 +232,7 @@
if (currentChar ~= oldChar) and (charType == 2) then
outFile:write("\n\\indexspace\n")
if not no_headings then
- outFile:write("\\textbf{"..currentChar.."}")
+ outFile:write(idxnewletter.."{"..currentChar.."}")
if (labelPrefix == '""') then
outFile:write("\\label{xindex-"..currentChar.."}\n\\nopagebreak[4]\n")
else
@@ -232,6 +251,7 @@
end
end
outFile:write("\\end{theindex}\n")
+writeLog(2,indLines.." lines of data wrote into the .ind file\n",0)
outFile:close()
writeLog(2,"\ndone! closing program\n",0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua new/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-cfg-common.lua 2019-11-22 23:19:47.000000000 +0100
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg-common'] = {
- version = 0.10,
+ version = 0.20,
comment = "configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -27,3 +27,102 @@
fr = {"\\,sq","\\,sqq"},
}
+alphabet_uppercase = {
+ { 'α', 'Α' },
+ { 'β', 'Β' },
+ { 'ϐ', 'ϐ' },
+ { 'γ', 'Γ' },
+ { 'δ', 'Δ' },
+ { 'ε', 'Ε' },
+ { 'ζ', 'Ζ' },
+ { 'η', 'Η' },
+ { 'θ', 'Θ' },
+ { 'ι', 'Ι' },
+ { 'κ', 'Κ' },
+ { 'λ', 'Λ' },
+ { 'μ', 'Μ' },
+ { 'ν', 'Ν' },
+ { 'ξ', 'Ξ' },
+ { 'ο', 'Ο' },
+ { 'π', 'Π' },
+ { 'ρ', 'Ρ' },
+ { 'σ', 'Σ' },
+ { 'ς', 'ς' },
+ { 'τ', 'Τ' },
+ { 'υ', 'Υ' },
+ { 'φ', 'Φ' },
+ { 'χ', 'Χ' },
+ { 'ψ', 'Ψ' },
+ { 'ω', 'Ω' },
+--
+ { 'a', 'A' },
+ { 'b', 'B' },
+ { 'c', 'C' },
+ { 'd', 'D' },
+ { 'e', 'E' },
+ { 'f', 'F' },
+ { 'g', 'G' },
+ { 'h', 'H' },
+ { 'i', 'I' },
+ { 'j', 'J' },
+ { 'k', 'K' },
+ { 'l', 'L' },
+ { 'm', 'M' },
+ { 'n', 'N' },
+ { 'o', 'O' },
+ { 'p', 'P' },
+ { 'q', 'Q' },
+ { 'r', 'R' },
+ { 's', 'S' },
+ { 't', 'T' },
+ { 'u', 'U' },
+ { 'v', 'V' },
+ { 'w', 'W' },
+ { 'x', 'X' },
+ { 'y', 'Y' },
+ { 'z', 'Z' },
+--
+ { 'а', 'А' },
+ { 'б', 'Б' },
+ { 'в', 'В' },
+ { 'г', 'Г' },
+ { 'д', 'Д' },
+ { 'е', 'Е' },
+ { 'ж', 'Ж' },
+ { 'з', 'З' },
+ { 'и', 'И' },
+ { 'й', 'Й' },
+ { 'к', 'К' },
+ { 'л', 'Л' },
+ { 'м', 'М' },
+ { 'н', 'Н' },
+ { 'о', 'О' },
+ { 'п', 'П' },
+ { 'р', 'Р' },
+ { 'с', 'С' },
+ { 'т', 'Т' },
+ { 'у', 'У' },
+ { 'ф', 'Ф' },
+ { 'х', 'Х' },
+ { 'ц', 'Ц' },
+ { 'ч', 'Ч' },
+ { 'ш', 'Ш' },
+ { 'щ', 'Щ' },
+ { 'ъ', 'Ъ' },
+ { 'ы', 'Ы' },
+ { 'ь', 'Ь' },
+ { 'э', 'Э' },
+ { 'ю', 'Ю' },
+ { 'я', 'Я' }
+}
+
+local function create_map(char_list)
+ local map = {}
+ for i, pair in ipairs(char_list) do
+ map[pair[1]] = pair[2]
+ end
+ return map
+end
+
+alphabet_uppercase_map = create_map(alphabet_uppercase)
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua new/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-cfg.lua 2019-11-22 23:19:47.000000000 +0100
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.10,
+ version = 0.20,
comment = "main configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -18,11 +18,12 @@
compressPages = true -- something like 12--15, instaead of 12,13,14,15. the |( ... |) syntax is still valid
fCompress = true -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
minCompress = 3 -- 14--17 or
+rangeSymbol = "--"
numericPage = true -- for non numerical pagenumbers, like "VI-17"
sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
indexOpening = "" -- commands after \begin{theindex}
-
+idxnewletter = "\\textbf" -- Only valid if -n is not set
--[[
Each character's position in this array-like table determines its 'priority'.
@@ -30,21 +31,21 @@
]]
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
- { 'a', 'á', 'à', 'ä', 'å', 'æ', },
+ { 'a', 'á', 'à', 'ä', 'â', 'å', 'æ', },
{ 'b' },
{ 'c', 'ç' },
{ 'd' },
- { 'e', 'é', 'è', 'ë' },
+ { 'e', 'é', 'è', 'ë', 'ê' },
{ 'f' },
{ 'g' },
{ 'h' },
- { 'i', 'í', 'ì', 'ï' },
+ { 'i', 'í', 'ì', 'î', 'ï' },
{ 'j' },
{ 'k' },
{ 'l' },
{ 'm' },
{ 'n', 'ñ' },
- { 'o', 'ó', 'ò', 'ö', 'ø', 'œ'},
+ { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
{ 'p' },
{ 'q' },
{ 'r' },
@@ -59,31 +60,30 @@
}
alphabet_upper = { -- for sorting
{ ' ' },
- { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ'},
+ { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ', 'Â' },
{ 'B' },
{ 'C', 'Ç' },
{ 'D' },
- { 'E', 'È', 'È', 'Ë' },
+ { 'E', 'È', 'É', 'Ë', 'Ê' },
{ 'F' },
{ 'G' },
{ 'H' },
- { 'I', 'Í', 'Ì', 'Ï' },
+ { 'I', 'Í', 'Ì', 'Ï', 'Î' },
{ 'J' },
{ 'K' },
{ 'L' },
{ 'M' },
{ 'N', 'Ñ' },
- { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ' },
+ { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø', 'Ô'},
{ 'P' },
{ 'Q' },
{ 'R' },
{ 'S', 'Š' },
{ 'T' },
- { 'U', 'Ú', 'Ù', 'Ü' },
+ { 'U', 'Ú', 'Ù', 'Ü', 'Û' },
{ 'V' },
{ 'W' },
{ 'X' },
{ 'Y', 'Ý', 'Ÿ' },
{ 'Z', 'Ž' }
}
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua new/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-dtk.lua 2019-11-22 23:19:47.000000000 +0100
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-cfg'] = {
- version = 0.10,
+ version = 0.20,
comment = "DTK configuration to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -21,6 +21,7 @@
numericPage = true -- for non numerical pagenumbers, like "VI-17"
sublabels = {"","","",""} -- for the sub(sub(sub-items
pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+rangeSymbol = "--"
indexOpening = "" --[[\providecommand*\lettergroupDefault[1]{}
\providecommand*\lettergroup[1]{%
\par\textbf{#1}\par
@@ -35,64 +36,63 @@
]]
alphabet_lower = { -- for sorting
{ ' ' }, -- only for internal tests
- { 'a', 'á', 'à', 'ä'},
+ { 'a', 'á', 'à', 'ä', 'â', 'å', 'æ', },
{ 'b' },
- { 'c' },
+ { 'c', 'ç' },
{ 'd' },
- { 'e', 'é', 'è', 'ë' },
+ { 'e', 'é', 'è', 'ë', 'ê' },
{ 'f' },
{ 'g' },
{ 'h' },
- { 'i', 'í', 'ì', 'ï' },
+ { 'i', 'í', 'ì', 'î', 'ï' },
{ 'j' },
{ 'k' },
{ 'l' },
{ 'm' },
{ 'n', 'ñ' },
- { 'o', 'ó', 'ò', 'ö' },
+ { 'o', 'ó', 'ò', 'ö', 'ô', 'ø', 'œ', 'ø'},
{ 'p' },
{ 'q' },
{ 'r' },
- { 's' },
+ { 's', 'š', 'ß' },
{ 't' },
- { 'u', 'ú', 'ù', 'ü' },
+ { 'u', 'ú', 'ù', 'ü' , 'û'},
{ 'v' },
{ 'w' },
{ 'x' },
- { 'y' },
- { 'z' }
+ { 'y', 'ý', 'ÿ' },
+ { 'z', 'ž' }
}
alphabet_upper = { -- for sorting
{ ' ' },
- { 'A', 'Á', 'À', 'Ä'},
+ { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ', 'Â' },
{ 'B' },
- { 'C' },
+ { 'C', 'Ç' },
{ 'D' },
- { 'E', 'È', 'È', 'ë' },
+ { 'E', 'È', 'É', 'Ë', 'Ê' },
{ 'F' },
{ 'G' },
{ 'H' },
- { 'I', 'Í', 'Ì', 'ï' },
+ { 'I', 'Í', 'Ì', 'Ï', 'Î' },
{ 'J' },
{ 'K' },
{ 'L' },
{ 'M' },
{ 'N', 'Ñ' },
- { 'O', 'Ó', 'Ò', 'Ö' },
+ { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ', 'Ø', 'Ô'},
{ 'P' },
{ 'Q' },
{ 'R' },
- { 'S' },
+ { 'S', 'Š' },
{ 'T' },
- { 'U', 'Ú', 'Ù', 'Ü' },
+ { 'U', 'Ú', 'Ù', 'Ü', 'Û' },
{ 'V' },
{ 'W' },
{ 'X' },
- { 'Y' },
- { 'Z' }
+ { 'Y', 'Ý', 'Ÿ' },
+ { 'Z', 'Ž' }
}
-
function specialGetPageList(v,hyperpage)
local Pages = {}
if v["pages"] then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua new/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-lapp.lua 2019-11-22 23:19:47.000000000 +0100
@@ -28,7 +28,7 @@
--~ n 2
--------------------------------
if not modules then modules = { } end modules ['xindex-lapp'] = {
- version = 0.10,
+ version = 0.20,
comment = "read parameter for xindex.lua",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-lib.lua new/texmf-dist/tex/lualatex/xindex/xindex-lib.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-lib.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-lib.lua 2019-11-22 23:19:47.000000000 +0100
@@ -7,7 +7,7 @@
-----------------------------------------------------------------------
if not modules then modules = { } end modules ['xindex-lib'] = {
- version = 0.10,
+ version = 0.20,
comment = "main library to xindex.lua",
author = "Herbert Voss",
copyright = "Herbert Voss",
@@ -19,16 +19,24 @@
local Letters = "ÄÖÜäöüabcdefghijklmnopqrstuvwxyzßABCDEFGHIJKLMNOPQRSTUVWXYZ"
local Digits = "0123456789"
--- Looks up the character `character´ in the alphabet and returns its 'normalization' for sorting
-local function get_normalized_char( CharList, character )
+function CreateCharListMap(CharList)
+ local map = {}
for i, alphabet_entry in ipairs(CharList) do
- for _, alphabet_char in ipairs(alphabet_entry) do
- if character == alphabet_char then
- return alphabet_entry[1]
+ local first_char
+ for j, alphabet_char in ipairs(alphabet_entry) do
+ if j == 1 then
+ first_char = alphabet_char
+ else
+ map[alphabet_char] = first_char
end
end
end
- return character
+ return map
+end
+
+-- Looks up the character `character´ in the alphabet and returns its 'normalization' for sorting
+local function get_normalized_char( CharListMap, character )
+ return CharListMap[character] or character
end
function Lower(strOrig) -- return UTF string.lower
@@ -47,51 +55,67 @@
function NormalizedLower(strOrig) -- return normalized UTF string.lower (ä -> a)
local str = ""
for i=1, utf.len(strOrig) do
- local c = get_normalized_char(alphabet_lower,utf.sub(strOrig,i,i))
+ local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
str = str..string.lower(c)
end
return str
end
function NormalizedUpper(strOrig) -- return normalized UTF string.upper (ä -> A)
- local str = ""
+ local str = {}
+ local c
for i=1, utf.len(strOrig) do
- local c = get_normalized_char(alphabet_lower,utf.sub(strOrig,i,i))
- str = str..string.upper(c)
+ c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,i,i))
+ str[#str + 1] = c
end
- strOrig = str
- str = ""
+ strOrig = table.concat(str)
+ str = {}
for i=1, utf.len(strOrig) do
- local c = get_normalized_char(alphabet_upper,utf.sub(strOrig,i,i))
- str = str..string.upper(c)
+ c = get_normalized_char(alphabet_upper_map,utf.sub(strOrig,i,i))
+ c = NormalizedUppercase(c)
+ str[#str + 1] = c
end
- return str
+ return table.concat(str)
+end
+
+function NormalizedUppercase(chr) -- return normalized UTF uppercase letter
+ return alphabet_uppercase_map[chr] or chr
end
function NormalizedChars(strOrig) -- return normalized UTF string (ä -> a) with first as upper case
- local c = string.upper(get_normalized_char(alphabet_lower,utf.sub(strOrig,1,1)))
- local str = c
- for i=2, utf.len(strOrig) do
- c = get_normalized_char(alphabet_lower,utf.sub(strOrig,i,i))
- str = str..c
- end
- local strOrigTrue = strOrig
- strOrig = str
- c = string.upper(get_normalized_char(alphabet_upper,utf.sub(strOrig,1,1)))
- str = c
- for i=2, utf.len(strOrig) do
- c = get_normalized_char(alphabet_upper,utf.sub(strOrig,i,i))
- str = str..c
- end
+ local c = get_normalized_char(alphabet_lower_map,utf.sub(strOrig,1,1))
+ c = get_normalized_char(alphabet_upper_map, c)
+ c = string.upper(c)
+ local str = { c }
+ for ch in string.utfcharacters(utf.sub(strOrig, 2)) do
+ c = get_normalized_char(alphabet_lower_map, ch)
+ c = get_normalized_char(alphabet_upper_map, c)
+ str[#str + 1] = c
+ end
+ return table.concat(str)
+end
+
+-- local strOrigTrue = strOrig
+-- strOrig = table.concat(str)
+-- c = string.upper(get_normalized_char(alphabet_upper,utf.sub(strOrig,1,1)))
+-- str = { c }
+-- for i=2, utf.len(strOrig) do
+-- c = get_normalized_char(alphabet_upper,utf.sub(strOrig,i,i))
+-- str[#str + 1] = c
+-- end
+-- for ch in string.utfcharacters(strOrig, 2) do
+-- str[#str + 1] = get_normalized_char(alphabet_upper, ch)
+-- end
-- print(strOrigTrue.." -> "..str)
- return str
-end
+-- return table.concat(str)
+--end
function checkVert(str) -- get the | part
local vert = string.find(str,"|",1,true)
if (vert) then
vertStr = string.sub(str,vert+1)
str = string.sub(str,1,vert-1)
+print(vertStr)
return (vertStr)
else
return ("")
@@ -181,7 +205,7 @@
if a[i]-a[i-1] > 1 then -- not next page
lastPage = a[i-1] -- new start for a sequence search
if lastPage - firstPage >= minCompress then -- sequence found
- b[#b+1]= tostring(firstPage).."--"..tostring(lastPage)
+ b[#b+1]= tostring(firstPage)..rangeSymbol..tostring(lastPage)
else
b[#b+1]= firstPage
if (firstPage ~= lastPage) then b[#b+1]= lastPage end
@@ -190,7 +214,7 @@
end
end
if a[#a] - firstPage > 2 then -- test file end
- b[#b+1]= tostring(firstPage).."--"..tostring(a[#a])
+ b[#b+1]= tostring(firstPage)..rangeSymbol..tostring(a[#a])
else
b[#b+1]= firstPage
if (firstPage ~= a[#a]) then b[#b+1]= a[#a] end
@@ -225,7 +249,7 @@
elseif paraClose then
lastPage = v["pages"][1]["number"]
newEntries[#newEntries+1] = { Entry = v["Entry"],
- pages = {{ number = firstPage.."--"..lastPage,
+ pages = {{ number = firstPage..rangeSymbol..lastPage,
special = deleteOpenClose(v["pages"][1]["special"])}},
sortChar= v["sortChar"],
Macro = v["Macro"]
@@ -240,15 +264,21 @@
end
function replaceVerticalChar(v)
--- res, _ = string.gsub(v:gsub('|[()]$', ''), '|[()]?', ' \\')
--- return res
if not v:match('|') then
return v,""
else
- return v:gsub('|.*',''), v:match('|.*'):gsub('|','\\'):gsub("%s+", "") -- part before, part after | without spaces
+ return v:gsub('|.*',''), v:match('|.*'):gsub('|','\\')--:gsub("%s+", "") -- part before, part after | without spaces
end
end
+--local ignore = "'`'"
+
+function ignoreLetters( c )
+ return (c:gsub("["..ignore.."]+", ""):match("^%s*(.-)%s*$"))
+end
+-- somestring:match("^%s*(.-)%s*$") --trim function
+
+
function getEntryAndPage(w, nextW, EntryList)
-- \indexentry{Aachen, Johann von}{VII/1-215}
-- \indexentry {Document@\idxtextClasses !IEEEtran@{\sfffffamily IEEEtran}}{185}
@@ -358,10 +388,14 @@
end -- only one pageno
if #pages == 2 then -- only two pages
if tonumber(pages[1]["number"]) and tonumber(pages[2]["number"]) then
- if ((tonumber(pages[2]["number"]) - tonumber(pages[1]["number"])) == 1) and
- (pages[1]["special"] == pages[2]["special"]) then
- pages[1]["number"] = pages[1]["number"].."f"
- pages[2] = nil
+ if ((tonumber(pages[2]["number"]) - tonumber(pages[1]["number"])) == 1) and (pages[1]["special"] == pages[2]["special"]) then
+ if fCompress then
+ pages[1]["number"] = pages[1]["number"]..page_folium[1]
+ pages[2] = nil
+ elseif minCompress == 1 then
+ pages[1]["number"] = pages[1]["number"]..rangeSymbol..pages[2]["number"]
+ pages[2] = nil
+ end
-- elseif (pages[1]["number"] == pages[2]["number"]) and
-- (pages[1]["special"] == pages[2]["special"]) then
-- pages[2] = nil
@@ -374,7 +408,7 @@
local startIndex
local newPages = {} -- { pages[1], pages[2], ... }
local series = {} -- { pages[1], pages[2], ... }
- if tonumber(pages[1]["number"]) then -- if a number we start with seconf page
+ if tonumber(pages[1]["number"]) then -- if a number we start with second page
newPages = {}
series = {pages[1]}
startIndex = 2
@@ -392,9 +426,9 @@
elseif (#series == 1) then -- no -f page -> only one page -> output
newPages[#newPages+1] = series[1]
series = {pages[i]}
- elseif (#series > minCompress) then -- we found series od f pages like 11, 12, 13, 14
+ elseif (#series > minCompress) then -- we found series or f pages like 11, 12, 13, 14
-- the sequenz gets the special from the first page
- newPages[#newPages+1] = { number = series[1]["number"].."--"..series[#series]["number"], special = series[1]["special"]} -- first..last
+ newPages[#newPages+1] = { number = series[1]["number"]..rangeSymbol..series[#series]["number"], special = series[1]["special"]} -- first..last
series = {pages[i]}
else -- series < minCompress
if fCompress then
@@ -433,7 +467,7 @@
series = {pages[i]}
else -- current page is non numeric
if (#series > minCompress) then -- we found a page series
- newPages[#newPages+1] = { number = series[1]["number"].."--"..series[#series]["number"], -- first..last
+ newPages[#newPages+1] = { number = series[1]["number"]..rangeSymbol..series[#series]["number"], -- first..last
special =series[1]["special"] }
series = {pages[i]}
else -- series < minCompress
@@ -485,7 +519,7 @@
end
function getCharType(c)
--- print ("getCharType c="..c..": codepoint="..utf8.codepoint(c))
+-- print ("getCharType c="..tostring(c).." "..type(c)..": codepoint="..utf8.codepoint(c))
local category = get_category(utf8.codepoint(c))
-- print ("getCharType: "..category)
if category == "Nd" then return 1
@@ -508,31 +542,42 @@
-- str = "\indexentry {foo}{bar}"
-- first, second = str:match('{([^}]*)}%s*{([^}]*)}') -> foo, bar
-function UTFCompare(a,b)
--- a, b are something like \indexentry{foo}{bar}
--- writeLog(1,"UTFCompare: "..a["Entry"]..", "..a["pages"][1]["number"].." - "..b["Entry"]..", "..b["pages"][1]["number"].."\n",2)
--- k = k + 1
--- if (k % 50) == 0 then writeLog(1,".",1) end
- local A,B,Apage,Bpage
+function GenerateSortKey(a)
+ local A, Apage
if numericPage then
if tonumber(a["pages"][1]["number"]) then
Apage = string.format("%09d",a["pages"][1]["number"])
else
Apage = string.format("%09d",romanToNumber(a["pages"][1]["number"]))
end
- if tonumber(b["pages"][1]["number"]) then
- Bpage = string.format("%09d",b["pages"][1]["number"])
- else
- Bpage = string.format("%09d",romanToNumber(b["pages"][1]["number"]))
- end
else
Apage = string.format("%09s",a["pages"][1]["number"])
- Bpage = string.format("%09s",b["pages"][1]["number"])
end
- A = NormalizedChars(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!','')) -- replace! by empty
- B = NormalizedChars(getSortString(b["Entry"].." "..Bpage..b["pages"][1]["special"]):gsub('!',''))
--- A = NormalizedUpper(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!','')) -- replace! by empty
--- B = NormalizedUpper(getSortString(b["Entry"].." "..Bpage..b["pages"][1]["special"]):gsub('!',''))
+ if no_caseSensitive then
+ A = NormalizedUpper(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!',' ')) -- replace! by empty
+ a["SortKey"] = A
+ else
+ A = NormalizedChars(getSortString(a["Entry"].." "..Apage..a["pages"][1]["special"]):gsub('!',' ')) -- replace! by empty
+ a["SortKey"] = A
+ end
+ -- return A
+end
+
+function GenerateSortKeys(Index)
+ for _, entry in ipairs(Index) do
+ GenerateSortKey(entry)
+ end
+end
+
+function UTFCompare(a,b)
+-- a, b are something like \indexentry{foo}{bar}
+-- writeLog(1,"UTFCompare: "..a["Entry"]..", "..a["pages"][1]["number"].." - "..b["Entry"]..", "..b["pages"][1]["number"].."\n",2)
+-- k = k + 1
+-- if (k % 50) == 0 then writeLog(1,".",1) end
+
+ local A = a["SortKey"]
+ local B = b["SortKey"]
+
writeLog(1,"UTFCompare: A--B "..A.."--"..B.."\n",2)
-- print(A,B)
--[[
@@ -583,8 +628,8 @@
-- now we have some special page numbers
A = tostring(a0)
B = tostring(b0)
- A1 = A:find("--",1,true) or A:find("f",1,true) -- sequence or folio pages
- B1 = B:find("--",1,true) or B:find("f",1,true)
+ A1 = A:find(rangeSymbol,1,true) or A:find("f",1,true) -- sequence or folio pages
+ B1 = B:find(rangeSymbol,1,true) or B:find("f",1,true)
if A1 then a0 = tonumber(A:sub(1,A1-1)) end
if B1 then b0 = tonumber(B:sub(1,B1-1)) end
return tonumber(a0) < tonumber(b0) -- numeric
@@ -720,11 +765,12 @@
end
function getItem(str,n)
- if n >= 0 then
+
+ if (n >= 0) and str then
local item = (str:gsub("!.*", "%0!")
:gsub("[^!]*!", "", n)
:match("^([^!]*)!") )
- writeLog(1,"getItem ("..str..", "..n..") = "..item.."\n",2)
+-- writeLog(1,"getItem ("..str..", "..n..") = "..item.."\n",2)
return item
end
end
@@ -835,7 +881,7 @@
for i, str0 in ipairs(escape_chars) do -- undo the escape char setting
str = str:gsub(str0[2],str0[3])
end
- outFile:write(str)
+ outFile:write(str); indLines=indLines+1
lastItems = {}
lastItems[1] = Entry
else
@@ -859,7 +905,7 @@
for i, str0 in ipairs(escape_chars) do -- undo the escape char setting
str = string.gsub(str,str0[2],str0[3])
end
- outFile:write(str)
+ outFile:write(str); indLines=indLines+1
lastItems[i] = currentItems[i]
else
writeLog(1,"itemOutput: currentItems[i]: "..currentItems[i].."= lastItems[i]: "..lastItems[i].."\n",2)
@@ -887,7 +933,13 @@
return Ct(idx):match(expr)
end
+local SortStringCache = {}
function getSortString(Entry)
+ local sortString = SortStringCache[Entry]
+ if sortString ~= nil then
+ return sortString
+ end
+
local t = match(Entry)
-- require 'xindex-pretty'.dump(t) -- only for internal dump
local data = t[1]
@@ -900,6 +952,7 @@
data = data..t[i]
end
end
+ SortStringCache[Entry] = data
return data
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua new/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua 2019-04-07 23:21:59.000000000 +0200
+++ new/texmf-dist/tex/lualatex/xindex/xindex-pretty.lua 2019-11-22 23:19:47.000000000 +0100
@@ -5,7 +5,7 @@
--
if not modules then modules = { } end modules ['xindex-pretty'] = {
- version = 0.10,
+ version = 0.20,
comment = "dump a Lua table for debugging",
author = "Steve Donovan",
copyright = "Steve Donovan",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua new/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua
--- old/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua 1970-01-01 01:00:00.000000000 +0100
+++ new/texmf-dist/tex/lualatex/xindex/xindex-yannis.lua 2019-11-22 23:19:47.000000000 +0100
@@ -0,0 +1,260 @@
+-----------------------------------------------------------------------
+-- FILE: xindex-yannis.lua
+-- DESCRIPTION: configuration file for xindex.lua
+-- REQUIREMENTS:
+-- AUTHOR: Herbert Voß
+-- LICENSE: LPPL1.3
+-----------------------------------------------------------------------
+
+if not modules then modules = { } end modules ['xindex-yannis'] = {
+ version = 0.20,
+ comment = "main configuration to xindex.lua",
+ author = "Herbert Voss",
+ copyright = "Herbert Voss",
+ license = "LPPL 1.3"
+}
+
+itemPageDelimiter = "," -- Hello, 14
+compressPages = true -- something like 12--15, instaead of 12,13,14,15. the |( ... |) syntax is still valid
+fCompress = false -- 3f -> page 3, 4 and 3ff -> page 3, 4, 5
+minCompress = 2 -- 14--17 or
+rangeSymbol = "-" -- 14-17 instead of --
+numericPage = true -- for non numerical pagenumbers, like "VI-17"
+sublabels = {"", "-\\,", "--\\,", "---\\,"} -- for the (sub(sub(sub-items first one is for item
+pageNoPrefixDel = "" -- a delimiter for page numbers like "VI-17" -- not used !!!
+indexOpening = "" -- commands after \begin{theindex}
+idxnewletter = "\\textbf" -- Only valid if -n is not set
+
+
+--[[
+ Each character's position in this array-like table determines its 'priority'.
+ Several characters in the same slot have the same 'priority'.
+]]
+alphabet_lower = { -- for sorting
+ { 'α', 'ά', 'ὰ', 'ᾶ', 'ἀ', 'ἄ', 'ἂ', 'ἆ', 'ἁ', 'ἅ', 'ἃ', 'ἇ', 'ᾳ', 'ᾴ', 'ᾲ', 'ᾷ', 'ᾀ', 'ᾄ', 'ᾂ', 'ᾆ', 'ᾁ', 'ᾅ', 'ᾃ', 'ᾇ' },
+ { 'β', 'ϐ' },
+ { 'γ' },
+ { 'δ' },
+ { 'ε', 'έ', 'ὲ', 'ἐ', 'ἔ', 'ἒ', 'ἑ', 'ἕ', 'ἓ' },
+ { 'ζ' },
+ { 'η', 'ή', 'ὴ', 'ῆ', 'ἠ', 'ἤ', 'ἢ', 'ἦ', 'ἡ', 'ἥ', 'ἣ', 'ἧ', 'ῃ', 'ῄ', 'ῂ', 'ῇ', 'ᾐ', 'ᾔ', 'ᾒ', 'ᾖ', 'ᾑ', 'ᾕ', 'ᾓ', 'ᾗ' },
+ { 'θ' },
+ { 'ι', 'ί', 'ὶ', 'ῖ', 'ἰ', 'ἴ', 'ἲ', 'ἶ', 'ἱ', 'ἵ', 'ἳ', 'ἷ', 'ϊ', 'ΐ', 'ῒ', 'ῗ' },
+ { 'κ' },
+ { 'λ' },
+ { 'μ' },
+ { 'ν' },
+ { 'ξ' },
+ { 'ο', 'ό', 'ὸ', 'ὀ', 'ὄ', 'ὂ', 'ὁ', 'ὅ', 'ὃ' },
+ { 'π' },
+ { 'ρ' },
+ { 'σ', 'ς' },
+ { 'τ' },
+ { 'υ', 'ύ', 'ὺ', 'ῦ', 'ὐ', 'ὔ', 'ὒ', 'ὖ', 'ὑ', 'ὕ', 'ὓ', 'ὗ', 'ϋ', 'ΰ', 'ῢ', 'ῧ' },
+ { 'φ' },
+ { 'χ' },
+ { 'ψ' },
+ { 'ω', 'ώ', 'ὼ', 'ῶ', 'ὠ', 'ὤ', 'ὢ', 'ὦ', 'ὡ', 'ὥ', 'ὣ', 'ὧ', 'ῳ', 'ῴ', 'ῲ', 'ῷ', 'ᾠ', 'ᾤ', 'ᾢ', 'ᾦ', 'ᾡ', 'ᾥ', 'ᾣ', 'ᾧ' },
+ { 'a', 'á', 'à', 'ä', 'å', 'æ', },
+ { 'b' },
+ { 'c', 'ç' },
+ { 'd' },
+ { 'e', 'é', 'è', 'ë' },
+ { 'f' },
+ { 'g' },
+ { 'h' },
+ { 'i', 'í', 'ì', 'ï' },
+ { 'j' },
+ { 'k' },
+ { 'l' },
+ { 'm' },
+ { 'n', 'ñ' },
+ { 'o', 'ó', 'ò', 'ö', 'ø', 'œ'},
+ { 'p' },
+ { 'q' },
+ { 'r' },
+ { 's', 'š', 'ß' },
+ { 't' },
+ { 'u', 'ú', 'ù', 'ü' },
+ { 'v' },
+ { 'w' },
+ { 'x' },
+ { 'y', 'ý', 'ÿ' },
+ { 'z', 'ž' },
+ { 'а' },
+ { 'б' },
+ { 'в' },
+ { 'г', 'ѓ' },
+ { 'д' },
+ { 'е', 'ё' },
+ { 'ж' },
+ { 'з' },
+ { 'и', 'і' },
+ { 'й' },
+ { 'к' },
+ { 'л' },
+ { 'м' },
+ { 'н' },
+ { 'о' },
+ { 'п' },
+ { 'р' },
+ { 'с' },
+ { 'т' },
+ { 'у' },
+ { 'ф' },
+ { 'х' },
+ { 'ц' },
+ { 'ч' },
+ { 'ш' },
+ { 'щ' },
+ { 'ъ' },
+ { 'ы' },
+ { 'ь' },
+ { 'э' },
+ { 'ю' },
+ { 'я' },
+}
+alphabet_upper = { -- for sorting
+ { 'Α', 'Ά', 'Ἀ', 'Ἄ', 'Ἂ', 'Ἆ', 'Ἁ', 'Ἅ', 'Ἃ', 'Ἇ', 'ᾼ', 'ᾈ', 'ᾌ', 'ᾊ', 'ᾎ', 'ᾉ', 'ᾍ', 'ᾋ', 'ᾏ' },
+ { 'Β' },
+ { 'Γ' },
+ { 'Δ' },
+ { 'Ε', 'Έ', 'Ἐ', 'Ἔ', 'Ἒ', 'Ἑ', 'Ἕ', 'Ἓ' },
+ { 'Ζ' },
+ { 'Η', 'Ή', 'Ἠ', 'Ἤ', 'Ἢ', 'Ἦ', 'Ἡ', 'Ἥ', 'Ἣ', 'Ἧ', 'ῌ', 'ᾘ', 'ᾜ', 'ᾚ', 'ᾞ', 'ᾙ', 'ᾝ', 'ᾟ' },
+ { 'Θ' },
+ { 'Ι', 'Ί', 'Ἰ', 'Ἴ', 'Ἲ', 'Ἶ', 'Ἱ', 'Ἵ', 'Ἳ', 'Ἷ', 'Ϊ' },
+ { 'Κ' },
+ { 'Λ' },
+ { 'Μ' },
+ { 'Ν' },
+ { 'Ξ' },
+ { 'Ο', 'Ό', 'Ὀ', 'Ὄ', 'Ὂ', 'Ὁ', 'Ὅ', 'Ὃ' },
+ { 'Π' },
+ { 'Ρ' },
+ { 'Σ' },
+ { 'Τ' },
+ { 'Υ', 'Ύ', 'Ὑ', 'Ὕ', 'Ὓ', 'Ὗ', 'Ϋ' },
+ { 'Φ' },
+ { 'Χ' },
+ { 'Ψ' },
+ { 'Ω', 'Ώ', 'Ὠ', 'Ὤ', 'Ὢ', 'Ὦ', 'Ὡ', 'Ὥ', 'Ὣ', 'Ὧ', 'ῼ', 'ᾩ', 'ᾭ', 'ᾫ', 'ᾯ', 'ᾨ', 'ᾬ', 'ᾪ', 'ᾮ' },
+ { 'A', 'Á', 'À', 'Ä', 'Å', 'Æ'},
+ { 'B' },
+ { 'C', 'Ç' },
+ { 'D' },
+ { 'E', 'È', 'È', 'Ë' },
+ { 'F' },
+ { 'G' },
+ { 'H' },
+ { 'I', 'Í', 'Ì', 'Ï' },
+ { 'J' },
+ { 'K' },
+ { 'L' },
+ { 'M' },
+ { 'N', 'Ñ' },
+ { 'O', 'Ó', 'Ò', 'Ö', 'Ø','Œ' },
+ { 'P' },
+ { 'Q' },
+ { 'R' },
+ { 'S', 'Š' },
+ { 'T' },
+ { 'U', 'Ú', 'Ù', 'Ü' },
+ { 'V' },
+ { 'W' },
+ { 'X' },
+ { 'Y', 'Ý', 'Ÿ' },
+ { 'Z', 'Ž' },
+ { 'А' },
+ { 'Б' },
+ { 'В' },
+ { 'Г', 'Ѓ' },
+ { 'Д' },
+ { 'Е', 'Ё' },
+ { 'Ж' },
+ { 'З' },
+ { 'И', 'І' },
+ { 'Й' },
+ { 'К' },
+ { 'Л' },
+ { 'М' },
+ { 'Н' },
+ { 'О' },
+ { 'П' },
+ { 'Р' },
+ { 'С' },
+ { 'Т' },
+ { 'У' },
+ { 'Ф' },
+ { 'Х' },
+ { 'Ц' },
+ { 'Ч' },
+ { 'Ш' },
+ { 'Щ' },
+ { 'Ъ' },
+ { 'Ы' },
+ { 'Ь' },
+ { 'Э' },
+ { 'Ю' },
+ { 'Я' },
+}
+
+
+function SORTendhook(list)
+ print ("We have "..#list.." total list entries")
+ local greek = {}
+ local latin = {}
+ local cyrillic = {}
+ local symbols = {}
+ local numbers = {}
+ local others = {}
+ local firstChar, charType
+ local firstCharNumber
+ local v
+ for i=1,#list do
+ v = list[i]
+ firstChar = NormalizedUppercase(utf.sub(v["sortChar"],1,1))
+ v["sortChar"] = firstChar -- to be sure it is an uppercase unicode char
+ firstCharNumber = string.utfvalue(firstChar)
+ charType = getCharType(firstChar)
+-- print (utf.sub(v["sortChar"],1,1).."->"..firstChar.." ("..firstCharNumber..") ".." ("..charType..")")
+ if charType == 0 then
+ symbols[#symbols+1] = v
+ elseif charType == 1 then
+ numbers[#numbers+1] = v
+ elseif firstCharNumber > 0x052F then -- 0x052F is last cyrillic character
+ others[#others+1] = v
+ elseif firstCharNumber >= 0x0400 then -- 0x0400-0x052F cyrillic characters
+ cyrillic[#cyrillic+1] = v
+ elseif firstCharNumber <= 0x03FF then -- 0x03FF is last greek character
+ if firstCharNumber >= 0x0370 then
+ greek[#greek+1] = v -- 0x0370-0x03FF greek characters
+ elseif firstCharNumber <= 0x024F then
+ if firstCharNumber >= 0x041 then -- 0x041-0x024F latin character
+ latin[#latin+1] = v
+ else
+ others[#others+1] = v -- everything else
+ end
+ end
+ end
+ end
+ print ("We have "..#greek.." Greek entries")
+ print ("We have "..#latin.." Latin entries")
+ print ("We have "..#cyrillic.." Cyrillic entries")
+ print ("We have "..#symbols.." Symbol entries")
+ print ("We have "..#numbers.." Number entries")
+ print ("We have "..#others.." other entries")
+ list = {}
+ for i = 1,#greek do list[#list+1] = greek[i] end
+ list[#list]["Macro"] = "\\vspace{1cm}"
+ for i = 1,#latin do list[#list+1] = latin[i] end
+ list[#list]["Macro"] = "\\vspace{1cm}"
+ for i = 1,#cyrillic do list[#list+1] = cyrillic[i] end
+ list[#list]["Macro"] = "\\vspace{1cm}"
+ for i = 1,#symbols do list[#list+1] = symbols[i] end
+ for i = 1,#numbers do list[#list+1] = numbers[i] end
+ for i = 1,#others do list[#list+1] = others[i] end
+ print ("Sorted "..#list.." entries")
+ return list
+end
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xindex.tlpobj new/tlpkg/tlpobj/xindex.tlpobj
--- old/tlpkg/tlpobj/xindex.tlpobj 2019-04-08 01:40:53.000000000 +0200
+++ new/tlpkg/tlpobj/xindex.tlpobj 2019-11-23 01:54:44.000000000 +0100
@@ -1,12 +1,12 @@
name xindex
category Package
-revision 50842
+revision 52892
shortdesc Unicode compatible index generation
longdesc This package provides a unicode compatible index programm for
longdesc LaTeX. It needs Lua 5.3, which will be included in at least
longdesc LuaTeX 1.09 (TeX Live 2019).
depend xindex.ARCH
-runfiles size=47
+runfiles size=51
texmf-dist/scripts/xindex/xindex.lua
texmf-dist/tex/latex/xindex/xindex.sty
texmf-dist/tex/lualatex/xindex/xindex-DIN2.lua
@@ -19,10 +19,11 @@
texmf-dist/tex/lualatex/xindex/xindex-lib.lua
texmf-dist/tex/lualatex/xindex/xindex-pretty.lua
texmf-dist/tex/lualatex/xindex/xindex-unicode.lua
+ texmf-dist/tex/lualatex/xindex/xindex-yannis.lua
catalogue-contact-bugs https://gitlab.com/hvoss49/xindex/issues
catalogue-contact-repository https://gitlab.com/hvoss49/xindex
catalogue-ctan /indexing/xindex
-catalogue-date 2019-04-07 20:34:49 +0200
+catalogue-date 2019-11-22 19:39:46 +0100
catalogue-license lppl1.3
catalogue-topics index use-lua
-catalogue-version 0.10
+catalogue-version 0.20
++++++ xint.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/xint/CHANGES.html new/doc/generic/xint/CHANGES.html
--- old/doc/generic/xint/CHANGES.html 2019-04-07 23:22:39.000000000 +0200
+++ new/doc/generic/xint/CHANGES.html 2020-02-26 23:09:41.000000000 +0100
@@ -4,7 +4,7 @@
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <meta name="author" content="xint 1.3e" />
+ <meta name="author" content="xint 1.4b" />
<title>CHANGE LOG</title>
<style type="text/css">
code{white-space: pre-wrap;}
@@ -25,124 +25,144 @@
<body>
<header>
<h1 class="title">CHANGE LOG</h1>
-<p class="author">xint 1.3e</p>
-<p class="date">2019/04/05</p>
+<p class="author">xint 1.4b</p>
+<p class="date">2020/02/25</p>
</header>
<nav id="TOC">
<ul>
-<li><a href="#e-20190405"><code>1.3e (2019/04/05)</code></a><ul>
-<li><a href="#incompatible-changes">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features">Improvements and new features</a></li>
+<li><a href="#b-20200225"><code>1.4b (2020/02/25)</code></a><ul>
+<li><a href="#future">Future</a></li>
+<li><a href="#new-features">New features</a></li>
<li><a href="#bug-fixes">Bug fixes</a></li>
</ul></li>
-<li><a href="#d-20190106"><code>1.3d (2019/01/06)</code></a><ul>
-<li><a href="#incompatible-changes-1">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-1">Improvements and new features</a></li>
+<li><a href="#a-20200219"><code>1.4a (2020/02/19)</code></a><ul>
+<li><a href="#breaking-changes">Breaking changes</a></li>
+<li><a href="#new-features-1">New features</a></li>
<li><a href="#bug-fixes-1">Bug fixes</a></li>
</ul></li>
-<li><a href="#c-20180617"><code>1.3c (2018/06/17)</code></a><ul>
-<li><a href="#improvements-and-new-features-2">Improvements and new features</a></li>
+<li><a href="#section"><code>1.4 (2020/01/31)</code></a><ul>
+<li><a href="#breaking-changes-1">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features">Improvements and new features</a></li>
<li><a href="#bug-fixes-2">Bug fixes</a></li>
+<li><a href="#todo">TODO</a></li>
</ul></li>
-<li><a href="#b-20180518"><code>1.3b (2018/05/18)</code></a><ul>
+<li><a href="#f-20190910"><code>1.3f (2019/09/10)</code></a><ul>
+<li><a href="#improvements-and-new-features-1">Improvements and new features</a></li>
+<li><a href="#bug-fixes-3">Bug fixes</a></li>
+</ul></li>
+<li><a href="#e-20190405"><code>1.3e (2019/04/05)</code></a><ul>
+<li><a href="#breaking-changes-2">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-2">Improvements and new features</a></li>
+<li><a href="#bug-fixes-4">Bug fixes</a></li>
+</ul></li>
+<li><a href="#d-20190106"><code>1.3d (2019/01/06)</code></a><ul>
+<li><a href="#breaking-changes-3">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-3">Improvements and new features</a></li>
+<li><a href="#bug-fixes-5">Bug fixes</a></li>
</ul></li>
-<li><a href="#a-20180307"><code>1.3a (2018/03/07)</code></a><ul>
-<li><a href="#removed">Removed</a></li>
+<li><a href="#c-20180617"><code>1.3c (2018/06/17)</code></a><ul>
<li><a href="#improvements-and-new-features-4">Improvements and new features</a></li>
-<li><a href="#bug-fixes-3">Bug fixes</a></li>
+<li><a href="#bug-fixes-6">Bug fixes</a></li>
</ul></li>
-<li><a href="#section"><code>1.3 (2018/03/01)</code></a><ul>
-<li><a href="#incompatible-changes-2">Incompatible changes</a></li>
+<li><a href="#b-20180518"><code>1.3b (2018/05/18)</code></a><ul>
<li><a href="#improvements-and-new-features-5">Improvements and new features</a></li>
</ul></li>
-<li><a href="#q-20180206"><code>1.2q (2018/02/06)</code></a><ul>
+<li><a href="#a-20180307"><code>1.3a (2018/03/07)</code></a><ul>
+<li><a href="#removed">Removed</a></li>
<li><a href="#improvements-and-new-features-6">Improvements and new features</a></li>
-<li><a href="#bug-fixes-4">Bug fixes</a></li>
+<li><a href="#bug-fixes-7">Bug fixes</a></li>
</ul></li>
-<li><a href="#p-20171205"><code>1.2p (2017/12/05)</code></a><ul>
-<li><a href="#incompatible-changes-3">Incompatible changes</a></li>
+<li><a href="#section-1"><code>1.3 (2018/03/01)</code></a><ul>
+<li><a href="#breaking-changes-4">Breaking changes</a></li>
<li><a href="#improvements-and-new-features-7">Improvements and new features</a></li>
-<li><a href="#bug-fixes-5">Bug fixes</a></li>
+</ul></li>
+<li><a href="#q-20180206"><code>1.2q (2018/02/06)</code></a><ul>
+<li><a href="#improvements-and-new-features-8">Improvements and new features</a></li>
+<li><a href="#bug-fixes-8">Bug fixes</a></li>
+</ul></li>
+<li><a href="#p-20171205"><code>1.2p (2017/12/05)</code></a><ul>
+<li><a href="#breaking-changes-5">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-9">Improvements and new features</a></li>
+<li><a href="#bug-fixes-9">Bug fixes</a></li>
</ul></li>
<li><a href="#o-20170829"><code>1.2o (2017/08/29)</code></a><ul>
-<li><a href="#incompatible-changes-4">Incompatible changes</a></li>
+<li><a href="#breaking-changes-6">Breaking changes</a></li>
<li><a href="#deprecated">Deprecated</a></li>
</ul></li>
<li><a href="#n-20170806"><code>1.2n (2017/08/06)</code></a><ul>
-<li><a href="#incompatible-changes-5">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-8">Improvements and new features</a></li>
+<li><a href="#breaking-changes-7">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-10">Improvements and new features</a></li>
</ul></li>
<li><a href="#m-20170731"><code>1.2m (2017/07/31)</code></a><ul>
-<li><a href="#incompatible-changes-6">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-9">Improvements and new features</a></li>
-<li><a href="#bug-fixes-6">Bug fixes</a></li>
+<li><a href="#breaking-changes-8">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-11">Improvements and new features</a></li>
+<li><a href="#bug-fixes-10">Bug fixes</a></li>
</ul></li>
<li><a href="#l-20170726"><code>1.2l (2017/07/26)</code></a><ul>
<li><a href="#removed-1">Removed</a></li>
-<li><a href="#improvements-and-new-features-10">Improvements and new features</a></li>
-<li><a href="#bug-fixes-7">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-12">Improvements and new features</a></li>
+<li><a href="#bug-fixes-11">Bug fixes</a></li>
</ul></li>
<li><a href="#k-20170106"><code>1.2k (2017/01/06)</code></a><ul>
-<li><a href="#incompatible-changes-7">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-11">Improvements and new features</a></li>
-<li><a href="#bug-fixes-8">Bug fixes</a></li>
+<li><a href="#breaking-changes-9">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-13">Improvements and new features</a></li>
+<li><a href="#bug-fixes-12">Bug fixes</a></li>
</ul></li>
<li><a href="#j-20161222"><code>1.2j (2016/12/22)</code></a><ul>
-<li><a href="#improvements-and-new-features-12">Improvements and new features</a></li>
-<li><a href="#bug-fixes-9">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-14">Improvements and new features</a></li>
+<li><a href="#bug-fixes-13">Bug fixes</a></li>
</ul></li>
<li><a href="#i-20161213"><code>1.2i (2016/12/13)</code></a><ul>
-<li><a href="#incompatible-changes-8">Incompatible changes</a></li>
+<li><a href="#breaking-changes-10">Breaking changes</a></li>
<li><a href="#removed-2">Removed</a></li>
-<li><a href="#improvements-and-new-features-13">Improvements and new features</a></li>
-<li><a href="#bug-fixes-10">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-15">Improvements and new features</a></li>
+<li><a href="#bug-fixes-14">Bug fixes</a></li>
</ul></li>
<li><a href="#h-20161120"><code>1.2h (2016/11/20)</code></a><ul>
-<li><a href="#improvements-and-new-features-14">Improvements and new features</a></li>
-<li><a href="#bug-fixes-11">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-16">Improvements and new features</a></li>
+<li><a href="#bug-fixes-15">Bug fixes</a></li>
</ul></li>
<li><a href="#g-20160319"><code>1.2g (2016/03/19)</code></a><ul>
-<li><a href="#incompatible-changes-9">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-15">Improvements and new features</a></li>
+<li><a href="#breaking-changes-11">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-17">Improvements and new features</a></li>
</ul></li>
<li><a href="#f-20160312"><code>1.2f (2016/03/12)</code></a><ul>
-<li><a href="#incompatible-changes-10">Incompatible changes</a></li>
-<li><a href="#improvements-and-new-features-16">Improvements and new features</a></li>
-<li><a href="#bug-fixes-12">Bug fixes</a></li>
+<li><a href="#breaking-changes-12">Breaking changes</a></li>
+<li><a href="#improvements-and-new-features-18">Improvements and new features</a></li>
+<li><a href="#bug-fixes-16">Bug fixes</a></li>
</ul></li>
<li><a href="#e-20151122"><code>1.2e (2015/11/22)</code></a><ul>
-<li><a href="#improvements-and-new-features-17">Improvements and new features</a></li>
-<li><a href="#bug-fixes-13">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-19">Improvements and new features</a></li>
+<li><a href="#bug-fixes-17">Bug fixes</a></li>
</ul></li>
<li><a href="#d-20151118"><code>1.2d (2015/11/18)</code></a><ul>
-<li><a href="#improvements-and-new-features-18">Improvements and new features</a></li>
-<li><a href="#bug-fixes-14">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-20">Improvements and new features</a></li>
+<li><a href="#bug-fixes-18">Bug fixes</a></li>
</ul></li>
<li><a href="#c-20151116"><code>1.2c (2015/11/16)</code></a><ul>
-<li><a href="#improvements-and-new-features-19">Improvements and new features</a></li>
-<li><a href="#bug-fixes-15">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-21">Improvements and new features</a></li>
+<li><a href="#bug-fixes-19">Bug fixes</a></li>
</ul></li>
<li><a href="#b-20151029"><code>1.2b (2015/10/29)</code></a><ul>
-<li><a href="#bug-fixes-16">Bug fixes</a></li>
+<li><a href="#bug-fixes-20">Bug fixes</a></li>
</ul></li>
<li><a href="#a-20151019"><code>1.2a (2015/10/19)</code></a><ul>
-<li><a href="#improvements-and-new-features-20">Improvements and new features</a></li>
-<li><a href="#bug-fixes-17">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-22">Improvements and new features</a></li>
+<li><a href="#bug-fixes-21">Bug fixes</a></li>
</ul></li>
-<li><a href="#section-1"><code>1.2 (2015/10/10)</code></a><ul>
+<li><a href="#section-2"><code>1.2 (2015/10/10)</code></a><ul>
<li><a href="#removed-3">Removed</a></li>
-<li><a href="#improvements-and-new-features-21">Improvements and new features</a></li>
+<li><a href="#improvements-and-new-features-23">Improvements and new features</a></li>
</ul></li>
<li><a href="#c-20150912"><code>1.1c (2015/09/12)</code></a></li>
<li><a href="#b-20150831"><code>1.1b (2015/08/31)</code></a></li>
<li><a href="#a-20141107"><code>1.1a (2014/11/07)</code></a></li>
-<li><a href="#section-2"><code>1.1 (2014/10/28)</code></a><ul>
-<li><a href="#incompatible-changes-11">Incompatible changes</a></li>
+<li><a href="#section-3"><code>1.1 (2014/10/28)</code></a><ul>
+<li><a href="#breaking-changes-13">Breaking changes</a></li>
<li><a href="#removed-4">Removed</a></li>
<li><a href="#deprecated-1">Deprecated</a></li>
-<li><a href="#improvements-and-new-features-22">Improvements and new features</a></li>
-<li><a href="#bug-fixes-18">Bug fixes</a></li>
+<li><a href="#improvements-and-new-features-24">Improvements and new features</a></li>
+<li><a href="#bug-fixes-22">Bug fixes</a></li>
</ul></li>
<li><a href="#n-20140401"><code>1.09n (2014/04/01)</code></a></li>
<li><a href="#m-20140226"><code>1.09m (2014/02/26)</code></a></li>
@@ -160,46 +180,149 @@
<li><a href="#a-20130924"><code>1.09a (2013/09/24)</code></a></li>
<li><a href="#b-20130614"><code>1.08b (2013/06/14)</code></a></li>
<li><a href="#a-20130611"><code>1.08a (2013/06/11)</code></a></li>
-<li><a href="#section-3"><code>1.08 (2013/06/07)</code></a></li>
-<li><a href="#section-4"><code>1.07 (2013/05/25)</code></a></li>
+<li><a href="#section-4"><code>1.08 (2013/06/07)</code></a></li>
+<li><a href="#section-5"><code>1.07 (2013/05/25)</code></a></li>
<li><a href="#b-20130514"><code>1.06b (2013/05/14)</code></a></li>
-<li><a href="#section-5"><code>1.06 (2013/05/07)</code></a></li>
-<li><a href="#section-6"><code>1.05 (2013/05/01)</code></a></li>
-<li><a href="#section-7"><code>1.04 (2013/04/25)</code></a></li>
-<li><a href="#section-8"><code>1.03 (2013/04/14)</code></a></li>
-<li><a href="#section-9"><code>1.0 (2013/03/28)</code></a></li>
+<li><a href="#section-6"><code>1.06 (2013/05/07)</code></a></li>
+<li><a href="#section-7"><code>1.05 (2013/05/01)</code></a></li>
+<li><a href="#section-8"><code>1.04 (2013/04/25)</code></a></li>
+<li><a href="#section-9"><code>1.03 (2013/04/14)</code></a></li>
+<li><a href="#section-10"><code>1.0 (2013/03/28)</code></a></li>
</ul>
</nav>
-<pre><code>Source: xint.dtx 1.3e 2019/04/05 (doc 2019/04/05)
+<pre><code>Source: xint.dtx 1.4b 2020/02/25 (doc 2020/02/25)
Author: Jean-Francois Burnol
Info: Expandable operations on big integers, decimals, fractions
-License: LPPL 1.3e</code></pre>
-<h2 id="e-20190405"><code>1.3e (2019/04/05)</code></h2>
-<h3 id="incompatible-changes">Incompatible changes</h3>
+License: LPPL 1.3c</code></pre>
+<h2 id="b-20200225"><code>1.4b (2020/02/25)</code></h2>
+<p>All changes regard the <strong>xintexpr</strong> module.</p>
+<h3 id="future">Future</h3>
+<ul>
+<li><p><code>&</code>, <code>|</code>, (as Boolean operators) and <code>=</code> (as equality test) have long been deprecated in favour of <code>&&</code>, <code>||</code> and <code>==</code>. They will be removed at next major release.</p></li>
+<li><p>At next major release the power operators <code>**</code> and <code>^</code> will turn from left to right associative. I.e. <code>2**2**3</code> will give <code>256</code>, not <code>64</code>. This is to match with Python and l3fp.</p></li>
+<li><p><code>\thexintexpr</code> et al. (introduced at <code>1.2h</code> but not documented anymore for some time) will be removed at next major release. The original <code>\xinttheexpr</code> et al. have always been so much better names. Besides, since <code>1.4</code>, <code>\xintexpr</code> can be used directly in typesetting flow.</p></li>
+</ul>
+<h3 id="new-features">New features</h3>
+<ul>
+<li><p>Function <code>zip()</code> is modeled on Python’s function of the same name.</p></li>
+<li><p>Function <code>flat()</code> removes all nesting to produce a “one-dimensional” list having the exact same leaves (some possibly empty) as the original (in the same order).</p></li>
+<li><p>Chaining of comparison operators (e.g. <code>x<y<z</code>) as in Python (but all comparisons are done even if one is found false) and l3fp.</p></li>
+<li><p>Strangely, it was possible since <code>1.4</code>’s <code>\xintFracToSciE</code> to configure the separator between mantissas and exponents in the output of <code>\xinteval</code> but this did not modify the output of <code>\xintfloateval</code>. This is now fixed via the added <code>\xintPFloatE</code>.</p></li>
+</ul>
+<h3 id="bug-fixes">Bug fixes</h3>
+<ul>
+<li><code>\xintieval{[D]...}</code> with a negative <code>D</code> (a feature added at <code>1.4a</code>) used erroneously a catcode 12 <code>e</code> in output. And its customization via <code>\xintFracToSciE</code> remained without effect.</li>
+</ul>
+<h2 id="a-20200219"><code>1.4a (2020/02/19)</code></h2>
+<h3 id="breaking-changes">Breaking changes</h3>
+<ul>
+<li><strong>xintexpr</strong>: the macros implementing customization of <code>\xintthealign</code> have modified meanings and names.</li>
+</ul>
+<h3 id="new-features-1">New features</h3>
<ul>
-<li>When defining functions, sub-expressions can only use the <code>\xint(float)expr...\relax</code> syntax. One can <em>not</em> use there the <code>\xint(float)eval</code> wrappers (anyhow they add overhead and can be replaced with the lower level syntax).</li>
+<li><p><strong>xintexpr</strong>: <code>\xintthespaceseparated</code> (serves to provide suitable input to PS-Tricks <code>\listplot</code>).</p></li>
+<li><p><strong>xintexpr</strong>: the optional argument <code>[D]</code> to <code>\xintieval/\xintiexpr</code> can be negative, with the same meaning as the non-negative case, i.e. rounding to an integer multiple of <code>10^(-D)</code>.</p>
+<p>The same applies to the functions <code>trunc()</code> and <code>round()</code>. And to the <code>\xintTrunc</code>, <code>\xintRound</code>, <code>\xintiTrunc</code>, and <code>\xintiRound</code> macros of <strong>xintfrac</strong>.</p></li>
+</ul>
+<h3 id="bug-fixes-1">Bug fixes</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: usage of <code>round()</code> and <code>trunc()</code> within <code>\xintdeffunc</code> got broken at <code>1.4</code>.</p></li>
+<li><p><strong>xintexpr</strong>: <code>add()</code> and <code>mul()</code> were supposedly accepting the <code>omit</code>, <code>abort</code> and <code>break()</code> keywords since <code>1.4</code> but this was broken.</p></li>
+</ul>
+<h2 id="section"><code>1.4 (2020/01/31)</code></h2>
+<h3 id="breaking-changes-1">Breaking changes</h3>
+<p>Please note that this list may still be incomplete. If not otherly specified all items regard the <strong>xintexpr</strong> module.</p>
+<ul>
+<li><p>The <code>\expanded</code> primitive (TeXLive 2019) is <strong>required</strong>. This does not affect the macro layer <strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>, <strong>xinttools</strong> (yet).</p></li>
+<li><p>Formerly square brackets <code>[...]</code> were, on their own, not different from parentheses (and thus disappeared from the output), but they are now a genuine constructor of nested lists. For example <code>\xinteval{1, [2, [3, 4]], 5}</code> produces <code>1, [2, [3, 4]], 5</code> (recall this is free bloatware).</p></li>
+<li><p>The output of <code>\xinteval</code> has changed (besides containing brackets). It does not use anymore the so-called <em>raw</em> <strong>xintfrac</strong> format, i.e. things such as <code>A/B[N]</code> (which can still be used in input but are discouraged in <strong>xintexpr</strong> context), but scientific notation <code>AeN/B</code>. As formerly, the denominator is printed only if <code>B>1</code> and the scientific part is dropped if the exponent vanishes. In this way the output of <code>\xinteval</code> can be pasted to alternative software.</p></li>
+<li><p>The output format of <code>\xinthe\xintboolexpr</code> also has changed. It uses <code>True</code> and <code>False</code> (which are accepted on input), and this can easily be configured otherwise (also <code>true</code> and <code>false</code> are accepted on input).</p></li>
+<li><p>The “broadcasting” (as it turned out, à la <code>NumPy</code>) of scalar operations on one-dimensional “lists”, e.g <code>3*[1,3,5,7]+10</code> acting itemwise is <strong>dropped</strong>. It is hoped to implement such operations again in stronger form in future releases. Pre-existing alternative syntax is available, also to produce the bracketed (cf. next item) <code>[13,19,25,31]</code> which will be the output in future.</p></li>
+<li><p>The <code>divmod()</code> function now produces on output such a bracketed pair, but simultaneous assignment such as <code>\xintdefvar xq, xr = divmod(a,b);</code> will work transparently.</p></li>
+<li><p>The syntax for using conditionals in function declarations has changed. Now, one <em>must</em> use the <code>?</code> and <code>??</code> short-circuit boolean branching operators whereas in the past it was explained that the syntax had to use the <code>if()</code> and <code>ifsgn()</code> functions.</p></li>
+<li><p>Macros <code>\xintGCD</code>, <code>\xintLCM</code>, <code>\xintGCDof</code> and <code>\xintLCMof</code> formerly provided by <strong>xintgcd</strong> got moved to <strong>xintfrac</strong> (which is not loaded by <strong>xintgcd</strong>). Moreover, they were extended to handle general fractions on input but this also means that their output is now obiding by the raw <strong>xintfrac</strong> format. The integer only <code>\xintiiGCD</code>, <code>\xintiiLCM</code> also got moved out of <strong>xintgcd</strong>, but to <strong>xint</strong> which is now loaded automatically by <strong>xintgcd</strong>. The few remaining macros of <strong>xintgcd</strong> at least do not need other imports as <strong>xintgcd</strong> now loads also automatically <strong>xinttools</strong> which is a dependency for two of them.</p></li>
</ul>
<h3 id="improvements-and-new-features">Improvements and new features</h3>
+<p>Please note that this list is currently incomplete. For more information look at the user manual and the documented source code <code>sourcexint.pdf</code>.</p>
+<p>Unless otherwise specified all changes commented upon here regard <strong>xintexpr</strong>. Important: all the new syntax is to be considered experimental. The author may change some names in future release, or even the interface (whether to use semi-colons or colons etc…).</p>
+<ul>
+<li><p>The <code>\csname</code> encapsulation technique used since <strong>xintexpr</strong> initial release (<code>1.07 2013/05/25</code>) to move around possibly large data during expansion-only operations is replaced with methods based on the <code>\expanded</code> engine primitive. The latter is available in all major engines since TeXLive 2019.</p>
+<p>Formerly, and with default memory settings, one would typically saturate the string pool memory after about of the order of 50,000 independent floating point evaluations of expressions of average complexity on 16-digits numbers.</p>
+<p>There is thus no string pool memory impact at all but one can now hit TeX’s main memory limit (which typically stands at 5,000,000 words) from defining large variables or generating on the fly large data. TeX distributions have a configuration file allowing to enlarge TeX memory parameters and regenerate the (eTeX based) formats.</p></li>
+<li><p>The package supports input and output of arbitrarily <em>nested lists</em>, a.k.a. <em>oples</em> or <em>nlists</em>, with <code>[...]</code> as the constructor of <em>bracketed lists</em>, a.k.a <em>nut-ples</em>. Operations on these objects (as briefly surveyed in later items) are inspired from syntax and functionalities of <code>NumPy</code>’s <em>ndarrays</em>. Our <em>oples</em> (hence also their packaged form <em>nut-ples</em>) may have <em>leaves</em> at varying depths rather than obeying an N-dimensional hyperrectangular shape. But the syntax does provide specific constructors for <em>ndlists</em> (i.e. hyperrectangular <em>oples</em> or <em>nut-ples</em>).</p>
+<p>In a (distant?) future, perhaps <strong>xintexpr</strong> itself or a third-party package will provide an interface, say <code>\xintstorearray</code>, <code>\xintgetarray</code>, to store (which can not be expandable) and retrieve (which can be expandable and thus be embedded inside expressions parsed by <code>\xintexpr</code>, <code>\xintiiexpr</code> or <code>\xintfloatexpr</code>) such <em>ndlists</em> from TeX memory. This is why the package does not use the word <em>ndarray</em> and reserves it for such memory stored objects.</p></li>
+<li><p>The <code>*</code> serves as <em>unpacking</em> operator on <em>nut-ples</em>, i.e. reversing the <code>[]</code> bracketing of an <em>ople</em>.</p></li>
+<li><p><em>oples</em> have no exact equivalent in <code>Python</code>. For example <strong>xintexpr</strong> allows <code>foo(Var1, x)</code> if <code>foo</code> is a function of 4 variables and <code>Var1</code> is a variable producing a length 3 <em>ople</em>, or <code>foo(Var2)</code> if <code>Var2</code> is a variable producing a length 4 <em>ople</em>. Python would require here to use explicitly the <code>*</code>-unpacking notation on some “packed” objects.</p>
+<p>Variable and function values may be <em>oples</em> (even <em>nil</em>), but in function declarations variables must stand for <em>one-ples</em>, i.e. either <em>numbers</em> or <em>nut-ples</em> (as there is no non-ambiguous way to split e.g. 5 arguments into two separate <em>oples</em>).</p></li>
+<li><p>Simultaneous assignment to at least two variables via <code>\xintdefvar</code> et al. automatically unpacks the assigned value if it is a <em>one-ple</em>. If this value was in fact a <em>number</em>, low-level errors will result shortly afterwards as no check is done if the unpacking was illicit. (Such checks exist in the codebase, but have not yet been integrated into <code>\xintdefvar</code> by laziness).</p></li>
+<li><p>The <code>NumPy</code> concept and syntax for nested slicing and item selection are implemented. Currently <em>stepping</em> and the <em>Ellipsis object</em> are not yet available. Only so-called basic slicing is currently supported. (The author has not yet read the section of <code>NumPy</code> documentation on so-called <em>advanced indexing</em>).</p></li>
+<li><p>The <em>broadcasting</em> of scalar operations, such as itemwise addition or multiplication of <em>nut-ples</em> of the same shape is <strong>not yet implemented</strong>.</p></li>
+<li><p>Slicing and indexing apply also at top level to the <em>oples</em> with behaviour conforming to intuitive expectations (see user manual); if it turns out the <em>ople</em> is in fact a <em>nut-ple</em>, the top-level slicing/indexing switches to the <code>Python/NumPy</code> conventions, i.e. it operates inside the brackets for slicing and removes brackets if indexing.</p></li>
+<li><p>The syntax <code>ndseq(expression in x, y, ..., x = values; y = values; ...)</code> constructs a (bracketed) <em>ndlist</em> by evaluation the expression on all possible Cartesian n-uples, where the first variable indexes the first axis, the second the next, etc…</p></li>
+<li><p>The <code>ndmap(foo, values1; values2; ...; valuesN)</code> syntax constructs a (bracketed) <em>ndlist</em> by evaluating the function <code>foo</code> on all elements of the cartesian product of the given (one-dimensional) value lists.</p></li>
+<li><p>The two concepts of <code>\xintdeffunc</code> (for recursive definitions) and <code>\xintdefefunc</code> (for functions which expand immediately in other function declarations) have been merged. The <code>\xintdefefunc</code> et al. are deprecated and kept as aliases for <code>\xintdeffunc</code> et al.</p></li>
+<li><p><code>\xintdefufunc</code> allows to define so-called <em>universal functions</em>, i.e. functions <code>foo</code> such that <code>foo(myople)</code> will apply itemwise at arbitrary depth in the nested structure. The function <code>foo</code> is allowed to produce from a scalar an <em>ople</em>…</p></li>
+<li><p>The variables in function declarations can now be multi-letter words.</p></li>
+<li><p>The last positional variable in a function declaration can be prefixed with a <code>*</code> meaning exactly as in Python (<em>variadic</em> function argument) that it stands for a one-dimensional <em>nut-ple</em> receiving all remaining arguments from the function call beyond the first positional ones. It is thus an optional argument, but syntax for named optional arguments with default values is not yet implemented.</p></li>
+<li><p>Dummy variables used in constructors can also be multi-letter words, if they have been declared as such.</p></li>
+<li><p>In variable and function declarations, if the expression contains inner semi-colons, it is not needed anymore to brace them to avoid mis-interpretation as the final semi-colon which is mandated by the syntax to serve as expression terminator.</p></li>
+<li><p><code>subsm(expression, var1 = value1; var2 = value2; ...)</code> provides a leaner syntax for multiple substitutions; they must be independent, though.</p></li>
+<li><p><code>subsn(expression, var1 = value1; var2 = value2; ...)</code> provides a leaner syntax for nested substitutions, i.e., each <code>valueJ</code> may be an expression using the dummy variables <code>varK</code> with <code>K>J</code>. And finally of course the evaluated expression can refer to all variables.</p></li>
+<li><p><code>\xintthealign\xintexpr...\relax</code> (or with <code>\xintfloatexpr</code> or <code>\xintiiexpr</code> or <code>\xintboolexpr</code>…) will use a TeX alignment to display <em>oples</em>. The output (for regular N-dimensional lists) looks very similar to what <code>Python/NumPy</code> produces in interactive session. This is entirely configurable and can also be set-up to be used for writing into external files.</p>
+<p>Attention that <code>\xintthealign</code> only works if followed by <code>\xintexpr</code> et al., not by <code>\xinteval{}</code>.</p></li>
+<li><p>It is now possible to use <code>\xintexpr...\relax</code> directly for typesetting. The syntax <code>\xinteval{...}</code> or <code>\xintthe\xintexpr...\relax</code> is needed only if one wants the expansion to give the explicit digits, but <code>\xintexpr...\relax</code> by itself will typeset as would have the other ones. Further it can be used in so-called moving arguments, because when output to an external file it uses only characters with standard catcodes (and produces the same protected and re-tokenizable result it would in an <code>\edef</code>.)</p>
+<p>As formerly, <code>\xintexpr...\relax</code> is the preferred way to include an expression into another one. Using <code>\xinteval</code> is a waste because it forces the outer parser to re-digest all the digits (or now also the square brackets).</p></li>
+<li><p>The output format of <code>\xintfloateval</code> with scientific notation has not changed (apart from possible presence of bracketed lists), but the author hesitates because the <em>prettifying</em> it does by default is not really adapted to display of arrays (see <code>\xintthealign</code>). Anyway, this is configurable by the user. It is possible to specify whether to use <code>e</code> or <code>E</code>.</p></li>
+<li><p>Function declarations are able to parse a much wider part of the syntax, but some severe limitations remain. Refer to the user manual for related information.</p></li>
+<li><p>We have made an effort on some error messages, and when working interactively in a shell it may even be sometimes possible to insert for example a correct variable or function name in place of the not recognized one. But don’t expect miracles when trying to intervene in the midst of a purely expandable expansion…</p></li>
+</ul>
+<h3 id="bug-fixes-2">Bug fixes</h3>
+<p>Bugs? Those identified in <code>1.3f</code> were almost features. As per <code>1.4</code> the code base of <strong>xintexpr</strong> received multiple successive core refactorings and added numerous new features, and our test suite although significantly enlarged is not yet extensive enough. Please report bugs by mail.</p>
+<h3 id="todo">TODO</h3>
+<ul>
+<li><p>The long delayed overhaul of how floating point numbers are handled is delayed again. It has remained basically identical to its initial provisory version from <code>1.07 2013/05/25</code> (which was based upon what was originally only a set of expandable macros for computations with big integers), and suffers from the author lack of knowledge of the notion of “data type” in modern programming. Indeed, he never took a CS class, and disables JavaScript in his browser (or allows only select non-tracking scripts, a rare beast in modern days).</p></li>
+<li><p>Prior to integrating all of <code>NumPy</code>, it is envisioned to start with matrix algebra first.</p></li>
+</ul>
+<h2 id="f-20190910"><code>1.3f (2019/09/10)</code></h2>
+<h3 id="improvements-and-new-features-1">Improvements and new features</h3>
+<ul>
+<li><p><strong>xintfrac</strong>: <code>\xintDigits = P;</code> syntax (i.e. without a colon) is now accepted in addition to <code>\xintDigits := P;</code>.</p>
+<p>Document that the ending semi-colon can not be an active character and that it has always been allowed to use in its place a non-expanding token e.g. <code>\xintDigits := 32\relax</code>.</p>
+<p>Add <code>\xintSetDigits</code>.</p></li>
+<li><p><strong>xintexpr</strong>: add starred variants <code>\xintDigits*</code> and <code>\xintSetDigits*</code> which execute <code>\xintreloadxinttrig</code>.</p>
+<p>Revert 1.3e ban on usage of <code>\xinteval</code> et al. inside expressions by <code>\xintdeffunc</code>. And make them usable also inside macro definitions via <code>\xintNewExpr</code>.</p></li>
+</ul>
+<h3 id="bug-fixes-3">Bug fixes</h3>
+<ul>
+<li><p><strong>xintexpr</strong>: fix bug preventing usage of <code>\xintdefefunc</code> to define a function without variables.</p>
+<p>Fix some issue with <code>\xintfloatexpr[D]..\relax</code> if used inside an expression parsed by <code>\xintdeffunc</code> et al.</p></li>
+</ul>
+<h2 id="e-20190405"><code>1.3e (2019/04/05)</code></h2>
+<h3 id="breaking-changes-2">Breaking changes</h3>
+<ul>
+<li>(<em>reverted at 1.3f</em>) When defining functions, sub-expressions can only use the <code>\xint(float)expr...\relax</code> syntax. One can not use there the <code>\xint(float)eval</code> wrappers.</li>
+</ul>
+<h3 id="improvements-and-new-features-2">Improvements and new features</h3>
<ul>
-<li>The <strong>xinttrig</strong> library is automatically loaded by <strong>xintexpr</strong>. It provides direct and inverse trigonometrical functions using either degrees or radians with a precision of up to (a bit less than) 60 digits. It is for the most part implemented using high level user interface, but will probably get some optimizations in future (and perhaps extension to more digits).</li>
-<li>The <strong>xintlog</strong> library is automatically loaded by <strong>xintexpr</strong>. It uses <a href="http://ctan.org/pkg/poormanlog">poormanlog</a> to provide logarithms and exponentials with almost 9 digits of precision. Extended precision is for a future release.</li>
+<li><p>The <strong>xinttrig</strong> library is automatically loaded by <strong>xintexpr</strong>. It provides direct and inverse trigonometrical functions using either degrees or radians with a precision of up to (a bit less than) 60 digits. It is for the most part implemented using high level user interface, but will probably get some optimizations in future (and perhaps extension to more digits).</p></li>
+<li><p>The <strong>xintlog</strong> library is automatically loaded by <strong>xintexpr</strong>. It uses <a href="http://ctan.org/pkg/poormanlog">poormanlog</a> to provide logarithms and exponentials with almost 9 digits of precision. Extended precision is for a future release.</p></li>
<li><p><strong>xintexpr</strong>: <code>\xintdefefunc</code>, <code>\xintdeffloatefunc</code>, <code>\xintdefiiefunc</code> define functions which are not protected against expansion in the definition of other functions; refer to <code>xint.pdf</code> for the related explanations.</p>
-Notice that whole area of <code>\xintdef(e)func</code>, <code>\xintNewExpr</code>, <code>\xintNewFunction</code> is complex and to be considered still as work in progress as it has a number of shortcomings.</li>
-<li><strong>xintexpr</strong>: <code>inv()</code>, <code>ilog10()</code>, <code>sfloat()</code>, behaviour of <code>qfloat()</code> slightly modified.</li>
-<li><strong>xintexpr</strong>: <code>\xintensuredummy</code>, <code>\xintrestorelettervar</code>.</li>
+<p>Notice that whole area of <code>\xintdef(e)func</code>, <code>\xintNewExpr</code>, <code>\xintNewFunction</code> is complex and to be considered still as work in progress as it has a number of shortcomings.</p></li>
+<li><p><strong>xintexpr</strong>: <code>inv()</code>, <code>ilog10()</code>, <code>sfloat()</code>, behaviour of <code>qfloat()</code> slightly modified.</p></li>
+<li><p><strong>xintexpr</strong>: <code>\xintensuredummy</code>, <code>\xintrestorelettervar</code>.</p></li>
<li><p>The optional argument of <code>\xintfloatexpr</code> or <code>\xintfloateval</code> (it must be at start of braced argument) can be negative; it then means to trim (and round) from the output at float precision that many least significant digits.</p></li>
</ul>
-<h3 id="bug-fixes">Bug fixes</h3>
+<h3 id="bug-fixes-4">Bug fixes</h3>
<ul>
<li>Some bugfixes related to user functions with no variables at all; they were dysfunctional.</li>
</ul>
<h2 id="d-20190106"><code>1.3d (2019/01/06)</code></h2>
-<h3 id="incompatible-changes-1">Incompatible changes</h3>
+<h3 id="breaking-changes-3">Breaking changes</h3>
<ul>
<li><p><strong>xintexpr</strong>: the <code>gcd()</code> and <code>lcm()</code> functions formerly converted their arguments to integers via <code>\xintNum</code>. They now handle general input with no such modification.</p></li>
<li><p><strong>xintexpr</strong>: former <code>\xinteval</code>, <code>\xintieval</code>, <code>\xintiieval</code>, and <code>\xintfloateval</code> renamed to <code>\xintexpro</code>, <code>\xintiexpro</code>, <code>\xintiiexpro</code>, and <code>\xintfloatexpro</code>.</p></li>
</ul>
-<h3 id="improvements-and-new-features-1">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-3">Improvements and new features</h3>
<ul>
<li><p><strong>xintexpr</strong>: the <code>gcd()</code> and <code>lcm()</code> multi-arguments functions have been refactored to handle general fractions. The dependency on <strong>xintgcd</strong> is removed.</p></li>
<li><p><strong>xintexpr</strong>: three-way branching <code>\xintifsgnexpr</code>, <code>\xintifsgnfloatexpr</code>, <code>\xintifsgniiexpr</code> conditional macros.</p></li>
@@ -208,12 +331,12 @@
<li><p><strong>xintexpr</strong>: functions <code>isone()</code> and <code>isint()</code>.</p></li>
<li><p><strong>xintexpr</strong>: <code>\xinteval</code>, <code>\xintieval</code>, <code>\xintiieval</code>, and <code>\xintfloateval</code> as synonyms to <code>\xinttheexpr...\relax</code> etc…, but with the (comma-separated) expression as a usual braced macro argument.</p></li>
</ul>
-<h3 id="bug-fixes-1">Bug fixes</h3>
+<h3 id="bug-fixes-5">Bug fixes</h3>
<ul>
<li><strong>xintcore</strong>, <strong>xintexpr</strong> : division in <code>\xintiiexpr</code> was broken for a zero dividend and a one-digit divisor (e.g. <code>0//7</code>) since <code>1.2p</code> due to a bug in <code>\xintiiDivMod</code> for such arguments. The bug was signaled (thanks to Kpym for report) and fixed shortly after <code>1.3c</code> release but I then completely forgot to upload a bugfix release to CTAN at that time, apologies for that.</li>
</ul>
<h2 id="c-20180617"><code>1.3c (2018/06/17)</code></h2>
-<h3 id="improvements-and-new-features-2">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-4">Improvements and new features</h3>
<ul>
<li><p><strong>xintexpr</strong>: with <code>\xintglobaldefstrue</code>, <code>\xintdefvar</code>, <code>\xintdeffunc</code>, <code>\xintNewExpr</code> et al. make definitions with global scope.</p></li>
<li><p><strong>xintexpr</strong>: <code>qraw()</code> for fast input of (very many) comma separated numbers (in suitable raw format).</p></li>
@@ -221,12 +344,12 @@
<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>, <code>\xintdeffunc</code> and their variants try to set the catcode of the semi-colon which delimits their arguments; of course this will not work if that catcode is already frozen.</p></li>
<li><p><code>\xintUniformDeviate</code> is better documented and <code>sourcexint.pdf</code> is better hyperlinked and includes indices for the macros defined by each package.</p></li>
</ul>
-<h3 id="bug-fixes-2">Bug fixes</h3>
+<h3 id="bug-fixes-6">Bug fixes</h3>
<ul>
<li><strong>xintfrac</strong>: since <code>1.3</code> release, it loaded <strong>xintgcd</strong> in contradiction to what the documentation says (hence also <strong>xintexpr</strong> loaded <strong>xintgcd</strong> automatically). There is no actual dependency so the loading is removed for now.</li>
</ul>
<h2 id="b-20180518"><code>1.3b (2018/05/18)</code></h2>
-<h3 id="improvements-and-new-features-3">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-5">Improvements and new features</h3>
<p>All additions related to randomness are marked as work-in-progress. They require an engine providing the <code>\(pdf)uniformdeviate</code> primitive.</p>
<ul>
<li><p><strong>xintkernel</strong>: <code>\xintUniformDeviate</code>.</p></li>
@@ -241,41 +364,41 @@
<ul>
<li><strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>: removal of the internal macros which were used at <code>1.2o</code> to add a deprecation mechanism; all deprecated macros have been removed at <code>1.3</code> so there was no reason to keep the code used for deprecating them.</li>
</ul>
-<h3 id="improvements-and-new-features-4">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-6">Improvements and new features</h3>
<ul>
<li><p><strong>xintexpr</strong>: new conditionals <code>ifone()</code> and <code>ifint()</code>.</p></li>
<li><p><strong>xintfrac</strong>: <code>\xintREZ</code> is faster on inputs having one hundred digits or more.</p></li>
<li><p>Added to the user manual mention of macros such as <code>\xintDivFloor</code>, <code>\xintMod</code>, <code>\xintModTrunc</code>, which had been left out so far.</p></li>
</ul>
-<h3 id="bug-fixes-3">Bug fixes</h3>
+<h3 id="bug-fixes-7">Bug fixes</h3>
<ul>
<li><strong>xintexpr</strong>: the mechanism for adjunction to the expression parsers of user defined functions was refactored and improved at previous release <code>1.3</code>: in particular recursive definitions became possible. But an oversight made these recursive functions quite inefficient (to remain polite.) This release fixes the problem.</li>
</ul>
-<h2 id="section"><code>1.3 (2018/03/01)</code></h2>
-<h3 id="incompatible-changes-2">Incompatible changes</h3>
+<h2 id="section-1"><code>1.3 (2018/03/01)</code></h2>
+<h3 id="breaking-changes-4">Breaking changes</h3>
<ul>
<li><p><strong>xintcore</strong>, <strong>xint</strong>, <strong>xintfrac</strong>: all macros deprecated at <code>1.2o</code> got removed.</p></li>
<li><p><strong>xintfrac</strong>: addition and subtraction of <code>a/b</code> and <code>c/d</code> now use the l.c.m. of the denominators. Similarly the macro supporting the modulo operator <code>/:</code> uses a l.c.m. for the denominator of the result.</p></li>
<li><p><strong>xintexpr</strong>: the addition, subtraction, modulo <code>/:</code>, and the <code>mod()</code> and <code>divmod()</code> functions produce generally smaller denominators (see previous item).</p></li>
<li><p><strong>xintexpr</strong>: formerly, the internal macros which are internally associated to user-declared functions were using comma separated parameter texts. They now do not use such commas (their meanings, which may again change in future, are written for information to the log under <code>\xintverbosetrue</code>).</p></li>
</ul>
-<h3 id="improvements-and-new-features-5">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-7">Improvements and new features</h3>
<ul>
<li><p><strong>xintexpr</strong>: user-defined functions may now be of a recursive nature. This was made possible by a refactoring of the <code>\xintNewExpr</code> mechanism. It became both leaner and more extensive than formerly.</p></li>
<li><p><strong>xintfrac</strong>: new macros <code>\xintPIrr</code> and <code>\xintDecToString</code>. The latter is a backport of a <code>polexpr 0.4</code> utility, and it is to be considered unstable.</p></li>
<li><p><strong>xintexpr</strong>: new function <code>preduce()</code> associated with <code>\xintPIrr</code>.</p></li>
</ul>
<h2 id="q-20180206"><code>1.2q (2018/02/06)</code></h2>
-<h3 id="improvements-and-new-features-6">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-8">Improvements and new features</h3>
<ul>
<li><strong>xintexpr</strong>: tacit multiplication extended to cases such as <code>3!4!5!</code> or <code>(1+2)3</code>.</li>
</ul>
-<h3 id="bug-fixes-4">Bug fixes</h3>
+<h3 id="bug-fixes-8">Bug fixes</h3>
<ul>
<li><strong>xintcore</strong>: sadly, refactoring at <code>1.2l</code> of subtraction left an extra character in an inner macro causing breakage in some rare circumstances. This should not have escaped our test suite!</li>
</ul>
<h2 id="p-20171205"><code>1.2p (2017/12/05)</code></h2>
-<h3 id="incompatible-changes-3">Incompatible changes</h3>
+<h3 id="breaking-changes-5">Breaking changes</h3>
<ul>
<li><p><strong>xintgcd</strong>: <code>\xintBezout{a}{b}</code>’s output consists of <code>{u}{v}{d}</code> with <code>u*a+v*b==d</code>, with <code>d</code> the GCD. Formerly it was <code>{a}{b}{u}{v}{d}</code>, and with <code>u*a-v*b==d</code>.</p></li>
<li><p><strong>xintgcd</strong>: <code>\xintBezout{0}{0}</code> expands to <code>{0}{0}{0}</code>. Formerly (since <code>1.2l</code>) it raised <code>InvalidOperation</code>.</p></li>
@@ -283,13 +406,13 @@
<li><p><strong>xintfrac</strong>: <code>\xintMod</code> is now associated with floored division. The former meaning is available as <code>\xintModTrunc</code>.</p></li>
<li><p><strong>xintexpr</strong>: the <code>//</code> operator and its associated modulo <code>'mod'</code> (or <code>/:</code>) now correspond to floored division, like the Python language <code>//</code>, <code>%</code>, and <code>divmod(x, y)</code>. Formerly they had been associated to truncated division. This is breaking change for operands of opposite signs.</p></li>
</ul>
-<h3 id="improvements-and-new-features-7">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-9">Improvements and new features</h3>
<ul>
<li><p><strong>xinttools</strong>: <code>\xintListWithSep</code>, which had remained unchanged since its introduction at <code>1.04 (2013/04/25)</code>, was rewritten for increased speed.</p></li>
<li><p><strong>xintexpr</strong>: <code>\xintdefvar</code>’s syntax is extended to allow simultaneous assignments. Examples: <code>\xintdefvar x1, x2, x3 := 1, 3**10, 3**20;</code> or <code>\xintdefiivar A, B := B, A 'mod' B;</code> for already defined variables <code>A</code> and <code>B</code>.</p></li>
<li><p><strong>xintexpr</strong>: added <code>divmod()</code> to the built-in functions. It is associated with floored division, like the Python language <code>divmod()</code>. Related support macros added to <strong>xintcore</strong>, and <strong>xintfrac</strong>.</p></li>
</ul>
-<h3 id="bug-fixes-5">Bug fixes</h3>
+<h3 id="bug-fixes-9">Bug fixes</h3>
<ul>
<li><p><strong>xintgcd</strong>: <code>\xintBezout{6}{3}</code> (for example) expanded to <code>{6}{3}{-0}{-1}{3}</code>, but the <code>-0</code> should have been <code>0</code>.</p></li>
<li><p><strong>xintgcd</strong>: it still used macro <code>\xintiAbs</code> although the latter had been deprecated from <strong>xintcore</strong>.</p></li>
@@ -297,7 +420,7 @@
<li><p>various documentation fixes; in particular, the partial dependency of <strong>xintcfrac</strong> on <strong>xinttools</strong> had not been mentioned.</p></li>
</ul>
<h2 id="o-20170829"><code>1.2o (2017/08/29)</code></h2>
-<h3 id="incompatible-changes-4">Incompatible changes</h3>
+<h3 id="breaking-changes-6">Breaking changes</h3>
<ul>
<li><strong>xint</strong>: <code>\xintAND</code>, <code>\xintOR</code>, … and similar Boolean logic macros do not apply anymore <code>\xintNum</code> (or <code>\xintRaw</code> if <strong>xintfrac</strong> is loaded), to their arguments (often, from internal usage of <code>\xintSgn</code>), but only f-expand them (using e.g. <code>\xintiiSgn</code>). This is kept un-modified even if loading <strong>xintfrac</strong>.</li>
</ul>
@@ -313,26 +436,26 @@
<li><p><strong>xint</strong>: <code>\xintNot</code> was renamed to <code>\xintNOT</code>, former denomination is deprecated. See also item about Boolean logic macros in the <em>Incompatible Changes</em> section.</p></li>
</ul>
<h2 id="n-20170806"><code>1.2n (2017/08/06)</code></h2>
-<h3 id="incompatible-changes-5">Incompatible changes</h3>
+<h3 id="breaking-changes-7">Breaking changes</h3>
<ul>
<li><strong>xintbinhex</strong> does not load package <strong>xintcore</strong> anymore, but only <strong>xintkernel</strong>.</li>
</ul>
-<h3 id="improvements-and-new-features-8">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-10">Improvements and new features</h3>
<ul>
<li><p><strong>xintbinhex</strong> has only <strong>xintkernel</strong> as dependency.</p></li>
<li><p>Macros of <strong>xintbinhex</strong> have been improved for speed and increased maximal sizes of allowable inputs.</p></li>
</ul>
<h2 id="m-20170731"><code>1.2m (2017/07/31)</code></h2>
-<h3 id="incompatible-changes-6">Incompatible changes</h3>
+<h3 id="breaking-changes-8">Breaking changes</h3>
<ul>
<li><p><strong>xintbinhex</strong>: the length of the input is now limited. The maximum size depends on the macro and ranges from about <code>4000</code> to about <code>19900</code> digits.</p></li>
<li><p><strong>xintbinhex</strong>: <code>\xintCHexToBin</code> is now the variant of <code>\xintHexToBin</code> which does not remove leading binary zeroes: <code>N</code> hex-digits give on output exactly <code>4N</code> binary digits.</p></li>
</ul>
-<h3 id="improvements-and-new-features-9">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-11">Improvements and new features</h3>
<ul>
<li><strong>xintbinhex</strong>: all macros have been rewritten using techniques from the 1.2 release (they had remained unmodified since <code>1.08</code> of <code>2013/06/07</code>.) The new macros are faster but limited to a few thousand digits. The <code>1.08</code> routines could handle tens of thousands of digits, but not in a reasonable time.</li>
</ul>
-<h3 id="bug-fixes-6">Bug fixes</h3>
+<h3 id="bug-fixes-10">Bug fixes</h3>
<ul>
<li><p>user manual: the <code>Changes</code> section wrongly stated at <code>1.2l</code> that the macros of <strong>xintbinhex</strong> had been made robust against non terminated input such as <code>\number\mathcode`\-</code>. Unfortunately the author fell into the trap of believing his own documentation and he forgot to actually implement the change. Now done.</p></li>
<li><p>user manual: the PDF bookmarks were messed up.</p></li>
@@ -344,7 +467,7 @@
<li><p><code>\xintiiSumExpr</code>, <code>\xintiiPrdExpr</code> (<strong>xint</strong>) and <code>\xintSumExpr</code>, <code>\xintPrdExpr</code> (<strong>xintfrac</strong>). They had not been formally deprecated, but had been left un-documented since <code>1.09d (2013/10/22)</code>.</p></li>
<li><p>internal macro <code>\xint_gob_til_xint_relax</code> removed.</p></li>
</ul>
-<h3 id="improvements-and-new-features-10">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-12">Improvements and new features</h3>
<ul>
<li><p>the underscore character <code>_</code> is accepted by the <strong>xintexpr</strong> parsers as a digit separator (the space character already could be used for improved readability of big numbers). It is not allowed as <em>first</em> character of a number, as it would then be mis-interpreted as the start of a possible variable name.</p></li>
<li><p>some refactoring in <strong>xintcore</strong> auxiliary routines and in <code>\xintiiSub</code> and <code>\xintiiCmp</code> for some small efficiency gains.</p></li>
@@ -353,33 +476,33 @@
<p>The situation with expressions is unchanged: syntax such as <code>\xintexpr \numexpr1+2\relax</code> is illegal as the ending <code>\relax</code> token will get swallowed by the <code>\numexpr</code>; but it is needed by the <code>xintexpr</code>-ession parser, hence the parser will expand forward and presumably end with in an “illegal token” error, or provoke some low-level TeX error (N.B.: a closing brace <code>}</code> for example can not terminate an <code>xintexpr</code>-ession, the parser must find a <code>\relax</code> token at some point). Thus there must be in this example a second <code>\relax</code>.</p></li>
<li><p>experimental code for error conditions; there is no complete user interface yet, it is done in preparation for next major release and is completely unstable and undocumented.</p></li>
</ul>
-<h3 id="bug-fixes-7">Bug fixes</h3>
+<h3 id="bug-fixes-11">Bug fixes</h3>
<ul>
<li><p><strong>xintbinhex</strong>: since <code>1.2 (2015/10/10)</code>, <code>\xintHexToDec</code> was broken due to an undefined macro (it was in <code>xint.sty</code>, but the module by itself is supposedly dependent only upon <code>xintcore.sty</code>).</p></li>
<li><p><strong>xintgcd</strong>: macro <code>\xintBezout</code> produced partially wrong output if one of its two arguments was zero.</p></li>
<li><p><strong>xintfrac</strong>: the manual said one could use directly <code>\numexpr</code> compatible expressions in arithmetic macros (without even a <code>\numexpr</code> encapsulation) if they were expressed with up to 8 tokens. There was a bug if these 8 tokens evaluated to zero. The bug has been fixed, and up to 9 tokens are now accepted. But it is simpler to use <code>\the\numexpr</code> prefix and not to worry about the token count… The ending <code>\relax</code> is now un-needed.</p></li>
</ul>
<h2 id="k-20170106"><code>1.2k (2017/01/06)</code></h2>
-<h3 id="incompatible-changes-7">Incompatible changes</h3>
+<h3 id="breaking-changes-9">Breaking changes</h3>
<ul>
<li><p>macro <code>\xintFloat</code> which rounds its input to a floating point number does <em>not</em> print anymore <code>10.0...0eN</code> to signal an upwards rounding to the next power of ten. The mantissa has in all cases except the zero input exactly one digit before the decimal mark.</p></li>
<li><p>some floating point computations may differ in the least significant digits, due to a change in the rounding algorithm applied to macro arguments expressed as fractions and to an improvement in precision regarding half-integer powers in expressions. See next.</p></li>
</ul>
-<h3 id="improvements-and-new-features-11">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-13">Improvements and new features</h3>
<ul>
<li><p>the initial rounding to the target precision <code>P</code> which is applied by the floating point macros from <strong>xintfrac</strong> to their arguments achieves the <em>exact (aka correct) rounding</em> even for inputs which are fractions with more than <code>P+2</code> digits in their numerators and denominators (<code>>1</code>.) Hence the computed values depend only on the arguments as rational numbers and not upon their representatives. This is not relevant to <em>expressions</em> (<strong>xintexpr</strong>), because the <code>\xintfloatexpr</code> parser sees there <code>/</code> as an operator and does not (apart from special constructs) get to manipulate fractions as such.</p></li>
<li><p><code>\xintnewdummy</code> is public interface to a <code>1.2e</code> macro which serves to declare any given catcode 11 character as a dummy variable for expressions (<strong>xintexpr</strong>). This is useful for Unicode engines (the Latin letters being already all pre-declared as dummy variables.)</p></li>
<li><p>added <code>\xintiSqrtR</code>, there was only <code>\xintiiSqrtR</code> alongside <code>\xintiSqrt</code> and <code>\xintiiSqrt</code> (<strong>xint</strong>).</p></li>
<li><p>added non public <code>\xintLastItem:f:csv</code> to <strong>xinttools</strong> for faster <code>last()</code> function, and improved <code>\xintNewExpr</code> compatibility. Also <code>\xintFirstItem:f:csv</code>.</p></li>
</ul>
-<h3 id="bug-fixes-8">Bug fixes</h3>
+<h3 id="bug-fixes-12">Bug fixes</h3>
<ul>
<li><p>the <code>1.2f</code> half-integer powers computed within <code>\xintfloatexpr</code> had a silly rounding to the target precision just <em>before</em> the final square-root extraction, thus possibly losing some precision. The <code>1.2k</code> implementation keeps guard digits for this final square root extraction. As for integer exponents, it is guaranteed that the computed value differs from the exact one by less than <code>0.52 ulp</code> (for inputs having at most <code>\xinttheDigits</code> digits.)</p></li>
<li><p>more regressions from <code>1.2i</code> were fixed: <code>\xintLen</code> (<strong>xint</strong>, <strong>xintfrac</strong>) and <code>\xintDouble</code> (<strong>xintcore</strong>) had forgotten that their argument was allowed to be negative. A regression test suite is now in place and is being slowly expanded to cover more macros.</p></li>
<li><p><code>\xintiiSquareRoot{0}</code> now produces <code>{1}{1}</code>, which fits better the general documented behaviour of this macro than <code>11</code>.</p></li>
</ul>
<h2 id="j-20161222"><code>1.2j (2016/12/22)</code></h2>
-<h3 id="improvements-and-new-features-12">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-14">Improvements and new features</h3>
<ul>
<li><p><strong>xinttools</strong> and <strong>xintexpr</strong>:</p>
<ol type="1">
@@ -388,12 +511,12 @@
</ol></li>
<li><p>significant documentations tweaks (inclusive of suppressing things!), and among them two beautiful hyperlinked tables with both horizontal and vertical rules which bring the documentation of the <strong>xintexpr</strong> syntax to a kind of awe-inspiring perfection… except that implementation of some math functions is still lacking.</p></li>
</ul>
-<h3 id="bug-fixes-9">Bug fixes</h3>
+<h3 id="bug-fixes-13">Bug fixes</h3>
<ul>
<li>fix two <code>1.2i</code> regressions caused by undefined macros (<code>\xintNthElt</code> in certain branches and <code>[list][N]</code> item extraction in certain cases.) The test files existed but were not executed prior to release. Automation in progress.</li>
</ul>
<h2 id="i-20161213"><code>1.2i (2016/12/13)</code></h2>
-<h3 id="incompatible-changes-8">Incompatible changes</h3>
+<h3 id="breaking-changes-10">Breaking changes</h3>
<ul>
<li><code>\xintDecSplit</code> second argument must have no sign (former code replaced it with its absolute value, a sign now may cause an error.)</li>
</ul>
@@ -401,7 +524,7 @@
<ul>
<li>deprecated macros <code>\xintifTrue</code>, <code>\xintifTrueFalse</code>, <code>\xintQuo</code>, <code>\xintRem</code>, <code>\xintquo</code>, <code>\xintrem</code>.</li>
</ul>
-<h3 id="improvements-and-new-features-13">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-15">Improvements and new features</h3>
<ul>
<li><p><strong>xintkernel</strong>: <code>\xintLength</code> is faster. New macros:</p>
<ul>
@@ -420,17 +543,17 @@
<li><p>the documentation has again been (slightly) re-organized; it has a new sub-section on the Miller-Rabin primality test, to illustrate some use of <code>\xintNewFunction</code> for recursive definitions.</p></li>
<li><p>the documentation has dropped the LaTeX “command” terminology (which had been used initially in 2013 for some forgotten reasons and should have been removed long ago) and uses only the more apt “macro”, as after all, all of <strong>xint</strong> is about expansion of macros (plus the use of <code>\numexpr</code>).</p></li>
</ul>
-<h3 id="bug-fixes-10">Bug fixes</h3>
+<h3 id="bug-fixes-14">Bug fixes</h3>
<ul>
<li><code>\xintDecSplitL</code> and <code>\xintDecSplitR</code> from <strong>xint</strong> produced their output in a spurious brace pair (bug introduced in <code>1.2f</code>).</li>
</ul>
<h2 id="h-20161120"><code>1.2h (2016/11/20)</code></h2>
-<h3 id="improvements-and-new-features-14">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-16">Improvements and new features</h3>
<ul>
<li><p>new macro <code>\xintNewFunction</code> in <strong>xintexpr</strong> which allows to extend the parser syntax with functions in situations where <code>\xintdeffunc</code> is not usable (typically, because dummy variables are used over a not yet determined range of values because it depends on the variables).</p></li>
<li><p>after three years of strict obedience to <code>xint</code> prefix, now <code>\thexintexpr</code>, <code>\thexintiexpr</code>, <code>\thexintfloatexpr</code>, and <code>\thexintiiexpr</code> are provided as synonyms to <code>\xinttheexpr</code>, etc…</p></li>
</ul>
-<h3 id="bug-fixes-11">Bug fixes</h3>
+<h3 id="bug-fixes-15">Bug fixes</h3>
<ul>
<li><p>the <code>(cond)?{foo}{bar}</code> operator from <strong>xintexpr</strong> mis-behaved in certain circumstances (such as an empty <code>foo</code>).</p></li>
<li><p>the <strong>xintexpr</strong> <code>1.2f</code> <code>binomial</code> function (which uses <code>\xintiiBinomial</code> from <strong>xint.sty</strong> or <code>\xintFloatBinomial</code> from <strong>xintfrac.sty</strong>) deliberately raised an error for <code>binomial(x,y)</code> with <code>y<0</code> or <code>x<y</code>. This was unfortunate, and it now simply evaluates to zero in such cases.</p></li>
@@ -438,12 +561,12 @@
<li><p>the <code>add</code> and <code>mul</code> from <strong>xintexpr</strong>, which work with dummy variables since <code>1.1</code>, raised an error since <code>1.2c 2015/11/16</code> when the dummy variable was given an empty range (or list) of values, rather than producing respectively <code>0</code> and <code>1</code> as formerly.</p></li>
</ul>
<h2 id="g-20160319"><code>1.2g (2016/03/19)</code></h2>
-<h3 id="incompatible-changes-9">Incompatible changes</h3>
+<h3 id="breaking-changes-11">Breaking changes</h3>
<ul>
<li><p>inside expressions, list item selector <code>[L][n]</code> counts starting at zero, not at one. This is more coherent with <code>[L][a:b]</code> which was already exactly like in Python since its introduction. A function len(L) replaces earlier <code>[L][0]</code>.</p></li>
<li><p>former <code>iter</code> keyword now called <code>iterr</code>. Indeed it matched with <code>rrseq</code>, the new <code>iter</code> (which was somehow missing from <code>1.1</code>) is the one matching <code>rseq</code>. Allows to iterate more easily with a “list” variable.</p></li>
</ul>
-<h3 id="improvements-and-new-features-15">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-17">Improvements and new features</h3>
<ul>
<li><p>in <strong>xintexpr.sty</strong>: list selectors <code>[L][n]</code> and <code>[L][a:b]</code> are more efficient: the earlier <code>1.1</code> routines did back and forth conversions from comma separated values to braced tokens, the <code>1.2g</code> routines use macros from <strong>xinttools.sty</strong> handling directly the encountered lists of comma separated values.</p></li>
<li><p>in <strong>xinttools.sty</strong>: slight improvements in the efficiency of the <code>\xintNthElt</code>, <code>\xintKeep</code>, <code>\xintTrim</code> routines and new routines handling directly comma separated values. The latter are not included in the user manual (they are not <code>\long</code>, they don’t make efforts to preserve some braces, do not worry about spaces, all those worries being irrelevant to the use in expressions for list selectors).</p></li>
@@ -452,11 +575,11 @@
<li><p>the syntax of expressions is described in a devoted chapter of the documentation; an example shows how to implement (expandably) the Brent-Salamin algorithm for computation of Pi using <code>iter</code> in a float expression.</p></li>
</ul>
<h2 id="f-20160312"><code>1.2f (2016/03/12)</code></h2>
-<h3 id="incompatible-changes-10">Incompatible changes</h3>
+<h3 id="breaking-changes-12">Breaking changes</h3>
<ul>
<li>no more <code>\xintFac</code> macro but <code>\xintiFac/\xintiiFac/\xintFloatFac</code>.</li>
</ul>
-<h3 id="improvements-and-new-features-16">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-18">Improvements and new features</h3>
<ul>
<li><p>functions <code>binomial</code>, <code>pfactorial</code> and <code>factorial</code> in both integer and float versions.</p></li>
<li><p>macros <code>\xintiiBinomial</code>, <code>\xintiiPFactorial</code> (<strong>xint.sty</strong>) and <code>\xintFloatBinomial</code>, <code>\xintFloatPFactorial</code> (<strong>xintfrac.sty</strong>). Improvements to <code>\xintFloatFac</code>.</p></li>
@@ -470,69 +593,69 @@
<li><p>(TeXperts only) the macros defined (internally) from <code>\xintdeffunc</code> et al. constructs do not incorporate an initial <code>\romannumeral</code> anymore.</p></li>
<li><p>renewed desperate efforts at improving the documentation by random shuffling of sections and well thought additions; cuts were considered and even performed.</p></li>
</ul>
-<h3 id="bug-fixes-12">Bug fixes</h3>
+<h3 id="bug-fixes-16">Bug fixes</h3>
<ul>
<li><p>squaring macro <code>\xintSqr</code> from <strong>xintfrac.sty</strong> was broken due to a misspelled sub-macro name. Dates back to <code>1.1</code> release of <code>2014/10/28</code> <code>:-((</code>.</p></li>
<li><p><code>1.2c</code>’s fix to the subtraction bug from <code>1.2</code> introduced another bug, which in some cases could create leading zeroes in the output, or even worse. This could invalidate other routines using subtractions, like <code>\xintiiSquareRoot</code>.</p></li>
<li><p>the comparison operators were not recognized by <code>\xintNewIIExpr</code> and <code>\xintdefiifunc</code> constructs.</p></li>
</ul>
<h2 id="e-20151122"><code>1.2e (2015/11/22)</code></h2>
-<h3 id="improvements-and-new-features-17">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-19">Improvements and new features</h3>
<ul>
<li><p>macro <code>\xintunassignvar</code>.</p></li>
<li><p>slight modifications of the logged messages in case of <code>\xintverbosetrue</code>.</p></li>
<li><p>a space in <code>\xintdeffunc f(x)<space>:= expression ;</code> is now accepted.</p></li>
<li><p>documentation enhancements: the <em>Quick Sort</em> section with its included code samples has been entirely re-written; the <em>Commands of the xintexpr package</em> section has been extended and reviewed entirely.</p></li>
</ul>
-<h3 id="bug-fixes-13">Bug fixes</h3>
+<h3 id="bug-fixes-17">Bug fixes</h3>
<ul>
<li><p>in <strong>xintfrac</strong>: the <code>\xintFloatFac</code> from release <code>1.2</code> parsed its argument only through <code>\numexpr</code> but it should have used <code>\xintNum</code>.</p></li>
<li><p>in <strong>xintexpr</strong>: release <code>1.2d</code> had broken the recognition of sub-expressions immediately after variable names (with tacit multiplication).</p></li>
<li><p>in <strong>xintexpr</strong>: contrarily to what <code>1.2d</code> documentation said, tacit multiplication was not yet always done with enhanced precedence. Now yes.</p></li>
</ul>
<h2 id="d-20151118"><code>1.2d (2015/11/18)</code></h2>
-<h3 id="improvements-and-new-features-18">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-20">Improvements and new features</h3>
<ul>
<li><p>the function definitions done by <code>\xintdeffunc</code> et al., as well as the macro declarations by <code>\xintNewExpr</code> et al. now have only local scope.</p></li>
<li><p>tacit multiplication applies to more cases, for example (x+y)z, and always ties more than standard * infix operator, e.g. x/2y is like x/(2*y).</p></li>
<li><p>some documentation enhancements, particularly in the chapter on xintexpr.sty, and also in the code source comments.</p></li>
</ul>
-<h3 id="bug-fixes-14">Bug fixes</h3>
+<h3 id="bug-fixes-18">Bug fixes</h3>
<ul>
<li>in <strong>xintcore</strong>: release <code>1.2c</code> had inadvertently broken the <code>\xintiiDivRound</code> macro.</li>
</ul>
<h2 id="c-20151116"><code>1.2c (2015/11/16)</code></h2>
-<h3 id="improvements-and-new-features-19">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-21">Improvements and new features</h3>
<ul>
<li><p>macros <code>\xintdeffunc</code>, <code>\xintdefiifunc</code>, <code>\xintdeffloatfunc</code> and boolean <code>\ifxintverbose</code>.</p></li>
<li><p>on-going code improvements and documentation enhancements, but stopped in order to issue this bugfix release.</p></li>
</ul>
-<h3 id="bug-fixes-15">Bug fixes</h3>
+<h3 id="bug-fixes-19">Bug fixes</h3>
<ul>
<li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the subtraction (happened when 00000001 was found under certain circumstances at certain mod 8 locations).</li>
</ul>
<h2 id="b-20151029"><code>1.2b (2015/10/29)</code></h2>
-<h3 id="bug-fixes-16">Bug fixes</h3>
+<h3 id="bug-fixes-20">Bug fixes</h3>
<ul>
<li>in <strong>xintcore</strong>: recent release <code>1.2</code> introduced a bug in the division macros, causing a crash when the divisor started with 99999999 (it was attempted to use with 1+99999999 a subroutine expecting only 8-digits numbers).</li>
</ul>
<h2 id="a-20151019"><code>1.2a (2015/10/19)</code></h2>
-<h3 id="improvements-and-new-features-20">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-22">Improvements and new features</h3>
<ul>
<li><p>added <code>\xintKeepUnbraced</code>, <code>\xintTrimUnbraced</code> (<strong>xinttools</strong>) and fixed documentation of <code>\xintKeep</code> and <code>\xintTrim</code> regarding brace stripping.</p></li>
<li><p>added <code>\xintiiMaxof/\xintiiMinof</code> (<strong>xint</strong>).</p></li>
<li><p>TeX hackers only: replaced all code uses of <code>\romannumeral-`0</code> by the quicker <code>\romannumeral`&&@</code> (<code>^</code> being used as letter, had to find another character usable with catcode 7).</p></li>
</ul>
-<h3 id="bug-fixes-17">Bug fixes</h3>
+<h3 id="bug-fixes-21">Bug fixes</h3>
<ul>
<li>in <strong>xintexpr</strong>: recent release <code>1.2</code> introduced a bad bug in the parsing of decimal numbers and as a result <code>\xinttheexpr 0.01\relax</code> expanded to <code>0</code> ! (sigh…)</li>
</ul>
-<h2 id="section-1"><code>1.2 (2015/10/10)</code></h2>
+<h2 id="section-2"><code>1.2 (2015/10/10)</code></h2>
<h3 id="removed-3">Removed</h3>
<ul>
<li>the macros <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code>, <code>\xintMax</code>, <code>\xintMin</code>, <code>\xintMaxof</code>, <code>\xintMinof</code> are removed from package <strong>xint</strong>, and only exist in the versions from <strong>xintfrac</strong>. With only <strong>xintcore</strong> or <strong>xint</strong> loaded, one <em>must</em> use <code>\xintiiAdd</code>, <code>\xintiiSub</code>, …, or <code>\xintiAdd</code>, <code>\xintiSub</code>, etc…</li>
</ul>
-<h3 id="improvements-and-new-features-21">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-23">Improvements and new features</h3>
<ul>
<li><p>the basic arithmetic implemented in <strong>xintcore</strong> has been entirely rewritten. The mathematics remains the elementary school one, but the <code>TeX</code> implementation achieves higher speed (except, regarding addition/subtraction, for numbers up to about thirty digits), the gains becoming quite significant for numbers with hundreds of digits.</p></li>
<li><p>the inputs must have less than 19959 digits. But computations with thousands of digits take time.</p></li>
@@ -565,8 +688,8 @@
<li><p>added the previously mentioned <code>ii</code> macros, and some others from <code>1.1</code>, to the user manual. But their main usage is internal to <code>\xintiiexpr</code>, to skip unnecessary overheads.</p></li>
<li><p>various typographical fixes throughout the documentation, and a bit of clean up of the code comments. Improved <code>\Factors</code> example of nested <code>subs</code>, <code>rseq</code>, <code>iter</code> in <code>\xintiiexpr</code>.</p></li>
</ul>
-<h2 id="section-2"><code>1.1 (2014/10/28)</code></h2>
-<h3 id="incompatible-changes-11">Incompatible changes</h3>
+<h2 id="section-3"><code>1.1 (2014/10/28)</code></h2>
+<h3 id="breaking-changes-13">Breaking changes</h3>
<ul>
<li><p>in <code>\xintiiexpr</code>, <code>/</code> does <em>rounded</em> division, rather than the Euclidean division (for positive arguments, this is truncated division). The <code>//</code> operator does truncated division,</p></li>
<li><p>the <code>:</code> operator for three-way branching is gone, replaced with <code>??</code>,</p></li>
@@ -586,7 +709,7 @@
<li><p><code>\xintMax</code>, <code>\xintMin</code>, <code>\xintAdd</code>, <code>\xintSub</code>, <code>\xintMul</code> (<strong>xint</strong>): their usage without <strong>xintfrac</strong> is deprecated; use <code>\xintiMax</code>, <code>\xintiMin</code>, <code>\xintiAdd</code>, <code>\xintiSub</code>, <code>\xintiMul</code>.</p></li>
<li><p>the <code>&</code> and <code>|</code> as Boolean operators in <code>xintexpr</code>-essions are deprecated in favour of <code>&&</code> and <code>||</code>. The single letter operators might be assigned some other meaning in some later release (bitwise operations, perhaps). Do not use them.</p></li>
</ul>
-<h3 id="improvements-and-new-features-22">Improvements and new features</h3>
+<h3 id="improvements-and-new-features-24">Improvements and new features</h3>
<ul>
<li><p>new package <strong>xintcore</strong> has been split off <strong>xint</strong>. It contains the core arithmetic macros (it is loaded by LaTeX package <strong>bnumexpr</strong>),</p></li>
<li><p>neither <strong>xint</strong> nor <strong>xintfrac</strong> load <strong>xinttools</strong>. Only <strong>xintexpr</strong> does,</p></li>
@@ -624,7 +747,7 @@
<li><p><code>\xintthecoords</code> converts a comma separated list of an even number of items to the format expected by the <code>TikZ</code> <code>coordinates</code> syntax,</p></li>
<li><p>completely new version <code>\xintNewExpr</code>, <code>protect</code> function to handle external macros. The dollar sign <code>$</code> for place holders is not accepted anymore, only the standard macro parameter <code>#</code>. Not all constructs are compatible with <code>\xintNewExpr</code>.</p></li>
</ul>
-<h3 id="bug-fixes-18">Bug fixes</h3>
+<h3 id="bug-fixes-22">Bug fixes</h3>
<ul>
<li><p><code>\xintZapFirstSpaces</code> hence also <code>\xintZapSpaces</code> from package <strong>xinttools</strong> were buggy when used with an argument either empty or containing only space tokens.</p></li>
<li><p><code>\xintiiexpr</code> did not strip leading zeroes, hence <code>\xinttheiiexpr 001+1\relax</code> did not obtain the expected result …</p></li>
@@ -767,12 +890,12 @@
<li><p>Better management by <code>\xintCmp</code>, <code>\xintMax</code>, <code>\xintMin</code> and <code>\xintGeq</code> of inputs having big powers of ten in them.</p></li>
<li><p>Macros for floating point numbers added to the <strong>xintseries</strong> package.</p></li>
</ul>
-<h2 id="section-3"><code>1.08 (2013/06/07)</code></h2>
+<h2 id="section-4"><code>1.08 (2013/06/07)</code></h2>
<ul>
<li><p>(<strong>xint</strong> and <strong>xintfrac</strong>) Macros for extraction of square roots, for floating point numbers (<code>\xintFloatSqrt</code>), and integers (<code>\xintiSqrt</code>).</p></li>
<li><p>new package <strong>xintbinhex</strong> providing <em>conversion routines</em> to and from binary and hexadecimal bases.</p></li>
</ul>
-<h2 id="section-4"><code>1.07 (2013/05/25)</code></h2>
+<h2 id="section-5"><code>1.07 (2013/05/25)</code></h2>
<ul>
<li><p>The <strong>xintexpr</strong> package is a new core constituent (which loads automatically <strong>xintfrac</strong> and <strong>xint</strong>) and implements the expandable expanding parser</p>
<pre><code>\xintexpr . . . \relax,</code></pre>
@@ -787,16 +910,16 @@
<ul>
<li>Minor code and documentation improvements. Everywhere in the source code, a more modern underscore has replaced the @ sign.</li>
</ul>
-<h2 id="section-5"><code>1.06 (2013/05/07)</code></h2>
+<h2 id="section-6"><code>1.06 (2013/05/07)</code></h2>
<ul>
<li><p>Some code improvements, particularly for macros of <strong>xint</strong> doing loops.</p></li>
<li><p>New utilities in <strong>xint</strong> for expandable manipulations of lists:</p>
<pre><code>\xintNthElt, \xintCSVtoList, \xintRevWithBraces</code></pre></li>
<li><p>The macros did only a double expansion of their arguments. They now fully expand them (using <code>\romannumeral-`0</code>). Furthermore, in the case of arguments constrained to obey the TeX bounds they will be inserted inside a <code>\numexpr..\relax</code>, hence completely expanded, one may use count registers, even infix arithmetic operations, etc…</p></li>
</ul>
-<h2 id="section-6"><code>1.05 (2013/05/01)</code></h2>
+<h2 id="section-7"><code>1.05 (2013/05/01)</code></h2>
<p>Minor changes and additions to <strong>xintfrac</strong> and <strong>xintcfrac</strong>.</p>
-<h2 id="section-7"><code>1.04 (2013/04/25)</code></h2>
+<h2 id="section-8"><code>1.04 (2013/04/25)</code></h2>
<ul>
<li><p>New component <strong>xintcfrac</strong> devoted to continued fractions.</p></li>
<li><p><strong>xint</strong>: faster division.</p></li>
@@ -806,13 +929,13 @@
<li><p><code>tex xint.dtx</code> extracts style files (no need for a <code>xint.ins</code>).</p></li>
<li><p>Bug fix (<strong>xintfrac</strong>): <code>\xintIrr {0}</code> crashed.</p></li>
</ul>
-<h2 id="section-8"><code>1.03 (2013/04/14)</code></h2>
+<h2 id="section-9"><code>1.03 (2013/04/14)</code></h2>
<ul>
<li><p>New modules <strong>xintfrac</strong> (expandable operations on fractions) and <strong>xintseries</strong> (expandable partial sums with xint package).</p></li>
<li><p>Slightly improved division and faster multiplication (the best ordering of the arguments is chosen automatically).</p></li>
<li><p>Added illustration of Machin algorithm to the documentation.</p></li>
</ul>
-<h2 id="section-9"><code>1.0 (2013/03/28)</code></h2>
+<h2 id="section-10"><code>1.0 (2013/03/28)</code></h2>
<p>Initial announcement:</p>
<blockquote>
<p>The <strong>xint</strong> package implements with expandable TeX macros the basic arithmetic operations of addition, subtraction, multiplication and division, as applied to arbitrarily long numbers represented as chains of digits with an optional minus sign.</p>
Binary files old/doc/generic/xint/CHANGES.pdf and new/doc/generic/xint/CHANGES.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/xint/README new/doc/generic/xint/README
--- old/doc/generic/xint/README 2019-04-07 23:22:39.000000000 +0200
+++ new/doc/generic/xint/README 1970-01-01 01:00:00.000000000 +0100
@@ -1,205 +0,0 @@
- Source: xint.dtx 1.3e 2019/04/05 (doc 2019/04/05)
- Author: Jean-Francois Burnol
- Info: Expandable operations on big integers, decimals, fractions
- License: LPPL 1.3e
-
-This README is also available as README.pdf and README.html.
-
-Change log is to be found in CHANGES.pdf or CHANGES.html.
-
-The user manual is xint.pdf, and the commented source code is available
-as sourcexint.pdf.
-
-
-
-AIM
-
-
-The basic aim is provide _expandable_ computations on integers,
-fractions, and floating point numbers. For example
-
- \xinttheexpr reduce(37189719/183618963+11390170/17310720)^17\relax
-
-will evaluate exactly the fraction; the result has 462 characters
-(including the fraction slash.) One can also work with dummy variables:
-
- \xinttheexpr mul(add(x(x+1)(x+2), x=y..y+15), y=171286,98762,9296)\relax
-
-evaluates to 15979066346135829902328007959448563667099190784.
-
-Float computations are possible at an adjustable precision (default 16).
-
- \xintDigits:=48;\xintthefloatexpr 123_456_789^1_000.5\relax
- ->3.63692761822782679930738270515740797370813691938e8095
-
-(as this example shows the underscore character can be used to separate
-visually digits, one can also use the space character for that purpose).
-
-Square-root and the four operations achieve correct rounding in the
-given arbitrary precision.
-
-Trigonometric functions (direct and inverse) are available with a
-maximal precision of 60 digits.
-
-Logarithms and exponentials are available using the poormanlog package
-which provides only 8 or 9 digits of precision. This will be increased
-in future.
-
-
-
-USAGE
-
-
-It is possible to use the package both with Plain (\input xintexpr.sty)
-or with LaTeX (\usepackage{xintexpr}).
-
-
-With LaTeX
-
- \usepackage{xint} % expandable arithmetic with big integers
- \usepackage{xintfrac} % decimal numbers, fractions, floats
- \usepackage{xinttools} % expandable and non expandable loops
- \usepackage{xintexpr} % expressions with infix operators
-
-The xinttrig and xintlog packages are loaded automatically by xintexpr
-and will refuse to be loaded directly.
-
-Further packages: xintbinhex, xintgcd, xintseries and xintcfrac.
-
-Main dependencies are handled automatically. For example xintexpr
-automatically loads xinttools and xintfrac (which itself loads xint).
-Hexadecimal input requires explicit loading of xintbinhex.
-
-Package xintcore is the subset of xint providing only the five
-operations on big integers: \xintiiAdd, \xintiiMul, …
-
-The LaTeX package bnumexpr defines a more light-weight parser of
-arithmetical expressions using big integers, which supports only the
-four operations, the modulo operation, the power operation, and the
-factorial. By default it uses the macros from xintcore but this can be
-customized.
-
-The LaTeX package polexpr is based upon xintexpr and allows formal
-algebra with polynomials, and finding all real roots with arbitrary
-precision.
-
-
-With TeX
-
-One does for example:
-
- \input xintexpr.sty
-
-This will automatically load xintfrac.sty, xinttrig.sty, xintlog.sty and
-xinttools.sty. The packages may be loaded in any catcode context such
-that letters, digits, \ and % have their standard catcodes.
-
-xintcore.sty and xinttools.sty both import xintkernel.sty which has the
-catcode handler and package identifier and defines a few utilities such
-as \oodef/\fdef, \xint_dothis/\xint_orthat, or \xintLength.
-
-Since 1.3b, xintkernel.sty also provides \xintUniformDeviate which is a
-wrapper of the engine \pdfuniformdeviate or \uniformdeviate done to
-guarantee more uniformity of the pseudo-random integers.
-
-
-
-INSTALLATION
-
-
-Method A: using the package manager of your TeX distribution
-
-xint is included in TeXLive (hence also MacTeX) and MikTeX.
-
-There can be a few days of delay between apparition of a new version on
-CTAN and availability via the distribution package manager.
-
-
-Method B: manual installation using xint.tds.zip and unzip
-
-Assumes a GNU/Linux-like system (or Mac OS X).
-
-1. obtain xint.tds.zip from CTAN:
- http://mirror.ctan.org/install/macros/generic/xint.tds.zip
-
-2. cd to the download repertory and issue:
-
- unzip xint.tds.zip -d <TEXMF>
-
- where <TEXMF> is a suitable TDS-compliant destination repertory. For
- example, with TeXLive:
-
- - Linux, standard access rights, hence sudo is needed,
- installation into the “local” tree:
-
- sudo unzip xint.tds.zip -d /usr/local/texlive/texmf-local
- sudo texhash /usr/local/texlive/texmf-local
-
- - Mac OS X, installation into user home folder (no sudo needed,
- and it is recommended to not have a ls-R file there, hence no
- texhash):
-
- unzip xint.tds.zip -d ~/Library/texmf
-
-
-Method C: manual installation using Makefile and xint.dtx
-
-The Makefile automatizes rebuilding from xint.dtx all documentation
-files as well as xint.tds.zip. It is for GNU/Linux-like (inc. Mac OS X)
-systems, with a teTeX like installation such as TeXLive. The Latexmk and
-Pandoc softwares are required to build all the documentation.
-
-1. obtain xint.dtx and Makefile from
- http://mirror.ctan.org/macros/generic/xint.
-
-2. put them in an otherwise empty working repertory, run make or
- equivalently make help for further instructions.
-
-
-Method D: installation starting with only xint.dtx
-
-Run etex xint.dtx to extract from xint.dtx all macro files as well as
-auxiliary files needed for building the documentation. Among them there
-is Makefile.mk. If you are on a GNU/Linux-type system, rename the file
-to Makefile and execute make on command line for further help. If you
-can’t use make read the contents of the Makefile for instructions.
-
-Finishing the installation in a TDS hierarchy:
-
-- move the style files to TDS:tex/generic/xint/
-
-- xint.dtx goes to TDS:source/generic/xint/
-
-- The documentation (xint.pdf, README.md,…) goes to
- TDS:doc/generic/xint/
-
-Depending on the destination, it may then be necessary to refresh a
-filename database.
-
-
-
-LICENSE
-
-
-Copyright (C) 2013-2019 by Jean-Francois Burnol
-
-This Work may be distributed and/or modified under the conditions of the
-LaTeX Project Public License version 1.3c. This version of this license
-is in
-
- http://www.latex-project.org/lppl/lppl-1-3c.txt
-
-and version 1.3 or later is part of all distributions of LaTeX version
-2005/12/01 or later.
-
-This Work has the LPPL maintenance status author-maintained.
-
-The Author of this Work is Jean-Francois Burnol.
-
-This Work consists of the source file xint.dtx and of its derived files:
-xintkernel.sty, xintcore.sty, xint.sty, xintfrac.sty, xintexpr.sty,
-xinttrig.sty, xintlog.sty, xintbinhex.sty, xintgcd.sty, xintseries.sty,
-xintcfrac.sty, xinttools.sty, xint.ins, xint.tex, README, README.md,
-README.html, README.pdf, CHANGES.md, CHANGES.html, CHANGES.pdf,
-pandoctpl.latex, doHTMLs.sh, doPDFs.sh, xint.dvi, xint.pdf, and
-Makefile.mk.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/xint/README.html new/doc/generic/xint/README.html
--- old/doc/generic/xint/README.html 2019-04-07 23:22:39.000000000 +0200
+++ new/doc/generic/xint/README.html 1970-01-01 01:00:00.000000000 +0100
@@ -1,133 +0,0 @@
-<!DOCTYPE html>
-<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
-<head>
- <meta charset="utf-8" />
- <meta name="generator" content="pandoc" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <meta name="author" content="xint 1.3e" />
- <title>README</title>
- <style type="text/css">
- code{white-space: pre-wrap;}
- span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
- </style>
- <style type="text/css">
- body{margin-left : 10%; margin-right : 15%; margin-top: 4ex; font-size: 12pt;}
- pre {white-space: pre-wrap; }
- code {white-space: pre-wrap; }
- .mono {font-family: monospace;}
- </style>
- <!--[if lt IE 9]>
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
- <![endif]-->
-</head>
-<body>
-<header>
-<h1 class="title">README</h1>
-<p class="author">xint 1.3e</p>
-<p class="date">2019/04/05</p>
-</header>
-<nav id="TOC">
-<ul>
-<li><a href="#aim">Aim</a></li>
-<li><a href="#usage">Usage</a><ul>
-<li><a href="#with-latex">With LaTeX</a></li>
-<li><a href="#with-tex">With TeX</a></li>
-</ul></li>
-<li><a href="#installation">Installation</a><ul>
-<li><a href="#method-a-using-the-package-manager-of-your-tex-distribution">Method A: using the package manager of your TeX distribution</a></li>
-<li><a href="#method-b-manual-installation-using-xint.tds.zip-and-unzip">Method B: manual installation using <code>xint.tds.zip</code> and <code>unzip</code></a></li>
-<li><a href="#method-c-manual-installation-using-makefile-and-xint.dtx">Method C: manual installation using <code>Makefile</code> and <code>xint.dtx</code></a></li>
-<li><a href="#method-d-installation-starting-with-only-xint.dtx">Method D: installation starting with only <code>xint.dtx</code></a></li>
-</ul></li>
-<li><a href="#license">License</a></li>
-</ul>
-</nav>
-<pre><code>Source: xint.dtx 1.3e 2019/04/05 (doc 2019/04/05)
-Author: Jean-Francois Burnol
-Info: Expandable operations on big integers, decimals, fractions
-License: LPPL 1.3e</code></pre>
-<p>This <code>README</code> is also available as <code>README.pdf</code> and <code>README.html</code>.</p>
-<p>Change log is to be found in <code>CHANGES.pdf</code> or <code>CHANGES.html</code>.</p>
-<p>The user manual is <code>xint.pdf</code>, and the commented source code is available as <code>sourcexint.pdf</code>.</p>
-<h1 id="aim">Aim</h1>
-<p>The basic aim is provide <em>expandable</em> computations on integers, fractions, and floating point numbers. For example</p>
-<pre><code>\xinttheexpr reduce(37189719/183618963+11390170/17310720)^17\relax</code></pre>
-<p>will evaluate exactly the fraction; the result has 462 characters (including the fraction slash.) One can also work with dummy variables:</p>
-<pre><code>\xinttheexpr mul(add(x(x+1)(x+2), x=y..y+15), y=171286,98762,9296)\relax</code></pre>
-<p>evaluates to <code>15979066346135829902328007959448563667099190784</code>.</p>
-<p>Float computations are possible at an adjustable precision (default 16).</p>
-<pre><code>\xintDigits:=48;\xintthefloatexpr 123_456_789^1_000.5\relax
-->3.63692761822782679930738270515740797370813691938e8095</code></pre>
-<p>(as this example shows the underscore character can be used to separate visually digits, one can also use the space character for that purpose).</p>
-<p>Square-root and the four operations achieve correct rounding in the given arbitrary precision.</p>
-<p>Trigonometric functions (direct and inverse) are available with a maximal precision of 60 digits.</p>
-<p>Logarithms and exponentials are available using the <a href="http://www.ctan.org/pkg/poormanlog">poormanlog</a> package which provides only 8 or 9 digits of precision. This will be increased in future.</p>
-<h1 id="usage">Usage</h1>
-<p>It is possible to use the package both with Plain (<code>\input xintexpr.sty</code>) or with LaTeX (<code>\usepackage{xintexpr}</code>).</p>
-<h2 id="with-latex">With LaTeX</h2>
-<pre><code>\usepackage{xint} % expandable arithmetic with big integers
-\usepackage{xintfrac} % decimal numbers, fractions, floats
-\usepackage{xinttools} % expandable and non expandable loops
-\usepackage{xintexpr} % expressions with infix operators</code></pre>
-<p>The <code>xinttrig</code> and <code>xintlog</code> packages are loaded automatically by <code>xintexpr</code> and will refuse to be loaded directly.</p>
-<p>Further packages: <code>xintbinhex</code>, <code>xintgcd</code>, <code>xintseries</code> and <code>xintcfrac</code>.</p>
-<p>Main dependencies are handled automatically. For example <code>xintexpr</code> automatically loads <code>xinttools</code> and <code>xintfrac</code> (which itself loads <code>xint</code>). Hexadecimal input requires explicit loading of <code>xintbinhex</code>.</p>
-<p>Package <code>xintcore</code> is the subset of <code>xint</code> providing only the five operations on big integers: <code>\xintiiAdd</code>, <code>\xintiiMul</code>, …</p>
-<p>The LaTeX package <a href="http://www.ctan.org/pkg/bnumexpr">bnumexpr</a> defines a more light-weight parser of arithmetical expressions using big integers, which supports only the four operations, the modulo operation, the power operation, and the factorial. By default it uses the macros from <code>xintcore</code> but this can be customized.</p>
-<p>The LaTeX package <a href="http://www.ctan.org/pkg/polexpr">polexpr</a> is based upon <code>xintexpr</code> and allows formal algebra with polynomials, and finding all real roots with arbitrary precision.</p>
-<h2 id="with-tex">With TeX</h2>
-<p>One does for example:</p>
-<pre><code>\input xintexpr.sty</code></pre>
-<p>This will automatically load <code>xintfrac.sty</code>, <code>xinttrig.sty</code>, <code>xintlog.sty</code> and <code>xinttools.sty</code>. The packages may be loaded in any catcode context such that letters, digits, <code>\</code> and <code>%</code> have their standard catcodes.</p>
-<p><code>xintcore.sty</code> and <code>xinttools.sty</code> both import <code>xintkernel.sty</code> which has the catcode handler and package identifier and defines a few utilities such as <code>\oodef/\fdef</code>, <code>\xint_dothis/\xint_orthat</code>, or <code>\xintLength</code>.</p>
-<p>Since <code>1.3b</code>, <code>xintkernel.sty</code> also provides <code>\xintUniformDeviate</code> which is a wrapper of the engine <code>\pdfuniformdeviate</code> or <code>\uniformdeviate</code> done to guarantee more uniformity of the pseudo-random integers.</p>
-<h1 id="installation">Installation</h1>
-<h2 id="method-a-using-the-package-manager-of-your-tex-distribution">Method A: using the package manager of your TeX distribution</h2>
-<p><code>xint</code> is included in <a href="http://tug.org/texlive/">TeXLive</a> (hence also <a href="http://tug.org/mactex/">MacTeX</a>) and <a href="http://www.miktex.org/">MikTeX</a>.</p>
-<p>There can be a few days of delay between apparition of a new version on <a href="http://www.ctan.org/pkg/xint">CTAN</a> and availability via the distribution package manager.</p>
-<h2 id="method-b-manual-installation-using-xint.tds.zip-and-unzip">Method B: manual installation using <code>xint.tds.zip</code> and <code>unzip</code></h2>
-<p>Assumes a GNU/Linux-like system (or Mac OS X).</p>
-<ol type="1">
-<li><p>obtain <code>xint.tds.zip</code> from CTAN: <a href="http://mirror.ctan.org/install/macros/generic/xint.tds.zip" class="uri">http://mirror.ctan.org/install/macros/generic/xint.tds.zip</a></p></li>
-<li><p>cd to the download repertory and issue:</p>
-<pre><code> unzip xint.tds.zip -d <TEXMF></code></pre>
-<p>where <code><TEXMF></code> is a suitable TDS-compliant destination repertory. For example, with TeXLive:</p>
-<ul>
-<li><p>Linux, standard access rights, hence sudo is needed, installation into the “local” tree:</p>
-<pre><code> sudo unzip xint.tds.zip -d /usr/local/texlive/texmf-local
- sudo texhash /usr/local/texlive/texmf-local</code></pre></li>
-<li><p>Mac OS X, installation into user home folder (no sudo needed, and it is recommended to not have a ls-R file there, hence no texhash):</p>
-<pre><code> unzip xint.tds.zip -d ~/Library/texmf</code></pre></li>
-</ul></li>
-</ol>
-<h2 id="method-c-manual-installation-using-makefile-and-xint.dtx">Method C: manual installation using <code>Makefile</code> and <code>xint.dtx</code></h2>
-<p>The Makefile automatizes rebuilding from <code>xint.dtx</code> all documentation files as well as <code>xint.tds.zip</code>. It is for GNU/Linux-like (inc. Mac OS X) systems, with a teTeX like installation such as TeXLive. The <a href="http://personal.psu.edu/jcc8/software/latexmk/">Latexmk</a> and <a href="http://johnmacfarlane.net/pandoc/">Pandoc</a> softwares are required to build all the documentation.</p>
-<ol type="1">
-<li><p>obtain <code>xint.dtx</code> and <code>Makefile</code> from <a href="http://mirror.ctan.org/macros/generic/xint" class="uri">http://mirror.ctan.org/macros/generic/xint</a>.</p></li>
-<li><p>put them in an otherwise empty working repertory, run <code>make</code> or equivalently <code>make help</code> for further instructions.</p></li>
-</ol>
-<h2 id="method-d-installation-starting-with-only-xint.dtx">Method D: installation starting with only <code>xint.dtx</code></h2>
-<p>Run <code>etex xint.dtx</code> to extract from <code>xint.dtx</code> all macro files as well as auxiliary files needed for building the documentation. Among them there is <code>Makefile.mk</code>. If you are on a GNU/Linux-type system, rename the file to <code>Makefile</code> and execute <code>make</code> on command line for further help. If you can’t use <code>make</code> read the contents of the <code>Makefile</code> for instructions.</p>
-<p>Finishing the installation in a TDS hierarchy:</p>
-<ul>
-<li><p>move the style files to <code>TDS:tex/generic/xint/</code></p></li>
-<li><p><code>xint.dtx</code> goes to <code>TDS:source/generic/xint/</code></p></li>
-<li><p>The documentation (xint.pdf, README.md,…) goes to <code>TDS:doc/generic/xint/</code></p></li>
-</ul>
-<p>Depending on the destination, it may then be necessary to refresh a filename database.</p>
-<h1 id="license">License</h1>
-<div class="mono">
-<p>Copyright (C) 2013-2019 by Jean-Francois Burnol</p>
-<p>This Work may be distributed and/or modified under the conditions of the LaTeX Project Public License version 1.3c. This version of this license is in</p>
-<blockquote>
-<p><a href="http://www.latex-project.org/lppl/lppl-1-3c.txt" class="uri">http://www.latex-project.org/lppl/lppl-1-3c.txt</a></p>
-</blockquote>
-<p>and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later.</p>
-<p>This Work has the LPPL maintenance status <code>author-maintained</code>.</p>
-<p>The Author of this Work is Jean-Francois Burnol.</p>
-This Work consists of the source file xint.dtx and of its derived files: xintkernel.sty, xintcore.sty, xint.sty, xintfrac.sty, xintexpr.sty, xinttrig.sty, xintlog.sty, xintbinhex.sty, xintgcd.sty, xintseries.sty, xintcfrac.sty, xinttools.sty, xint.ins, xint.tex, README, README.md, README.html, README.pdf, CHANGES.md, CHANGES.html, CHANGES.pdf, pandoctpl.latex, doHTMLs.sh, doPDFs.sh, xint.dvi, xint.pdf, and Makefile.mk.
-</div>
-</body>
-</html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/generic/xint/README.md new/doc/generic/xint/README.md
--- old/doc/generic/xint/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/generic/xint/README.md 2020-02-26 23:09:41.000000000 +0100
@@ -0,0 +1,127 @@
+% README
+% xint 1.4b
+% 2020/02/25
+
+ Source: xint.dtx 1.4b 2020/02/25 (doc 2020/02/25)
+ Author: Jean-Francois Burnol
+ Info: Expandable operations on big integers, decimals, fractions
+ License: LPPL 1.3c
+
+Aim and usage
+=============
+
+It is possible to use the package both with Plain (`\input xintexpr.sty`)
+or with the LaTeX macro format (`\usepackage{xintexpr}`).
+
+The basic aim is provide *expandable* computations on (arbitrily big)
+integers, fractions, and floating point numbers (at a user chosen
+precision). The four operations and the square-root extraction achieve
+so-called *correct rounding* for the given arbitrary precision.
+
+The syntax knows dummy variables, as in this example:
+
+ \xinteval{reduce(add(x/(x+7), x = 1000..1010))}
+
+which expands to:
+
+ 108959959329292321880648657/9974444716475301992902544
+
+Trigonometrical functions are available:
+
+ \xintDigits*:=48\relax
+
+ \xintfloateval{[-2] sind(37)}
+
+expands to:
+
+ 0.6018150231520482799179770004414898414256377098
+
+The [-2] means to round the result to 2 digits less than float precision:
+currently trigonometrical functions are mostly implemented at high level
+via the user interface for declaring functions and variables and have no
+way to use guard digits, hence the last two digits are often not
+accurate.
+
+Release `1.4` adds support for nested structures. For example:
+
+ \xintthealign\xintexpr ndseq(1/(i+j), i=1..5; j=1..5)\relax
+
+will print on the page (this is customizable, e.g. to use a pmatrix
+environnement rather):
+
+ [[ 1/2, 1/3, 1/4, 1/5, 1/6 ],
+ [ 1/3, 1/4, 1/5, 1/6, 1/7 ],
+ [ 1/4, 1/5, 1/6, 1/7, 1/8 ],
+ [ 1/5, 1/6, 1/7, 1/8, 1/9 ],
+ [ 1/6, 1/7, 1/8, 1/9, 1/10 ]]
+
+It is possible to declare "universal functions" (à la NumPy) which will
+act itemwise on all leaves of such "arrays". More features are planned
+such as providing an interface to algebra of matrices in this framework.
+
+Installation
+============
+
+`xint` is included in [TeXLive](http://tug.org/texlive/) (hence
+[MacTeX](http://tug.org/mactex/) also) and in
+[MikTeX](http://www.miktex.org/). Thus, use the package manager to
+update your distribution.
+
+Alternatives:
+
+- download
+ [`xint.tds.zip`](http://mirror.ctan.org/install/macros/generic/xint.tds.zip)
+ and install in a suitable TDS-compliant repertory via `unzip`. "admin"
+ privilges might be needed, as well as a file database rebuild (`texhash`).
+ For example, on macos x, installation into user home folder (no `sudo`,
+ and no `texhash` as it is recommended to not have a ls-R file there)
+
+ unzip xint.tds.zip -d ~/Library/texmf
+
+- all files can be extracted using `etex xint.dtx`, or `make` if the
+ `Makefile` included in the CTAN upload is present; see the file `INSTALL`,
+ if present, else read the help in extracted file `Makefile.mk`.
+
+Documentation
+=============
+
+`README.md`: this file
+
+`CHANGES.html`: change log as relevant to end users
+ (`texdoc --list xint`)
+
+`xint.pdf`: user manual
+
+`sourcexint.pdf`: commented source code
+ (`texdoc --list xint` or `texdoc sourcexint`)
+
+Requirements
+============
+
+Since release `1.4`, `xintexpr` requires the `\expanded` primitive. This
+is a functionality of all major TeX engines since TeXLive 2019.
+
+License
+=======
+
+Copyright (C) 2013-2020 by Jean-Francois Burnol
+
+This Work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License version 1.3c.
+This version of this license is in
+
+> http://www.latex-project.org/lppl/lppl-1-3c.txt
+
+and version 1.3 or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+
+This Work has the LPPL maintenance status `author-maintained`.
+
+The Author of this Work is `Jean-Francois Burnol`.
+
+This Work consists of the files `Makefile`, `INSTALL`, and `xint.dtx`
+and its extracted and derived files inclusive of the documentation
+files `xint.pdf`, `sourcexint.pdf` and `CHANGES.html`.
+
+See `xint.pdf` for contact information.
+
Binary files old/doc/generic/xint/README.pdf and new/doc/generic/xint/README.pdf differ
Binary files old/doc/generic/xint/sourcexint.pdf and new/doc/generic/xint/sourcexint.pdf differ
Binary files old/doc/generic/xint/xint.pdf and new/doc/generic/xint/xint.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xint.doc.tlpobj new/tlpkg/tlpobj/xint.doc.tlpobj
--- old/tlpkg/tlpobj/xint.doc.tlpobj 2019-04-08 01:40:55.000000000 +0200
+++ new/tlpkg/tlpobj/xint.doc.tlpobj 2020-02-27 01:55:50.000000000 +0100
@@ -1,13 +1,10 @@
name xint.doc
category Package
-revision 50844
+revision 53930
shortdesc doc files of xint
relocated 1
-docfiles size=530
+docfiles size=516
RELOC/doc/generic/xint/CHANGES.html
- RELOC/doc/generic/xint/CHANGES.pdf
- RELOC/doc/generic/xint/README
- RELOC/doc/generic/xint/README.html
- RELOC/doc/generic/xint/README.pdf
+ RELOC/doc/generic/xint/README.md
RELOC/doc/generic/xint/sourcexint.pdf
RELOC/doc/generic/xint/xint.pdf
++++++ xint.tar.xz ++++++
++++ 8737 lines of diff (skipped)
++++++ xits.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xits/FONTLOG.txt new/doc/fonts/xits/FONTLOG.txt
--- old/doc/fonts/xits/FONTLOG.txt 2018-10-10 22:43:17.000000000 +0200
+++ new/doc/fonts/xits/FONTLOG.txt 2019-09-07 23:20:54.000000000 +0200
@@ -9,203 +9,17 @@
Basic Font Information
--------------------------
XITS is a Times-like typeface for mathematical and scientific publishing, based
-on STIX fonts project. The main mission of XITS is to provide a version of STIX
-fonts enriched with the OpenType MATH extension, making it suitable for high
-quality mathematic typesetting with OpenType MATH capable layout systems, like
-MS Office 2007 and the new TeX engines XeTeX and LuaTeX.
+on the STIX fonts project. The main mission of XITS is to provide a version of
+STIX fonts enriched with the OpenType MATH extension, making it suitable for
+high quality mathematical typesetting with OpenType MATH capable layout systems,
+like MS Office 2007 and later and the TeX engines XeTeX and LuaTeX.
-XITS development is currently hosted on:
+XITS development is currently hosted at:
http://github.com/alif-type/xits
Feature requests, bug reports and patches should be directed to our issue
tracker.
-XITS currently provides the following Unicode coverage:
-* XITS Math:
- Basic Latin (U+0000-007F): 95/95 (100.00%)
- Latin-1 Supplement (U+0080-00FF): 96/96 (100.00%)
- Latin Extended-A (U+0100-017F): 128/128 (100.00%)
- Latin Extended-B (U+0180-024F): 37/208 (17.79%)
- IPA Extensions (U+0250-02AF): 91/96 (94.79%)
- Spacing Modifier Letters (U+02B0-02FF): 62/80 (77.50%)
- Combining Diacritical Marks (U+0300-036F): 73/112 (65.18%)
- Greek and Coptic (U+0370-03FF): 93/135 (68.89%)
- Cyrillic (U+0400-04FF): 102/256 (39.84%)
- Arabic (U+0600-06FF): 30/255 (11.76%)
- Phonetic Extensions (U+1D00-1D7F): 3/128 (2.34%)
- Phonetic Extensions Supplement (U+1D80-1DBF): 8/64 (12.50%)
- Latin Extended Additional (U+1E00-1EFF): 8/256 (3.12%)
- General Punctuation (U+2000-206F): 70/111 (63.06%)
- Superscripts and Subscripts (U+2070-209F): 1/42 (2.38%)
- Currency Symbols (U+20A0-20CF): 4/32 (12.50%)
- Combining Diacritical Marks for Symbols (U+20D0-20FF): 24/33 (72.73%)
- Letterlike Symbols (U+2100-214F): 60/80 (75.00%)
- Number Forms (U+2150-218F): 12/60 (20.00%)
- Arrows (U+2190-21FF): 103/112 (91.96%)
- Mathematical Operators (U+2200-22FF): 256/256 (100.00%)
- Miscellaneous Technical (U+2300-23FF): 90/256 (35.16%)
- Control Pictures (U+2400-243F): 1/39 (2.56%)
- Enclosed Alphanumerics (U+2460-24FF): 62/160 (38.75%)
- Box Drawing (U+2500-257F): 45/128 (35.16%)
- Block Elements (U+2580-259F): 8/32 (25.00%)
- Geometric Shapes (U+25A0-25FF): 96/96 (100.00%)
- Miscellaneous Symbols (U+2600-26FF): 55/256 (21.48%)
- Dingbats (U+2700-27BF): 30/192 (15.62%)
- Miscellaneous Mathematical Symbols-A (U+27C0-27EF): 45/48 (93.75%)
- Supplemental Arrows-A (U+27F0-27FF): 16/16 (100.00%)
- Supplemental Arrows-B (U+2900-297F): 128/128 (100.00%)
- Miscellaneous Mathematical Symbols-B (U+2980-29FF): 128/128 (100.00%)
- Supplemental Mathematical Operators (U+2A00-2AFF): 256/256 (100.00%)
- Miscellaneous Symbols and Arrows (U+2B00-2BFF): 64/250 (25.60%)
- CJK Symbols and Punctuation (U+3000-303F): 2/64 (3.12%)
- Hiragana (U+3040-309F): 1/93 (1.08%)
- Latin Extended-D (U+A720-A7FF): 2/163 (1.23%)
- Variation Selectors (U+FE00-FE0F): 1/16 (6.25%)
- Specials (U+FFF0-FFFF): 1/5 (20.00%)
- Mathematical Alphanumeric Symbols (U+1D400-1D7FF): 996/996 (100.00%)
- Arabic Mathematical Alphabetic Symbols (U+1EE00-1EEFF): 143/143 (100.00%)
-* XITS Math Bold:
- Basic Latin (U+0000-007F): 95/95 (100.00%)
- Latin-1 Supplement (U+0080-00FF): 96/96 (100.00%)
- Latin Extended-A (U+0100-017F): 128/128 (100.00%)
- Latin Extended-B (U+0180-024F): 32/208 (15.38%)
- IPA Extensions (U+0250-02AF): 89/96 (92.71%)
- Spacing Modifier Letters (U+02B0-02FF): 61/80 (76.25%)
- Combining Diacritical Marks (U+0300-036F): 72/112 (64.29%)
- Greek and Coptic (U+0370-03FF): 93/135 (68.89%)
- Cyrillic (U+0400-04FF): 102/256 (39.84%)
- Phonetic Extensions (U+1D00-1D7F): 3/128 (2.34%)
- Latin Extended Additional (U+1E00-1EFF): 8/256 (3.12%)
- General Punctuation (U+2000-206F): 40/111 (36.04%)
- Superscripts and Subscripts (U+2070-209F): 1/42 (2.38%)
- Currency Symbols (U+20A0-20CF): 4/32 (12.50%)
- Combining Diacritical Marks for Symbols (U+20D0-20FF): 22/33 (66.67%)
- Letterlike Symbols (U+2100-214F): 54/80 (67.50%)
- Number Forms (U+2150-218F): 12/60 (20.00%)
- Arrows (U+2190-21FF): 82/112 (73.21%)
- Mathematical Operators (U+2200-22FF): 237/256 (92.58%)
- Miscellaneous Technical (U+2300-23FF): 15/256 (5.86%)
- Control Pictures (U+2400-243F): 1/39 (2.56%)
- Enclosed Alphanumerics (U+2460-24FF): 62/160 (38.75%)
- Box Drawing (U+2500-257F): 40/128 (31.25%)
- Geometric Shapes (U+25A0-25FF): 6/96 (6.25%)
- Miscellaneous Symbols (U+2600-26FF): 3/256 (1.17%)
- Miscellaneous Mathematical Symbols-A (U+27C0-27EF): 4/48 (8.33%)
- Miscellaneous Mathematical Symbols-B (U+2980-29FF): 10/128 (7.81%)
- Supplemental Mathematical Operators (U+2A00-2AFF): 58/256 (22.66%)
- Latin Extended-D (U+A720-A7FF): 1/163 (0.61%)
- Alphabetic Presentation Forms (U+FB00-FB4F): 5/58 (8.62%)
- Mathematical Alphanumeric Symbols (U+1D400-1D7FF): 920/996 (92.37%)
-* XITS:
- Basic Latin (U+0000-007F): 95/95 (100.00%)
- Latin-1 Supplement (U+0080-00FF): 96/96 (100.00%)
- Latin Extended-A (U+0100-017F): 128/128 (100.00%)
- Latin Extended-B (U+0180-024F): 37/208 (17.79%)
- IPA Extensions (U+0250-02AF): 91/96 (94.79%)
- Spacing Modifier Letters (U+02B0-02FF): 61/80 (76.25%)
- Combining Diacritical Marks (U+0300-036F): 72/112 (64.29%)
- Greek and Coptic (U+0370-03FF): 93/135 (68.89%)
- Cyrillic (U+0400-04FF): 102/256 (39.84%)
- Phonetic Extensions (U+1D00-1D7F): 3/128 (2.34%)
- Phonetic Extensions Supplement (U+1D80-1DBF): 8/64 (12.50%)
- Latin Extended Additional (U+1E00-1EFF): 8/256 (3.12%)
- General Punctuation (U+2000-206F): 46/111 (41.44%)
- Superscripts and Subscripts (U+2070-209F): 1/42 (2.38%)
- Currency Symbols (U+20A0-20CF): 4/32 (12.50%)
- Combining Diacritical Marks for Symbols (U+20D0-20FF): 24/33 (72.73%)
- Letterlike Symbols (U+2100-214F): 60/80 (75.00%)
- Number Forms (U+2150-218F): 12/60 (20.00%)
- Arrows (U+2190-21FF): 103/112 (91.96%)
- Mathematical Operators (U+2200-22FF): 256/256 (100.00%)
- Miscellaneous Technical (U+2300-23FF): 61/256 (23.83%)
- Control Pictures (U+2400-243F): 1/39 (2.56%)
- Enclosed Alphanumerics (U+2460-24FF): 62/160 (38.75%)
- Box Drawing (U+2500-257F): 45/128 (35.16%)
- Block Elements (U+2580-259F): 8/32 (25.00%)
- Geometric Shapes (U+25A0-25FF): 96/96 (100.00%)
- Miscellaneous Symbols (U+2600-26FF): 55/256 (21.48%)
- Dingbats (U+2700-27BF): 30/192 (15.62%)
- Miscellaneous Mathematical Symbols-A (U+27C0-27EF): 45/48 (93.75%)
- Supplemental Arrows-A (U+27F0-27FF): 16/16 (100.00%)
- Supplemental Arrows-B (U+2900-297F): 128/128 (100.00%)
- Miscellaneous Mathematical Symbols-B (U+2980-29FF): 128/128 (100.00%)
- Supplemental Mathematical Operators (U+2A00-2AFF): 256/256 (100.00%)
- Miscellaneous Symbols and Arrows (U+2B00-2BFF): 64/250 (25.60%)
- CJK Symbols and Punctuation (U+3000-303F): 2/64 (3.12%)
- Hiragana (U+3040-309F): 1/93 (1.08%)
- Latin Extended-D (U+A720-A7FF): 2/163 (1.23%)
- Alphabetic Presentation Forms (U+FB00-FB4F): 5/58 (8.62%)
- Specials (U+FFF0-FFFF): 1/5 (20.00%)
-* XITS Bold:
- Basic Latin (U+0000-007F): 95/95 (100.00%)
- Latin-1 Supplement (U+0080-00FF): 96/96 (100.00%)
- Latin Extended-A (U+0100-017F): 128/128 (100.00%)
- Latin Extended-B (U+0180-024F): 32/208 (15.38%)
- IPA Extensions (U+0250-02AF): 89/96 (92.71%)
- Spacing Modifier Letters (U+02B0-02FF): 61/80 (76.25%)
- Combining Diacritical Marks (U+0300-036F): 72/112 (64.29%)
- Greek and Coptic (U+0370-03FF): 93/135 (68.89%)
- Cyrillic (U+0400-04FF): 102/256 (39.84%)
- Phonetic Extensions (U+1D00-1D7F): 3/128 (2.34%)
- Latin Extended Additional (U+1E00-1EFF): 8/256 (3.12%)
- General Punctuation (U+2000-206F): 40/111 (36.04%)
- Superscripts and Subscripts (U+2070-209F): 1/42 (2.38%)
- Currency Symbols (U+20A0-20CF): 4/32 (12.50%)
- Combining Diacritical Marks for Symbols (U+20D0-20FF): 22/33 (66.67%)
- Letterlike Symbols (U+2100-214F): 38/80 (47.50%)
- Number Forms (U+2150-218F): 12/60 (20.00%)
- Arrows (U+2190-21FF): 82/112 (73.21%)
- Mathematical Operators (U+2200-22FF): 237/256 (92.58%)
- Miscellaneous Technical (U+2300-23FF): 15/256 (5.86%)
- Control Pictures (U+2400-243F): 1/39 (2.56%)
- Enclosed Alphanumerics (U+2460-24FF): 62/160 (38.75%)
- Box Drawing (U+2500-257F): 40/128 (31.25%)
- Geometric Shapes (U+25A0-25FF): 6/96 (6.25%)
- Miscellaneous Symbols (U+2600-26FF): 3/256 (1.17%)
- Miscellaneous Mathematical Symbols-A (U+27C0-27EF): 4/48 (8.33%)
- Miscellaneous Mathematical Symbols-B (U+2980-29FF): 10/128 (7.81%)
- Supplemental Mathematical Operators (U+2A00-2AFF): 58/256 (22.66%)
- Latin Extended-D (U+A720-A7FF): 1/163 (0.61%)
- Alphabetic Presentation Forms (U+FB00-FB4F): 5/58 (8.62%)
-* XITS Italic:
- Basic Latin (U+0000-007F): 95/95 (100.00%)
- Latin-1 Supplement (U+0080-00FF): 96/96 (100.00%)
- Latin Extended-A (U+0100-017F): 128/128 (100.00%)
- Latin Extended-B (U+0180-024F): 32/208 (15.38%)
- IPA Extensions (U+0250-02AF): 89/96 (92.71%)
- Spacing Modifier Letters (U+02B0-02FF): 28/80 (35.00%)
- Greek and Coptic (U+0370-03FF): 92/135 (68.15%)
- Cyrillic (U+0400-04FF): 102/256 (39.84%)
- Latin Extended Additional (U+1E00-1EFF): 8/256 (3.12%)
- General Punctuation (U+2000-206F): 23/111 (20.72%)
- Currency Symbols (U+20A0-20CF): 4/32 (12.50%)
- Combining Diacritical Marks for Symbols (U+20D0-20FF): 20/33 (60.61%)
- Letterlike Symbols (U+2100-214F): 30/80 (37.50%)
- Mathematical Operators (U+2200-22FF): 2/256 (0.78%)
- Control Pictures (U+2400-243F): 1/39 (2.56%)
- Enclosed Alphanumerics (U+2460-24FF): 62/160 (38.75%)
- Box Drawing (U+2500-257F): 40/128 (31.25%)
- Alphabetic Presentation Forms (U+FB00-FB4F): 5/58 (8.62%)
-* XITS Bold Italic:
- Basic Latin (U+0000-007F): 95/95 (100.00%)
- Latin-1 Supplement (U+0080-00FF): 96/96 (100.00%)
- Latin Extended-A (U+0100-017F): 128/128 (100.00%)
- Latin Extended-B (U+0180-024F): 32/208 (15.38%)
- IPA Extensions (U+0250-02AF): 89/96 (92.71%)
- Spacing Modifier Letters (U+02B0-02FF): 28/80 (35.00%)
- Greek and Coptic (U+0370-03FF): 92/135 (68.15%)
- Cyrillic (U+0400-04FF): 102/256 (39.84%)
- Latin Extended Additional (U+1E00-1EFF): 8/256 (3.12%)
- General Punctuation (U+2000-206F): 23/111 (20.72%)
- Currency Symbols (U+20A0-20CF): 4/32 (12.50%)
- Combining Diacritical Marks for Symbols (U+20D0-20FF): 1/33 (3.03%)
- Letterlike Symbols (U+2100-214F): 29/80 (36.25%)
- Mathematical Operators (U+2200-22FF): 2/256 (0.78%)
- Control Pictures (U+2400-243F): 1/39 (2.56%)
- Enclosed Alphanumerics (U+2460-24FF): 62/160 (38.75%)
- Box Drawing (U+2500-257F): 40/128 (31.25%)
- Alphabetic Presentation Forms (U+FB00-FB4F): 5/58 (8.62%)
-
Information for Contributors
------------------------------
XITS is released under the OFL 1.1 - http://scripts.sil.org/OFL For information
@@ -220,8 +34,24 @@
ChangeLog
----------
-10 October 2018 (Khaled Hosny) <XITS> Version 1.200.1
-- Drop WOFF fonts from tarball uploaded to CTAN, they break XeTeX.
+7 September 2019 (Khaled Hosny) <XITS> Version 1.301
+- Add some small caps glyphs for a few missed accented characters.
+- Fix positions of superior and inferior figures.
+- Improve small caps kerning.
+
+30 August 2019 (Khaled Hosny) <XITS> Version 1.300
+- Fix mis-encoded U+1D9B as U+1D98.
+- Add top accent position to few accents in bold math font.
+- Add minute and second signs to italic font.
+- Add OpenType feature for superior figures.
+- Fix thickness of connector part in division symbol.
+- Add superior figures.
+- Add ffj ligature.
+- Fix displaced accented i glyphs.
+- Add small caps to regular font.
+- Add alternate old-style figures
+- Add T and S with comma below for Romanian.
+- Add scientific inferiors feature.
2 October 2018 (Khaled Hosny) <XITS> Version 1.200
- This is the final release with new features, from now only XITS is in
@@ -396,11 +226,16 @@
N: Khaled Hosny
E: khaledhosny@eglug.org
-W: http://github.com/alif-type
+W: https://github.com/alif-type
D: Engineer - OpenType MATH code
+N: Daniel Benjamin Miller
+E: dbmiller@dbmiller.org
+W: https://dbmiller.org
+D: Added and improved characters
+
N: STIX Fonts project
-E:
-W: http://www.stixfonts.org
+E: stix@aip.org
+W: https://www.stixfonts.org
D: Original authors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xits/OFL-FAQ.txt new/doc/fonts/xits/OFL-FAQ.txt
--- old/doc/fonts/xits/OFL-FAQ.txt 2011-04-23 01:34:15.000000000 +0200
+++ new/doc/fonts/xits/OFL-FAQ.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,369 +0,0 @@
-OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL)
-Version 1.1-update2 - 23 August 2010
-(See http://scripts.sil.org/OFL for updates)
-
-
-CONTENTS OF THIS FAQ
-1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL
-2 USING OFL FONTS FOR WEB PAGES AND ONLINE WEBFONT SERVICES
-3 MODIFYING OFL-LICENSED FONTS
-4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL
-5 CHOOSING RESERVED FONT NAMES
-6 ABOUT THE FONTLOG
-7 MAKING CONTRIBUTIONS TO OFL PROJECTS
-8 ABOUT THE LICENSE ITSELF
-9 ABOUT SIL INTERNATIONAL
-APPENDIX A - FONTLOG EXAMPLE
-
-
-1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL
-
-1.1 Can I use the fonts for a book or other print publication?
-Yes. You can mention the font and author in the book's colophon if you wish, but that is not required.
-
-1.2 Can the fonts be included with Free/Libre and Open Source Software collections such as GNU/Linux and BSD distributions?
-Yes! Fonts licensed under the OFL can be freely included alongside other software under FLOSS (Free/Libre and Open Source Software) licenses. Since fonts are typically aggregated with, not merged into, existing software, there is little need to be concerned about incompatibility with existing software licenses. You may also repackage the fonts and the accompanying components in a .rpm or .deb package and include them in distribution CD/DVDs and online repositories. (Also see section 5.9 about rebuilding from source.)
-
-1.3 I want to distribute the fonts with my program. Does this mean my program also has to be Free/Libre and Open Source Software?
-No. Only the portions based on the Font Software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling with software under restricted licensing as well.
-
-1.4 Can I sell a software package that includes these fonts?
-Yes, you can do this with both the Original Version and a Modified Version of the fonts. Examples of bundling made possible by the OFL would include: word processors, design and publishing applications, training and educational software, games and entertainment software, mobile device applications, etc.
-
-1.5 Can I include the fonts on a CD of freeware or commercial fonts?
-Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself.
-
-1.6 Why won't the OFL let me sell the fonts alone?
-The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential direct income to distribute their fonts under the OFL. Please honour and respect their contribution!
-
-1.7 What about sharing OFL fonts with friends on a CD, DVD or USB stick?
-You are very welcome to share open fonts with friends, family and colleagues through removable media. Just remember to include the full font package, including any copyright notices and licensing information as available in OFL.txt. In the case where you sell the font, it has to come bundled with software.
-
-1.8 Can I host the fonts on a web site for others to use?
-Yes, as long as you make the full font package available. In most cases it may be best to point users to the main site that distributes the Original Version so they always get the most recent stable and complete version. See also discussion of webfonts in Section 2.
-
-1.9 Can I host the fonts on a server for use over our internal network?
-Yes. If the fonts are transferred from the server to the client computer by means that allow them to be used even if the computer is no longer attached to the network, the full package (copyright notices, licensing information, etc.) should be included.
-
-1.10 Does the full OFL license text always need to accompany the font?
-The only situation in which an OFL font can be distributed without the text of the OFL (either in a separate file or in font metadata), is when a font is embedded in a document or bundled within a program. In the case of metadata included within a font, it is legally sufficient to include only a link to the text of the OFL on http://scripts.sil.org/OFL, but we strongly recommend against this. Most modern font formats include metadata fields that will accept the full OFL text, and full inclusion increases the likelihood that users will understand and properly apply the license.
-
-1.11 What do you mean by 'embedding'? How does that differ from other means of distribution?
-By 'embedding' we mean inclusion of the font in a document or file in a way that makes extraction (and redistribution) difficult or clearly discouraged. In many cases the names of embedded fonts might also not be obvious to those reading the document, the font data format might be altered, and only a subset of the font - only the glyphs required for the text - might be included. Any other means of delivering a font to another person is considered 'distribution', and needs to be accompanied by any copyright notices and licensing information available in OFL.txt.
-
-1.12 So can I embed OFL fonts in my document?
-Yes, either in full or a subset. The restrictions regarding font modification and redistribution do not apply, as the font is not intended for use outside the document.
-
-1.13 Does embedding alter the license of the document itself?
-No. Referencing or embedding an OFL font in any document does not change the license of the document itself. The requirement for fonts to remain under the OFL does not apply to any document created using the fonts and their derivatives. Similarly, creating any kind of graphic using a font under OFL does not make the resulting artwork subject to the OFL.
-
-1.14 If OFL fonts are extracted from a document in which they are embedded (such as a PDF file), what can be done with them? Is this a risk to author(s)?
-The few utilities that can extract fonts embedded in a PDF will typically output limited amounts of outlines - not a complete font. To create a working font from this method is much more difficult and time consuming than finding the source of the original OFL font. So there is little chance that an OFL font would be extracted and redistributed inappropriately through this method. Even so, copyright laws address any misrepresentation of authorship. All Font Software released under the OFL and marked as such by the author(s) is intended to remain under this license regardless of the distribution method, and cannot be redistributed under any other license. We strongly discourage any font extraction - we recommend directly using the font sources instead - but if you extract font outlines from a document, please be considerate: use your common sense and respect the work of the author(s) and the licensing model.
-
-1.15 What about distributing fonts with a document? Within a compressed folder structure? Is it distribution, bundling or embedding?
-Certain document formats may allow the inclusion of an unmodified font within their file structure which consists of a compressed folder containing the various resources forming the document (such as pictures and thumbnails). Including fonts within such a structure is understood as being different from embedding but rather similar to bundling (or mere aggregation) which the license explicitly allows. In this case the font is conveyed unchanged whereas embedding a font usually transforms it from the original format. The OFL does not allow anyone to extract the font from such a structure to then redistribute it under another license. The explicit permission to redistribute and embed does not cancel the requirement for the Font Software to remain under the license chosen by its author(s).
-
-1.16 What about ebooks shipping with open fonts?
-The requirements differ depending on whether the fonts are linked, embedded or distributed (bundled or aggregated). Some ebook formats use web technologies to do font linking via @font-face, others are designed for font embedding, some use fonts distributed with the document or reading software, and a few rely solely on the fonts already present on the target system. The license requirements depend on the type of inclusion as discussed in 1.15.
-
-1.17 Can Font Software released under the OFL be subject to URL-based access restrictions methods or DRM (Digital Rights Management) mechanisms?
-Yes, but these issues are out-of-scope for the OFL. The license itself neither encourages their use nor prohibits them since such mechanisms are not implemented in the components of the Font Software but through external software. Such restrictions are put in place for many different purposes corresponding to various usage scenarios. One common example is to limit potentially dangerous cross-site scripting attacks. However, in the spirit of libre/open fonts and unrestricted writing systems, we strongly encourage open sharing and reuse of OFL fonts, and the establishment of an environment where such restrictions are unnecessary. Note that whether you wish to use such mechanisms or you prefer not to, you must still abide by the rules set forth by the OFL when using fonts released by their authors under this license. Derivative fonts must be licensed under the OFL, even if they are part of a service for which you charge fees and/or for which access to source code is restricted. You may not sell the fonts on their own - they must be part of a larger software package, bundle or subscription plan. For example, even if the OFL font is distributed in a software package or via an online service using a DRM mechanism, the user would still have the right to extract that font, use, study, modify and redistribute it under the OFL.
-
-1.18 I've come across a font released under the OFL. How can I easily get more information about the Original Version? How can I know where it stands compared to the Original Version or other Modified Versions?
-Consult the copyright statement(s) in the license for ways to contact the original authors. Consult the FONTLOG for information on how the font differs from the Original Version, and get in touch with the various contributors via the information in the acknowledgement section. Please consider using the Original Versions of the fonts whenever possible.
-
-1.19 What do you mean in condition 4? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement?
-The intent is that the goodwill and reputation of the author(s) should not be used in a way that makes it sound like the original author(s) endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the author(s) in a listing of software features, or to promote a Modified Version on a web site by saying "designed by ...". However, it would be appropriate to acknowledge the author(s) if your software package has a list of people who deserve thanks. We realize that this can seem to be a grey area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the author(s) it is allowed, but if it primarily benefits other parties, or could reflect poorly on the author(s), then it is not.
-
-
-2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEBFONT SERVICES
-
-2.1 Can I make webpages using these fonts?
-Yes! Go ahead! Using CSS (Cascading Style Sheets) is recommended. Your three best options:
-- referring directly in your stylesheet to open fonts which may be available on the user's system
-- providing links to download the full package of the font - either from your own website or from elsewhere - so users can install it themselves
-- using @font-face to distribute the font directly to browsers. This is recommended and explicitly allowed by the licensing model because it is distribution. The font file itself is distributed with other components of the webpage. It is not embedded in the webpage but referenced through a web address which will cause the browser to retrieve and use the corresponding font to render the webpage (see 1.11 and 1.15 for details related to embedding fonts into documents). As you take advantage of the @font-face cross-platform standard, be aware that webfonts are often tuned for a web environment and not intended for installation and use outside a browser. The reasons in favour of using webfonts are to allow design of dynamic text elements instead of static graphics, to make it easier for content to be localized and translated, indexed and searched, and all this with cross-platform open standards without depending on restricted extensions or plugins. You should check the CSS cascade (the order in which fonts are being called or delivered to your users) when testing.
-
-2.2 Can I make and use WOFF (Web Open Font Format) versions of OFL fonts?
-Yes, but you need to be careful. A change in font format normally is considered modification, and Reserved Font Names (RFNs) cannot be used. Because of the design of the WOFF format, however, it is possible to create a WOFF version that is not considered modification, and so would not require a name change. You are allowed to create, use and distribute a WOFF version of an OFL font without changing the font name, but only if:
-
-- the original font data remains unchanged except for WOFF compression, and
-- WOFF-specific metadata is either omitted altogether or present and includes, unaltered, the contents of all equivalent metadata in the original font.
-
-If the original font data or metadata is changed, or the WOFF-specific metadata is incomplete, the font must be considered a Modified Version, the OFL restrictions would apply and the name of the font must be changed: any RFNs cannot be used and copyright notices and licensing information must be included and cannot be deleted or modified. You must come up with a unique name - we recommend one corresponding to your domain or your particular web application. Be aware that only the original author(s) can use RFNs. This is to prevent collisions between a derivative tuned to your audience and the original upstream version and so to reduce confusion.
-
-Please note that most WOFF conversion tools and online services do not meet the two requirements listed above, and so their output must be considered a Modified Version. So be very careful and check to be sure that the tool or service you're using is compressing unchanged data and completely and accurately reflecting the original font metadata.
-
-2.3 What about other webfont formats such as EOT/EOTLite/CWT/etc.?
-In most cases these formats alter the original font data more than WOFF, and do not completely support appropriate metadata, so their use must be considered modification and RFNs may not be used.
-
-2.4 Can I make OFL fonts available through webfont online services?
-Yes, you are welcome to include OFL fonts in online webfont services as long as you properly meet all the conditions of the license. The origin and open status of the font should be clear among the other fonts you are hosting. Authorship, copyright notices and license information must be sufficiently visible to your users or subscribers so they know where the font comes from and the rights granted by the author(s). Make sure the font file contains the needed copyright notice(s) and licensing information in its metadata. Please double-check the accuracy of every field to prevent contradictory information. Other font formats, including EOT/EOTLite/CWT and superior alternatives like WOFF, already provide fields for this information. Remember that if you modify the font within your library or convert it to another format for any reason the OFL restrictions apply and you need to change the names accordingly. Please respect the author's wishes as expressed in the OFL and do not misrepresent original designers and their work. Don't lump quality open fonts together with dubious freeware or public domain fonts. Consider how you can best work with the original designers and foundries, support their efforts and generate goodwill that will benefit your service. (See 1.17 for details related to URL-based access restrictions methods or DRM mechanisms).
-
-2.5 Can I make and publish CMS themes or templates that use OFL fonts? Can I include the fonts themselves in the themes or templates? Can I sell the whole package?
-Yes, you are very welcome to integrate open fonts into themes and templates for your preferred CMS and make them more widely available. Be aware that you can only sell the fonts and your CMS add-on as part of a software bundle. (See 1.4 for details and examples about selling bundles).
-
-2.6 Some webfont formats and services provide ways of "optimising" the font for a particular website or web application; is that allowed?
-Yes, it is permitted, but remember that these optimised versions are Modified Versions and so must follow OFL requirements like appropriate renaming. Also you need to bear in mind the other important parameters beyond compression, speed and responsiveness: you need to consider the audience of your particular website or web application, as choosing some optimisation parameters may turn out to be less than ideal for them. Subsetting by removing certain glyphs or features may seriously limit functionality of the font in various languages used by your users. It may also introduce degradation of quality in the rendering or specific bugs on the various platforms compared to the original font. In other words, remember that one person's optimised font may be another person's missing feature. Various advanced typographic features are also available through CSS and may provide the desired effects without the need to modify the font.
-
-
-3 MODIFYING OFL-LICENSED FONTS
-
-3.1 Can I change the fonts? Are there any limitations to what things I can and cannot change?
-You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you are not allowed to remove the copyright statement(s) from the font, but you could put additional information into it that covers your contribution.
-
-3.2 I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine?
-Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license.
-
-3.3 Can I charge people for my additional work? In other words, if I add a bunch of special glyphs and/or OpenType/Graphite code, can I sell the enhanced font?
-Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package.
-
-3.4 Can I pay someone to enhance the fonts for my use and distribution?
-Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefited from the contributions of others.
-
-3.5 I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use?
-No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way beyond what the OFL permits and requires. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefited from the contributions of others.
-
-3.6 Do I have to make any derivative fonts (including extended source files, build scripts, documentation, etc.) publicly available?
-No, but please consider sharing your improvements with others. You may find that you receive in return more than what you gave.
-
-3.7 If a trademark is claimed in the OFL font, does that trademark need to remain in modified fonts?
-Yes, any trademark notices must remain in any derivative fonts to respect trademark laws, but you may add any additional trademarks you claim, officially registered or not. For example if an OFL font called "Foo" contains a notice that "Foo is a trademark of Acme", then if you rename the font to "Bar" when creating a Modified Version, the new trademark notice could say "Foo is a trademark of Acme Inc. - Bar is a trademark of Roadrunner Technologies Ltd.". Trademarks work alongside the OFL and are not subject to the terms of the licensing agreement. Please refer to the appropriate trademark laws.
-
-
-4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL
-
-4.1 Can I use the SIL OFL for my own fonts?
-Yes! We heartily encourage everyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom along with enough artistic integrity protection for the work of the authors as well as clear rules for other contributors and those who redistribute the fonts. The licensing model is used successfully by various organisations, both for-profit and not-for-profit, to release fonts of varying levels of scope and complexity.
-
-4.2 What do I have to do to apply the OFL to my font?
-If you want to release your fonts under the OFL, we recommend you do the following:
-
-4.2.1 Put your copyright and Reserved Font Names information at the beginning of the main OFL.txt file in place of the dedicated placeholders. Include this file in your release package.
-
-4.2.2 Put your copyright and the OFL text with Reserved Font Names into your font files (the copyright and license fields). A link to the OFL text on the OFL web site is an acceptable (but not recommended) alternative. Also add this information to any other components (build scripts, glyph databases, documentation, test files, etc). Depending on the format of your fonts and sources, you can use template human-readable headers or machine-readable metadata.
-
-4.2.3 Write an initial FONTLOG.txt for your font and include it in the release package.
-
-4.2.4 Include the relevant practical documentation on the license by including the OFL-FAQ.txt in your package.
-
-4.3 Will you make my font OFL for me?
-We won't do the work for you. We can, however, try to answer your questions, unfortunately we do not have the resources to review and check your font packages for correct use of the OFL.
-
-4.4 Will you distribute my OFL font for me?
-No, although if the font is of sufficient quality and general interest we may include a link to it on our partial list of OFL fonts on the OFL web site. You may wish to consider other open font catalogs or hosting services, such as the Unifont Font Guide (http://unifont.org/fontguide), The League of Movable Type (http://theleagueofmovabletype.com), Kernest (http://kernest.com/) or the Open Font Library (http://openfontlibrary.org/), which despite the name has no direct relationship to the OFL or SIL. We do not endorse any particular catalog or hosting service - it is your responsibility to determine if the service is right for you.
-
-4.5 Why should I use the OFL for my fonts?
-- to meet needs for fonts that can be modified to support minority languages
-- to provide a legal and clear way for people to respect your work but still use it (and reduce piracy)
-- to involve others in your font project
-- to enable your fonts to be expanded with new weights and improved writing system/language support
-- to allow more technical font developers to add features to your design (such as OpenType and Graphite support)
-- to renew the life of an old font lying on your hard drive with no business model
-- to allow your font to be included in Libre Software operating systems like Ubuntu
-- to give your font world status and wide, unrestricted distribution
-- to educate students about quality typeface and font design
-- to expand your test base and get more useful feedback
-- to extend your reach to new markets when users see your metadata and go to your website
-- to get your font more easily into one of the webfont online services
-- to attract attention for your commercial fonts
-- to make money through webfont services
-- to make money by bundling fonts with applications
-- to make money adjusting and extending existing open fonts
-- to get a better chance that foundations/NGOs/charities/companies who commission fonts will pick you
-- to be part of a sharing design and development community
-- to give back and contribute to a growing body of font sources
-
-
-5 CHOOSING RESERVED FONT NAMES
-
-5.1 What are Reserved Font Names?
-These are font names, or portions of font names, that the author has chosen to reserve for use only with the Original Version of the font, or for Modified Version(s) created by the original author.
-
-5.2 Why can't I use the Reserved Font Names in my derivative font names? I'd like people to know where the design came from.
-The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Names ensure that the only fonts that have the original names are the unmodified Original Versions. This allows designers to maintain artistic integrity while allowing collaboration to happen. It eliminates potential confusion and name conflicts. When choosing a name, be creative and avoid names that reuse almost all the same letters in the same order or sound like the original. It will help everyone if Original Versions and Modified Versions can easily be distinguished from one another and from other derivatives. Any substitution and matching mechanism is outside the scope of the license.
-
-5.3 What do you mean by "primary name as presented to the user"? Are you referring to the font menu name?
-Yes, this applies to the font menu name and other mechanisms that specify a font in a document. It would be fine, however, to keep a text reference to the original fonts in the description field, in your modified source file or in documentation provided alongside your derivative as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder(s) allow(s) it through a separate agreement). Users who install derivatives (Modified Versions) on their systems should not see any of the original Reserved Font Names in their font menus, for example. Again, this is to ensure that users are not confused and do not mistake one font for another and so expect features only another derivative or the Original Version can actually offer.
-
-5.4 Am I not allowed to use any part of the Reserved Font Names?
-You may not use individual words from the Reserved Font Names, but you would be allowed to use parts of words, as long as you do not use any word from the Reserved Font Names entirely. We do not recommend using parts of words because of potential confusion, but it is allowed. For example, if "Foobar" was a Reserved Font Name, you would be allowed to use "Foo" or "bar", although we would not recommend it. Such an unfortunate choice would confuse the users of your fonts as well as make it harder for other designers to contribute.
-
-5.5 So what should I, as an author, identify as Reserved Font Names?
-Original authors are encouraged to name their fonts using clear, distinct names, and only declare the unique parts of the name as Reserved Font Names. For example, the author of a font called "Foobar Sans" would declare "Foobar" as a Reserved Font Name, but not "Sans", as that is a common typographical term, and may be a useful word to use in a derivative font name. Reserved Font Names should also be single words. A font called "Flowing River" should have Reserved Font Names "Flowing" and "River", not "Flowing River". You also need to be very careful about reserving font names which are already linked to trademarks (whether registered or not) which you do not own.
-
-5.6 Do I, as an author, have to identify any Reserved Font Names?
-No, but we strongly encourage you to do so. This is to avoid confusion between your work and Modified Versions.
-
-5.7 Are any names (such as the main font name) reserved by default?
-No. That is a change to the license as of version 1.1. If you want any names to be Reserved Font Names, they must be specified after the copyright statement(s).
-
-5.8 Is there any situation in which I can use Reserved Font Names for a Modified Version?
-The Copyright Holder(s) can give certain trusted parties the right to use any of the Reserved Font Names through separate written agreements. For example, even if "Foobar" is a RFN, you could write up an agreement to give company "XYZ" the right to distribute a modified version with a name that includes "Foobar". This allows for freedom without confusion.
-
-5.9 Do font rebuilds require a name change? Do I have to change the name of the font when my packaging workflow includes a full rebuild from source?
-Yes, all rebuilds which change the font data and the smart code are Modified Versions and the requirements of the OFL apply: you need to respect what the Author(s) have chosen in terms of Reserved Font Names. However if a package (or installer) is simply a wrapper or a compressed structure around the final font - leaving them intact on the inside - then no name change is required. Please get in touch with the author(s) and copyright holder(s) to inquire about the presence of font sources beyond the final font file(s) and the recommended build path. That build path may very well be non-trivial and hard to reproduce accurately by the maintainer. If a full font build path is made available by the upstream author(s) please be aware that any regressions and changes you may introduce when doing a rebuild for packaging purposes is your responsibility as a package maintainer since you are effectively creating a separate branch. You should make it very clear to your users that your rebuilt version is not the canonical one from upstream.
-
-5.10 Can I add other Reserved Font Names when making a derivative font?
-Yes. List your additional Reserved Font Names after your additional copyright statement, as indicated with example placeholders at the top of the OFL.txt file. Be sure you do not remove any exiting RFNs but only add your own.
-
-
-6 ABOUT THE FONTLOG
-
-6.1 What is this FONTLOG thing exactly?
-It has three purposes: 1) to provide basic information on the font to users and other developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge authors and other contributors. Please use it!
-
-6.2 Is the FONTLOG required?
-It is not a requirement of the license, but we strongly recommend you have one.
-
-6.3 Am I required to update the FONTLOG when making Modified Versions?
-No, but users, designers and other developers might get very frustrated with you if you don't. People need to know how derivative fonts differ from the original, and how to take advantage of the changes, or build on them. There are utilities that can help create and maintain a FONTLOG, such as the FONTLOG support in FontForge.
-
-6.4 What should the FONTLOG look like?
-It is typically a separate text file (FONTLOG.txt), but can take other formats. It commonly includes these four sections:
-
-- brief header describing the FONTLOG itself and name of the font family
-- Basic Font Information - description of the font family, purpose and breadth
-- ChangeLog - chronological listing of changes
-- Acknowledgements - list of authors and contributors with contact information
-
-It could also include other sections, such as: where to find documentation, how to make contributions, information on contributing organizations, source code details, and a short design guide. See Appendix A for an example FONTLOG.
-
-
-7 MAKING CONTRIBUTIONS TO OFL PROJECTS
-
-7.1 Can I contribute work to OFL projects?
-In many cases, yes. It is common for OFL fonts to be developed by a team of people who welcome contributions from the wider community. Contact the original authors for specific information on how to participate in their projects.
-
-7.2 Why should I contribute my changes back to the original authors?
-It would benefit many people if you contributed back in response to what you've received. Your contributions and improvements to the fonts and other components could be a tremendous help and would encourage others to contribute as well and 'give back'. You will then benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that clearly when you contribute.
-
-7.3 I've made some very nice improvements to the font. Will you consider adopting them and putting them into future Original Versions?
-Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes - the use of smart source revision control systems like subversion, svk, mercurial, git or bzr is a good idea. Please follow the recommendations given by the author(s) in terms of preferred source formats and configuration parameters for sending contributions. If this is not indicated in a FONTLOG or other documentation of the font, consider asking them directly. Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them) or improved hinting. Keep in mind that some kinds of changes (esp. hinting) may be technically difficult to integrate.
-
-7.4 How can I financially support the development of OFL fonts?
-It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Original Version.
-
-
-8 ABOUT THE LICENSE ITSELF
-
-8.1 I see that this is version 1.1 of the license. Will there be later changes?
-Version 1.1 is the first minor revision of the OFL. We are confident that version 1.1 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder(s) can re-release the font under a revised OFL. All versions will be available on our web site: http://scripts.sil.org/OFL.
-
-8.2 Does this license restrict the rights of the Copyright Holder(s)?
-No. The Copyright Holder(s) still retain(s) all the rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder(s) may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version. Only the Copyright Holder(s) can do this.
-
-8.3 Is the OFL a contract or a license?
-The OFL is a license and not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license.
-
-8.4 I really like the terms of the OFL, but want to change it a little. Am I allowed to take ideas and actual wording from the OFL and put them into my own custom license for distributing my fonts?
-We strongly recommend against creating your very own unique open licensing model. Using a modified or derivative license will likely cut you off - along with the font(s) under that license - from the community of designers using the OFL, potentially expose you and your users to legal liabilities, and possibly put your work and rights at risk. The OFL went though a community and legal review process that took years of effort, and that review is only applicable to an unmodified OFL. The text of the OFL has been written by SIL (with review and consultation from the community) and is copyright (c) 2005-2010 SIL International. You may re-use the ideas and wording (in part, not in whole) in another non-proprietary license provided that you call your license by another unambiguous name, that you do not use the preamble, that you do not mention SIL and that you clearly present your license as different from the OFL so as not to cause confusion by being too similar to the original. If you feel the OFL does not meet your needs for an open license, please contact us.
-
-8.5 Can I translate the license and the FAQ into other languages?
-SIL certainly recognises the need for people who are not familiar with English to be able to understand the OFL and its use. Making the license very clear and readable has been a key goal for the OFL, but we know that people understand their own language best.
-
-If you are an experienced translator, you are very welcome to translate the OFL and OFL-FAQ so that designers and users in your language community can understand the license better. But only the original English version of the license has legal value and has been approved by the community. Translations do not count as legal substitutes and should only serve as a way to explain the original license. SIL - as the author and steward of the license for the community at large - does not approve any translation of the OFL as legally valid because even small translation ambiguities could be abused and create problems.
-
-SIL gives permission to publish unofficial translations into other languages provided that they comply with the following guidelines:
-
-- Put the following disclaimer in both English and the target language stating clearly that the translation is unofficial:
-
-"This is an unofficial translation of the SIL Open Font License into . It was not published by SIL International, and does not legally state the distribution terms for fonts that use the OFL. A release under the OFL is only valid when using the original English text. However, we recognize that this unofficial translation will help users and designers not familiar with English to better understand and use the OFL. We encourage designers who consider releasing their creation under the OFL to read the OFL-FAQ in their own language if it is available. Please go to http://scripts.sil.org/OFL for the official version of the license and the accompanying OFL-FAQ."
-
-- Keep your unofficial translation current and update it at our request if needed, for example if there is any ambiguity which could lead to confusion.
-
-If you start such a unofficial translation effort of the OFL and OFL-FAQ please let us know.
-
-
-9 ABOUT SIL INTERNATIONAL
-
-9.1 Who is SIL International and what do they do?
-SIL serves language communities worldwide, building their capacity for sustainable language development, by means of research, translation, training and materials development. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment.
-
-9.2 What does this have to do with font licensing?
-The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack), so SIL developed the SIL Open Font License with the help of the Free/Libre and Open Source Software community.
-
-9.3 How can I contact SIL?
-Our main web site is: http://www.sil.org/
-Our site about complex scripts is: http://scripts.sil.org/
-Information about this license (and contact information) is at: http://scripts.sil.org/OFL
-
-
-APPENDIX A - FONTLOG EXAMPLE
-
-Here is an example of the recommended format for a FONTLOG, although other formats are allowed.
-
------
-FONTLOG for the GlobalFontFamily fonts
-
-This file provides detailed information on the GlobalFontFamily Font Software. This information should be distributed along with the GlobalFontFamily fonts and any derivative works.
-
-Basic Font Information
-
-GlobalFontFamily is a Unicode typeface family that supports all languages that use the Latin script and its variants, and could be expanded to support other scripts.
-
-NewWorldFontFamily is based on the GlobalFontFamily and also supports Greek, Hebrew, Cyrillic and Armenian.
-
-More specifically, this release supports the following Unicode ranges...
-This release contains...
-Documentation can be found at...
-To contribute to the project...
-
-ChangeLog
-
-1 August 2008 (Tom Parker) GlobalFontFamily version 1.2.1
-- Tweaked the smart font code (Branch merged with trunk version)
-- Provided improved build and debugging environment for smart behaviours
-
-7 February 2007 (Pat Johnson) NewWorldFontFamily Version 1.3
-- Added Greek and Cyrillic glyphs
-
-7 March 2006 (Fred Foobar) NewWorldFontFamily Version 1.2
-- Tweaked contextual behaviours
-
-1 Feb 2005 (Jane Doe) NewWorldFontFamily Version 1.1
-- Improved build script performance and verbosity
-- Extended the smart code documentation
-- Corrected minor typos in the documentation
-- Fixed position of combining inverted breve below (U+032F)
-- Added OpenType/Graphite smart code for Armenian
-- Added Armenian glyphs (U+0531 -> U+0587)
-- Released as "NewWorldFontFamily"
-
-1 Jan 2005 (Joe Smith) GlobalFontFamily Version 1.0
-- Initial release
-
-Acknowledgements
-
-If you make modifications be sure to add your name (N), email (E), web-address (if you have one) (W) and description (D). This list is in alphabetical order.
-
-N: Jane Doe
-E: jane@university.edu
-W: http://art.university.edu/projects/fonts
-D: Contributor - Armenian glyphs and code
-
-N: Fred Foobar
-E: fred@foobar.org
-W: http://foobar.org
-D: Contributor - misc Graphite fixes
-
-N: Pat Johnson
-E: pat@fontstudio.org
-W: http://pat.fontstudio.org
-D: Designer - Greek & Cyrillic glyphs based on Roman design
-
-N: Tom Parker
-E: tom@company.com
-W: http://www.company.com/tom/projects/fonts
-D: Engineer - original smart font code
-
-N: Joe Smith
-E: joe@fontstudio.org
-W: http://joe.fontstudio.org
-D: Designer - original Roman glyphs
-
-Fontstudio.org is an not-for-profit design group whose purpose is...
-Foobar.org is a distributed community of developers...
-Company.com is a small business who likes to support community designers...
-University.edu is a renowed educational institution with a strong design department...
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xits/OFL.txt new/doc/fonts/xits/OFL.txt
--- old/doc/fonts/xits/OFL.txt 2010-07-17 01:55:19.000000000 +0200
+++ new/doc/fonts/xits/OFL.txt 2019-08-30 23:09:20.000000000 +0200
@@ -16,6 +16,12 @@
Portions copyright (c) 1990 by Elsevier, Inc.
+Portions copyright (c) 2014, 2015 by (URW)++ Design & Development.
+
+Portions copyright (c) 2009-2019 by Khaled Hosny.
+
+Portions copyright (c) 2019 by Daniel Benjamin Miller.
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/xits/README.txt new/doc/fonts/xits/README.txt
--- old/doc/fonts/xits/README.txt 2018-10-02 23:38:14.000000000 +0200
+++ new/doc/fonts/xits/README.txt 2019-08-30 23:09:20.000000000 +0200
@@ -1,24 +1,22 @@
+[![Build Status](https://travis-ci.com/alif-type/xits.svg?branch=master)](https://travis-ci.com/alif-type/xits)
+
The XITS font project
======================
XITS is a Times-like typeface for mathematical and scientific publishing, based
on [STIX fonts][1]. The main mission of XITS is to provide a version of STIX
-fonts enriched with the OpenType MATH extension, making it suitable for high
-quality mathematic typesetting with OpenType MATH capable layout systems, like
-MS Office 2007 and the new TeX engines XeTeX and LuaTeX.
-
-XITS font is free, open source font, under [Open Font License][2], version 1.1.
-
-The current version of XITS is based on version 1.1.0-beta1 of STIX fonts.
+fonts enhanced with the OpenType `MATH` table, making it suitable for high
+quality mathematic typesetting with OpenType math-capable layout systems, like
+Microsoft Office 2007+, XeTeX and LuaTeX.
-This is work in progress, feedback, bug reports and even patches are welcomed.
+XITS fonts are distributed under the [Open Font License][2], version 1.1.
Contributing
------------
The preferred way for modifying the fonts is by editing the SFD files under
`sources` directory in the [source repository][5], using [FontForge][3]. When
-submitting patches, please make sure they are as clean as possible, avoiding
+submitting patches, please run `make normalize` before committing and avoid
any unrelated or unnecessary changes.
To build the fonts from source you need GNU Make, [FontForge][3] Python module,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xits.doc.tlpobj new/tlpkg/tlpobj/xits.doc.tlpobj
--- old/tlpkg/tlpobj/xits.doc.tlpobj 2019-02-28 04:18:54.000000000 +0100
+++ new/tlpkg/tlpobj/xits.doc.tlpobj 2019-09-08 01:54:45.000000000 +0200
@@ -1,10 +1,9 @@
name xits.doc
category Package
-revision 48879
+revision 52046
shortdesc doc files of xits
relocated 1
-docfiles size=19
+docfiles size=6
RELOC/doc/fonts/xits/FONTLOG.txt
- RELOC/doc/fonts/xits/OFL-FAQ.txt
RELOC/doc/fonts/xits/OFL.txt
RELOC/doc/fonts/xits/README.txt
++++++ xits.tar.xz ++++++
Binary files old/fonts/opentype/public/xits/XITS-Bold.otf and new/fonts/opentype/public/xits/XITS-Bold.otf differ
Binary files old/fonts/opentype/public/xits/XITS-BoldItalic.otf and new/fonts/opentype/public/xits/XITS-BoldItalic.otf differ
Binary files old/fonts/opentype/public/xits/XITS-Italic.otf and new/fonts/opentype/public/xits/XITS-Italic.otf differ
Binary files old/fonts/opentype/public/xits/XITS-Regular.otf and new/fonts/opentype/public/xits/XITS-Regular.otf differ
Binary files old/fonts/opentype/public/xits/XITSMath-Bold.otf and new/fonts/opentype/public/xits/XITSMath-Bold.otf differ
Binary files old/fonts/opentype/public/xits/XITSMath-Regular.otf and new/fonts/opentype/public/xits/XITSMath-Regular.otf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xits.tlpobj new/tlpkg/tlpobj/xits.tlpobj
--- old/tlpkg/tlpobj/xits.tlpobj 2019-02-28 04:18:54.000000000 +0100
+++ new/tlpkg/tlpobj/xits.tlpobj 2019-09-08 01:54:45.000000000 +0200
@@ -1,6 +1,6 @@
name xits
category Package
-revision 48879
+revision 52046
shortdesc A Scientific Times-like font with support for mathematical typesetting
relocated 1
longdesc XITS is a Times-like font for scientific typesetting with
@@ -8,7 +8,7 @@
longdesc capable TeX engines, namely LuaTeX and XeTeX. For use with
longdesc LuaLaTeX or XeLaTeX, support is available from the fontspec and
longdesc unicode-math packages.
-runfiles size=350
+runfiles size=358
RELOC/fonts/opentype/public/xits/XITS-Bold.otf
RELOC/fonts/opentype/public/xits/XITS-BoldItalic.otf
RELOC/fonts/opentype/public/xits/XITS-Italic.otf
@@ -16,8 +16,11 @@
RELOC/fonts/opentype/public/xits/XITSMath-Bold.otf
RELOC/fonts/opentype/public/xits/XITSMath-Regular.otf
catalogue-also stix asana-math
+catalogue-contact-announce https://github.com/alif-type/xits/releases
+catalogue-contact-repository https://github.com/alif-type/xits
+catalogue-contact-support https://github.com/alif-type/xits/issues
catalogue-ctan /fonts/xits
-catalogue-date 2018-10-10 12:22:04 +0200
+catalogue-date 2019-09-07 18:36:14 +0200
catalogue-license ofl
catalogue-topics font font-serif font-maths font-symbol-maths font-otf
-catalogue-version 1.200.1
+catalogue-version 1.301
++++++ xltabular.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xltabular/Changes new/doc/latex/xltabular/Changes
--- old/doc/latex/xltabular/Changes 2018-12-16 22:52:40.000000000 +0100
+++ new/doc/latex/xltabular/Changes 2020-03-20 22:28:00.000000000 +0100
@@ -1,3 +1,4 @@
+2.0c 2020/03/20 - restore of original longtable more robust
2.0a 2018/12/16 - better hyperref support; example files
1.0a 2018/05/23 - restore original tabularx must not be statically
0.05 2017-10-26 - set \keepXColumns
Binary files old/doc/latex/xltabular/xltabular-doc.pdf and new/doc/latex/xltabular/xltabular-doc.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xltabular.doc.tlpobj new/tlpkg/tlpobj/xltabular.doc.tlpobj
--- old/tlpkg/tlpobj/xltabular.doc.tlpobj 2019-02-28 04:18:55.000000000 +0100
+++ new/tlpkg/tlpobj/xltabular.doc.tlpobj 2020-03-20 23:59:04.000000000 +0100
@@ -1,6 +1,6 @@
name xltabular.doc
category Package
-revision 49939
+revision 54437
shortdesc doc files of xltabular
relocated 1
docfiles size=27
++++++ xltabular.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xltabular/xltabular.sty new/tex/latex/xltabular/xltabular.sty
--- old/tex/latex/xltabular/xltabular.sty 2019-02-04 22:37:28.000000000 +0100
+++ new/tex/latex/xltabular/xltabular.sty 2020-03-20 22:28:00.000000000 +0100
@@ -3,21 +3,18 @@
%% License from CTAN archives in directory macros/latex/base/lppl.txt.
%% Either version 1.3 or, at your option, any later version.
%%
-% Copyright 2018 Herbert Voss
-% Rolf Niepraschk
+% Copyright 2018,... Herbert Voss
+% Rolf Niepraschk
%%
-\ProvidesPackage{xltabular}[2019/01/30 v0.2b `xltabular' package (hv,RN)]
+\ProvidesPackage{xltabular}[2020/03/20 v0.2c `xltabular' package (hv,RN)]
\RequirePackage{tabularx}
\let\XLT@i@tabularx=\tabularx
\let\XLT@i@endtabularx=\endtabularx
\let\XLT@i@TX@endtabularx=\TX@endtabularx
%
-\RequirePackage{ltablex}
-\keepXColumns% xltabular behaves like tabularx
-%
-\let\XLT@ii@tabularx=\tabularx
-\let\XLT@ii@TX@endtabularx=\TX@endtabularx
+\RequirePackage{longtable}
\let\XLT@longtable=\longtable
+\let\XLT@LT@caption=\LT@caption
\let\XLT@LT@start=\LT@start
\let\XLT@LT@array=\LT@array
\@ifundefined{scr@LT@array}{%
@@ -25,7 +22,12 @@
\@ifundefined{adl@LT@array}{}{\let\XLT@adl@LT@array=\adl@LT@array}
}
}{\let\XLT@scr@LT@array=\scr@LT@array}%
-
+%
+\RequirePackage{ltablex}
+\keepXColumns% xltabular behaves like tabularx
+%
+\let\XLT@ii@tabularx=\tabularx
+\let\XLT@ii@TX@endtabularx=\TX@endtabularx
%
% restore original tabularx
\renewenvironment{tabularx}%
@@ -64,11 +66,14 @@
}%
%
\providecommand*\LTcaptype{table}% support of package "caption"
+% restore original longtable
\def\longtable{%
\ifXLT@HypRef
% revert to the unpatched version when \caption is not used
- \global\let\LT@start=\XLT@LT@start
+ \global\let\LT@start=\XLT@LT@start%
\fi
+ \let\LT@array=\XLT@LT@array
+ \let\LT@caption=\XLT@LT@caption
\XLT@longtable
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xltabular.tlpobj new/tlpkg/tlpobj/xltabular.tlpobj
--- old/tlpkg/tlpobj/xltabular.tlpobj 2019-02-28 04:18:55.000000000 +0100
+++ new/tlpkg/tlpobj/xltabular.tlpobj 2020-03-20 23:59:04.000000000 +0100
@@ -1,6 +1,6 @@
name xltabular
category Package
-revision 49939
+revision 54437
shortdesc Longtable support with possible X-column specifier
relocated 1
longdesc This package loads package ltablex, but keeps the current
@@ -13,7 +13,5 @@
catalogue-contact-bugs https://github.com/rolfn/xltabular/issues
catalogue-contact-home https://github.com/rolfn/xltabular
catalogue-ctan /macros/latex/contrib/xltabular
-catalogue-date 2019-02-04 10:22:01 +0100
catalogue-license lppl1.3
catalogue-topics table table-long
-catalogue-version 0.2b
++++++ xmltex.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xmltex.doc.tlpobj new/tlpkg/tlpobj/xmltex.doc.tlpobj
--- old/tlpkg/tlpobj/xmltex.doc.tlpobj 2019-02-28 04:18:55.000000000 +0100
+++ new/tlpkg/tlpobj/xmltex.doc.tlpobj 2020-03-24 02:04:32.000000000 +0100
@@ -1,6 +1,6 @@
name xmltex.doc
category Package
-revision 48634
+revision 54498
shortdesc doc files of xmltex
docfiles size=32
texmf-dist/doc/otherformats/xmltex/base/englishutf16.xml
++++++ xmltex.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xmltex.tlpobj new/tlpkg/tlpobj/xmltex.tlpobj
--- old/tlpkg/tlpobj/xmltex.tlpobj 2019-02-28 04:18:55.000000000 +0100
+++ new/tlpkg/tlpobj/xmltex.tlpobj 2020-03-24 02:04:32.000000000 +0100
@@ -1,6 +1,6 @@
name xmltex
category Package
-revision 48634
+revision 54498
shortdesc Support for parsing XML documents
longdesc The package provides an implementation of a parser for
longdesc documents matching the XML 1.0 and XML Namespace
@@ -16,14 +16,19 @@
depend xmltexconfig
depend babel
depend cm
-depend dehyph
depend hyphen-base
depend latex-fonts
-depend latexconfig
+depend l3backend
+depend l3kernel
+depend l3packages
depend tex-ini-files
+depend unicode-data
+depend dehyph
+depend hyph-utf8
+depend latexconfig
depend xmltex.ARCH
-execute AddFormat name=xmltex engine=pdftex patterns=language.dat options="*xmltex.ini" fmttriggers=babel,cm,dehyph,hyphen-base,latex,latex-fonts,latexconfig,tex-ini-files,xmltexconfig
-execute AddFormat name=pdfxmltex engine=pdftex patterns=language.dat options="*pdfxmltex.ini" fmttriggers=babel,cm,dehyph,hyphen-base,latex,latex-fonts,latexconfig,tex-ini-files,xmltexconfig
+execute AddFormat name=xmltex engine=pdftex patterns=language.dat options="*xmltex.ini" fmttriggers=babel,cm,hyphen-base,latex-fonts,l3backend,l3kernel,l3packages,tex-ini-files,unicode-data,dehyph,hyph-utf8,latex,latexconfig,tex-ini-files,xmltexconfig
+execute AddFormat name=pdfxmltex engine=pdftex patterns=language.dat options="*pdfxmltex.ini" fmttriggers=babel,cm,hyphen-base,latex-fonts,l3backend,l3kernel,l3packages,tex-ini-files,unicode-data,dehyph,hyph-utf8,latex,latexconfig,tex-ini-files,xmltexconfig
runfiles size=24
texmf-dist/tex/xmltex/base/iso-8859-1.xmt
texmf-dist/tex/xmltex/base/iso-8859-2.xmt
@@ -37,7 +42,6 @@
texmf-dist/tex/xmltex/base/xmltex.tex
catalogue-contact-repository https://github.com/davidcarlisle/dpctex
catalogue-ctan /macros/xmltex/base
-catalogue-date 2018-04-05 06:13:24 +0200
catalogue-license lppl
catalogue-topics foreign-import
catalogue-version 0.8
++++++ xpatch.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xpatch/README new/doc/latex/xpatch/README
--- old/doc/latex/xpatch/README 2012-10-06 11:27:44.000000000 +0200
+++ new/doc/latex/xpatch/README 2020-03-26 22:29:18.000000000 +0100
@@ -1,14 +1,18 @@
The xpatch package generalizes the macro patching commands provided by
P. Lehmann's `etoolbox'.
-This is version 0.3 of the package
+This is version 0.3a of the package
+
+Changes from version 0.3
+o Changed deprecated function \token_get_replacement_spec:N
+ to \cs_replacement_spec:N
Changes from version 0.2
o Added \xpatch...format, \xpreto...format and \xappto...format macros
for patching internal biblatex macros defined \Declare...Format
(under kind request by Audrey Boruvka)
- Copyright 2012 Enrico Gregorio
+ Copyright 2012-2020 Enrico Gregorio
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
Binary files old/doc/latex/xpatch/xpatch.pdf and new/doc/latex/xpatch/xpatch.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xpatch.doc.tlpobj new/tlpkg/tlpobj/xpatch.doc.tlpobj
--- old/tlpkg/tlpobj/xpatch.doc.tlpobj 2019-02-28 04:18:56.000000000 +0100
+++ new/tlpkg/tlpobj/xpatch.doc.tlpobj 2020-03-26 23:29:45.000000000 +0100
@@ -1,8 +1,8 @@
name xpatch.doc
category Package
-revision 27897
+revision 54563
shortdesc doc files of xpatch
relocated 1
-docfiles size=112
+docfiles size=116
RELOC/doc/latex/xpatch/README
RELOC/doc/latex/xpatch/xpatch.pdf
++++++ xpatch.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xpatch/xpatch.sty new/tex/latex/xpatch/xpatch.sty
--- old/tex/latex/xpatch/xpatch.sty 2012-10-06 11:27:44.000000000 +0200
+++ new/tex/latex/xpatch/xpatch.sty 2020-03-26 22:29:18.000000000 +0100
@@ -9,7 +9,7 @@
%% Do not distribute this file without also distributing the
%% source files specified above.
%%
-%% File: xpatch.dtx (C) Copyright 2012 Enrico Gregorio
+%% File: xpatch.dtx (C) Copyright 2012-2020 Enrico Gregorio
%%
%% It may be distributed and/or modified under the conditions of the
%% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -24,7 +24,7 @@
%% The released version of this bundle is available from CTAN.
%%
\RequirePackage{expl3}
-\GetIdInfo$Id: xpatch.dtx 0.3 2012-10-02 12:00:00Z Enrico $
+\GetIdInfo$Id: xpatch.dtx 0.3a 2020-03-25 12:00:00Z Enrico $
{Extending etoolbox patching commands}
\ProvidesExplPackage
{\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -53,7 +53,7 @@
\bool_set_false:N \l__xpatch_protect_bool
\tl_set:Nx \l__xpatch_name_tl { \cs_to_str:N #2 }
\tl_set:Nx \l__xpatch_repl_tl
- { \c__xpatch_bizarre_tl \token_get_replacement_spec:N #2 }
+ { \c__xpatch_bizarre_tl \cs_replacement_spec:N #2 }
\tl_if_in:NxT \l__xpatch_repl_tl
{
\c__xpatch_bizarre_tl
@@ -107,7 +107,7 @@
{
\tl_set:Nx \l__xpatch_repl_tl
{ \c__xpatch_bizarre_tl
- \exp_after:wN \token_get_replacement_spec:N
+ \exp_after:wN \cs_replacement_spec:N
\cs:w \l__xpatch_name_tl \cs_end: }
\tl_if_in:NxT \l__xpatch_repl_tl
{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xpatch.tlpobj new/tlpkg/tlpobj/xpatch.tlpobj
--- old/tlpkg/tlpobj/xpatch.tlpobj 2019-02-28 04:18:56.000000000 +0100
+++ new/tlpkg/tlpobj/xpatch.tlpobj 2020-03-26 23:29:45.000000000 +0100
@@ -1,6 +1,6 @@
name xpatch
category Package
-revision 27897
+revision 54563
shortdesc Extending etoolbox patching commands
relocated 1
longdesc The package generalises the macro patching commands provided by
@@ -8,7 +8,6 @@
runfiles size=3
RELOC/tex/latex/xpatch/xpatch.sty
catalogue-ctan /macros/latex/contrib/xpatch
-catalogue-date 2016-06-24 19:18:15 +0200
catalogue-license lppl1.3
catalogue-topics macro-supp
-catalogue-version 0.2
+catalogue-version 0.3
++++++ xsavebox.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsavebox/ChangeLog new/doc/latex/xsavebox/ChangeLog
--- old/doc/latex/xsavebox/ChangeLog 2018-07-09 23:27:37.000000000 +0200
+++ new/doc/latex/xsavebox/ChangeLog 2020-03-05 01:53:15.000000000 +0100
@@ -1,3 +1,20 @@
+2020-03-04
+ * v0.16
+ * fix: dvisvgm-special `bbox' option `transform' added
+
+2019-11-12
+ * v0.15
+ * fix: output driver set-up
+
+2019-08-13
+ * v0.14
+ * fix: existing \theXXX macros, such as LaTeX counters, could accidentally
+ be overwritten
+
+2019-06-24
+ * v0.13
+ * fix: dvipdfmx driver option fixed to work with current expl3
+
2018-07-09
* v0.12
* fix: non-vanishing Re-run message
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsavebox/README new/doc/latex/xsavebox/README
--- old/doc/latex/xsavebox/README 2018-06-09 00:04:36.000000000 +0200
+++ new/doc/latex/xsavebox/README 2020-03-05 01:53:15.000000000 +0100
@@ -21,6 +21,7 @@
* pdfLaTeX, LuaLaTeX
* LaTeX --> dvips --> ps2pdf/Distiller
* (Xe)LaTeX --> (x)dvipdfmx
+ * LaTeX --> dvisvgm
The user commands are:
Binary files old/doc/latex/xsavebox/xsavebox.pdf and new/doc/latex/xsavebox/xsavebox.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xsavebox.doc.tlpobj new/tlpkg/tlpobj/xsavebox.doc.tlpobj
--- old/tlpkg/tlpobj/xsavebox.doc.tlpobj 2019-02-28 04:18:59.000000000 +0100
+++ new/tlpkg/tlpobj/xsavebox.doc.tlpobj 2020-03-05 02:15:52.000000000 +0100
@@ -1,9 +1,9 @@
name xsavebox.doc
category Package
-revision 48171
+revision 54097
shortdesc doc files of xsavebox
relocated 1
-docfiles size=93
+docfiles size=92
RELOC/doc/latex/xsavebox/ChangeLog
RELOC/doc/latex/xsavebox/README
RELOC/doc/latex/xsavebox/xsavebox.pdf
++++++ xsavebox.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xsavebox/xsavebox.sty new/tex/latex/xsavebox/xsavebox.sty
--- old/tex/latex/xsavebox/xsavebox.sty 2018-07-09 23:27:37.000000000 +0200
+++ new/tex/latex/xsavebox/xsavebox.sty 2020-03-05 01:53:15.000000000 +0100
@@ -28,8 +28,8 @@
% \xusebox{<name>}
% \the<name> %short form of \xusebox{<name>} for <name> composed of [a-zA-Z]
%
-% Supports all known engines and backends including
-% pdflatex, latex+dvips+ps2pdf, xelatex, latex+dvipdfmx, lualatex.
+% Supports all known engines and backends including pdflatex,
+% latex+dvips+ps2pdf, xelatex, latex+dvipdfmx, lualatex, latex+dvisvgm.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -46,11 +46,10 @@
% The Current Maintainer of this work is A. Grahn.
\RequirePackage{xparse}
-\RequirePackage{pdfbase} %everything with `pbs_' prefix
\RequirePackage{l3keys2e}
-\def\g@xsb@version@tl{0.12}
-\def\g@xsb@date@tl{2018/07/09}
+\def\g@xsb@version@tl{0.16}
+\def\g@xsb@date@tl{2020/03/04}
\ProvidesExplPackage{xsavebox}{\g@xsb@date@tl}{\g@xsb@version@tl}
{saveboxes for repeating content without code replication}
@@ -60,10 +59,6 @@
Please~install~an~up~to~date~version~of~`#1'.\\
Loading~xsavebox~will~abort!
}
-\@ifpackagelater{pdfbase}{2017/03/23}{}{
- \msg_error:nnn{xsavebox}{support~outdated}{pdfbase.sty}
- \tex_endinput:D
-}
%re-run message
\msg_set:nnn{xsavebox}{rerun}{Rerun~to~get~internal~references~right!}
@@ -81,6 +76,7 @@
}
%package options
+\bool_new:N\g_xsb_dvisvgm_bool %`dvisvgm' driver option
\tl_gset:Nn\g_xsb_margin_tl{3pt}
\keys_define:nn{xsavebox}{
margin .code:n = {
@@ -88,20 +84,57 @@
\tl_gset:Nx\g_xsb_margin_tl{\dim_use:N\l_tmpa_dim}
},
+ xetex .code:n = {}, %dummy, we use engine test instead
+
+ dvipdfmx .choice:,
+ dvipdfmx / true .code:n = {
+ \bool_gset_false:N\g_xsb_dvisvgm_bool
+ \PassOptionsToPackage{dvipdfmx}{pdfbase}
+ },
+ dvipdfmx / false .code:n = {},
+ dvipdfmx .default:n = {true},
+
+ dvisvgm .choice:,
+ dvisvgm / true .code:n = {
+ \bool_gset_true:N\g_xsb_dvisvgm_bool
+ \PassOptionsToPackage{dvisvgm}{pdfbase}
+ },
+ dvisvgm / false .code:n = {\bool_gset_false:N\g_xsb_dvisvgm_bool},
+ dvisvgm .default:n = {true},
+
unknown .code:n = {
\msg_error:nnx{xsavebox}{unknown~package~option}{\l_keys_key_tl}
}
}
-
\ProcessKeysOptions{xsavebox}
+\sys_if_output_pdf:T{\bool_gset_false:N\g_xsb_dvisvgm_bool}
+
+\RequirePackage{pdfbase}
+\@ifpackagelater{pdfbase}{2017/03/23}{}{
+ \msg_error:nnn{xsavebox}{support~outdated}{pdfbase.sty}
+ \tex_endinput:D
+}
+\cs_gset_eq:NN\xsb_pdfxform:nnnnn\pbs_pdfxform:nnnnn
+\cs_gset_eq:NN\xsb_pdflastxform:\pbs_pdflastxform:
+\cs_gset_eq:NN\xsb_pdfrefxform:n\pbs_pdfrefxform:n
+
+\bool_if:NTF\g_xsb_dvisvgm_bool{
+ \tl_gset:Nn\g_xsb_margin_tl{0pt}
+ \cs_new_protected_nopar:Nn\xsb_updatebbox:nnn{
+ \special{dvisvgm:bbox~#1~#2~#3~transform}
+ }
+}{
+ \cs_new_protected_nopar:Nn\xsb_updatebbox:nnn{}
+}
+
\int_new:N\g_xsb_id_int
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% content insertion (referencing, actually)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareDocumentCommand\xusebox{m}{
- \tl_if_exist:cF{the#1}{\msg_error:nnn{xsavebox}{save-box~undefined}{#1}}
+ \tl_if_exist:cF{xsb_name_#1}{\msg_error:nnn{xsavebox}{save-box~undefined}{#1}}
\tl_use:c{the#1}
}
\msg_set:nnnn{xsavebox}{save-box~undefined}{
@@ -114,6 +147,7 @@
% saving content
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\DeclareDocumentCommand\xsavebox{smO{\width}O{c}+m}{
+ \xsb_check_box_name:n{#2}
\group_begin:
\tl_set:Nn\l_xsb_content_grouped_tl{
\group_begin:
@@ -125,13 +159,9 @@
\xsb_beginLTR:
\IfBooleanTF{#1}{
%later colour injection possible (pdfTeX, LuaTeX)
- \hbox_set:Nn\l_xsb_raw_box{ %raw content
- \color@begingroup\l_xsb_content_grouped_tl\color@endgroup
- }
+ \hbox_set:Nn\l_xsb_raw_box{\l_xsb_content_grouped_tl} %raw content
\hbox_set:Nn\l_xsb_box{ %content re-aligned
- \makebox[#3][#4]{
- \color@begingroup\l_xsb_content_grouped_tl\color@endgroup
- }
+ \makebox[#3][#4]{\l_xsb_content_grouped_tl}
}
}{
%the LaTeX way (no colour injection)
@@ -140,13 +170,13 @@
}
%process one of \l_xsb_raw_box or \l_xsb_box
\dim_compare:nTF{\box_wd:N\l_xsb_raw_box>\box_wd:N\l_xsb_box}{
- \str_if_eq_x:nnTF{#4}{s}{
+ \str_if_eq:eeTF{#4}{s}{
%sqeezing content correctly
\IfBooleanTF{#1}{
%for colour injection
\hbox_set:Nn\l_xsb_box{
\makebox[\box_wd:N\l_xsb_raw_box][l]{
- \makebox[#3][s]{\color@begingroup#5\color@endgroup}
+ \makebox[#3][s]{#5}
}
}
}{
@@ -156,22 +186,18 @@
}
}
\xsb_process_box:nnnN{#2}{#3}{#4}\l_xsb_box
- }{
+ }{ % raw content
\IfBooleanTF{#1}{
- \hbox_set:Nn\l_xsb_raw_box{ %raw content
- \color@begingroup#5\color@endgroup
- }
+ \hbox_set:Nn\l_xsb_raw_box{#5}
}{
- \sbox\l_xsb_raw_box{#5} %raw content
+ \sbox\l_xsb_raw_box{#5}
}
\xsb_process_box:nnnN{#2}{#3}{#4}\l_xsb_raw_box
}
}{
\IfBooleanTF{#1}{
\hbox_set:Nn\l_xsb_box{ %content re-aligned
- \makebox[#3][#4]{
- \color@begingroup#5\color@endgroup
- }
+ \makebox[#3][#4]{#5}
}
}{
\savebox\l_xsb_box[#3][#4]{#5} %re-aligned
@@ -185,18 +211,34 @@
\DeclareDocumentCommand\xsbox{m+m}{\xsavebox{#1}{#2}}
\DeclareDocumentEnvironment{xlrbox}{m}{
+ \xsb_check_box_name:n{#1}
\xsb_xlrbox:
}{
\xsb_endxlrbox:n{#1}
}
\DeclareDocumentEnvironment{xlrbox*}{m}{
+ \xsb_check_box_name:n{#1}
\xsb_xlrbox_star:
}{
\xsb_endxlrbox_star:n{#1}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\msg_set:nnn{xsavebox}{name~in~use}{
+ The~name~`#1'~is~already~in~use~\msg_line_context:.\\
+ Select~a~different~box~name.
+}
+\cs_new_protected_nopar:Nn\xsb_check_box_name:n{
+ \bool_if:nTF{
+ \cs_if_exist_p:c{the#1} && !\tl_if_exist_p:c{xsb_name_#1}
+ }{
+ \msg_error:nnx{xsavebox}{name~in~use}{#1}
+ }{
+ \tl_clear_new:c{xsb_name_#1}
+ }
+}
+
\cs_new_protected:Nn\xsb_xlrbox:{
\group_begin:
\xsb_push_props: %new, empty properties dict
@@ -208,7 +250,7 @@
\cs_new_protected_nopar:Nn\xsb_endxlrbox:n{
\unskip
\group_end:\hbox_set_end:
- \sbox\l_xsb_box{\hbox_unpack_clear:N\l_xsb_box}
+ \sbox\l_xsb_box{\hbox_unpack_drop:N\l_xsb_box}
\xsb_process_box:nnnN{#1}{\width}{c}\l_xsb_box
\xsb_endLTR:
\group_end:
@@ -218,13 +260,13 @@
\group_begin:
\xsb_push_props: %new, empty properties dict
\xsb_beginLTR:
- \hbox_set:Nw\l_xsb_box\color@begingroup
+ \hbox_set:Nw\l_xsb_box
\ignorespaces
}
\cs_new_protected_nopar:Nn\xsb_endxlrbox_star:n{
\unskip
- \color@endgroup\hbox_set_end:
+ \hbox_set_end:
\xsb_process_box:nnnN{#1}{\width}{c}\l_xsb_box
\xsb_endLTR:
\group_end:
@@ -245,7 +287,7 @@
%temporarily (for distilling) push the box bounds somewhat; glyphs tend to
%be bigger than their bounding boxes
\hbox_set_to_wd:Nnn#4{\width+\g_xsb_margin_tl+\g_xsb_margin_tl}{
- \hss\hbox_unpack_clear:N#4\hss
+ \hss\hbox_unpack_drop:N#4\hss
}
\box_set_ht:Nn#4{\height+\g_xsb_margin_tl}
\box_set_dp:Nn#4{\depth+\g_xsb_margin_tl}
@@ -260,7 +302,7 @@
\xsb_pop_props_to:N\l_tmpa_tl
%distill box to Form XObject, if used (ref'ed)
\bool_if:cT{c_\tl_use:c{xsb@\int_use:N\g_xsb_id_int}_bool}{
- \pbs_pdfxform:nnnnn{1}{0}{\l_tmpa_tl}{
+ \xsb_pdfxform:nnnnn{1}{0}{\l_tmpa_tl}{
\cs_if_exist_use:N\ocgbase_insert_oc:}{#4}
}
%for tracking box usage
@@ -275,18 +317,19 @@
\token_to_str:N\pbs@newkey{xsb@\int_use:N\g_xsb_id_int}{true}
}
\exp_not:N\tl_new:c{xsb_\int_use:N\g_xsb_id_int}
- }
+ }
\exp_not:N\bool_if:cF{c_\tl_use:c{xsb@\int_use:N\g_xsb_id_int}_bool}{
\exp_not:N\xsb_rerun_msg:
}
\exp_not:N\xsb_beginLTR:
+ \xsb_updatebbox:nnn{\l_xsb_new_wd_tl}{\l_xsb_ht_tl}{\l_xsb_dp_tl}
\exp_not:N\makebox[\l_xsb_new_wd_tl][#3]{
\exp_not:N\hbox_to_wd:nn{\l_xsb_wd_tl}{
\exp_not:N\vrule~width~\c_zero_dim~height~\l_xsb_ht_tl~
depth~\l_xsb_dp_tl
\exp_not:N\skip_horizontal:n{-\g_xsb_margin_tl}
\bool_if:cT{c_\tl_use:c{xsb@\int_use:N\g_xsb_id_int}_bool}{
- \exp_not:N\pbs_pdfrefxform:n{\pbs_pdflastxform:}
+ \exp_not:N\xsb_pdfrefxform:n{\xsb_pdflastxform:}
}
\hss
}
@@ -302,12 +345,12 @@
%environment for setting LTR typesetting direction with e-TeX based engines
\cs_new_protected:Nn\xsb_beginLTR:{
\cs_if_exist:NT\TeXXeTstate{
- \int_compare:nT{\TeXXeTstate>\c_zero}{\beginL}
+ \int_compare:nT{\TeXXeTstate>\c_zero_int}{\beginL}
}
}
\cs_new_protected:Nn\xsb_endLTR:{
\cs_if_exist:NT\TeXXeTstate{
- \int_compare:nT{\TeXXeTstate>\c_zero}{\endL}
+ \int_compare:nT{\TeXXeTstate>\c_zero_int}{\endL}
}
}
@@ -326,7 +369,7 @@
\cs_new_protected:Nn\xsb_pop_props_to:N{
\seq_gpop:NNT\g_xsb_props_seq\l_tmpa_tl{
\tl_trim_spaces:N\l_tmpa_tl
- \str_if_eq_x:nnF{\l_tmpa_tl}{}{\tl_set:Nx#1{/Properties<<\l_tmpa_tl>>}}
+ \str_if_eq:eeF{\l_tmpa_tl}{}{\tl_set:Nx#1{/Properties<<\l_tmpa_tl>>}}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xsavebox.tlpobj new/tlpkg/tlpobj/xsavebox.tlpobj
--- old/tlpkg/tlpobj/xsavebox.tlpobj 2019-02-28 04:19:00.000000000 +0100
+++ new/tlpkg/tlpobj/xsavebox.tlpobj 2020-03-05 02:15:52.000000000 +0100
@@ -1,6 +1,6 @@
name xsavebox
category Package
-revision 48171
+revision 54097
shortdesc Saveboxes for repeating content without code replication, based on PDF Form XObjects
relocated 1
longdesc The package defines commands for saving content that can be
@@ -17,7 +17,6 @@
RELOC/tex/latex/xsavebox/xsavebox.sty
catalogue-contact-repository https://gitlab.com/agrahn/xsavebox
catalogue-ctan /macros/latex/contrib/xsavebox
-catalogue-date 2018-07-09 17:37:27 +0200
catalogue-license lppl1.3
catalogue-topics boxing pdf-feat adobe-distiller
-catalogue-version 0.12
+catalogue-version 0.16
++++++ xsim.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/README new/doc/latex/xsim/README
--- old/doc/latex/xsim/README 2018-02-14 22:31:31.000000000 +0100
+++ new/doc/latex/xsim/README 2020-04-12 00:52:28.000000000 +0200
@@ -1,5 +1,6 @@
--------------------------------------------------------------------------
-XSIM 2018/02/12 v0.11
+XSIM 2020/04/04 v0.19b
+XSIMVERB 2019/12/29 v0.1a
eXercise Sheets IMproved
@@ -8,7 +9,7 @@
Web: https://github.com/cgnieder/xsim
E-Mail: contact@mychemistry.eu
--------------------------------------------------------------------------
-Copyright 2017--2018 Clemens Niederberger
+Copyright 2017--2020 Clemens Niederberger
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -25,6 +26,7 @@
The xsim package consists of the code files:
xsim.sty
xsimverb.sty
+ xsim.auxfile.code.tex
xsim.base.code.tex
xsim.blanks.code.tex
xsim.collections.code.tex
@@ -34,11 +36,11 @@
xsim.goals.code.tex
xsim.grades.code.tex
xsim.interface.code.tex
- xsim.layouts.code.tex
xsim.modules.code.tex
xsim.properties.code.tex
xsim.random.code.tex
xsim.solutions.code.tex
+ xsim.style.layouts.code.tex
xsim.tags.code.tex
xsim.templates.code.tex
xsim.translations.code.tex
@@ -63,8 +65,8 @@
xsim.grade-distribution.tex, xsim.grade-distribution.pdf
xsim.hints.tex, xsim.hints.pdf
xsim.listings.tex, xsim.listings.pdf
- xsim.multiplechoice.tex, xsim.multiplechoice.pdf
xsim.listofexercises.tex, xsim.listofexercises.pdf
+ xsim.multiplechoice.tex, xsim.multiplechoice.pdf
xsim.pointsums.tex, xsim.pointsums.pdf
xsim.randomexercises.tex, xsim.randomexercises.pdf
xsim.various.tex, xsim.various.pdf
@@ -82,8 +84,10 @@
xsim.texsx-370642.tex, xsim.texsx-370642.pdf
xsim.texsx-391530.tex, xsim.texsx-391530.pdf
xsim.texsx-395273.tex, xsim.texsx-395273.pdf
+ xsim.texsx-498299.tex, xsim.texsx-498299.pdf,
xsim.texwelt-6698.tex, xsim.texwelt-6698.pdf
xsim.texwelt-15093.tex, xsim.texwelt-15093.pdf
+ xsim.texwelt-23968.tex, xsim.texwelt-23968.pdf
xsim.golatex-16824.tex, xsim.golatex-16824.pdf
xsim.golatex-18844.tex, xsim.golatex-18844.pdf
--------------------------------------------------------------------------
Binary files old/doc/latex/xsim/examples/xsim.code-and-output.pdf and new/doc/latex/xsim/examples/xsim.code-and-output.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/examples/xsim.code-and-output.tex new/doc/latex/xsim/examples/xsim.code-and-output.tex
--- old/doc/latex/xsim/examples/xsim.code-and-output.tex 2017-05-19 23:12:44.000000000 +0200
+++ new/doc/latex/xsim/examples/xsim.code-and-output.tex 2019-09-30 23:52:46.000000000 +0200
@@ -10,7 +10,7 @@
}
\makeatletter
-\NewDocumentEnvironment{example}{o}
+\NewDocumentEnvironment{example}{!o}
{%
\XSIMgobblechars{2}%
\XSIMsetfilebegin{\@percentchar\space file `\jobname.tmp'}%
@@ -25,7 +25,7 @@
\input{\jobname.tmp}
}
-\NewDocumentEnvironment{code}{o}
+\NewDocumentEnvironment{code}{!o}
{%
\XSIMgobblechars{2}%
\IfNoValueTF{#1}
@@ -46,7 +46,7 @@
\bigskip
-\begin{code}
+\begin{code}[]
blubber \LaTeX
\end{code}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/examples/xsim.collections.tex new/doc/latex/xsim/examples/xsim.collections.tex
--- old/doc/latex/xsim/examples/xsim.collections.tex 2017-05-19 23:12:44.000000000 +0200
+++ new/doc/latex/xsim/examples/xsim.collections.tex 2020-03-17 22:32:40.000000000 +0100
@@ -5,7 +5,7 @@
\DeclareExerciseCollection{foo-medium}
\DeclareExerciseTagging{difficulty}
-\usepackage{filecontents,lipsum}
+\usepackage{lipsum}
\begin{filecontents*}{foo.tex}
\begin{exercise}[difficulty=easy,points=1]
foo one \lipsum[4]
Binary files old/doc/latex/xsim/examples/xsim.texsx-338165.pdf and new/doc/latex/xsim/examples/xsim.texsx-338165.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/examples/xsim.texsx-338165.tex new/doc/latex/xsim/examples/xsim.texsx-338165.tex
--- old/doc/latex/xsim/examples/xsim.texsx-338165.tex 2017-05-19 23:12:44.000000000 +0200
+++ new/doc/latex/xsim/examples/xsim.texsx-338165.tex 2019-10-07 22:58:33.000000000 +0200
@@ -8,9 +8,7 @@
\usepackage{xsim}
\usepackage{tcolorbox}
\tcbuselibrary{breakable, skins}
-\settasks{
- counter-format = tsk.
-}
+\settasks{ label = \arabic*. }
\DeclareExerciseEnvironmentTemplate{boxed}
{%
Binary files old/doc/latex/xsim/examples/xsim.texsx-350028.pdf and new/doc/latex/xsim/examples/xsim.texsx-350028.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/examples/xsim.texsx-350028.tex new/doc/latex/xsim/examples/xsim.texsx-350028.tex
--- old/doc/latex/xsim/examples/xsim.texsx-350028.tex 2017-05-19 23:12:44.000000000 +0200
+++ new/doc/latex/xsim/examples/xsim.texsx-350028.tex 2020-04-12 00:52:28.000000000 +0200
@@ -1,7 +1,6 @@
% http://tex.stackexchange.com/q/350028/
\documentclass{book}
-
-\usepackage{xsimverb}
+\usepackage[T1]{fontenc}
\usepackage{xsim}
\usepackage[most]{tcolorbox}
\tcbuselibrary{skins,breakable}
Binary files old/doc/latex/xsim/examples/xsim.texsx-498299.pdf and new/doc/latex/xsim/examples/xsim.texsx-498299.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/examples/xsim.texsx-498299.tex new/doc/latex/xsim/examples/xsim.texsx-498299.tex
--- old/doc/latex/xsim/examples/xsim.texsx-498299.tex 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/latex/xsim/examples/xsim.texsx-498299.tex 2019-11-10 23:07:28.000000000 +0100
@@ -0,0 +1,75 @@
+\documentclass{article}
+\usepackage[no-files]{xsim}
+\usepackage{tasks}
+
+\DeclareExerciseEnvironmentTemplate{item}
+ {\item[\GetExerciseProperty{counter}]}
+ {}
+
+\DeclareExerciseProperty{answer}
+
+\newcommand*\answer[1]{%
+ \XSIMexpandcode{%
+ \SetExerciseProperty{answer}
+ { (\noexpand\textit{\alph{task}}) \unexpanded{#1}}}%
+ #1%
+}
+
+\newcommand*\getanswers{%
+ \def\betweenanswers{\def\betweenanswers{\hspace{2em}}}%
+ \ForEachUsedExerciseByID{%
+ \betweenanswers##3\ExercisePropertyGet{##1}{##2}{answer}%
+ }%
+}
+
+\xsimsetup{
+ exercise/template = item,
+ exercise/the-counter = \arabic{exercise}.
+}
+
+\NewTasksEnvironment[
+ label = (\textit{\alph*}) ,
+ label-width = 14pt
+]{choice}[\choice]
+
+\newenvironment{questions}
+ {\itemize}
+ {\enditemize}
+
+\begin{document}
+
+\section{Problems}
+\begin{questions}
+ \begin{exercise}
+ What is the product of $-2$ and $3$?
+ \begin{choice}(4)
+ \choice \answer{$-6$}
+ \choice $6$
+ \choice $5$
+ \choice $-5$
+ \end{choice}
+ \end{exercise}
+ \begin{exercise}
+ What is the sum of the sides of a polygon called?
+ \begin{choice}(2)
+ \choice Leg
+ \choice \answer{Perimeter}
+ \choice Area
+ \choice Volume
+ \end{choice}
+ \end{exercise}
+ \begin{exercise}
+ What is the sum of $-2$ and $-3$?
+ \begin{choice}(4)
+ \choice $-6$
+ \choice $6$
+ \choice $5$
+ \choice \answer{$-5$}
+ \end{choice}
+ \end{exercise}
+\end{questions}
+
+\section{Answers}
+\getanswers
+
+\end{document}
Binary files old/doc/latex/xsim/examples/xsim.texwelt-23968.pdf and new/doc/latex/xsim/examples/xsim.texwelt-23968.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/examples/xsim.texwelt-23968.tex new/doc/latex/xsim/examples/xsim.texwelt-23968.tex
--- old/doc/latex/xsim/examples/xsim.texwelt-23968.tex 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/latex/xsim/examples/xsim.texwelt-23968.tex 2020-04-12 00:52:28.000000000 +0200
@@ -0,0 +1,70 @@
+% http://texwelt.de/wissen/fragen/23968/
+\documentclass{article}
+\usepackage{xsim}
+
+% new property:
+\DeclareExerciseProperty{shortsolution}
+
+% new environment:
+\NewDocumentEnvironment{shortsolution}{+b}
+ {%
+ \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}%
+ \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}%
+ \SetExerciseProperty{shortsolution}{#1}%
+ }
+ {}
+
+% we'll use a description list for the list of short solutions:
+\newcommand\printshortsolutions{%
+ \begin{description}
+ \ForEachUsedExerciseByType{%
+ \def\ExerciseType{##1}%
+ \def\ExerciseID{##2}%
+ \GetExercisePropertyT{shortsolution}
+ {%
+ \item[Short Solution ##3]
+ ####1%
+ }%
+ }%
+ \end{description}
+}
+
+\begin{document}
+
+\section{Problems}
+% set shortsolution through option:
+\begin{exercise}[subtitle=Pythagoras]
+ This is the first problem.
+\end{exercise}
+\begin{shortsolution}
+ This is a shortsolution to the first problem.
+\end{shortsolution}
+\begin{solution}
+ This is the solution to the first problem.
+\end{solution}
+
+\begin{exercise}[subtitle=Another Problem]
+ This is the second problem.
+\end{exercise}
+\begin{solution}
+ This is the solution to the second problem.
+\end{solution}
+
+% set shortsolution with custom command:
+\begin{exercise}[subtitle=Yet Another Problem]
+ This is the third problem.
+\end{exercise}
+\begin{shortsolution}
+ This is a shortsolution to the third problem.
+\end{shortsolution}
+\begin{solution}
+ This is the solution to the third problem.
+\end{solution}
+
+\section{Shortsolutions}
+\printshortsolutions
+
+\section{Solutions}
+\printsolutions[headings=false]
+
+\end{document}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/xsim.history new/doc/latex/xsim/xsim.history
--- old/doc/latex/xsim/xsim.history 2018-02-14 22:31:31.000000000 +0100
+++ new/doc/latex/xsim/xsim.history 2020-04-12 00:52:28.000000000 +0200
@@ -7,7 +7,7 @@
Web: https://github.com/cgnieder/xsim
E-Mail: contact@mychemistry.eu
--------------------------------------------------------------------------
-Copyright 2017--2018 Clemens Niederberger
+Copyright 2017--2020 Clemens Niederberger
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -111,3 +111,48 @@
- introduce a \xsim_if_<tagging>_value:nTF for each tag
kind
- \ProvideExerciseTagging
+ v0.12 2019/09/30 - add parameter versions for the plural forms of exercise
+ and solution names
+ - bug fixes (issues 37, 39, 43, 47)
+ v0.13 2019/10/06 - experimental package option `no-files'
+ v0.14 2019/10/13 - new exercise parameters `exercise-heading' and
+ `solution-heading'
+ - new options `exercise/heading' and `solution/heading' as
+ interface for setting the new parameters
+ - new command \GetExerciseHeadingF for using the new
+ parameters in environment templates
+ - change the environment template `default' to use the new
+ \GetExerciseHeadingF and output a \par at the end
+ - make argument of \xsimsetup long
+ - new template `minimal'
+ - new option `load-style'
+ - new example `texwelt-23968' (long and short solutions)
+ v0.14a 2019/10/19 - fix \xsim_if_exercise_exist:nnTF to obey the `no-files'
+ option
+ v0.15 2019/11/02 - use own auxiliary file per default and add option
+ `use-aux'
+ v0.16 2019/11/10 - fix issue due to usage of own auxiliary file
+ - \XSIMatbegindocument and \XSIMatenddocument
+ - \xprintexercise, \xprintsolution, \xsimprint, \xsimxprint
+ 2019/12/29 - bugfix in `xsimverb'
+ v0.16a 2020/01/16 - adapt to renaming of string case changing functions
+ v0.17 2020/02/21 - prefer lazy boolean evaluation if possible
+ - remove spurious \par at the beginning of typeset
+ exercises
+ - add `blank' option, implements issue #31
+ - add `solution' property, implements issue #33
+ - fix issue #27
+ - implement issue #2
+ - don't allow package options to be set with \xsimsetup
+ v0.18 2020/02/23 - fix issue #56
+ - change \printexercise and \printsolution to accept a
+ clist of either ids or IDs (or mixed)
+ - new templates in the `layouts' style
+ v0.19 2020/03/16 - improve performance
+ - only set \ExerciseID and \ExerciseType locally to ensure
+ correct values when exercises (of different types) are
+ nested
+ - new load-time option `debug' - only for development
+ v0.19a 2020/03/19 - fix missing-variant-bug introduced with the last update
+ v0.19b 2020/04/04 - fix bug in new attribute mechanism which was a problem
+ when `no-files` has been used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/xsim.ideas new/doc/latex/xsim/xsim.ideas
--- old/doc/latex/xsim/xsim.ideas 2018-02-14 22:31:31.000000000 +0100
+++ new/doc/latex/xsim/xsim.ideas 2020-02-24 15:31:15.000000000 +0100
@@ -7,7 +7,7 @@
Web: https://github.com/cgnieder/xsim
E-Mail: contact@mychemistry.eu
--------------------------------------------------------------------------
-Copyright 2017--2018 Clemens Niederberger
+Copyright 2017--2020 Clemens Niederberger
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -26,6 +26,4 @@
- a document class `xsim-exam' for creating exams
- a mechanism for providing variants of an exam
-- provide a switch: either write the environments to an external file
- or save it to an auxiliary file ? (not really sure about this one --
- probably not)
+
Binary files old/doc/latex/xsim/xsim_manual.pdf and new/doc/latex/xsim/xsim_manual.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xsim/xsim_manual.tex new/doc/latex/xsim/xsim_manual.tex
--- old/doc/latex/xsim/xsim_manual.tex 2018-02-14 22:31:31.000000000 +0100
+++ new/doc/latex/xsim/xsim_manual.tex 2020-04-12 00:52:28.000000000 +0200
@@ -1,8 +1,8 @@
-% !arara: pdflatex: { action: nonstopmode }
+% !arara: pdflatex: { interaction: nonstopmode }
% !arara: biber
-% !arara: pdflatex: { action: nonstopmode }
-% arara: pdflatex: { action: nonstopmode }
-% arara: pdflatex: { action: nonstopmode }
+% arara: pdflatex: { interaction: nonstopmode }
+% arara: pdflatex: { interaction: nonstopmode }
+% arara: pdflatex: { interaction: nonstopmode }
% ----------------------------------------------------------------------------
% the XSIM package
%
@@ -13,7 +13,7 @@
% Web: https://github.com/cgnieder/xsim
% E-Mail: contact@mychemistry.eu
% ----------------------------------------------------------------------------
-% Copyright 2017--2018 Clemens Niederberger
+% Copyright 2017--2020 Clemens Niederberger
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -32,8 +32,7 @@
% ----------------------------------------------------------------------------
\documentclass{xsim-manual}
-\usepackage{filecontents}
-\begin{filecontents*}{\jobname.bib}
+\begin{filecontents*}[overwrite]{\jobname.bib}
@online{texsx:romannumeral,
author = {Bruno Le Floch} ,
title = {Cunning (La)TeX tricks} ,
@@ -44,7 +43,7 @@
title = {Questions tagged `exsheets'} ,
author = {various} ,
url = {http://tex.stackexchange.com/questions/tagged/exsheets} ,
- urldate = {2017-05-15}
+ urldate = {2020-02-21}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
@@ -69,14 +68,27 @@
package. Be careful: if you're in the middle of an important project it
might be better to wait with the update until you've finished the project.
Every update might be breaking some things.
+
+ Please also be aware that \xsim\ is actively developed and many things may
+ still change. However, I will try my best to keep the interface stable.
+\end{bewareofthedog}
+
+I'm currently thinking to make the option \option{no-files} the default
+behavior of \xsim. There is a poll and discussion regarding this question on
+\xsim's github page if you like to give your opinion on this.
+
+\begin{bewareofthedog}
+ The whole collection mechanism is likely to change completely in the
+ not-so-far future (let's say sometime in the six months from April~2020 or
+ so).
\end{bewareofthedog}
-\section{Motivation and Background}
+\section{Motivation, Background}
It has been quite a while since I first published
\pkg{exsheets}~\cite{pkg:exsheets} in June 2012. Since then it has gained a
user base and a little bit of popularity as the number of questions on tex.sx
-shows (119~at the time of writing)~\cite{texsx:tagged/exsheets}. User
+shows (143~at the time of writing)~\cite{texsx:tagged/exsheets}. User
questions, bug reports and feature requests improved it over the time. It
still has a version number starting with a zero, though, which in my
versioning system means I still consider it experimental.
@@ -121,41 +133,56 @@
environment body files.
\opt{clear-aux}
If used every time the total number of exercise changes \xsim\ will write
- \emph{less} information to the auxfile on the next run and only if the
- number of exercises stays stable between compilations the needed
- information will be written to the auxfile. \emph{This needs more
+ \emph{less} information to the auxiliary file on the next run and only if
+ the number of exercises stays stable between compilations the needed
+ information will be written to the auxiliary file. \emph{This needs more
compilations until everything stabilizes but should reduce the
probability of possibly faulty exercises after changes to the document.}
The \option{final} option automatically disables this option. See also
sections~\vref{sec:how-exerc-envir} and~\vref{sec:resolve-getting}.
+ \opt{no-files}
+ \sinceversion{0.13}This option prevents \xsim\ from writing the exercises
+ and solutions to external files. This will keep your working folder
+ ``clean'' but will also prevent using verbatim material in exercises and
+ solutions and will possibly slow processing further down. \emph{This
+ option is considered experimental. Feedback is very welcome.}
+ \opt{use-aux}
+ \sinceversion{0.15}With this option enabled \xsim\ will use the regular
+ auxiliary file \cs*{jobname}\code{.aux} instead of its own auxiliary file
+ \cs*{jobname}\code{.xsim}.
+ \opt{blank}
+ \sinceversion{0.17}With this option enabled \xsim\ will not define the
+ default environments \env{exercise} and \env{solution}.
\end{options}
-Those options are used the usual way as package option
+Those options are load-time options and are used the usual way as package
+options:
\begin{sourcecode}
\usepackage[verbose]{xsim}
\end{sourcecode}
-or as global option
-\begin{sourcecode}
- \documentclass[verbose]{article}
-\end{sourcecode}
-or via the setup command:
+\begin{bewareofthedog}
+ Although those options technically belong to the \module{package} module
+ (see also section~\vref{sec:setting-options}) it is \emph{not} possible to
+ set them via \cs{xsimsetup}.
+\end{bewareofthedog}
+
+\subsection{Setting Options}\label{sec:setting-options}
+Apart from the package options already described in
+section~\vref{sec:package-options} \xsim\ has further options. All those
+options are set using the following command:
\begin{commands}
\command{xsimsetup}[\marg{options}]
Set up \xsim's package options and all other options described at
other places in the manual.
\end{commands}
-
-\subsection{Setting Options}
-Apart from the package options already described in
-section~\vref{sec:package-options} \xsim\ has further options. Those can be
-\enquote{toplevel} options or options belonging to a module.
+Options can be \enquote{toplevel} options or options belonging to a module:
\begin{options}
\keyval*{toplevel}{value}
A toplevel option.
\keyval*{sublevel}{value}\Module*{module}
A sublevel option belonging to the module \module*{module}
\end{options}
-Both kinds of options are set with \cs{xsimsetup}:
+Both kinds of options are set with the setup command:
\begin{sourcecode}
\xsimsetup{
toplevel = {value} ,
@@ -190,11 +217,11 @@
no \meta{true} argument.
\end{commands}
-
\section{Exercises and Solutions}
The two predefined environments for exercises and solutions are the following
-ones:
+ones\footnote{When you load \xsim\ with the \option{blank} those environments
+ will \emph{not} be defined!}:
\begin{environments}
\environment{exercise}[\oarg{\acsp*{prop}}]
Input and typeset an exercise. See section~\vref{sec:exercise-properties}
@@ -218,7 +245,7 @@
setup. This can be changed using the following option.
\begin{options}
\keybool{print}\Module{solution}\Default{false}
- Set if solutions are printed or or not.
+ Set if solutions are printed or not.
\end{options}
The option (belonging to the module \module*{solution}) can either be set
@@ -238,13 +265,13 @@
There is an completely analoguous option for the \env{exercise} environment:
\begin{options}
\keybool{print}\Module{exercise}\Default{true}
- Set if exercises are printed or or not.
+ Set if exercises are printed or not.
\end{options}
More details on those two environments can be found in
section~\vref{sec:using-printing}.
\section{How the Exercise Environments Work}\label{sec:how-exerc-envir}
-Both the exercise and the solution enviroments write the contents of their
+Both the exercise and the solution environments write the contents of their
bodies verbatim to external files following a certain naming structure:
\begin{itemize}
\item
@@ -252,7 +279,7 @@
\end{itemize}
The name starts with the name of the job (which is the name of the document
itself) followed by type and id of the corresponding exercise and then
-followed by the environment type. For example both enviroments from the first
+followed by the environment type. For example both environments from the first
example have been written to files named
\begin{itemize}
\item \verbcode+xsim_manual-exercise-1-exercise-body.tex+ and
@@ -284,50 +311,53 @@
document uses \keyis{path}{exercises}.
\keyval{file-extension}{string}\Default{\code{tex}}
\sinceversion{0.10}This option let's you choose the extension of the
- auxiliary files.
+ external files.
\end{options}
-Another thing to keep in mind: the environment in many ways works the same way
-as the \env{filecontents} environment. \emph{This also means that you
- \emph{cannot} have comments on the first line of the environments:}
+\begin{bewareofthedog}
+ Another thing to keep in mind: the environment in many ways works the same
+ way as the \env{filecontents} environment. \emph{This also means that you
+ \emph{cannot} have comments or \cs*{label}s or anything else on the first
+ line of the environments!}
+\end{bewareofthedog}
\begin{sourcecode}
\begin{exercise}[points=2] % this comment will cause trouble
Lorem ipsum
\end{exercise}
\end{sourcecode}
-\begin{bewareofthedog}
- \xsim\ writes a lot of stuff to the auxfile for re-using information on
- subsequent compilations. If you add exercises, change properties \etc\ it
- might happen that wrong information is staying in the auxfile and is wrongly
- used by \xsim. In such cases deleting the auxfile and doing a few fresh
- compilations may resolve your problems.
-
- Sometimes the \emph{existence of exercise or solution files from earlier
- compilations} may lead to wrong lists of exercises or solutions. In such
- cases it can be useful to delete all those files and doing a fresh
- compilation. It may be helpful to use a subfolder for those exernal files
- which will make deleting them a little bit easier. (Don't forget to both
- create the subfolder and set \option{path} accordingly then.)
+If\sinceversion{0.13} you don't like all the external files and the problems
+which come with them \emph{and} if you don't need any verbatim or similar
+material inside the exercises and solutions then you can use the following
+package option:
+\begin{options}
+ \opt{no-files}
+ This package option prevents \xsim\ from writing the exercises and
+ solutions to external files. This will keep your working folder ``clean''
+ but will also prevent using verbatim material in exercises and solutions
+ and will possibly slow processing further down. \emph{This option is
+ considered experimental. Feedback is very welcome.}
+\end{options}
- Using the \option{clear-aux} option might help to reduce erroneous exercises.
+\begin{bewareofthedog}
+ \xsimauxfileinfo
\end{bewareofthedog}
\begin{bewareofthedog}
- A lot of the lines \xsim\ writes to the auxfile and reads in a subsequent
- run look like this:
+ A lot of the lines \xsim\ writes to the auxiliary file and reads in a
+ subsequent run look like this:
\begin{sourcecode}
- \XSIM {points}{exercise-2=={4}|exercise-10=={2.5}|problem-11=={5}}
+ \XSIM{points}{exercise-2=={4}||exercise-10=={2.5}||problem-11=={5}}
\end{sourcecode}
As you can see different entries of the various properties of exercises are
- separated with a \code{|}. This means that you cannot use this symbol
- inside properties. This is why \xsim\ provides an option to change this
- marker.
+ separated with \code{||}. This means that you cannot use this symbol
+ combination inside properties. For this reason \xsim\ provides an option to
+ change the marker.
\end{bewareofthedog}
\begin{options}
- \keyval{split-aux-lists}{string}\Default{\code{|}}
+ \keyval{split-aux-lists}{string}\Default{\code{||}}
Set\sinceversion{0.11} the string that is used to separate the property
- entries in the auxfile.
+ entries in the auxiliary file.
\end{options}
\section{New Exercise Types}\label{sec:new-exercise-types}
@@ -351,15 +381,20 @@
There are \numberofexercises~exercises and \numberofproblems~problem in this
manual.
\end{example}
-\xsim's pre-defined environment pair has been defined as follows:
+\xsim's pre-defined environment pair\changedversion{0.14} has been defined as
+follows:
\begin{sourcecode}
\DeclareExerciseType{exercise}{
exercise-env = exercise ,
solution-env = solution ,
exercise-name = \XSIMtranslate{exercise} ,
+ exercises-name = \XSIMtranslate{exercises} ,
solution-name = \XSIMtranslate{solution} ,
+ solutions-name = \XSIMtranslate{solutions} ,
exercise-template = default ,
- solution-template = default
+ solution-template = default ,
+ exercise-heading = \subsection* ,
+ solution-heading = \subsection*
}
\end{sourcecode}
@@ -375,9 +410,17 @@
\paraval{exercise-name}{exercise name}
The name of the exercises of type \meta{type} -- used for typesetting.
\emph{This parameter is mandatory.}
+ \paraval{exercises-name}{exercises name}
+ The\sinceversion{0.12} plural name of the exercises of type \meta{type} --
+ used for typesetting. If this is not set explicitly an \code{s} is
+ appended to the singular name.
\paraval{solution-name}{solution name}
The name of the solutions of type \meta{type} -- used for typesetting.
\emph{This parameter is mandatory.}
+ \paraval{solutions-name}{solutions name}
+ The\sinceversion{0.12} plural name of the solutions of type \meta{type} --
+ used for typesetting. If this is not set explicitly an \code{s} is
+ appended to the singular name.
\paraval{exercise-template}{exercise template}
The template used for typesetting the exercises of type \meta{type}.
\emph{This parameter is mandatory.} See
@@ -407,13 +450,26 @@
An internal parameter that is used to keep track of the number of
exercises of a type. This parameter cannot be set or changed by the
user.
+ \paraval{exercise-heading}{exercise heading command}
+ The\sinceversion{0.14} command used for typesetting of the heading of
+ exercises of type \meta{type} -- used for typesetting with the command
+ \cs{GetExerciseHeadingF}.
+ \paraval{solution-heading}{solution heading command}
+ The\sinceversion{0.14} command used for typesetting of the heading of
+ solutions of type \meta{type} -- used for typesetting with the command
+ \cs{GetExerciseHeadingF}.
\end{parameters}
It is possible to change some of the parameters after an exercise type has
been defined. Those include \parameter{exercise-name},
\parameter{solution-name}, \parameter{exercise-template}, and
-\parameter{solution-template}:
+\parameter{solution-template}. It is also possible to define new parameters.
\begin{commands}
+ \command{DeclareExerciseParameter}[\sarg\marg{parameter}]
+ Declares the new parameter \meta{parameter}. The optional star declares a
+ fixed parameter which cannot be changed once it is set. \emph{You
+ probably will never need this command. Most tasks can be solved using
+ properties (see section~\vref{sec:exercise-properties}) instead.}
\command{SetExerciseParameter}[\marg{type}\marg{parameter}\marg{value}]
Usable to set a single parameter to a new value.
\command{SetExerciseParameters}[\marg{type}\marg{parameters}]
@@ -446,12 +502,12 @@
Holds the user id of an exercise if defined. Otherwise it is equal to
\property{id}.
\propval{counter}{text}
- Holds the counter value represenation of an exercise (\ie, what you
+ Holds the counter value representation of an exercise (\ie, what you
usually know as \cs*{the\meta{counter}}). \emph{Cannot be set by the
user}.
\propval{counter-value}{integer}
Holds the counter value of an exercise (\ie, what you usually know as
- \cs*{arabic}\marg{counter}). \emph{Cannot be set by the user}.
+ \cs*{the}\cs*{value}\marg{counter}). \emph{Cannot be set by the user}.
\propval{subtitle}{text}
Holds the subtitle of an exercise.
\propval{points}{number}
@@ -472,34 +528,48 @@
True if an exercise has been used at least once. For an existing exercise
this is only false for exercises that have been collected
(\cf~section~\vref{sec:collecting-exercises}).
+ \propbool{solution}
+ \sinceversion{0.17}Holds the solution boolean of an exercise. If this is
+ true then a solution has the same text\slash environment body as the
+ corresponding exercise. (This might be useful for multiple choice
+ questions for example.)
\propval{tags}{csv list of tags}
Holds the list of tags the exercise should be associated with.
\propval{topics}{csv list of topics}
Holds the list of topics the exercise should be associated with.
\propval{page}{text}
- Holds the page counter value represenation of an exercise (\ie, what you
- usually know as \cs*{thepage}).
+ Holds the page counter value representation of an exercise \\
+ (\ie, what you usually know as \cs*{thepage}).
\propval{page-value}{integer}
- Holds the page counter value of an exercise (\ie, what you usually know as
- \cs*{arabic}\Marg{page}).
+ Holds the page counter value of an exercise \\
+ (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{page}).
\propval{section}{text}
- Holds the section counter value represenation of an exercise (\ie, what
- you usually know as \cs*{thesection}).
+ Holds the section counter value representation of an exercise \\
+ (\ie, what you usually know as \cs*{thesection}).
\propval{section-value}{integer}
- Holds the section counter value of an exercise (\ie, what you usually know
- as \cs*{arabic}\Marg{section}).
+ Holds the section counter value of an exercise \\
+ (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{section}).
\propval{chapter}{text}
- Holds the chapter counter value represenation of an exercise (\ie, what
- you usually know as \cs*{thechapter}). \emph{Only if a command
- \cs*{chapter} \emph{and} a counter \code{chapter} exist.}
+ Holds the chapter counter value representation of an exercise \\
+ (\ie, what you usually know as \cs*{thechapter}). \\
+ \emph{Only if a command \cs*{chapter} \emph{and} a counter \code{chapter}
+ exist.}
\propval{chapter-value}{integer}
- Holds the chapter counter value of an exercise (\ie, what you usually know
- as \cs*{arabic}\Marg{chapter}). \emph{Only if a command \cs*{chapter}
- \emph{and} a counter \code{chapter} exist.}
+ Holds the chapter counter value of an exercise \\
+ (\ie, what you usually know as \cs*{the}\cs*{value}\Marg{chapter}). \\
+ \emph{Only if a command \cs*{chapter} \emph{and} a counter \code{chapter}
+ exist.}
\propval{sectioning}{section numbers}
Holds five brace groups which in turn hold the section numbers (integers)
of the exercise in the order
\marg{chapter}\marg{section}\marg{subsection}\marg{subsubsection}\marg{paragraph}.
+ \propval{exercise-body}{\TeX code}
+ When\sinceversion{0.13} the package option \option{no-files} is set this
+ property is defined and holds the environment body of an exercise.
+ \propval{solution-body}{\TeX code}
+ When\sinceversion{0.13} the package option \option{no-files} is set this
+ property is defined and holds the environment body of the corresponding
+ solution.
\end{properties}
Some of these \acsp*{prop} are fixed and cannot be set by the user. Those
@@ -545,13 +615,11 @@
This is better demonstrated with an example:
\begin{example}
\begin{exercise}
- \lipsum[4] % from package `lipsum'
\verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} \par
\verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} \par
\verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID}
\end{exercise}
\begin{exercise}[ID=foo-bar]
- \lipsum[4]
\verb+\GetExerciseProperty{id}+: \GetExerciseProperty{id} \par
\verb+\GetExerciseAliasProperty{ID}+: \GetExerciseAliasProperty{ID} \par
\verb+\GetExerciseProperty{ID}+: \GetExerciseProperty{ID}
@@ -631,7 +699,7 @@
respectively. The starred version prints nothing. Defined in terms of
\cs{AddtoExerciseGoal} and \cs{AddtoExerciseGoalPrint}.
\command{points}[\marg{value}]
- Print \meta{value}followed by an appropriate translation of the words
+ Print \meta{value} followed by an appropriate translation of the words
\enquote{point} or \enquote{points}, respectively. Defined in terms of
\cs{ExerciseGoalValuePrint}.
\command{printbonus}[\marg{type}]
@@ -709,7 +777,7 @@
\begin{sourcecode}
\DeclareExerciseTagging{tags}
\DeclareExerciseTagging{topics}
- \xsimsetup{tags/ingore-untagged=false}
+ \xsimsetup{tags/ignore-untagged=false}
\end{sourcecode}
This means that these options are available:
\begin{options}
@@ -762,7 +830,7 @@
\end{itemize}
\begin{example}
- \begin{exercise}[print=false]
+ \begin{exercise}[print=false,ID=invisible]
This exercise will not be printed but the exercise counter will be
incremented nonetheless. Its solution will be printed in the list of
solutions.
@@ -818,6 +886,12 @@
\keyval{name}{name}\Module{solution}
An interface for \cs{SetExerciseParameter}\Marg{exercise}%
\Marg{solution-name}\marg{name}.
+ \keyval{heading}{heading command}\Module{exercise}
+ An\sinceversion{0.14} interface for \cs{SetExerciseParameter}%
+ \Marg{exercise}\Marg{exercise-heading}\marg{heading command}.
+ \keyval{heading}{heading command}\Module{solution}
+ An\sinceversion{0.14} interface for \cs{SetExerciseParameter}%
+ \Marg{exercise}\Marg{solution-heading}\marg{heading command}.
\keyval{pre-hook}{code}\Module{exercise}\Default
The code for the \emph{pre exercise hook} for exercises of the type
\enquote{exercise}.
@@ -851,16 +925,26 @@
If you know type and \property{id} of an exercise you can (re-)insert every
existing exercise, \ie, every exercise whose external file exists.
\begin{commands}
- \command{printexercise}[\marg{type}\marg{id}]
- Inserts the exercise of type \meta{type} with the \property{id}
- \meta{id}.
+ \command{printexercise}[\marg{type}\marg{csv of ids}]
+ \changedversion{0.17}Inserts the exercise or exercises of type
+ \meta{type} with the \property{id}s or \property{ID}s given in \meta{csv
+ of ids}.
+ \command{xprintexercise}[\marg{type}\marg{csv of ids}]
+ \sincechanged{0.16}{0.17}The same as \cs{printexercise} but expands
+ \meta{type} and the items of \meta{csv of ids} before it uses them.
\end{commands}
\begin{example}
- \printexercise{exercise}{5}
+ \printexercise{exercise}{invisible}
\end{example}
\section{Collecting Exercises}\label{sec:collecting-exercises}
+\begin{bewareofthedog}
+ The whole collection mechanism is likely to change completely in the
+ not-so-far future (let's say sometime in the six months from April~2020 or
+ so).
+\end{bewareofthedog}
+
\subsection{Background}
\xsim\ knows the concept of \enquote{exercise collections}. A collection of
exercises can be useful when you want to print a certain group of exercises
@@ -1078,6 +1162,9 @@
\command{printsolution}[\oarg{options}\marg{type}\marg{id}]
Prints the solution of the exercise of type \meta{type} with the
\property{id} \meta{id}.
+ \command{xprintsolution}[\marg{type}\marg{id}]
+ \sinceversion{0.16}The same as \cs{printsolution} but expands \meta{type}
+ and \meta{id} before it uses them.
\end{commands}
\begin{example}
@@ -1223,10 +1310,17 @@
information on style files\index{style file}).
\item[\code{margin}] A layout rather similar to the one by package
\pkg{exsheets}, see section~\ref{sec:margin-template}. Available through
- the style file \code{layouts} (see section~\vref{sec:style-files} for more
- information on style files\index{style file}).
+ the style file \code{layouts}.
+ \item[\code{minimal}] A\sinceversion{0.13} minimalistic layout, see
+ section~\ref{sec:minimal-template}. As the others inspired by an
+ \pkg{exsheets} layout. Available through the style file \code{layouts}.
+ \item[\code{inline}] A\sinceversion{0.18} minimalistic layout, the same as
+ \code{minimal} but doesn't add \cs*{par} at the beginning and end.
+ Available through the style file \code{layouts}.
+ \item[\code{centered}] A\sinceversion{0.18} layout with a centered heading.
+ Available through the style file \code{layouts}.
\end{description}
-
+
\collectexercises{layouts}
\begin{exercise}[subtitle=The Subtitle,points=2.5,ID=showlayout]
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
@@ -1355,6 +1449,11 @@
Retrieves the value of the parameter \parameter{exercise-name} for the
current exercise or of the parameter \parameter{solution-name} for the
current solution.
+ \expandable\command{GetExerciseHeadingF}[\marg{false}]
+ \sinceversion{0.14}Retrieves the value of the parameter
+ \parameter{exercise-heading} for the current exercise or of the parameter
+ \parameter{solution-heading} for the current solution. Inserts
+ \meta{false} if the corresponding parameter has not been set.
\expandable\command{ExerciseParameterGet}[\marg{type}\marg{parameter}]
Retrieves the value of the parameter \meta{parameter} for the exercise of type
\meta{type} with id \meta{id}.
@@ -1403,6 +1502,10 @@
Can be used to refer to the current exercise type.
\expandable\command{ExerciseID}
Can be used to refer to the current exercise id.
+ \expandable\command{ExerciseText}
+ Can be used inside solutions to retrieve the text of the corresponding
+ solution. This is propably seldom useful as in most use cases the
+ exercise property \property{solution} is the easier alternative.
\expandable\command{ExerciseCollection}
Can be used in certain templates to refer to the collection that is
currently inserted.
@@ -1443,7 +1546,7 @@
\item \code{\#5}: the \property{points} property of the exercise
\item \code{\#6}: the \property{bonus-points} property of the exercise
\end{itemize}
- \command{ForEachPrintedExerciseByID}
+ \command{ForEachPrintedExerciseByID}[\marg{code}]
Loops over each \emph{printed} exercise order by the exercise id. Inside
\meta{code} you can refer to several properties of the corresponding
exercise:
@@ -1455,7 +1558,7 @@
\item \code{\#5}: the \property{points} property of the exercise
\item \code{\#6}: the \property{bonus-points} property of the exercise
\end{itemize}
- \command{ForEachUsedExerciseByID}
+ \command{ForEachUsedExerciseByID}[\marg{code}]
Loops over each \emph{used} exercise order by the exercise id. Inside
\meta{code} you can refer to several properties of the corresponding
exercise:
@@ -1467,6 +1570,12 @@
\item \code{\#5}: the \property{points} property of the exercise
\item \code{\#6}: the \property{bonus-points} property of the exercise
\end{itemize}
+ \command{XSIMprint}[\Marg{exercise|solution}\marg{type}\marg{id}]
+ \sincechanged{0.16}{0.17}Inserts the either the exercise or the solution
+ of type \meta{type} with the \property{id} or \property{ID} \meta{id}.
+ \command{XSIMxprint}[\Marg{exercise|solution}\marg{type}\marg{id}]
+ The same as \cs{XSIMprint} but expands \meta{type} and \meta{id} before it
+ uses them.\sincechanged{0.16}{0.17}
\expandable\command{XSIMtranslate}[\marg{keyword}]
Delivers the translation of \meta{keyword} according to the current
document language (in the meaning of a \pkg{babel}~\cite{pkg:babel} or
@@ -1496,7 +1605,13 @@
\meta{code 2} is the same tokenlist.
\expandable\command{XSIMifblank\TF}[\marg{code}\marg{true}\marg{false}]
Checks if the full expansion\footref{fn:romannumeral} of \meta{code} is
- blank (\ie, if it is empty or only consists of spaces).
+ blank (\ie, if it is empty or only consists of spaces).
+ \command{XSIMatbegindocument}[\marg{code}]
+ \sinceversion{0.15a}Adds \meta{code} to \xsim's begin document hook.
+ Should be used inside style files instead of \cs*{AtBeginDocument}.
+ \command{XSIMatenddocument}[\marg{code}]
+ \sinceversion{0.15a}Adds \meta{code} to \xsim's end document hook.
+ Should be used inside style files instead of \cs*{AtEndDocument}.
\end{commands}
\subsection{Declaring Templates}
@@ -1536,9 +1651,70 @@
with the option \option{template} of module \module{grading-table}
The predefined templates are \enquote{\code{default}} and
-\enquote{\code{default}}, see sections~\vref{sec:table-templ-default}
+\enquote{\code{default*}}, see sections~\vref{sec:table-templ-default}
and~\vref{sec:table-templ-default*}.
+\subsection{Create and Use \xsim\ Style Files}\label{sec:style-files}
+\index{style file|(}
+
+\xsim\changedversion{0.11} offers you the possibility to create own
+\emph{style files}. Let's say you want to have a style called
+\code{math-exam}. Then you need to save all necessary definitions in a file
+called:
+\begin{center}
+ \code{xsim.style.math-exam.code.tex}
+\end{center}
+The first command in the file should be \cs{xsimstyle}\Marg{math-exam}. This
+file can now be loaded into your document using
+\cs{loadxsimstyle}\Marg{math-exam} or by using
+\cs{xsimsetup}\Marg{load-style=math-exam}:
+\begin{sourcecode}
+ \documentclass[DIV=18,parskip=half]{scrartcl}
+ \usepackage[T1]{fontenc}
+ \usepackage[utf8]{inputenc}
+
+ \usepackage[clear-aux]{xsim}
+ \loadxsimstyle{math-exam}
+
+ \title{Math Exam \#3}
+ \date{2017-03-28}
+\end{sourcecode}
+
+In this style file stuff like template and property definitions should
+happen. This is more or less a convenient way to
+\begin{itemize}
+ \item keep the preamble \enquote{clean} and
+ \item define re-usable styles without the need of copying the document
+ preamble to another document.
+\end{itemize}
+A style file is like a package or class file, \ie, \code{@} has category
+code~11 (letter).
+
+The formal description of the commands:
+\begin{commands}
+ \command{xsimstyle}[\sarg\marg{style name}]
+ The\changedversion{0.11} first command in a \xsim\ style file called
+ \code{xsim.style.\meta{style name}.code.tex} which defines the \xsim\
+ style \meta{style name}. The starred version activates expl3
+ syntax\footnote{Those users who want this will know what it means. If you
+ don't know what it means you will not need it.}.
+ \command{loadxsimstyle}[\marg{csv list of style names}]
+ Load one or more styles into the document.
+\end{commands}
+\begin{options}
+ \keyval{load-style}{csv list of style names}
+ Another\sinceversion{0.14} interface for \cs{loadxsimstyle}\marg{csv list
+ of style names}.
+\end{options}
+
+\begin{bewareofthedog}
+ At the moment this mechanism offers no advantages over creating a custom
+ package or simply \cs*{input}ing a file. Future versions might provide
+ additional features.
+\end{bewareofthedog}
+
+\index{style file|)}
+
\subsection{Examples}\label{sec:template-examples}
The repository of this package\footnote{GitHub:
@@ -1552,21 +1728,21 @@
\subsubsection{The \code{default} Exercise Template}\label{sec:exercise-templ-default}
-Below the definition of the \code{default} exercise template provided by
-\xsim\ is shown:
+Below the definition\changedversion{0.14} of the \code{default} exercise
+template provided by \xsim\ is shown:
\begin{sourcecode}
\DeclareExerciseEnvironmentTemplate{default}{%
- \subsection*
- {%
- \XSIMmixedcase{\GetExerciseName}\nobreakspace
- \GetExerciseProperty{counter}%
- \IfInsideSolutionF
- {%
- \GetExercisePropertyT{subtitle}
- { {\normalfont\itshape\PropertyValue}}%
- }%
- }
+ \GetExerciseHeadingF{\subsection*}%
+ {%
+ \XSIMmixedcase{\GetExerciseName}\nobreakspace
+ \GetExerciseProperty{counter}%
+ \IfInsideSolutionF
+ {%
+ \GetExercisePropertyT{subtitle}
+ { {\normalfont\itshape\PropertyValue}}%
+ }%
+ }
\GetExercisePropertyT{points}
{%
\marginpar
@@ -1578,7 +1754,7 @@
}%
}%
}
- {}
+ {\par}
\end{sourcecode}
\subsubsection{A New Exercise Type Using \pkg*{tcolorbox}}
@@ -1698,6 +1874,27 @@
{\endtrivlist}
\end{sourcecode}
+\subsubsection{A \code{minimal} Template}
+\label{sec:minimal-template}
+
+This shows the implementation of the \code{minimal} template:
+\begin{sourcecode}
+ \DeclareExerciseEnvironmentTemplate{minimal}
+ {%
+ \par
+ \textbf{\GetExerciseProperty{counter}}%
+ \IfInsideSolutionF{%
+ \GetExercisePropertyT{points}{%
+ \GetExercisePropertyT{bonus-points}{+\printgoal{\PropertyValue}}%
+ \,\IfExerciseGoalSingularTF{points}
+ {\XSIMtranslate{point}}
+ {\XSIMtranslate{points}}%
+ }%
+ }%
+ }
+ {\par}
+\end{sourcecode}
+
\subsubsection{The Headings Templates}\label{sec:headings-templates}
\xsim\ defines four heading templates which only differ by which text they
output:
@@ -1938,7 +2135,7 @@
\keyval{linespread}{decimal number}\Module{blank}\Default{\code{1}}
Set the linespread for the blank lines. This only has an effect if
\cs{blank} is used at the begin of a paragraph.
- \keyval{line-increment}{dim}\Module{blank}\Default{\code{1pt}}
+ \keyval{line-increment}{dim}\Module{blank}\Default{\code{0.001\cs*{linewidth}}}
The blank line is built in multiples of this value. If the value is too
large you may end up with uneven lines. If the value is too small you may
end up with a non-ending compilation. Experiment with values to find the
@@ -2009,25 +2206,12 @@
\subsection{\dots Resolve Getting Repeatedly Wrong Exercise Properties or
Wrong Exercise Lists?}\label{sec:resolve-getting}
-\xsim\ writes a lot of stuff to the auxfile for re-using information on
-subsequent compilations. If you add exercises, change properties \etc\ it
-might happen that wrong information is staying in the auxfile and is wrongly
-used by \xsim. In such cases deleting the auxfile and doing a few fresh
-compilations may resolve your problems.
-
-Sometimes the \emph{existence of exercise or solution files from earlier
- compilations} may lead to wrong lists of exercises or solutions. In such
-cases it can be useful to delete all those files and doing a fresh
-compilation. It may be helpful to use a subfolder for those exernal files
-which will make deleting them a little bit easier. (Don't forget to both
-create the subfolder and set \option{path} accordingly then.)
-
-Using the \option{clear-aux} option might help to reduce erroneous exercises.
+\xsimauxfileinfo
\subsection{\dots Resolve Strange Errors After Updating?}
-\xsim\ writes a lot of stuff to the auxfile. An update may well change how
-this is done so deleting the auxfile and doing a few fresh compilations may
-resolve your problems.
+\xsim\ writes a lot of stuff to the auxiliary file. An update may well change
+how this is done so deleting the auxiliary file and doing a few fresh
+compilations may resolve your problems.
\subsection{\code{! TeX capacity exceeded, sorry [text input levels=15].}
Why?}
@@ -2089,61 +2273,6 @@
\end{exercise}
\end{example}
-\subsection{\dots Create and Use \xsim\ Style Files?}\label{sec:style-files}
-\index{style file|(}
-
-\xsim\changedversion{0.11} offers you the possibility to create own
-\emph{style files}. Let's say you want to have a style called
-\code{math-exam}. Then you need to save all necessary definitions in a file
-called:
-\begin{center}
- \code{xsim.style.math-exam.code.tex}
-\end{center}
-The first command in the file should be \cs{xsimstyle}\Marg{math-exam}. This
-file can now be loaded into your document using
-\cs{loadxsimstyle}\Marg{math-exam}:
-\begin{sourcecode}
- \documentclass[DIV=18,parskip=half]{scrartcl}
- \usepackage[T1]{fontenc}
- \usepackage[utf8]{inputenc}
-
- \usepackage[clear-aux]{xsim}
- \loadxsimstyle{math-exam}
-
- \title{Math Exam \#3}
- \date{2017-03-28}
-\end{sourcecode}
-
-In this style file stuff like template and property definitions should
-happen. This is more or less a convenient way to
-\begin{itemize}
- \item keep the preamble \enquote{clean} and
- \item define re-usable styles without the need of copying the document
- preamble to another document.
-\end{itemize}
-A style file is like a package or class file, \ie, \code{@} has category
-code~11 (letter).
-
-The formal description of the commands:
-\begin{commands}
- \command{xsimstyle}[\sarg\marg{style name}]
- The\changedversion{0.11} first command in a \xsim\ style file called
- \code{xsim.style.\meta{style name}.code.tex} which defines the \xsim\
- style \meta{style name}. The starred version activates expl3
- syntax\footnote{Those users who want this will know what it means. If you
- don't know what it means you will not need it.}.
- \command{loadxsimstyle}[\marg{csv list of style names}]
- Load one or more styles into the document.
-\end{commands}
-
-\begin{bewareofthedog}
- At the moment this mechanism offers no advantages over creating a custom
- package or simply \cs*{input}ing a file. Future versions might provide
- additional features.
-\end{bewareofthedog}
-
-\index{style file|)}
-
\subsection{\dots Print All Solutions Grouped by Section?}
Here is an idea how to get a list of all solutions grouped by the section the
corresponding exercises are appearing in.
@@ -2177,10 +2306,11 @@
}
\section{The \pkg*{xsimverb} package}\label{sec:xsimverb-package}
-\xsim\ comes bundled with another package called \pkg{xsimverb}. This package
-loads a very small subset of \xsim\ which allows to create environments which
-write their contents verbatim to external files. It provides the following
-commands (which of course are also available in \xsim, too):
+\xsim\ comes bundled with another package called
+\pkg{xsimverb}\xsimverbversion. This package loads a very small subset of
+\xsim\ which allows to create environments that write their contents verbatim
+to external files. It provides the following commands (which of course are
+also available in \xsim, too):
\begin{commands}
\command{XSIMfilewritestart}[\sarg\marg{file name}]
@@ -2212,7 +2342,7 @@
value is~$0$.
\end{commands}
-An example of how to use those commands:
+The following code shows an example of how to use those commands:
\begin{sourcecode}
\documentclass{article}
\usepackage{xsimverb,listings}
@@ -2281,6 +2411,9 @@
kinds of layouts can be achieved as well as how to solve concrete problems
that have come up in different \LaTeX\ forums.
+Besides showing excerpts of the code and the resulting pdf the examples below
+also link to both the \code{tex} source the resulting pdf.
+
\listexamplefiles
\printbibliography
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xsim.doc.tlpobj new/tlpkg/tlpobj/xsim.doc.tlpobj
--- old/tlpkg/tlpobj/xsim.doc.tlpobj 2019-02-28 04:19:00.000000000 +0100
+++ new/tlpkg/tlpobj/xsim.doc.tlpobj 2020-04-12 01:55:58.000000000 +0200
@@ -1,9 +1,9 @@
name xsim.doc
category Package
-revision 46634
+revision 54681
shortdesc doc files of xsim
relocated 1
-docfiles size=748
+docfiles size=808
RELOC/doc/latex/xsim/README
RELOC/doc/latex/xsim/examples/xsim.blanks.pdf
RELOC/doc/latex/xsim/examples/xsim.blanks.tex
@@ -69,8 +69,12 @@
RELOC/doc/latex/xsim/examples/xsim.texsx-391530.tex
RELOC/doc/latex/xsim/examples/xsim.texsx-395273.pdf
RELOC/doc/latex/xsim/examples/xsim.texsx-395273.tex
+ RELOC/doc/latex/xsim/examples/xsim.texsx-498299.pdf
+ RELOC/doc/latex/xsim/examples/xsim.texsx-498299.tex
RELOC/doc/latex/xsim/examples/xsim.texwelt-15093.pdf
RELOC/doc/latex/xsim/examples/xsim.texwelt-15093.tex
+ RELOC/doc/latex/xsim/examples/xsim.texwelt-23968.pdf
+ RELOC/doc/latex/xsim/examples/xsim.texwelt-23968.tex
RELOC/doc/latex/xsim/examples/xsim.texwelt-6698.pdf
RELOC/doc/latex/xsim/examples/xsim.texwelt-6698.tex
RELOC/doc/latex/xsim/examples/xsim.various.pdf
++++++ xsim.tar.xz ++++++
++++ 3971 lines of diff (skipped)
++++++ xskak.doc.tar.xz ++++++
++++ 5252 lines of diff (skipped)
++++++ xskak.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xskak/xskak-keys.sty new/tex/latex/xskak/xskak-keys.sty
--- old/tex/latex/xskak/xskak-keys.sty 2015-01-02 22:29:30.000000000 +0100
+++ new/tex/latex/xskak/xskak-keys.sty 2019-06-23 22:59:18.000000000 +0200
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% xskak-src.dtx (with options: `xskak-keys')
+%% xskak.dtx (with options: `xskak-keys')
%%
%% xskak: a package to parse and print chess games
%% Copyright 2006-2015 Ulrike Fischer (chess@nililand.de)
@@ -16,8 +16,7 @@
%% License, or (at your option) any later version.
%%
%% For error reports see documentation.
-\ProvidesFile{xskak-keys.sty}[2015/01/02 version v1.4 key definitions for xskak.sty]
-%%$Date: 2011/03/17 16:54:07 $$Version: 041ab49ae0e2 $
+\ProvidesFile{xskak-keys.sty}[2019/06/23 version v1.5 key definitions for xskak.sty]
%%%%%%%%%%%%%%%%%%%%%
%%%% Keys
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xskak/xskak-nagdef.sty new/tex/latex/xskak/xskak-nagdef.sty
--- old/tex/latex/xskak/xskak-nagdef.sty 2015-01-02 22:29:30.000000000 +0100
+++ new/tex/latex/xskak/xskak-nagdef.sty 2019-06-23 22:59:18.000000000 +0200
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% xskak-src.dtx (with options: `xskak-nagdef')
+%% xskak.dtx (with options: `xskak-nagdef')
%%
%% xskak: a package to parse and print chess games
%% Copyright 2006-2015 Ulrike Fischer (chess@nililand.de)
@@ -16,8 +16,7 @@
%% License, or (at your option) any later version.
%%
%% For error reports see documentation.
-\ProvidesFile{xskak-nagdef.sty}[2015/01/02 version v1.4 nag definitions for xskak.sty]
-%%$Date: 2011/03/17 16:54:07 $$Version: 041ab49ae0e2 $
+\ProvidesFile{xskak-nagdef.sty}[2019/06/23 version v1.5 nag definitions for xskak.sty]
\expandafter\def\csname $1\endcsname{!}
\expandafter\def\csname $2\endcsname{?}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xskak/xskak.sty new/tex/latex/xskak/xskak.sty
--- old/tex/latex/xskak/xskak.sty 2015-01-02 22:29:30.000000000 +0100
+++ new/tex/latex/xskak/xskak.sty 2019-06-23 22:59:18.000000000 +0200
@@ -4,7 +4,7 @@
%%
%% The original source files were:
%%
-%% xskak-src.dtx (with options: `xskak')
+%% xskak.dtx (with options: `xskak')
%%
%% xskak: a package to parse and print chess games
%% Copyright 2006-2015 Ulrike Fischer (chess@nililand.de)
@@ -17,8 +17,7 @@
%%
%% For error reports see documentation.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{xskak}[2015/01/02 version v1.4 extended chess typesetting and parsing]
-%%$Date: 2015/01/02 13:51:58 $$Version: c80394b06dd1 $
+\ProvidesPackage{xskak}[2019/06/23 version v1.5 extended chess typesetting and parsing]
\newif\ifxskakpdfmatch
@@ -1211,6 +1210,7 @@
beforeNAG={}}
\newcommand\xskak@beforeNAG{}
+\newcommand\xskak@beforecomment{}
\newcommand\xskaknewstyleitem[2][]{%
\ifcsname xskak@styleitem@#2@beforeblack\endcsname
@@ -1311,6 +1311,7 @@
whiteopen=.,
blackopen=. -,
beforewhite=\space,
+ afterblack=\space,
beforeblack={,\space}]{styleA}
\xskaknewstyleitem[%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xskak.tlpobj new/tlpkg/tlpobj/xskak.tlpobj
--- old/tlpkg/tlpobj/xskak.tlpobj 2019-02-28 04:19:01.000000000 +0100
+++ new/tlpkg/tlpobj/xskak.tlpobj 2019-06-24 01:39:30.000000000 +0200
@@ -1,6 +1,6 @@
name xskak
category Package
-revision 35945
+revision 51432
shortdesc An extension to the skak package for chess typesetting
relocated 1
longdesc Xskak, as its prime function, saves information about a chess
@@ -12,8 +12,10 @@
RELOC/tex/latex/xskak/xskak-keys.sty
RELOC/tex/latex/xskak/xskak-nagdef.sty
RELOC/tex/latex/xskak/xskak.sty
+catalogue-contact-repository https://github.com/u-fischer/xskak
+catalogue-contact-support https://github.com/u-fischer/xskak/issues
catalogue-ctan /macros/latex/contrib/xskak
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2019-06-23 18:43:18 +0200
catalogue-license lppl
-catalogue-topics games
-catalogue-version 1.4
+catalogue-topics games etex
+catalogue-version 1.5
++++++ xurl.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xurl/Changes new/doc/latex/xurl/Changes
--- old/doc/latex/xurl/Changes 2018-12-24 00:04:34.000000000 +0100
+++ new/doc/latex/xurl/Changes 2020-01-24 22:47:36.000000000 +0100
@@ -1,3 +1,5 @@
+0.09 2020-01-24 - add missing \do\\
+0.08 2020-01-14 - define macro \useOriginalUrlSetting
0.07 2018-12-23 - move numbers into \UrlBreaks
0.06 2018-12-16 - define \UrlSpecials
0.05 2018-12-08 - added support for biblatex
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xurl/README.md new/doc/latex/xurl/README.md
--- old/doc/latex/xurl/README.md 2018-06-02 23:26:22.000000000 +0200
+++ new/doc/latex/xurl/README.md 2020-01-24 22:47:36.000000000 +0100
@@ -4,8 +4,8 @@
and = / . : * - ~ ' "
All arguments which are valid for url can be used.
-It will be passed to package url. xurl itself has no
-special optional argument. For more information read
+It will be passed to package url. xurl itself has only
+the optional argument "nobiblatex". For more information read
the documentation of package url.
This file is distributed under the terms of the LaTeX Project Public
Binary files old/doc/latex/xurl/xurl.pdf and new/doc/latex/xurl/xurl.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/xurl/xurl.tex new/doc/latex/xurl/xurl.tex
--- old/doc/latex/xurl/xurl.tex 2018-12-24 00:04:34.000000000 +0100
+++ new/doc/latex/xurl/xurl.tex 2020-01-14 22:52:18.000000000 +0100
@@ -1,4 +1,4 @@
-%% $Id: xurl.tex 876 2018-12-23 10:26:11Z herbert $
+%% $Id: xurl.tex 1133 2020-01-14 12:10:03Z herbert $
%
\listfiles\setcounter{errorcontextlines}{100}
\RequirePackage{filecontents}
@@ -63,7 +63,14 @@
special optional argument. For more information read
the documentation of package url.
+\section{With the original setting from package url}
+The original behaviour of package \texttt{url} can be optained
+by using the macro \texttt{\textbackslash useOriginalUrlSetting}
+which should be used inside a group:
+
+\begingroup
+\useOriginalUrlSetting
\noindent
\frame{\begin{minipage}{0.5\linewidth}
\noindent
@@ -78,7 +85,31 @@
and another url: \url{https://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url/10419?noredirect=1#comment1021887_10419}
\end{minipage}}
+\noindent
+\frame{\begin{minipage}{\dimexpr\linewidth-2\fboxrule}
+\noindent
+some text \url{iszv://dsf.tqsdatmdtdls.ctm/cudfsdvqfqll-ocd/bdcbcfqlf-lcclldh/cbsntwgqke-esbptb-vvylhy/zkhqnqidf-obedbacpf-lzlal-pxaccqa-gwki.lfof/}
+and another url: \url{koff://osb.ccdngagkkg.raa/qrkxzvi/dxfsiaa/xidf-lata-dgdqmhp-uoxdl-vst-vcsbhl-aisdsasih-skl-aezb-fhixvyy-qqlachd-achhfc-koe-xgfqp-iyplcu-1.696884}
+\end{minipage}}
+\endgroup
+
+
+\section{With the setting from package xurl}
+
+
+\noindent
+\frame{\begin{minipage}{0.5\linewidth}
+\noindent
+some text \url{very-long-url-very-long-url-very-long-url-very-long-url-very-long-url-}
+and another url: \url{https://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url/10419?noredirect=1#comment1021887_10419}
+\end{minipage}}
+\noindent
+\frame{\begin{minipage}{0.75\linewidth}
+\noindent
+some text \url{very-long-url-very-long-url-very-long-url-very-long-url-very-long-url-}
+and another url: \url{https://tex.stackexchange.com/questions/3033/forcing-linebreaks-in-url/10419?noredirect=1#comment1021887_10419}
+\end{minipage}}
\noindent
\frame{\begin{minipage}{\dimexpr\linewidth-2\fboxrule}
@@ -109,6 +140,7 @@
\nocite{*}
+
\printbibliography[title={With urlbreaks}]
\setcounter{biburllcpenalty}{0}
@@ -117,6 +149,10 @@
\printbibliography[title={xurl with option nobiblatex}]
+
+
+
+
\end{document}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xurl.doc.tlpobj new/tlpkg/tlpobj/xurl.doc.tlpobj
--- old/tlpkg/tlpobj/xurl.doc.tlpobj 2019-02-28 04:19:02.000000000 +0100
+++ new/tlpkg/tlpobj/xurl.doc.tlpobj 2020-01-25 01:55:37.000000000 +0100
@@ -1,9 +1,9 @@
name xurl.doc
category Package
-revision 49488
+revision 53538
shortdesc doc files of xurl
relocated 1
-docfiles size=14
+docfiles size=18
RELOC/doc/latex/xurl/Changes
RELOC/doc/latex/xurl/README.md
RELOC/doc/latex/xurl/xurl.pdf
++++++ xurl.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/xurl/xurl.sty new/tex/latex/xurl/xurl.sty
--- old/tex/latex/xurl/xurl.sty 2018-12-24 00:04:34.000000000 +0100
+++ new/tex/latex/xurl/xurl.sty 2020-01-24 22:47:36.000000000 +0100
@@ -1,4 +1,4 @@
-%% $Id: xurl.sty 876 2018-12-23 10:26:11Z herbert $
+%% $Id: xurl.sty 1137 2020-01-24 13:32:38Z herbert $
%%
%% This is file `xurl.sty',
%%
@@ -16,7 +16,7 @@
%% `xurl' is a package for extended URL breaks
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{xurl}[2018/12/23 v 0.07 modify URL breaks]
+\ProvidesPackage{xurl}[2020/01/24 v 0.09 modify URL breaks]
\newif\if@no@biblatex \@no@biblatexfalse
\DeclareOption{nobiblatex}{\@no@biblatextrue}
@@ -44,7 +44,7 @@
\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t\do\u\do\v\do\w\do\x\do\y\do\z%
\do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L%
\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X\do\Y\do\Z%
- \do\*\do\-\do\~\do\'\do\"\do\-%
+ \do\*\do\-\do\~\do\'\do\"\do\-\do\\%
\do0\do1\do2\do3\do4\do5\do6\do7\do8\do9\do=\do/\do.\do:%
}
%
@@ -57,7 +57,12 @@
\Urlmuskip=0mu plus 1mu
%
-%
+\def\useOriginalUrlSetting{%
+\def\UrlBreaks{\do\.\do\@\do\\\do\/\do\!\do\_\do\|\do\;\do\>\do\]%
+ \do\)\do\,\do\?\do\&\do\'\do+\do\=\do\#}%
+\def\UrlSpecials{\do\ {\Url@space}\do\%{\Url@percent}\do\^^M{\Url@space}%
+ \Url@force@Tilde}% package option may force faked text-ascii-tilde
+}
\endinput
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/xurl.tlpobj new/tlpkg/tlpobj/xurl.tlpobj
--- old/tlpkg/tlpobj/xurl.tlpobj 2019-02-28 04:19:02.000000000 +0100
+++ new/tlpkg/tlpobj/xurl.tlpobj 2020-01-25 01:55:37.000000000 +0100
@@ -1,6 +1,6 @@
name xurl
category Package
-revision 49488
+revision 53538
shortdesc Allow URL breaks at any alphanumerical character
relocated 1
longdesc This package loads url by default and defines possible URL
@@ -11,7 +11,6 @@
runfiles size=2
RELOC/tex/latex/xurl/xurl.sty
catalogue-ctan /macros/latex/contrib/xurl
-catalogue-date 2018-12-23 12:25:27 +0100
catalogue-license lppl1.3
catalogue-topics verbatim
-catalogue-version 0.07
+catalogue-version 0.09
++++++ yathesis.doc.tar.xz ++++++
++++ 1751 lines of diff (skipped)
++++++ yathesis.tar.xz ++++++
++++ 1713 lines of diff (skipped)
++++++ yax.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/yax.doc.tlpobj new/tlpkg/tlpobj/yax.doc.tlpobj
--- old/tlpkg/tlpobj/yax.doc.tlpobj 2019-02-28 04:19:11.000000000 +0100
+++ new/tlpkg/tlpobj/yax.doc.tlpobj 2020-03-04 23:55:57.000000000 +0100
@@ -1,6 +1,6 @@
name yax.doc
category Package
-revision 21183
+revision 54080
shortdesc doc files of yax
relocated 1
docfiles size=38
++++++ yax.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/yax.tlpobj new/tlpkg/tlpobj/yax.tlpobj
--- old/tlpkg/tlpobj/yax.tlpobj 2019-02-28 04:19:11.000000000 +0100
+++ new/tlpkg/tlpobj/yax.tlpobj 2020-03-04 23:55:57.000000000 +0100
@@ -1,6 +1,6 @@
name yax
category Package
-revision 21183
+revision 54080
shortdesc Yet Another Key System
relocated 1
longdesc YaX is advertised as a key system, but it rather organizes
@@ -17,7 +17,6 @@
RELOC/tex/generic/yax/yax.sty
RELOC/tex/generic/yax/yax.tex
catalogue-ctan /macros/generic/yax
-catalogue-date 2016-06-24 19:18:15 +0200
catalogue-license lppl
-catalogue-topics keyval
+catalogue-topics keyval etex
catalogue-version 1.03
++++++ yhmath.doc.tar.xz ++++++
Binary files old/doc/fonts/yhmath/yhmath.pdf and new/doc/fonts/yhmath/yhmath.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/yhmath.doc.tlpobj new/tlpkg/tlpobj/yhmath.doc.tlpobj
--- old/tlpkg/tlpobj/yhmath.doc.tlpobj 2019-02-28 04:19:12.000000000 +0100
+++ new/tlpkg/tlpobj/yhmath.doc.tlpobj 2020-03-18 01:57:15.000000000 +0100
@@ -1,9 +1,9 @@
name yhmath.doc
category Package
-revision 50127
+revision 54377
shortdesc doc files of yhmath
relocated 1
-docfiles size=84
+docfiles size=85
RELOC/doc/fonts/yhmath/LICENSE
RELOC/doc/fonts/yhmath/README
RELOC/doc/fonts/yhmath/yhcmex10.vpl
++++++ yhmath.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/yhmath/yhmath.sty new/tex/latex/yhmath/yhmath.sty
--- old/tex/latex/yhmath/yhmath.sty 2019-02-25 23:21:39.000000000 +0100
+++ new/tex/latex/yhmath/yhmath.sty 2020-03-17 22:31:23.000000000 +0100
@@ -7,11 +7,11 @@
%% yhmath.dtx (with options: `package')
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{yhmath}[2019/02/24 v1.5]
+\ProvidesPackage{yhmath}[2020/03/17 v1.6]
\RequirePackage{amsmath}
-\newcommand{\widering}[1]{\overset{\smash{\lower1.333ex\hbox{$%
-\displaystyle\ring{}$}}}{\wideparen{#1}}}
\newif\if@yh@full
+\newif\if@yh@nowidering
+\@yh@nowideringfalse
\DeclareOption{minimal}{%
\@yh@fullfalse%
}%
@@ -19,7 +19,7 @@
\@yh@fulltrue%
}%
\DeclareOption{nowidering}{%
- \let\widering\@undefined%
+ \@yh@nowideringtrue%
}
\ExecuteOptions{full}%
\ProcessOptions\relax
@@ -100,6 +100,10 @@
\DeclareMathDelimiter{\bracevert} % the vertical bar that extends braces
{\mathord}{yhlargesymbols}{"3E}{yhlargesymbols}{"3E}
\fi
+\if@yh@nowidering\else
+\newcommand{\widering}[1]{\overset{\smash{\lower1.333ex\hbox{$%
+\displaystyle\ring{}$}}}{\wideparen{#1}}}%
+\fi
\newenvironment{amatrix}{\left\langle\begin{matrix}}{\end{matrix}\right\rangle}
\def\adots{\mathinner{\mkern2mu\raise\p@\hbox{.}
\mkern2mu\raise4\p@\hbox{.}\mkern1mu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/yhmath.tlpobj new/tlpkg/tlpobj/yhmath.tlpobj
--- old/tlpkg/tlpobj/yhmath.tlpobj 2019-02-28 04:19:12.000000000 +0100
+++ new/tlpkg/tlpobj/yhmath.tlpobj 2020-03-18 01:57:15.000000000 +0100
@@ -1,6 +1,6 @@
name yhmath
category Package
-revision 50127
+revision 54377
shortdesc Extended maths fonts for LaTeX
relocated 1
longdesc The yhmath bundle contains fonts (in Metafont and type 1
@@ -23,7 +23,6 @@
catalogue-contact-home https://github.com/TeX-Live/yhmath
catalogue-contact-repository https://github.com/TeX-Live/yhmath.git
catalogue-ctan /fonts/yhmath
-catalogue-date 2019-02-24 08:57:29 +0100
catalogue-license lppl1.3c
catalogue-topics font font-mf font-type1 font-symbol-maths
-catalogue-version 1.5
+catalogue-version 1.6
++++++ zebra-goodies.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zebra-goodies/README.md new/doc/latex/zebra-goodies/README.md
--- old/doc/latex/zebra-goodies/README.md 2017-12-07 00:56:22.000000000 +0100
+++ new/doc/latex/zebra-goodies/README.md 2019-07-04 23:14:35.000000000 +0200
@@ -1,23 +1,23 @@
# zebra-goodies
-A collection of handy macros for paper writing in my group. Do remove this
-package once the paper is finished.
-
-This is not intended for general cases. Use it at your own risk.
+A collection of handy macros for note taking, like `todo` and `comment`. This is
+not intended for general cases. Use it at your own risk.
## Options
-* `draft`: boolean option, whether to show the notes. Enabled by default. Example to disable it:
-
-```latex
-\usepackage[draft=false]{zebra-goodies}
-```
-
-* `microtype`: boolean option, whether to load package `microtype`. Enabled by default.
+- `draft`: boolean option, whether to show the notes. Enabled by default. Example to disable it:
+ ```latex
+ \usepackage[draft=false]{zebra-goodies}
+ % or use the complementary option "final"
+ \usepackage[final]{zebra-goodies}
+ ```
+- `microtype`: boolean option, whether to load package `microtype`. Enabled by default.
## Take Notes
-Add comments, todos, notes anything you like during revise in a colorful way. The package also summarizes the revise notes at the end of the document. Predefined commands are as follows:
+Add comments, todos, notes anything you like during revise in a colorful way.
+The package also summarizes the revise notes at the end of the document.
+Predefined commands are as follows:
```latex
\todo[<who>]{bla bla}
@@ -27,7 +27,9 @@
\placeholder[<who>]{bla bla}
```
-If any of them does not work, it is probaboly it has been defined by other packages. We will not override the definition, so you have to turn to its full version as follows:
+If any of them does not work, it is very likely that it has been defined by
+other packages. We will not override the definition, so you have to turn to its
+full version as follows:
```latex
\zebratodo[<who>]{bla bla}
@@ -41,9 +43,11 @@
```latex
% \zebranewnote{<note name>}{<xcolor color>}
-\zebranewnote{question}{red!80}
-\question{what's this?}
+\colorlet{mycyan}{cyan}
+\zebranewnote{question}{mycyan}
+
+\question[who]{what's this?}
```
## Use Colors
Binary files old/doc/latex/zebra-goodies/zebra-goodies.pdf and new/doc/latex/zebra-goodies/zebra-goodies.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zebra-goodies.doc.tlpobj new/tlpkg/tlpobj/zebra-goodies.doc.tlpobj
--- old/tlpkg/tlpobj/zebra-goodies.doc.tlpobj 2019-02-28 04:19:13.000000000 +0100
+++ new/tlpkg/tlpobj/zebra-goodies.doc.tlpobj 2019-07-05 01:53:51.000000000 +0200
@@ -1,7 +1,8 @@
name zebra-goodies.doc
category Package
-revision 46004
+revision 51554
shortdesc doc files of zebra-goodies
relocated 1
-docfiles size=1
+docfiles size=29
RELOC/doc/latex/zebra-goodies/README.md
+ RELOC/doc/latex/zebra-goodies/zebra-goodies.pdf
++++++ zebra-goodies.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zebra-goodies/zebra-goodies.sty new/tex/latex/zebra-goodies/zebra-goodies.sty
--- old/tex/latex/zebra-goodies/zebra-goodies.sty 2017-12-07 00:56:22.000000000 +0100
+++ new/tex/latex/zebra-goodies/zebra-goodies.sty 2019-07-04 23:14:35.000000000 +0200
@@ -1,44 +1,41 @@
-%% Copyright (C) 2017 by Ruini Xue
%%
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3a
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in:
+%% This is file `zebra-goodies.sty',
+%% generated with the docstrip utility.
%%
-%% http://www.latex-project.org/lppl.txt
+%% The original source files were:
%%
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2008/05/04 or later.
-\ProvidesPackage{zebra-goodies}[2017/12/6 0.3.0 LaTeX goodies for paper writing.]
+%% zebra-goodies.dtx (with options: `package')
+%% Copyright (C) 2016-2019, Ruini Xue
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+
+\ProvidesPackage{zebra-goodies}
+[2019/07/04 0.8.0 Easy Notes Taking]
\RequirePackage{kvoptions}
\SetupKeyvalOptions{
family=zebra,
prefix=zebr@,
setkeys=\kvsetkeys}
\DeclareBoolOption{draft}
+\DeclareComplementaryOption{final}{draft}
\DeclareBoolOption{microtype}
\setkeys{zebra}{draft,microtype}
\ProcessKeyvalOptions{zebra}
-
-% comment this if you do not need.
\ifzebr@microtype
\RequirePackage{microtype}
\fi
\RequirePackage{xcolor}
\RequirePackage{tikzpagenodes}
\RequirePackage{marginnote}
-\RequirePackage{manfnt}
-
-%%%%%%%%%%%%%%%%%%
-% zebra-note
-%%%%%%%%%%%%%%%%%%
-
-% From: http://tex.stackexchange.com/questions/247449/making-marginnote-to-appear-ei...
-% I did a little edit.
+\@ifundefined{dbend}{\RequirePackage{manfnt}}{}
\newlength{\zebr@tempdima}
\newcount{\zebr@tikzpage}
-
\newcommand*{\zebr@marginnote}[1]{%
\begin{tikzpicture}[remember picture, overlay]%
\pgfextractx{\zebr@tempdima}{\pgfpointanchor{current page text area}{center}}%
@@ -50,42 +47,44 @@
\marginnote{#1}%
\endgroup% resets \reversemarginpar
}
-
\def\zebr@note{%
\ifzebr@draft\expandafter\zebr@note@\else\expandafter\@gobblefour\fi}
-
-% #1: note name
-% #2: color
-% #3: assignee
-% #4: note text
\newcommand{\zebr@note@}[4]{%
\zebr@marginnote{\textcolor{#2}{\dbend}}%
\expandafter\stepcounter{zebr@num@#1}%
- \textcolor{#2}{[\textbf{\MakeUppercase{#1}\textit{#3}:} #4]}}
-
+ \textcolor{#2}{[\colorbox[gray]{0.97}{%
+ \textcolor{#2!70!black}{%
+ \textsc{\MakeLowercase{\MakeUppercase#1}}
+ {\expandafter\csname thezebr@num@#1\endcsname}\texttt{#3}:}} #4]}}
\newcommand{\zebr@prepend}[2]{%
\ifx\relax#2\relax\relax\else#1#2\fi}
-
-\global\def\zebr@noteslist{}
+\def\zebr@noteslist{}
\def\zebranewnote#1#2{%
\g@addto@macro\zebr@noteslist{,#1}%
\expandafter\newcounter\expandafter{zebr@num@#1}
- \expandafter\newcommand\csname zebr@color@#1\endcsname{#2}
- \expandafter\newcommand\csname zebra#1\endcsname[2][]{% we suppose it is not defined yet
+ \expandafter\gdef\csname zebr@color@#1\endcsname{#2}
+ \expandafter\newcommand\csname zebra#1\endcsname[2][]{%
\zebr@note{#1}{#2}{\zebr@prepend{@}{##1}}{##2}}
- \@ifundefined{#1}{\expandafter\def\csname #1\endcsname{\csname zebra#1\endcsname}}{%
- \PackageWarning{zebra}{'\textbackslash{#1}' has been taken. Use '\textbackslash{zebra#1}' instead.}}}
-
+ \@ifundefined{#1}{%
+ \expandafter\def\csname #1\endcsname{\csname zebra#1\endcsname}}{%
+ \PackageWarning{zebra}{'\textbackslash{#1}' has been taken.
+ Use '\textbackslash{zebra#1}' instead.}}}
+\zebranewnote{todo}{purple}
+\zebranewnote{fixed}{teal}
+\zebranewnote{comment}{blue}
+\zebranewnote{note}{violet}
+\zebranewnote{placeholder}{gray}
\def\zebr@listnotes{%
\ifzebr@draft\zebr@listnotes@\fi}
-
\def\zebr@listnotes@{%
\def\temp@a{}
\edef\temp@noteslist{\expandafter\@gobble\zebr@noteslist}
\@for\temp@b:=\temp@noteslist\do{%
\expandafter\ifnum\expandafter\value\expandafter{zebr@num@\temp@b} > 0%
\def\temp@c{\expandafter\csname thezebr@num@\temp@b\endcsname}
- \edef\temp@d{\noexpand\textcolor{\expandafter\csname zebr@color@\temp@b\endcsname}{\temp@b} \noexpand & \temp@c\noexpand\\}
+ \edef\temp@d{\noexpand\textcolor{%
+ \expandafter\csname zebr@color@\temp@b\endcsname}{\temp@b}%
+ \noexpand & \temp@c\noexpand\\}
\expandafter\g@addto@macro\expandafter\temp@a\expandafter{\temp@d}%
\fi}
\ifx\temp@a\@empty\else%
@@ -99,27 +98,23 @@
\temp@a
\hline
\end{tabular}
- \par \medskip
- \textbf{Do fix all of them before submitting.}
\end{center}
\fi}
-
\AtEndDocument{\zebr@listnotes}
-
-\zebranewnote{todo}{purple}
-\zebranewnote{fixed}{teal}
-\zebranewnote{comment}{blue}
-\zebranewnote{note}{violet}
-\zebranewnote{placeholder}{gray}
-
-%%%%%%%%%%%%%%
-% zebra-color
-%%%%%%%%%%%%%%
\definecolor{zebrablue}{HTML}{4F81BD}
\definecolor{zebrared}{HTML}{C0504D}
\definecolor{zebragreen}{HTML}{9BBB00}
\definecolor{zebrapurple}{HTML}{9F4C7C}
\definecolor{zebrayellow}{HTML}{D9CD2E}
\definecolor{zebragreen2}{HTML}{00E000}
-
-\endinput
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Ruini Xue.
+%%
+%% This work consists of the file zebra-goodies.dtx
+%% and the derived files zebra-goodies.ins,
+%% zebra-goodies.pdf and
+%% zebra-goodies.sty.
+%%
+%%
+%% End of file `zebra-goodies.sty'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zebra-goodies.tlpobj new/tlpkg/tlpobj/zebra-goodies.tlpobj
--- old/tlpkg/tlpobj/zebra-goodies.tlpobj 2019-02-28 04:19:13.000000000 +0100
+++ new/tlpkg/tlpobj/zebra-goodies.tlpobj 2019-07-05 01:53:51.000000000 +0200
@@ -1,6 +1,6 @@
name zebra-goodies
category Package
-revision 46004
+revision 51554
shortdesc A collection of handy macros for paper writing
relocated 1
longdesc This package offers a collection of macros to help in the
@@ -16,12 +16,10 @@
runfiles size=1
RELOC/tex/latex/zebra-goodies/zebra-goodies.sty
catalogue-contact-bugs https://github.com/xueruini/zebra-goodies/issues
-catalogue-contact-development https://github.com/xueruini
-catalogue-contact-home https://github.com/xueruini/zebra-goodies
catalogue-contact-repository https://github.com/xueruini/zebra-goodies
catalogue-contact-support https://github.com/xueruini/zebra-goodies/issues
catalogue-ctan /macros/latex/contrib/zebra-goodies
-catalogue-date 2017-12-06 09:55:03 +0100
+catalogue-date 2019-07-04 05:23:10 +0200
catalogue-license lppl1.3c
catalogue-topics notes editorial marginal
-catalogue-version 0.3.0
+catalogue-version 0.8.0
++++++ zhlineskip.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zhlineskip/README.md new/doc/latex/zhlineskip/README.md
--- old/doc/latex/zhlineskip/README.md 2018-12-01 23:47:43.000000000 +0100
+++ new/doc/latex/zhlineskip/README.md 2019-05-16 23:03:18.000000000 +0200
@@ -2,15 +2,16 @@
==========
`zhlineskip` is a package for typesetting CJK documents. This package allows users
-to specify the two ratios between the leading and the font size of the body text
-and the footnote text. For Latin typesetting, these ratios usually range
+to specify two ratios: One between the leading and the font size of the body text
+and the other between those of the footnote text.
+For Latin typography, these ratios usually range
[from 1.2 to 1.45](https://practicaltypography.com/line-spacing.html),
-but they should be larger for CJK typesetting (usually from 1.5 to 1.67).
+but they should be larger for CJK typography (usually from 1.5 to 1.67).
-On the one hand, CJK text requires larger line spacing. On the other hand, math
-line spacing should follow Latin typesetting, since math often consists of only
-Latin letters and symbols. The `zhlineskip` package is capable of restoring the
-math leading to that of the Latin text.
+Although CJK text requires larger line spacing, maths formulae should follow
+the rules of Latin typography, since maths often consists of only Latin-based
+letters and symbols. The `zhlineskip` package is capable of restoring the
+maths leading to that of the Latin text.
Finally, it is possible to achieve the “Microsoft Word multiple line spacing”
style using `zhlineskip`.
@@ -25,7 +26,7 @@
Copyright and Licence
---------------------
- Copyright (C) 2018 by Ruixi Zhang
+ Copyright (C) 2018, 2019 by Ruixi Zhang
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
@@ -40,9 +41,9 @@
The Current Maintainer of this work is Ruixi Zhang.
This work consists of the files zhlineskip.sty,
- zhlineskip-man.tex,
+ zhlineskip.tex,
zhlineskip-test.tex,
Latinmetrics.pdf,
CJKmetrics.pdf,
README.md (this file)
- and the derived file zhlineskip-man.pdf.
\ No newline at end of file
+ and the derived file zhlineskip.pdf.
\ No newline at end of file
Binary files old/doc/latex/zhlineskip/zhlineskip-man.pdf and new/doc/latex/zhlineskip/zhlineskip-man.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zhlineskip/zhlineskip-man.tex new/doc/latex/zhlineskip/zhlineskip-man.tex
--- old/doc/latex/zhlineskip/zhlineskip-man.tex 2018-12-01 23:47:43.000000000 +0100
+++ new/doc/latex/zhlineskip/zhlineskip-man.tex 1970-01-01 01:00:00.000000000 +0100
@@ -1,629 +0,0 @@
-% !TeX program = XeLaTeX
-% !TeX encoding = UTF-8 Unicode
-%
-% 为了得到最佳的排版结果,可以考虑安装免费的思源宋体、思源黑体与 Fandol 字库
-% - 思源字库可以前往
-% https://github.com/adobe-fonts/source-han-serif/tree/release
-% https://github.com/adobe-fonts/source-han-sans/tree/release
-% 下载,请安装 Language-specific OTFs 的简体中文版本
-% - Fandol 字库可以通过发行版 TeX Live 或 MiKTeX 安装
-%
-% 如果已经安装了思源、Fandol 字库,请在导言区启用 \SourceHanSCandFandoltrue
-%
-\documentclass[zihao=5,no-math,a4paper]{ctexart}
-\newif\ifSourceHanSCandFandol
-\SourceHanSCandFandolfalse
-% 如果已经安装了思源、Fandol 字库,请启用 \SourceHanSCandFandoltrue
-%\SourceHanSCandFandoltrue
-\frenchspacing
-\ctexset{
- section={
- name={第,节},
- aftername=\hskip\ccwd\relax,
- format=\Large\bfseries
- },
- subsection/aftername=\hskip\ccwd\relax,
- subsubsection/aftername=\hskip\ccwd\relax
-}
-\renewcommand\sectionmark[1]{%
- \markright{%
- \normalfont\sffamily
- \CTEXifname{\CTEXthesection\hskip\ccwd\relax}{}#1%
- }%
-}
-\usepackage{mathtools}
-\usepackage[math-style=ISO]{unicode-math}
-\ifSourceHanSCandFandol
- \setmainfont{TeX Gyre Pagella}[
- Scale=1.0534682080924855,
- WordSpace={0.8984910836762689,1.2030178326474623,0.6954732510288066},
- SmallCapsFeatures={LetterSpace=5}
- ]
- \setsansfont{TeX Gyre Heros}[
- Scale=1.0068587105624143,
- WordSpace={0.7863093721208319,1.4273812557583361,0.3589281163624958}
- ]
- \setmonofont{Source Han Sans SC}[
- BoldFont=Source Han Sans SC Bold,
- CharacterWidth=Half
- ]
- \setmathfont{TeX Gyre Pagella Math}[
- Scale=1.0534682080924855
- ]
- \setCJKmainfont{Source Han Serif SC Medium}[
- ItalicFont=FandolKai-Regular,
- ItalicFeatures={FakeBold=1},
- BoldFont=Source Han Serif SC Bold,
- BoldItalicFont=FandolKai-Regular,
- BoldItalicFeatures={FakeBold=3},
- CharacterWidth=Full
- ]
- \usepackage{etoolbox}
- \makeatletter
- \newcommand*\original@CJKsymbol{}
- \newcommand*\original@CJKpunctsymbol{}
- \let\original@CJKsymbol\CJKsymbol
- \let\original@CJKpunctsymbol\CJKpunctsymbol
- \newcommand*\raise@Fandol@CJK[1]{\raise0.08\ccwd\hbox{#1}}
- \appto\itshape{%
- \let\CJKsymbol\raise@Fandol@CJK
- \let\CJKpunctsymbol\raise@Fandol@CJK
- }
- \appto\upshape{%
- \let\CJKsymbol\original@CJKsymbol
- \let\CJKpunctsymbol\original@CJKpunctsymbol
- }
- \makeatother
- \setCJKsansfont{Source Han Sans SC}[
- BoldFont=Source Han Sans SC Bold,
- CharacterWidth=Full
- ]
- \setCJKmonofont{Source Han Sans SC}[
- BoldFont=Source Han Sans SC Bold,
- CharacterWidth=Full
- ]
-\else
- \setmainfont{TeX Gyre Pagella}[
- SmallCapsFeatures={LetterSpace=5}
- ]
- \setsansfont{TeX Gyre Heros}
- \setmathfont{TeX Gyre Pagella Math}
-\fi
-\usepackage{zhlineskip}
-\SetTextEnvironmentSinglespace{1.05}
-\SetMathEnvironmentSinglespace{1.05}
-\ifSourceHanSCandFandol
- \SetTextEnvironmentSinglespace{1.106}
- \SetMathEnvironmentSinglespace{1.106}
-\fi
-\usepackage{caption}
-\DeclareCaptionLabelSeparator{zhcolon}{~:}% U+FF1A, Fullwidth Colon
-\captionsetup{labelsep=zhcolon,format=hang}
-\usepackage{enumitem}
-\setlist{
- listparindent=\parindent,parsep=\parskip
-}
-\ifSourceHanSCandFandol
- \setlist[itemize,1]{
- itemsep=0pt,
- label=・,% U+30FB, Katakana Middle Dot
- leftmargin=\parindent,labelsep=0pt,labelwidth=0.5\parindent
- }
-\else
- \setlist[itemize,1]{
- itemsep=0pt,
- label=·,% U+00B7, Middle Dot
- leftmargin=\parindent,labelsep=0pt,labelwidth=0.5\parindent
- }
-\fi
-\setlist[description,1]{
- font=\mdseries,
- leftmargin=\parindent,labelsep=0.5\parindent
-}
-\usepackage{booktabs}
-\usepackage{hyperref}
-\hypersetup{
- colorlinks=true,
- pdfstartview={FitH},
- unicode=true,
- pdftitle={zhlineskip-man},
- pdfauthor={张瑞熹}
-}
-\usepackage[open,openlevel=-1,numbered]{bookmark}
-\usepackage[width=378bp]{geometry}
-
-\makeatletter
-\ifSourceHanSCandFandol
- \ExplSyntaxOn
- \xeCJK_new_class:n { PoZheHao }
- \__xeCJK_save_CJK_class:n { PoZheHao }
- \seq_map_inline:Nn \g__xeCJK_class_seq
- {
- \str_if_eq:nnF {#1} { PoZheHao }
- {
- \xeCJK_copy_inter_class_toks:nnnn { PoZheHao } {#1} { FullRight } {#1}
- \xeCJK_copy_inter_class_toks:nnnn {#1} { PoZheHao } {#1} { FullRight }
- }
- }
- \xeCJK_declare_char_class:nn { PoZheHao } { "2014 , "2015 }
- \ExplSyntaxOff
-\fi
-% From `doc.dtx'
-\ifx\l@nohyphenation\undefined
- \newlanguage\l@nohyphenation
-\fi
-\newcommand*\meta{}
-\DeclareRobustCommand\meta[1]{%
- \ensuremath\langle
- \ifmmode \expandafter \nfss@text \fi
- {%
- \meta@font@select
- \edef\meta@hyphen@restore
- {\hyphenchar\the\font\the\hyphenchar\font}%
- \hyphenchar\font\m@ne
- \language\l@nohyphenation
- #1\/%
- \meta@hyphen@restore
- }\ensuremath\rangle
-}
-\def\meta@font@select{\itshape}
-% From `ltxdoc.dtx'
-\newcommand*\cmd[1]{\cs{\expandafter\cmd@to@cs\string#1}}
-\def\cmd@to@cs#1#2{\char\number`#2\relax}
-\newcommand*\cs{}
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
-\newcommand\marg[1]{%
- {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
-\newcommand\oarg[1]{%
- {\ttfamily[}\meta{#1}{\ttfamily]}}
-\newcommand\parg[1]{%
- {\ttfamily(}\meta{#1}{\ttfamily)}}
-% My commands
-\newcommand\cls[1]{{\normalfont\ttfamily#1}}
-\newcommand\pkg[1]{{\normalfont\ttfamily#1}}
-\newcommand\opt[1]{{\normalfont\ttfamily#1}}
-\newcommand\env[1]{{\normalfont\ttfamily#1}}
-\newcommand*\packagedependency[1]{%
- \mbox{\pkg{#1}~宏包:}\ignorespaces
-}
-\newcommand*\keyvalueitem[3][2.5]{%
- \item[\opt{#2}\hskip0.5\ccwd\relax\rlap{\meta{#3}}\hskip#1\ccwd\relax]%
- \hskip\z@ \@plus 0.25\ccwd \@minus 0.25\ccwd
- \ignorespaces
-}
-\newcommand*\usercmditem[3][3]{%
- \item[\cmd{#2}\rlap{\marg{#3}}\hskip#1\ccwd\relax]%
- \hskip\z@ \@plus 0.25\ccwd \@minus 0.25\ccwd
- \ignorespaces
-}
-\newcommand*\defaultleadingratio[3]{%
- \opt{#1} & $#2$ & $#3$%
-}
-\newcommand*\fontandsinglespaceratio[2]{%
- #1 & $#2$%
-}
-\newenvironment{originalpmatrix}{\left(\env@matrix}{\endmatrix\right)}
-\newenvironment{originalcases}{\env@cases}{\endarray\right.}
-\newcommand*\myemail{ruixizhang42@gmail.com}
-\makeatother
-
-\title{\vspace*{-26bp}\pkg{zhlineskip} 宏包}
-\author{张瑞熹\thanks{\href{mailto:\myemail}{\nolinkurl{\myemail}}。}}
-\date{2018/11/30\hskip\ccwd\relax v1.0d}
-
-\begin{document}
-
-\maketitle
-
-\tableofcontents
-
-\section{简介}
-
-\pkg{zhlineskip} 宏包允许用户指定正文行距相比于正文字号的倍数(通常建议设置在
-$1.5$ 至 $1.67$ 之间),以及脚注行距相比于脚注字号的倍数。另一方面,由于数学公式
-主要是由西文字符构成的,\pkg{zhlineskip} 还能将数学公式的行距“恢复”成西文
-较为紧凑的行距(通常为西文字号的 $1.2$~倍),使得全文的视觉密度较为均匀。最后,
-本宏包还支持按照 Microsoft Word 进行“多倍行距”排版。
-
-\subsection{宏包依赖}
-
-本宏包是针对中日韩文的横排文档设计出来的,它依赖于下面这些宏包:
-\begin{itemize}
-\item \packagedependency{kvoptions}
-为用户提供载入本宏包的键值选项。
-\item \packagedependency{xintexpr~}
-实现精确的浮点运算,属于 \pkg{xint} 宏集的一个部分。
-\item \packagedependency{etoolbox~}
-处理脚注行距与数学行距时需要打补丁。
-\item \packagedependency{mathtools}
-只有在恢复数学行距为西文行距时,才会载入这个宏包。
-\end{itemize}
-请确保你的 \TeX\ 发行版里已经安装好了以上这些宏包的最新版本。
-
-\subsection{中西有别}
-
-在西文排版里,相邻两行\emph{基线}(baseline)之间的距离称为\emph{行距}(leading,
-发音为 led-ding)。这个词的词根是 lead,即\emph{铅}。早在铅字时代,每当工匠填满
-一行铅字之后要开始填下一行,都会在两行之间插入铅条,从而适当地扩大行距。因为西文的
-每个字母四周与其\emph{字框}(em-box,见图~\ref{fig:eng-font-size})之间有
-较大的空隙,所以不需要插入很高的铅条。一般来说,西文的行距为\emph{字号}(font
-size)的 $1.2$ 至 $1.45$~倍\footnote{参见
-\url{https://practicaltypography.com/line-spacing.html}。}。
-
-\begin{figure}[h]
-\centering
-\includegraphics{Latinmetrics}
-\caption[西文字体]{西文字体。绿色方框即为 em-box,它在纸上的实际边长就是西文字号。}
-\label{fig:eng-font-size}
-\end{figure}
-
-中文排版虽然没有基线的概念,但有非常相似的概念:\emph{底线}(ideographic baseline,
-见图~\ref{fig:chi-font-size})。中文里相邻两行底线之间的距离,与西文里行距的
-概念是一致的。另一概念是上一行底线和下一行\emph{顶线}之间的距离,即\emph{行间距}(line
-gap),这与西文里插入铅条的高度是一致的。由于汉字四周与其字框间的空隙较小,所以需要
-使用比西文更大的行间距。根据场合不同,行间距从字号的 $1/4$ 至 $1$~倍不等:以中文
-书刊为例,行间距一般为字号的 $1/2$ 至 $2/3$~倍\footnote{参见张胜涛、王忆波著
-《方正飞腾4.0实用培训教程》,第~6.1.1~节。},即行距约为字号的 $1.5$ 至 $1.67$~倍。
-
-\begin{figure}[h]
-\centering
-\includegraphics{CJKmetrics}
-\caption[中文字体]{中文字体。汉字字面几乎占满整个字框,字框的边长即为中文字号。}
-\label{fig:chi-font-size}
-\end{figure}
-
-在一般情况下,\CTeX\ 会默认用 \opt{linespread=1.3} 这个文档类选项将中文的
-行距设置为字号的 $1.56$~倍(基础行距是字号的 $1.2$~倍,而 $1.2 \times 1.3
-= 1.56$)。通过这种方法扩大全文的行距,自然会影响到文章里数学公式的行距。而数学
-公式主要是由西文字符构成的,把它们按照中文的行距进行排版,就会显得有些松散。
-图~\ref{fig:math-leading} 左边是 \CTeX\ 默认排版效果,文本、数学看似
-一紧、一松;右边是配合用 \pkg{zhlineskip} 的效果,视觉密度比较均匀。
-\pkg{zhlineskip} 宏包还允许用户调整数学行距的大小。
-
-\begin{figure}[h]
-\sbox0{%
-\begin{minipage}[t]{162pt}
-\fontsize{9}{10.8}\linespread{1.3}\selectfont
-\rule{0pt}{\ht\strutbox}\hskip2\ccwd\relax
-设 $\symbf{I}_2=\begin{psmallmatrix} 1&0\\0&1 \end{psmallmatrix}$.
-又设 $\symbf{A}=(a_{ij})_{m \times n}$ 为一个 $m$~行 $n$~列的实值矩阵, 即
-\[
-\symbf{A} = \begin{originalpmatrix}
-a_{11} & a_{12} & \dotsc & a_{1n} \\
-a_{21} & a_{22} & \dotsc & a_{2n} \\
-\vdots & \vdots & & \vdots \\
-a_{m1} & a_{m2} & \dotsc & a_{mn}
-\end{originalpmatrix},
-\]
-其中 $a_{ij} \in \mathbb{R}$, $i=1,\dotsc,m$, $j=1,\dotsc,n$.
-又因为
-\[
-\sum_{\substack{i=1\\i\neq j}}^m a_{ij} = \begin{originalcases}
-0, & j=1,\\
-1, & j>1,
-\end{originalcases}
-\]
-我们得到……\rule[-\dp\strutbox]{0pt}{\dp\strutbox}
-\end{minipage}%
-}%
-\centering
-\rule[\dimexpr-\dp0-0.5em\relax]{0.4pt}{\dimexpr\dp0+\ht0+1em\relax}\quad
-\copy0\quad
-\rule[\dimexpr-\dp0-0.5em\relax]{0.4pt}{\dimexpr\dp0+\ht0+1em\relax}\quad
-\begin{minipage}[t]{162pt}
-\fontsize{9}{10.8}\linespread{1.25}\selectfont
-\hskip2\ccwd\relax
-设 $\symbf{I}_2=\begin{psmallmatrix} 1&0\\0&1 \end{psmallmatrix}$.
-又设 $\symbf{A}=(a_{ij})_{m \times n}$ 为一个 $m$~行 $n$~列的实值矩阵, 即
-\[
-\symbf{A} = \begin{pmatrix}
-a_{11} & a_{12} & \dotsc & a_{1n} \\
-a_{21} & a_{22} & \dotsc & a_{2n} \\
-\vdots & \vdots & & \vdots \\
-a_{m1} & a_{m2} & \dotsc & a_{mn}
-\end{pmatrix},
-\]
-其中 $a_{ij} \in \mathbb{R}$, $i=1,\dotsc,m$, $j=1,\dotsc,n$.
-又因为
-\[
-\sum_{\substack{i=1\\i\neq j}}^m a_{ij} = \begin{cases}
-0, & j=1,\\
-1, & j>1,
-\end{cases}
-\]
-我们得到……
-\end{minipage}\quad
-\rule[\dimexpr-\dp0-0.5em\relax]{0.4pt}{\dimexpr\dp0+\ht0+1em\relax}%
-\llap{\rule[\dimexpr-\dp0-0.5em\relax]{\dimexpr2\wd0+4em+1.2pt\relax}{0.4pt}}%
-\llap{\rule[\dimexpr\ht0+0.5em-0.4pt\relax]{\dimexpr2\wd0+4em+1.2pt\relax}{0.4pt}}
-\caption[数学行距对比]{数学行距对比。在左图中,大矩阵 \env{pmatrix} 与分类
- \env{cases} 两个环境受到影响,行距都被扩大了;但第一行文本里的小矩阵与末尾
- 公式里求和号的下角标却没有受到影响,行距仍然较为紧凑。在右图中,数学公式的行距
- 都是西文的行距,密度比较均匀,行间公式里的大括弧、大括号也不会特别突兀。}
-\label{fig:math-leading}
-\end{figure}
-
-综上所述,在进行中西文混排时,最好能够区分中文与西文的行距。在使用 \pkg{zhlineskip}
-时,就可以分开处理中文文本与数学公式的行距。用户甚至还能分别指定正文行距与脚注
-行距,实现灵活的排版。同时,\pkg{zhlineskip} 宏包能恢复各种“多行”数学环境
-(包括矩阵、分类、多行公式推导等等)的行距,使数学公式的行距符合西文行距的规范。
-
-最后,\pkg{zhlineskip} 宏包还支持用户在一定范围内按 Microsoft Word 的
-“多倍行距”进行排版\footnote{本宏包默认假定“被要求”用的字体是中易系列字体,
-这包括 Microsoft Word 里的“宋体”、“黑体”、“楷体”与“仿宋”。若改用其他字体,
-可能需要调整 \opt{MSWordSinglespaceRatio} 的值。
-参见第~\ref{sec:key-value}~节与第~\ref{sec:MS-Word}~节。}。
-用户可以指定“多倍行距”的“倍数”,但是这只保证用 \TeX\ 排出来的文本行距与用
-Microsoft Word 排的行距相同。硬要用 \TeX\ 模仿 Microsoft Word 是没有
-太大意义的。
-
-\section{功能介绍}
-
-首先,请避免使用“多倍行距”这个概念:Microsoft Word 中“单倍行距”的值严重依赖于
-字体(参见第~\ref{sec:MS-Word}~节)。在严格排版的时候,一般都会给定具体的字号
-与行距,例如字号 $12$~磅、行距 $22$~磅。对于一般的用户,指定目标行距相比字号的
-倍数即可——\pkg{zhlineskip} 宏包可以自动提取基础行距(即 \TeX\ 中的单倍行距)
-相比字号的倍数(详见表~\ref{tab:default-leading-ratio}),再通过用户指定的
-倍数来计算所需的行伸展因子。因此,不论是中日韩文还是西文的横排文档,都是可以使用
-本宏包的。本宏包的缺省设置更适合中日韩文文档。
-\begin{table}[h]
-\centering
-\caption[基础行距倍数]{\cls{ctexart} 与 \cls{article} 各个文档类选项
- 设置的基础行距倍数。}
-\label{tab:default-leading-ratio}
-\begin{tabular}{l l l}
-\toprule
-文档类选项 & 正文基础行距 & 脚注基础行距 \\
-\midrule
-\defaultleadingratio{zihao=5}{1.2}{1.2} \\
-\defaultleadingratio{zihao=-4}{1.2}{1.2} \\
-\defaultleadingratio{10pt}{12/10}{9.5/8} \\
-\defaultleadingratio{11pt}{13.6/10.95}{11/9} \\
-\defaultleadingratio{12pt}{14.5/12}{12/10} \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-\subsection{载入宏包时的键值选项}
-\label{sec:key-value}
-
-载入 \pkg{zhlineskip} 宏包时可以设定六个基本的键值选项,它们分别是:
-\begin{description}
-\keyvalueitem{bodytextleadingratio}{real}
-指定正文目标行距相比于正文字号的倍数。以书刊为例,建议设置在~$1.5$ 至~$1.67$
-之间。缺省值是~\opt{1.5},即 $1/2$~的行间距。
-\keyvalueitem{footnoteleadingratio}{real}
-指定脚注目标行距相比于脚注字号的倍数,它可以比正文的倍数稍小一些,建议设置在正文
-倍数的 $98\%$ 至 $100\%$ 之间。缺省值是~\opt{1.48},即大约为正文倍数的~$98.67\%$。
-\keyvalueitem{restoremathleading}{bool}
-指定是否要将数学公式的行距恢复成西文基础行距。缺省值是~\opt{true},即恢复数学
-行距。该选项为真时,会自动载入 \pkg{mathtools} 宏包,此时还能利用
-\cmd{\SetMathEnvironmentSinglespace}\marg{real}
-命令\emph{微调}数学公式的基础行距。
-\keyvalueitem{UseMSWordMultipleLineSpacing}{bool}
-在排版论文时,如果被要求按照 Microsoft Word 来设置“多倍行距”,那么用户可以
-将该选项设置为~\opt{true},并通过设置 \opt{MSWordLineSpacingMultiple}
-指定“倍数”,这会忽略用户之前指定的正文行距与脚注行距倍数,但是与数学行距的设置
-独立。该选项的缺省值是~\opt{false}。
-\keyvalueitem{MSWordLineSpacingMultiple}{real}
-设置 Microsoft Word“多倍行距”的“倍数”,
-仅在 \opt{UseMSWordMultipleLineSpacing} 为真时生效。
-缺省值是~\opt{1.15},在不修改 \opt{MSWordSinglespaceRatio} 时,
-相当于设置了目标行距为字号的 $1.49140625$~倍,适用于中易字体
-(参见第~\ref{sec:MS-Word}~节)。
-\keyvalueitem{MSWordSinglespaceRatio}{real}
-设置 Microsoft Word 的“单倍行距”相比字号的倍数,
-仅在 \opt{UseMSWordMultipleLineSpacing} 为真时生效。
-缺省值是~\opt{1.296875},适用于中易字体(参见第~\ref{sec:MS-Word}~节)。
-若改用其他字体,则需调整该选项的值。
-\end{description}
-
-\subsection{载入宏包后的用户命令}
-
-\subsubsection{调整数学公式的行距}
-
-当键值选项 \opt{restoremathleading} 为~\opt{true} 时,数学公式的行距被
-恢复成字号的 $1.2$~倍。对于某些字面较大的数学字体(例如类似 Palatino 的字体),
-这个基础行距会显得过小。此时,用户可以通过如下命令微调数学行距:
-\begin{description}
-\usercmditem{\SetMathEnvironmentSinglespace}{real}
-如果数学字体来自 \pkg{newpxmath} 或是 TeX Gyre Pagella Math,那么
-数学行距在字号 $1.2$~倍的基础上再扩大 $1.05$~倍更加合适。此时,只需指定
-\verb|\SetMathEnvironmentSinglespace{1.05}| 即可。
-\end{description}
-本宏包恢复的多行数学环境包括:
-\begin{description}
-\raggedright
-\item[\LaTeX\ 环境]
-\env{array};
-\item[\pkg{amsmath} 宏包各环境]
-\env{matrix},
-\env{pmatrix},
-\env{bmatrix},
-\env{Bmatrix},
-\env{vmatrix},
-\env{Vmatrix},
-\env{cases},
-\env{aligned},
-\env{alignedat},
-\env{gathered},
-\env{gather},
-\env{gather*},
-\env{align},
-\env{align*},
-\env{flalign},
-\env{flalign*},
-\env{alignat},
-\env{alignat*},
-\env{xalignat},
-\env{xalignat*},
-\env{xxalignat},
-\env{multline},
-\env{multline*},
-\env{split};
-\item[\pkg{mathtools} 宏包各环境]
-\env{matrix*},
-\env{pmatrix*},
-\env{bmatrix*},
-\env{Bmatrix*},
-\env{vmatrix*},
-\env{Vmatrix*},
-\env{cases*},
-\env{dcases},
-\env{dcases*},
-\env{rcases},
-\env{rcases*},
-\env{drcases},
-\env{drcases*},
-\env{multlined},
-\env{lgathered},
-\env{rgathered}。
-\end{description}
-超出上述列表范围、用户自定义的\emph{数学}环境,可用如下命令恢复其行距:
-\begin{description}
-\usercmditem[6]{\RestoreMathEnvironmentLeading}{env name}
-使用范例:本宏包恢复数学环境 \env{array} 的行距,通过
-\verb|\RestoreMathEnvironmentLeading{array}| 实现。
-\end{description}
-
-\emph{注意,在 \opt{restoremathleading} 为~\opt{false} 时,
-\cmd{\SetMathEnvironmentSinglespace}
-与 \cmd{\RestoreMathEnvironmentLeading} 无效。}
-
-\subsubsection{调整西文文本的行距}
-
-与数学行距命令对应,本宏包还提供两个调整\emph{西文文本}行距的命令,用法类似。
-\begin{description}
-\usercmditem{\SetTextEnvironmentSinglespace}{real}
-如果西文字体来自 \pkg{newpxtext} 或是 TeX Gyre Pagella,那么可以指定
-\verb|\SetTextEnvironmentSinglespace{1.05}|。
-\usercmditem[6]{\RestoreTextEnvironmentLeading}{env name}
-使用范例:假设文中的表格仅含西文、数字,此时如果想要文本环境 \env{tabular} 的
-行距与西文行距一致,可通过
-\verb|\RestoreTextEnvironmentLeading{tabular}| 实现。
-\end{description}
-
-如果作者没有顾及到某些\emph{基本环境}(数学或文本),鼓励用户向 \pkg{zhlineskip} 的
-\href{https://github.com/CTeX-org/ctex-kit/issues}{GitHub 维护页}%
-提供相关信息。
-
-\subsection{使用范例}
-
-下面以 \CTeX\ 提供的 \cls{ctexart} 文档类为例,展示 \pkg{zhlineskip} 的
-使用方法。
-
-\subsubsection*{例:直接载入}
-
-\begin{verbatim}
- \documentclass{ctexart}
- \usepackage{zhlineskip}
- \begin{document}
- 正文测试。
- \end{document}
-\end{verbatim}
-
-\subsubsection*{例:设置正文行距为字号的 1.6~倍}
-
-\begin{verbatim}
- \documentclass{ctexart}
- \usepackage[
- bodytextleadingratio=1.6, % 设置正文行距倍数为 1.6
- footnoteleadingratio=1.57 % 设置脚注行距倍数为 1.57
- ]{zhlineskip} % 缺省数学行距倍数为 1.2
- \begin{document}
- 正文测试。
- \end{document}
-\end{verbatim}
-
-\subsubsection*{例:按照 Microsoft Word 设置“1.62~倍行距”}
-
-\begin{verbatim}
- \documentclass{ctexart}
- \usepackage[
- restoremathleading=false,
- UseMSWordMultipleLineSpacing,
- MSWordLineSpacingMultiple=1.62
- ]{zhlineskip}
- \begin{document}
- 按照 Microsoft Word 设置 1.62~倍行距。
- \end{document}
-\end{verbatim}
-
-\subsubsection*{例:中文正文里需要插入成段的西文}
-
-如果插入的西文是引用参考文献的段落,那么使用 \env{quote} 或 \env{quotation}
-环境就比较合适。此时,可以直接在引用环境内部使用 \cmd{\linespread}\marg{real}
-命令,建议将 \meta{real} 设置在正文行距倍数的 $0.7$~倍左右。例如,在载入
-\pkg{zhlineskip} 宏包后,正文行距为字号的 $1.5$~倍,那么
-\verb|\linespread{1.05}| 就比较合适($1.5 \times 0.7 = 1.05$)。
-\begin{verbatim}
- \documentclass{ctexart}
- \usepackage{zhlineskip}
- \begin{document}
- 下面引用一段出自英文文献的段落:
- \begin{quotation}
- \linespread{1.05}\selectfont % 此处数值为正文行距倍数的 0.7 倍左右
- A quotation from English literature.
- \end{quotation}
- \end{document}
-\end{verbatim}
-
-\subsection{Microsoft Word 中的“单倍行距”}
-\label{sec:MS-Word}
-
-Microsoft Word 中“单倍行距”的设置,其行距值相比字号的倍数严重依赖于字体,
-甚至还可能因为操作系统的不同而迥然不同。表~\ref{tab:word-line-height} 列出
-几种常见字体对应的单倍行距倍数。正是因为“单倍行距”本身随字体、操作系统而变化,
-所以请尽量避免使用“多倍行距”的概念!
-\begin{table}[h]
-\centering
-\caption[单倍行距倍数]{在 Microsoft Word 中设置“单倍行距”后,实际的行距
- 依赖于字体。}
-\label{tab:word-line-height}
-\begin{tabular}{l l}
-\toprule
-字体名称 & “单倍行距”除以字号的倍数 \\
-\midrule
-\fontandsinglespaceratio{Arial}{2355/2048=1.14990234375} \\
-\fontandsinglespaceratio{Times New Roman}{2355/2048=1.14990234375} \\
-\fontandsinglespaceratio{中易系列字体}{\phantom0332/256\phantom0=1.296875} \\
-\fontandsinglespaceratio{华文中宋(Windows)}{1479/1000=1.479} \\
-\fontandsinglespaceratio{微软雅黑 Light(Windows)}{3400/2048=1.66015625} \\
-\fontandsinglespaceratio{微软雅黑 Regular/Bold}{3513/2048=1.71533203125} \\
-\fontandsinglespaceratio{华文中宋(macOS)}{1723/1000=1.723} \\
-\fontandsinglespaceratio{微软雅黑 Light(macOS)}{3542/2048=1.7294921875} \\
-\fontandsinglespaceratio{苹方(macOS)}{1820/1000=1.82} \\
-\fontandsinglespaceratio{思源宋体~1.001}{1869/1000=1.869} \\
-\fontandsinglespaceratio{思源黑体~2.000}{1882/1000=1.882} \\
-\fontandsinglespaceratio{思源黑体~1.004}{1924/1000=1.924} \\
-\bottomrule
-\end{tabular}
-\end{table}
-
-\begin{thebibliography}{9}
-\bibitem{butterick2018linespacing}
-\textsc{Butterick, Matthew}.
-\newblock \textit{Butterick's Practical Typography\textup:
- Line spacing}.
-\newblock \url{https://practicaltypography.com/line-spacing.html},
- 访问日期: 2018/10/28.
-
-\bibitem{knuth1986tex}
-\textsc{Knuth, Donald Ervin}.
-\newblock \textit{The \TeX book}.
-\newblock Addison--Wesley, 1986.
-
-\bibitem{lunde2008cjkv}
-\textsc{Lunde, Ken}.
-\newblock \textit{CJKV Information Processing\textup:
- Chinese\textup, Japanese\textup, Korean \textup\&
- Vietnamese Computing} (2~ed.).
-\newblock O'Reilly Media, Inc., 2008.
-
-\bibitem{zhang2005fang}
-\textsc{张胜涛, 王忆波}.
-\newblock \textit{方正飞腾4.0实用培训教程}.
-\newblock 清华大学出版社, 2005.
-\end{thebibliography}
-
-\end{document}
\ No newline at end of file
Binary files old/doc/latex/zhlineskip/zhlineskip.pdf and new/doc/latex/zhlineskip/zhlineskip.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zhlineskip/zhlineskip.tex new/doc/latex/zhlineskip/zhlineskip.tex
--- old/doc/latex/zhlineskip/zhlineskip.tex 1970-01-01 01:00:00.000000000 +0100
+++ new/doc/latex/zhlineskip/zhlineskip.tex 2019-05-16 23:03:18.000000000 +0200
@@ -0,0 +1,733 @@
+% !TeX program = XeLaTeX
+% !TeX encoding = UTF-8 Unicode
+%
+% 为了得到最佳的排版结果,可以考虑安装免费的思源宋体、思源黑体与 M+ 字体
+% - 思源字库可以前往
+% https://github.com/adobe-fonts/source-han-serif/tree/release
+% https://github.com/adobe-fonts/source-han-sans/tree/release
+% 下载,请安装 Language-specific OTFs 的简体中文版本
+% - M+ 字体可以前往
+% https://osdn.net/projects/mplus-fonts/releases/
+% 下载
+%
+% 如果已经安装了思源、M+ 字体,请在导言区启用 \SourceHanSCandMplustrue
+%
+\documentclass[zihao=5,a4paper]{ctexart}
+\XeTeXgenerateactualtext=1 %
+\newif\ifSourceHanSCandMplus
+\SourceHanSCandMplusfalse
+% 如果已经安装了思源、M+ 字体,请启用 \SourceHanSCandMplustrue
+%\SourceHanSCandMplustrue
+\frenchspacing
+\ctexset{
+ section={
+ name={第,节},
+ aftername=\hskip\ccwd\relax,
+ format=\Large\bfseries
+ },
+ subsection/aftername=\hskip\ccwd\relax,
+ subsubsection/aftername=\hskip\ccwd\relax
+}
+\renewcommand\sectionmark[1]{%
+ \markright{%
+ \normalfont\sffamily
+ \CTEXifname{\CTEXthesection\hskip\ccwd\relax}{}#1%
+ }%
+}
+\usepackage{mathtools}
+\usepackage[math-style=ISO]{unicode-math}
+\ifSourceHanSCandMplus
+ \setmainfont{texgyrepagella}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ Scale=1.05924855491329480,
+ SmallCapsFeatures={LetterSpace=5}
+ ]
+ \setsansfont{texgyreheros}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ Scale=1.00685871056241427
+ ]
+ \setmonofont{mplus-1m-regular.ttf}[
+ BoldFont=mplus-1m-bold.ttf
+ ]
+ \setmathfont{texgyrepagella-math.otf}[
+ Scale=1.05924855491329480
+ ]
+ \setCJKmainfont{SourceHanSerifSC-Medium.otf}[
+ ItalicFont=SourceHanSerifSC-Heavy.otf,
+ BoldFont=SourceHanSerifSC-Bold.otf,
+ Language=Chinese Simplified
+ ]
+ \setCJKsansfont{SourceHanSansSC-Regular.otf}[
+ BoldFont=SourceHanSansSC-Bold.otf,
+ Language=Chinese Simplified
+ ]
+ \setCJKmonofont{SourceHanSansSC-Regular.otf}[
+ BoldFont=SourceHanSansSC-Bold.otf,
+ Language=Chinese Simplified
+ ]
+ \makeatletter
+ \def\setCJKecglue@nnn#1#2#3{%
+ \xeCJKsetup
+ { xCJKecglue = {\hskip #1em plus #2em minus #3em\relax} }%
+ }
+ \newcommand*\setCJKecglue{%
+ \ifnum\strcmp{\f@family}{\rmdefault}=0 %
+ \setCJKecglue@nnn{0.22203274215552524}
+ {0.11101637107776262}
+ {0.07401091405184175}%
+ \else
+ \ifnum\strcmp{\f@family}{\sfdefault}=0 %
+ \setCJKecglue@nnn{0.21859400544959128}
+ {0.10929700272479564}
+ {0.07286466848319709}%
+ \else
+ \setCJKecglue@nnn{0.25}
+ {0.125}
+ {0.08333333333333333}%
+ \fi
+ \fi
+ }
+ \makeatother
+ \usepackage{everysel}
+ \EverySelectfont{\setCJKecglue}
+\else
+ \setmainfont{texgyrepagella}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ SmallCapsFeatures={LetterSpace=5}
+ ]
+ \setsansfont{texgyreheros}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic
+ ]
+ \setmathfont{texgyrepagella-math.otf}
+\fi
+\usepackage{zhlineskip}
+\SetTextEnvironmentSinglespace{1.05}
+\SetMathEnvironmentSinglespace{1.05}
+\ifSourceHanSCandMplus
+ \SetTextEnvironmentSinglespace{1.112}
+ \SetMathEnvironmentSinglespace{1.112}
+\fi
+\usepackage{caption}
+\DeclareCaptionLabelFormat{zhlabel}{\bothIfFirst{#1}{\nobreak\CJKecglue}#2\CJKecglue}
+\DeclareCaptionLabelSeparator{zhcolon}{\char"FF1A }% Fullwidth Colon
+\captionsetup{format=hang,labelformat=zhlabel,labelsep=zhcolon,font={small,sf}}
+\usepackage{enumitem}
+\setlist{
+ listparindent=\parindent,parsep=\parskip
+}
+\ifSourceHanSCandMplus
+ \setlist[itemize,1]{
+ itemsep=0pt,
+ label=\char"30FB,% Katakana Middle Dot
+ leftmargin=\parindent,labelsep=0pt,labelwidth=0.5\parindent
+ }
+\else
+ \setlist[itemize,1]{
+ itemsep=0pt,
+ label=\char"00B7,% Middle Dot
+ leftmargin=\parindent,labelsep=0pt,labelwidth=0.5\parindent
+ }
+\fi
+\setlist[description,1]{
+ font=\bfseries,
+ leftmargin=\parindent,labelsep=0.5\parindent
+}
+\usepackage{booktabs}
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true,
+ pdfstartview={FitH},
+ unicode=true,
+ pdftitle={zhlineskip},
+ pdfauthor={Ruixi Zhang}
+}
+\usepackage[open,openlevel=-1,numbered]{bookmark}
+\usepackage[text={378bp,609bp},centering]{geometry}
+
+\makeatletter
+\ExplSyntaxOn
+\ifSourceHanSCandMplus
+ \xeCJK_new_class:n { PoZheHao }
+ \__xeCJK_save_CJK_class:n { PoZheHao }
+ \seq_map_inline:Nn \g__xeCJK_class_seq
+ {
+ \str_if_eq:nnF {#1} { PoZheHao }
+ {
+ \xeCJK_copy_inter_class_toks:nnnn { PoZheHao } {#1} { FullRight } {#1}
+ \xeCJK_copy_inter_class_toks:nnnn {#1} { PoZheHao } {#1} { FullRight }
+ }
+ }
+ \xeCJK_declare_char_class:nn { PoZheHao } { "2014 , "2015 }
+\fi
+\ExplSyntaxOff
+% From `doc.dtx'
+\ifx\l@nohyphenation\undefined
+ \newlanguage\l@nohyphenation
+\fi
+\newcommand*\meta{}
+\DeclareRobustCommand\meta[1]{%
+ \ensuremath\langle
+ \ifmmode \expandafter \nfss@text \fi
+ {%
+ \meta@font@select
+ \edef\meta@hyphen@restore
+ {\hyphenchar\the\font\the\hyphenchar\font}%
+ \hyphenchar\font\m@ne
+ \language\l@nohyphenation
+ #1\/%
+ \meta@hyphen@restore
+ }\ensuremath\rangle
+}
+\def\meta@font@select{\itshape}
+% From `ltxdoc.dtx'
+\newcommand*\cmd[1]{\cs{\expandafter\cmd@to@cs\string#1}}
+\def\cmd@to@cs#1#2{\char\number`#2\relax}
+\newcommand*\cs{}
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\newcommand\marg[1]{%
+ {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\newcommand\oarg[1]{%
+ {\ttfamily[}\meta{#1}{\ttfamily]}}
+\newcommand\parg[1]{%
+ {\ttfamily(}\meta{#1}{\ttfamily)}}
+% My commands
+\newcommand\cls[1]{{\ttfamily#1}}
+\newcommand\pkg[1]{{\ttfamily#1}}
+\newcommand\opt[1]{{\ttfamily#1}}
+\newcommand\env[1]{{\ttfamily#1}}
+\newcommand*\packagedependency[1]{%
+ \mbox{\pkg{#1}\CJKecglue 宏包:}\ignorespaces
+}
+\newcommand*\keyvalueitem[3][2.5]{%
+ \item[\opt{#2}\hskip0.5\ccwd\relax\rlap{\meta{#3}}\hskip#1\ccwd\relax]%
+ \hskip\z@ \@plus 0.25\ccwd \@minus 0.25\ccwd
+ \ignorespaces
+}
+\newcommand*\usercmditem[3][3]{%
+ \item[\cmd{#2}\rlap{\marg{#3}}\hskip#1\ccwd\relax]%
+ \hskip\z@ \@plus 0.25\ccwd \@minus 0.25\ccwd
+ \ignorespaces
+}
+\newcommand*\defaultleadingratio[3]{%
+ \opt{#1} & $#2$ & $#3$%
+}
+\newcommand*\fontandsinglespaceratio[2]{%
+ #1 & $#2$%
+}
+\newenvironment{originalpmatrix}{\left(\env@matrix}{\endmatrix\right)}
+\newenvironment{originalcases}{\env@cases}{\endarray\right.}
+\newcounter{example}
+\newcommand*\example{%
+ \refstepcounter{example}%
+ 例\nobreak\CJKecglue\theexample\CJKecglue\char"FF1A %
+}
+\newenvironment{english}
+ {\addvspace\medskipamount}
+ {\par\addvspace\medskipamount}
+\newcommand*\myemail{ruixizhang42@gmail.com}
+\makeatother
+
+\title{\vspace*{-26bp}\pkg{zhlineskip} 宏包}
+\author{张瑞熹\thanks{\href{mailto:\myemail}{\nolinkurl{\myemail}}。}}
+\date{2019/05/15\hskip\ccwd\relax v1.0e}
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\section{简介}
+
+\pkg{zhlineskip} 宏包允许用户指定正文行距相比于正文字号的倍数(通常建议设置在
+$1.5$ 至 $1.67$ 之间),以及脚注行距相比于脚注字号的倍数。另一方面,由于数学公式
+主要是由西文字符构成的,\pkg{zhlineskip} 还能将数学公式的行距“恢复”成西文
+较为紧凑的行距(通常为西文字号的 $1.2$\nobreak\CJKecglue 倍),使得全文的视觉
+密度较为均匀。最后,本宏包还支持按照 Microsoft Word 进行“多倍行距”排版。
+
+\subsection{宏包依赖}
+
+本宏包是针对中日韩文的横排文档设计出来的,它依赖于下面这些宏包:
+\begin{itemize}
+\item \packagedependency{kvoptions}
+为用户提供载入本宏包的键值选项。
+\item \packagedependency{xintexpr~}
+实现精确的浮点运算,属于\CJKecglue\pkg{xint} 宏集的一个部分。
+\item \packagedependency{etoolbox~}
+处理脚注行距与数学行距时需要打补丁。
+\item \packagedependency{mathtools}
+只有在恢复数学行距为西文行距时,才会载入这个宏包。
+\end{itemize}
+请确保你的 \TeX\ 发行版里已经安装好了以上这些宏包的最新版本。
+
+\subsection{中西有别}
+
+在西文排版里,相邻两行\emph{基线}(baseline)之间的距离称为\emph{行距}(leading,
+发音为 led-ding)。这个词的词根是 lead,即\emph{铅}。早在铅字时代,每当工匠填满
+一行铅字之后要开始填下一行,都会在两行之间插入铅条,从而适当地扩大行距。因为西文的
+每个字母四周与其\emph{字框}(em-box,见图\nobreak\CJKecglue\ref{fig:eng-font-size})之间有
+较大的空隙,所以不需要插入很高的铅条。一般来说,西文的行距为\emph{字号}(font
+size)的 $1.2$ 至 $1.45$\nobreak\CJKecglue 倍\footnote{参见
+\url{https://practicaltypography.com/line-spacing.html}。}。
+
+\begin{figure}[h]
+\centering
+\includegraphics{Latinmetrics}
+\caption[西文字体]{西文字体。绿色方框即为 em-box,它在纸上的实际边长就是西文字号。}
+\label{fig:eng-font-size}
+\end{figure}
+
+中文排版虽然没有基线的概念,但有非常相似的概念:\emph{底线}(ideographic baseline,
+见图\nobreak\CJKecglue\ref{fig:chi-font-size})。中文里相邻两行底线之间的距离,与西文里行距的
+概念是一致的。另一概念是上一行底线和下一行\emph{顶线}之间的距离,即\emph{行间距}(line
+gap),这与西文里插入铅条的高度是一致的。由于汉字四周与其字框间的空隙较小,所以需要
+使用比西文更大的行间距。根据场合不同,行间距从字号的 $1/4$ 至 $1$\nobreak\CJKecglue 倍不等:以中文
+书刊为例,行间距一般为字号的 $1/2$ 至 $2/3$\nobreak\CJKecglue 倍\footnote{参见张胜涛、王忆波著
+《方正飞腾4.0实用培训教程》,第\nobreak\CJKecglue6.1.1\nobreak\CJKecglue 节。},即行距约为字号的
+$1.5$ 至 $1.67$\nobreak\CJKecglue 倍。
+
+\begin{figure}[h]
+\centering
+\includegraphics{CJKmetrics}
+\caption[中文字体]{中文字体。汉字字面几乎占满整个字框,字框的边长即为中文字号。}
+\label{fig:chi-font-size}
+\end{figure}
+
+在一般情况下,\CTeX\ 会默认用\CJKecglue\opt{linespread=1.3} 这个文档类
+选项将中文的行距设置为字号的 $1.56$\nobreak\CJKecglue 倍(基础行距是字号的
+$1.2$\nobreak\CJKecglue 倍,而 $1.2 \times 1.3
+= 1.56$)。通过这种方法扩大全文的行距,自然会影响到文章里数学公式的行距。而数学
+公式主要是由西文字符构成的,把它们按照中文的行距进行排版,就会显得有些松散。
+图\nobreak\CJKecglue\ref{fig:math-leading}\CJKecglue 左边是 \CTeX\ 默认
+排版效果,文本、数学看似一紧、一松;右边是配合用\CJKecglue\pkg{zhlineskip} 的效果,
+视觉密度比较均匀。\pkg{zhlineskip} 宏包还允许用户调整数学行距的大小。
+
+\begin{figure}[h]
+\sbox0{%
+\begin{minipage}[t]{162pt}
+\fontsize{9}{10.8}\linespread{1.3}\selectfont
+\rule{0pt}{\ht\strutbox}\hskip2\ccwd\relax
+设 $\symbf{I}_2=\begin{psmallmatrix} 1&0\\0&1 \end{psmallmatrix}$.
+又设 $\symbf{A}=(a_{ij})_{m \times n}$ 为一个 $m$\nobreak\CJKecglue 行
+$n$\nobreak\CJKecglue 列的实值矩阵, 即
+\[
+\symbf{A} = \begin{originalpmatrix}
+a_{11} & a_{12} & \dotsc & a_{1n} \\
+a_{21} & a_{22} & \dotsc & a_{2n} \\
+\vdots & \vdots & & \vdots \\
+a_{m1} & a_{m2} & \dotsc & a_{mn}
+\end{originalpmatrix},
+\]
+其中 $a_{ij} \in \mathbb{R}$, $i=1,\dotsc,m$, $j=1,\dotsc,n$.
+又因为
+\[
+\sum_{\substack{i=1\\i\neq j}}^m a_{ij} = \begin{originalcases}
+0, & j=1,\\
+1, & j>1,
+\end{originalcases}
+\]
+我们得到……\rule[-\dp\strutbox]{0pt}{\dp\strutbox}
+\end{minipage}%
+}%
+\centering
+\rule[\dimexpr-\dp0-0.5em\relax]{0.4pt}{\dimexpr\dp0+\ht0+1em\relax}\quad
+\copy0\quad
+\rule[\dimexpr-\dp0-0.5em\relax]{0.4pt}{\dimexpr\dp0+\ht0+1em\relax}\quad
+\begin{minipage}[t]{162pt}
+\fontsize{9}{10.8}\linespread{1.25}\selectfont
+\hskip2\ccwd\relax
+设 $\symbf{I}_2=\begin{psmallmatrix} 1&0\\0&1 \end{psmallmatrix}$.
+又设 $\symbf{A}=(a_{ij})_{m \times n}$ 为一个 $m$\nobreak\CJKecglue 行
+$n$\nobreak\CJKecglue 列的实值矩阵, 即
+\[
+\symbf{A} = \begin{pmatrix}
+a_{11} & a_{12} & \dotsc & a_{1n} \\
+a_{21} & a_{22} & \dotsc & a_{2n} \\
+\vdots & \vdots & & \vdots \\
+a_{m1} & a_{m2} & \dotsc & a_{mn}
+\end{pmatrix},
+\]
+其中 $a_{ij} \in \mathbb{R}$, $i=1,\dotsc,m$, $j=1,\dotsc,n$.
+又因为
+\[
+\sum_{\substack{i=1\\i\neq j}}^m a_{ij} = \begin{cases}
+0, & j=1,\\
+1, & j>1,
+\end{cases}
+\]
+我们得到……
+\end{minipage}\quad
+\rule[\dimexpr-\dp0-0.5em\relax]{0.4pt}{\dimexpr\dp0+\ht0+1em\relax}%
+\llap{\rule[\dimexpr-\dp0-0.5em\relax]{\dimexpr2\wd0+4em+1.2pt\relax}{0.4pt}}%
+\llap{\rule[\dimexpr\ht0+0.5em-0.4pt\relax]{\dimexpr2\wd0+4em+1.2pt\relax}{0.4pt}}
+\caption[数学行距对比]{数学行距对比。在左图中,大矩阵\CJKecglue\env{pmatrix} 与
+ 分类\CJKecglue\env{cases} 两个环境受到影响,行距都被扩大了;但第一行文本里的小矩阵与末尾
+ 公式里求和号的下角标却没有受到影响,行距仍然较为紧凑。在右图中,数学公式的行距
+ 都是西文的行距,密度比较均匀,行间公式里的大括弧、大括号也不会特别突兀。}
+\label{fig:math-leading}
+\end{figure}
+
+综上所述,在进行中西文混排时,最好能够区分中文与西文的行距。在使用\CJKecglue\pkg{zhlineskip}
+时,就可以分开处理中文文本与数学公式的行距。用户甚至还能分别指定正文行距与脚注
+行距,实现灵活的排版。同时,\pkg{zhlineskip} 宏包能恢复各种“多行”数学环境
+(包括矩阵、分类、多行公式推导等等)的行距,使数学公式的行距符合西文行距的规范。
+
+最后,\pkg{zhlineskip} 宏包还支持用户在一定范围内按 Microsoft Word 的
+“多倍行距”进行排版\footnote{本宏包默认假定“被要求”用的字体是中易系列字体,
+这包括 Microsoft Word 里的“宋体”、“黑体”、“楷体”与“仿宋”。若改用其他字体,
+可能需要调整\CJKecglue\opt{MSWordSinglespaceRatio} 的值。
+参见第\nobreak\CJKecglue\ref{sec:key-value}\nobreak\CJKecglue 节
+与第\nobreak\CJKecglue\ref{sec:MS-Word}\nobreak\CJKecglue 节。}。
+用户可以指定“多倍行距”的“倍数”,但是这只保证用 \TeX\ 排出来的文本行距与用
+Microsoft Word 排的行距相同。硬要用 \TeX\ 模仿 Microsoft Word 是没有
+太大意义的。
+
+\section{功能介绍}
+
+首先,请避免使用“多倍行距”这个概念:Microsoft Word 中“单倍行距”的值严重依赖于
+字体(参见第\nobreak\CJKecglue\ref{sec:MS-Word}\nobreak\CJKecglue 节)。
+在严格排版的时候,一般都会给定具体的字号
+与行距,例如字号 $12$\nobreak\CJKecglue 磅、行距 $22$\nobreak\CJKecglue 磅。
+对于一般的用户,指定目标行距相比字号的倍\nobreak 数
+即可——\pkg{zhlineskip} 宏包可以自动提取基础行距(即 \TeX\ 中的单倍行距)
+相比字号的倍数(详见表\nobreak\CJKecglue\ref{tab:default-leading-ratio}),再通过用户指定的
+倍数来计算所需的行伸展因子。因此,不论是中日韩文还是西文的横排文档,都是可以使用
+本宏包的。本宏包的缺省设置更适合中日韩文文档。
+\begin{table}[h]
+\centering
+\caption[基础行距倍数]{\cls{ctexart} 与\CJKecglue\cls{article} 各个文档类选项
+ 设置的基础行距倍数。}
+\label{tab:default-leading-ratio}
+\begin{tabular}{l l l}
+\toprule
+文档类选项 & 正文基础行距 & 脚注基础行距 \\
+\midrule
+\defaultleadingratio{zihao=5}{1.2}{1.2} \\
+\defaultleadingratio{zihao=-4}{1.2}{1.2} \\
+\defaultleadingratio{10pt}{12/10}{9.5/8} \\
+\defaultleadingratio{11pt}{13.6/10.95}{11/9} \\
+\defaultleadingratio{12pt}{14.5/12}{12/10} \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+\subsection{载入宏包时的键值选项}
+\label{sec:key-value}
+
+载入\CJKecglue\pkg{zhlineskip} 宏包时可以设定六个基本的键值选项,它们分别是:
+\begin{description}
+\keyvalueitem{bodytextleadingratio}{real}
+指定正文目标行距相比于正文字号的倍数。以书刊为例,建议设置在\nobreak\CJKecglue$1.5$
+至\nobreak\CJKecglue$1.67$ 之间。缺省值是\nobreak\CJKecglue\opt{1.5},
+即 $1/2$\nobreak\CJKecglue 的行间距。
+\keyvalueitem{footnoteleadingratio}{real}
+指定脚注目标行距相比于脚注字号的倍数,它可以比正文的倍数稍小一些,建议设置在正文
+倍数的 $98\%$ 至 $100\%$ 之间。缺省值是\nobreak\CJKecglue\opt{1.48},
+即为正文倍数的\nobreak\CJKecglue$98.67\%$ 左右。
+\keyvalueitem{restoremathleading}{bool}
+指定是否要将数学公式的行距恢复成西文基础行距。缺省值是\nobreak\CJKecglue\opt{true},
+即恢复数学行距。该选项为真时,会自动载入\CJKecglue\pkg{mathtools} 宏包,
+此时还能利用\CJKecglue\cmd{\SetMathEnvironmentSinglespace}\marg{real}
+命令\emph{微调}数学公式的基础行距。
+\keyvalueitem{UseMSWordMultipleLineSpacing}{bool}
+在排版论文时,如果被要求按照 Microsoft Word 来设置“多倍行距”,那么用户可以
+将该选项设置为\nobreak\CJKecglue\opt{true},并通过
+设置\CJKecglue\opt{MSWordLineSpacingMultiple}
+指定“倍数”,这会忽略用户之前指定的正文行距与脚注行距倍数,但是与数学行距的设置
+独立。该选项的缺省值是\nobreak\CJKecglue\opt{false}。
+\keyvalueitem{MSWordLineSpacingMultiple}{real}
+设置 Microsoft Word“多倍行距”的“倍数”,
+仅在\CJKecglue\opt{UseMSWordMultipleLineSpacing} 为真时生效。
+缺省值是\nobreak\CJKecglue\opt{1.15},
+在不修改\CJKecglue\opt{MSWordSinglespaceRatio} 时,
+相当于设置了目标行距为字号的 $1.49140625$\nobreak\CJKecglue 倍,适用于中易字体
+(参见第\nobreak\CJKecglue\ref{sec:MS-Word}\nobreak\CJKecglue 节)。
+\keyvalueitem{MSWordSinglespaceRatio}{real}
+设置 Microsoft Word 的“单倍行距”相比字号的倍数,
+仅在\CJKecglue\opt{UseMSWordMultipleLineSpacing} 为真时生效。
+缺省值是\nobreak\CJKecglue\opt{1.296875},适用于中易字体
+(参见第\nobreak\CJKecglue\ref{sec:MS-Word}\nobreak\CJKecglue 节)。
+若改用其他字体,则需调整该选项的值。
+\end{description}
+
+\subsection{载入宏包后的用户命令}
+
+\subsubsection{调整数学公式的行距}
+
+当键值选项\CJKecglue\opt{restoremathleading}
+为\nobreak\CJKecglue\opt{true} 时,数学公式的行距被
+恢复成字号的 $1.2$\nobreak\CJKecglue 倍。对于某些字面较大的数学字体
+(例如类似 Palatino 的字体),
+这个基础行距会显得过小。此时,用户可以通过如下命令微调数学行距:
+\begin{description}
+\usercmditem{\SetMathEnvironmentSinglespace}{real}
+如果数学字体来自\CJKecglue\pkg{newpxmath} 或是 TeX Gyre Pagella Math,
+那么数学行距在字号 $1.2$\nobreak\CJKecglue 倍的基础上再扩大
+$1.05$\nobreak\CJKecglue 倍更加合适。此时,只需指定
+\verb|\SetMathEnvironmentSinglespace{1.05}|\CJKecglue 即可。
+\end{description}
+本宏包恢复的多行数学环境包括:
+\begin{description}
+\raggedright
+\item[\LaTeX\ 环境]
+\env{array};
+\item[\pkg{amsmath} 宏包各环境]
+\env{matrix},
+\env{pmatrix},
+\env{bmatrix},
+\env{Bmatrix},
+\env{vmatrix},
+\env{Vmatrix},
+\env{cases},
+\env{aligned},
+\env{alignedat},
+\env{gathered},
+\env{gather},
+\env{gather*},
+\env{align},
+\env{align*},
+\env{flalign},
+\env{flalign*},
+\env{alignat},
+\env{alignat*},
+\env{xalignat},
+\env{xalignat*},
+\env{xxalignat},
+\env{multline},
+\env{multline*},
+\env{split};
+\item[\pkg{mathtools} 宏包各环境]
+\env{matrix*},
+\env{pmatrix*},
+\env{bmatrix*},
+\env{Bmatrix*},
+\env{vmatrix*},
+\env{Vmatrix*},
+\env{cases*},
+\env{dcases},
+\env{dcases*},
+\env{rcases},
+\env{rcases*},
+\env{drcases},
+\env{drcases*},
+\env{multlined},
+\env{lgathered},
+\env{rgathered}。
+\end{description}
+超出上述列表范围、用户自定义的\emph{数学}环境,可用如下命令恢复其行距:
+\begin{description}
+\usercmditem[6]{\RestoreMathEnvironmentLeading}{env name}
+例如本宏包恢复 \LaTeX\ 数学环境\CJKecglue\env{array} 的行距,是通过
+\verb|\RestoreMathEnvironmentLeading{array}|\CJKecglue 实现的。
+\meta{env name}\CJKecglue 可以是由若干环境名构成的逗号列表。
+\end{description}
+
+\emph{注意,在\CJKecglue\opt{restoremathleading}
+为\nobreak\CJKecglue\opt{false} 时,
+\cmd{\SetMathEnvironmentSinglespace}
+与\CJKecglue\cmd{\RestoreMathEnvironmentLeading} 无效。}
+
+\subsubsection{调整西文文本的行距}
+
+与数学行距命令对应,本宏包还提供两个调整\emph{西文文本}行距的命令,用法类似。
+\begin{description}
+\usercmditem{\SetTextEnvironmentSinglespace}{real}
+如果西文字体来自\CJKecglue\pkg{newpxtext} 或是 TeX Gyre Pagella,
+那么可以指定
+\verb|\SetTextEnvironmentSinglespace{1.05}|。
+\usercmditem[6]{\RestoreTextEnvironmentLeading}{env name}
+使用范例:假设文中的表格仅含西文、数字,此时如果想要文本环境\CJKecglue\env{tabular} 的
+行距与西文行距一致,可通过
+\verb|\RestoreTextEnvironmentLeading{tabular}|\CJKecglue 实现。
+亦可参见例\nobreak\CJKecglue\ref{example:english-block}。
+\meta{env name}\CJKecglue 可以是由若干环境名构成的逗号列表。
+\end{description}
+
+如果作者没有顾及到某些\emph{基本环境}(数学或文本),鼓励用户向\CJKecglue\pkg{zhlineskip} 的
+\href{https://github.com/CTeX-org/ctex-kit/issues}{GitHub 维护页}\CJKecglue
+提供相关信息。
+
+\subsection{使用范例}
+
+下面以 \CTeX\ 提供的\CJKecglue\cls{ctexart} 文档类为例,
+展示\CJKecglue\pkg{zhlineskip} 的使用方法。
+
+\subsubsection*{\example 直接载入}
+
+\begin{verbatim}
+ \documentclass{ctexart}
+ \usepackage{zhlineskip}
+ \begin{document}
+ 正文测试。
+ \end{document}
+\end{verbatim}
+
+\subsubsection*{\example 设置正文行距为字号的 1.6\nobreak\CJKecglue 倍}
+
+\begin{verbatim}
+ % 导言区
+ \usepackage[
+ bodytextleadingratio=1.6, % 设置正文行距倍数为 1.6
+ footnoteleadingratio=1.57 % 设置脚注行距倍数为 1.57
+ ]{zhlineskip} % 缺省数学行距倍数为 1.2
+\end{verbatim}
+
+\subsubsection*{\example 按照 Microsoft Word 设置“1.62\nobreak\CJKecglue 倍行距”}
+
+\begin{verbatim}
+ % 导言区
+ \usepackage[
+ restoremathleading=false, % 可选
+ UseMSWordMultipleLineSpacing, % 需设置为真
+ MSWordLineSpacingMultiple=1.62
+ ]{zhlineskip}
+\end{verbatim}
+
+\subsubsection*{\example\label{example:english-block}中文正文里需要插入成段的西文}
+
+如果需要插入成段的西文,最好的方法是先定义一个西文专用的环境。比如说可以在导言区
+定义如下这个环境:
+\begin{verbatim}
+ \newenvironment{english} % 新建“英文”段落环境
+ {\addvspace\medskipamount} % 段前间距,上文段落需结束
+ {\par\addvspace\medskipamount} % 段后间距
+\end{verbatim}
+注意要先用空行结束上文段落。这时,可以通过\CJKecglue\pkg{zhlineskip} 声明
+\begin{verbatim}
+ \RestoreTextEnvironmentLeading{english} % 恢复“英文”使用紧凑行距
+\end{verbatim}
+将“英文”段落的行距恢复成西文较为紧凑的行距。
+这样一来,正文(也许是中英交替的译文)就会有比较均匀的视觉密度,
+而不至于“中文很挤、英文很散”。
+
+\begin{center}
+\rule[\dimexpr-200.34pt-0.25em\relax]{0.4pt}{\dimexpr206.5pt+0.5em\relax}\quad
+\begin{minipage}[t]{161pt}
+\fontsize{7}{8.4}\linespread{1.25}\selectfont
+\begin{verbatim}
+\RestoreTextEnvironmentLeading{english}
+人人生而自由,在尊严和权利上一律平等。他们赋有
+理性和良心,并应以兄弟关系的精神相对待。
+
+\begin{english}
+All human beings are born free and equal in
+dignity and rights. They are endowed with
+reason and conscience and should act towards
+one another in a spirit of brotherhood.
+\end{english}
+
+人人有资格享有本宣言所载的一切权利和自由,不分
+种族、肤色、性别、语言……
+
+\begin{english}
+Everyone is entitled to all the rights and
+freedoms set forth in this Declaration,
+without distinction of any kind, such as
+race, colour, sex, language\dots
+\end{english}
+\end{verbatim}
+\end{minipage}\quad
+\rule[\dimexpr-200.34pt-0.25em\relax]{0.4pt}{\dimexpr206.5pt+0.5em\relax}\quad
+\begin{minipage}[t]{161pt}
+\fontsize{7}{8.4}\linespread{1.25}\selectfont
+\parindent2\ccwd\relax
+\RestoreTextEnvironmentLeading{english}
+人人生而自由,在尊严和权利上一律平等。他们赋有
+理性和良心,并应以兄弟关系的精神相对待。
+
+\begin{english}
+All human beings are born free and equal in
+dignity and rights. They are endowed with
+reason and conscience and should act towards
+one another in a spirit of brotherhood.
+\end{english}
+
+人人有资格享有本宣言所载的一切权利和自由\nobreak\makebox[\ccwd]{,}\allowbreak
+不分种族、肤色、性别、语言……
+
+\begin{english}
+Everyone is entitled to all the rights and
+freedoms set forth in this Declaration,
+without distinction of any kind, such as
+race, colour, sex, language\dots
+\end{english}
+\end{minipage}\quad
+\rule[\dimexpr-200.34pt-0.25em\relax]{0.4pt}{\dimexpr206.5pt+0.5em\relax}
+\end{center}
+
+\subsection{Microsoft Word 中的“单倍行距”}
+\label{sec:MS-Word}
+
+Microsoft Word 中“单倍行距”的设置,其行距值相比字号的倍数严重依赖于字体,
+甚至还可能因为操作系统的不同而迥然不同。
+表\nobreak\CJKecglue\ref{tab:word-line-height}\CJKecglue 列出
+几种常见字体对应的单倍行距倍数。正是因为“单倍行距”本身随字体、操作系统而变化,
+所以请尽量避免使用“多倍行距”的概念!
+\begin{table}[h]
+\centering
+\caption[单倍行距倍数]{在 Microsoft Word 中设置“单倍行距”后,实际的行距
+ 依赖于字体。}
+\label{tab:word-line-height}
+\begin{tabular}{l l}
+\toprule
+字体名称 & “单倍行距”除以字号的倍数 \\
+\midrule
+\fontandsinglespaceratio{Arial}{2355/2048=1.14990234375} \\
+\fontandsinglespaceratio{Times New Roman}{2355/2048=1.14990234375} \\
+\fontandsinglespaceratio{中易系列字体}{\phantom0332/256\phantom0=1.296875} \\
+\fontandsinglespaceratio{华文中宋(Windows)}{1479/1000=1.479} \\
+\fontandsinglespaceratio{微软雅黑 Light(Windows)}{3400/2048=1.66015625} \\
+\fontandsinglespaceratio{微软雅黑 Regular/Bold}{3513/2048=1.71533203125} \\
+\fontandsinglespaceratio{华文中宋(macOS)}{1723/1000=1.723} \\
+\fontandsinglespaceratio{微软雅黑 Light(macOS)}{3542/2048=1.7294921875} \\
+\fontandsinglespaceratio{苹方(macOS)}{1820/1000=1.82} \\
+\fontandsinglespaceratio{思源宋体\nobreak\CJKecglue1.001}{1869/1000=1.869} \\
+\fontandsinglespaceratio{思源黑体\nobreak\CJKecglue2.000}{1882/1000=1.882} \\
+\fontandsinglespaceratio{思源黑体\nobreak\CJKecglue1.004}{1924/1000=1.924} \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+\begin{thebibliography}{9}
+\bibitem{butterick2018linespacing}
+\textsc{Butterick, Matthew}.
+\newblock \textit{Butterick's Practical Typography\textup:
+ Line spacing}.
+\newblock \url{https://practicaltypography.com/line-spacing.html},
+ 访问日期: 2018/10/28.
+
+\bibitem{knuth1986tex}
+\textsc{Knuth, Donald Ervin}.
+\newblock \textit{The \TeX book}.
+\newblock Addison--Wesley, 1986.
+
+\bibitem{lunde2008cjkv}
+\textsc{Lunde, Ken}.
+\newblock \textit{CJKV Information Processing\textup:
+ Chinese\textup, Japanese\textup, Korean \textup\&
+ Vietnamese Computing} (2~ed.).
+\newblock O'Reilly Media, Inc., 2008.
+
+\bibitem{zhang2005fang}
+\textsc{张胜涛 \& 王忆波}.
+\newblock \textbf{方正飞腾4.0实用培训教程}.
+\newblock 清华大学出版社, 2005.
+\end{thebibliography}
+
+\end{document}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zhlineskip.doc.tlpobj new/tlpkg/tlpobj/zhlineskip.doc.tlpobj
--- old/tlpkg/tlpobj/zhlineskip.doc.tlpobj 2019-02-28 04:19:14.000000000 +0100
+++ new/tlpkg/tlpobj/zhlineskip.doc.tlpobj 2019-05-17 01:38:33.000000000 +0200
@@ -1,12 +1,12 @@
name zhlineskip.doc
category Package
-revision 49296
+revision 51142
shortdesc doc files of zhlineskip
relocated 1
-docfiles size=65
+docfiles size=80
RELOC/doc/latex/zhlineskip/CJKmetrics.pdf
RELOC/doc/latex/zhlineskip/Latinmetrics.pdf
RELOC/doc/latex/zhlineskip/README.md
- RELOC/doc/latex/zhlineskip/zhlineskip-man.pdf
- RELOC/doc/latex/zhlineskip/zhlineskip-man.tex
RELOC/doc/latex/zhlineskip/zhlineskip-test.tex
+ RELOC/doc/latex/zhlineskip/zhlineskip.pdf
+ RELOC/doc/latex/zhlineskip/zhlineskip.tex
++++++ zhlineskip.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zhlineskip/zhlineskip.sty new/tex/latex/zhlineskip/zhlineskip.sty
--- old/tex/latex/zhlineskip/zhlineskip.sty 2018-12-01 23:47:43.000000000 +0100
+++ new/tex/latex/zhlineskip/zhlineskip.sty 2019-05-16 23:03:18.000000000 +0200
@@ -1,5 +1,5 @@
%
-% Copyright (C) 2018 by Ruixi Zhang
+% Copyright (C) 2018, 2019 by Ruixi Zhang
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -14,16 +14,16 @@
% The Current Maintainer of this work is Ruixi Zhang.
%
% This work consists of the files zhlineskip.sty,
-% zhlineskip-man.tex,
+% zhlineskip.tex,
% zhlineskip-test.tex,
% Latinmetrics.pdf,
% CJKmetrics.pdf,
% README.md
-% and the derived file zhlineskip-man.pdf.
+% and the derived file zhlineskip.pdf.
%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{zhlineskip}[%
- 2018/11/30 v1.0d Line spacing for CJK documents]
+ 2019/05/15 v1.0e Line spacing for CJK documents]
\RequirePackage{kvoptions}
\RequirePackage{xintexpr}
@@ -100,7 +100,9 @@
\ZhLS@targetfootleading/\ZhLS@defaultfootleading\relax\relax
}
-\linespread{\ZhLS@bodylinespread}\selectfont
+\AtBeginDocument{%
+ \linespread{\ZhLS@bodylinespread}\selectfont
+}
\patchcmd\@footnotetext
{\reset@font}
@@ -123,8 +125,8 @@
\def\ZhLS@textlinespread{#1}%
}
\SetTextEnvironmentSinglespace{1}
-\newcommand*\RestoreTextEnvironmentLeading{%
- \ZhLS@restoretextenvironmentleading
+\newcommand*\RestoreTextEnvironmentLeading[1]{%
+ \forcsvlist\ZhLS@restoretextenvironmentleading{#1}%
}
\def\ZhLS@restoretextenvironmentleading#1{%
\AtBeginEnvironment{#1}{%
@@ -138,8 +140,8 @@
\def\ZhLS@mathlinespread{#1}%
}
\SetMathEnvironmentSinglespace{1}
- \newcommand*\RestoreMathEnvironmentLeading{%
- \ZhLS@restoremathenvironmentleading
+ \newcommand*\RestoreMathEnvironmentLeading[1]{%
+ \forcsvlist\ZhLS@restoremathenvironmentleading{#1}%
}
\def\ZhLS@restoremathenvironmentleading#1{%
\AtBeginEnvironment{#1}{%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zhlineskip.tlpobj new/tlpkg/tlpobj/zhlineskip.tlpobj
--- old/tlpkg/tlpobj/zhlineskip.tlpobj 2019-02-28 04:19:14.000000000 +0100
+++ new/tlpkg/tlpobj/zhlineskip.tlpobj 2019-05-17 01:38:33.000000000 +0200
@@ -1,6 +1,6 @@
name zhlineskip
category Package
-revision 49296
+revision 51142
shortdesc Line spacing for CJK documents
relocated 1
longdesc This package supports typesetting CJK documents. It allows
@@ -18,7 +18,7 @@
catalogue-contact-repository https://github.com/CTeX-org/ctex-kit
catalogue-contact-support https://github.com/CTeX-org/ctex-kit/issues
catalogue-ctan /language/chinese/zhlineskip
-catalogue-date 2018-12-01 06:25:43 +0100
+catalogue-date 2019-05-16 09:07:56 +0200
catalogue-license lppl1.3c
catalogue-topics chinese
-catalogue-version 1.0d
+catalogue-version 1.0e
++++++ zhlipsum.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zhlipsum/README.md new/doc/latex/zhlipsum/README.md
--- old/doc/latex/zhlipsum/README.md 2018-04-08 22:06:41.000000000 +0200
+++ new/doc/latex/zhlipsum/README.md 2020-04-12 00:25:18.000000000 +0200
@@ -36,8 +36,8 @@
Contributing
------------
-[Issues](https://github.com/Stone-Zeng/zhlipsum/issues) and
-[pull requests](https://github.com/Stone-Zeng/zhlipsum/pulls)
+[Issues](https://github.com/stone-zeng/zhlipsum/issues) and
+[pull requests](https://github.com/stone-zeng/zhlipsum/pulls)
are always welcome.
License
@@ -50,4 +50,4 @@
-----
-Copyright (C) 2017, 2018 by Xiangdong Zeng .
+Copyright (C) 2017–2020 by Xiangdong Zeng .
Binary files old/doc/latex/zhlipsum/zhlipsum-en.pdf and new/doc/latex/zhlipsum/zhlipsum-en.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zhlipsum/zhlipsum-en.tex new/doc/latex/zhlipsum/zhlipsum-en.tex
--- old/doc/latex/zhlipsum/zhlipsum-en.tex 2018-09-08 23:45:24.000000000 +0200
+++ new/doc/latex/zhlipsum/zhlipsum-en.tex 2020-04-12 00:25:18.000000000 +0200
@@ -6,7 +6,7 @@
%%
%% zhlipsum.dtx
%%
-%% Copyright (C) 2017, 2018 by Xiangdong Zeng
+%% Copyright (C) 2017--2020 by Xiangdong Zeng
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -37,7 +37,8 @@
\PassOptionsToPackage{scheme=plain, linespread=1.1}{ctex}
\documentclass{ctxdoc}
\usepackage{multirow}
-\setCJKmonofont{FangSong}[ItalicFont=KaiTi]
+\setCJKmainfont{Source Han Serif SC}[ItalicFont=Kaiti SC]
+\setCJKmonofont{STFangsong}[ItalicFont=Kaiti SC]
\hypersetup{%
pdftitle={zhlipsum: Chinese dummy text},
pdfauthor={Xiangdong Zeng},
@@ -49,17 +50,15 @@
}
\pagestyle{headings}
% Use `!` for comment in `ctexexam`.
-\makeatletter
\catcode`!=\active
\RecustomVerbatimEnvironment{ctexexam}{Verbatim}{%
frame=single, framesep=10pt,
- gobble=2,
- label=\rule{0pt}{12pt}\textnormal{\bfseries Example \arabic{ctexexam}},
+ gobble=2,
+ label=\rule{0pt}{12pt}\textnormal{\bfseries Example \arabic{ctexexam}},
+ defineactive=\def!{\color{gray}\itshape\%},
listparameters=%
\setlength\topsep{\bigskipamount}%
- \refstepcounter{ctexexam}\ctexexamlabelref
- \appto\FV@EndList{\nointerlineskip},
- defineactive=\def!{\color{gray}\itshape\%}}
+ \refstepcounter{ctexexam}\ctexexamlabelref}
\preto\ctexexam{\catcode`!=\active}
\preto\endctexexam{\catcode`!=12}
\catcode`!=12
@@ -78,17 +77,6 @@
}
\group_end:
}
-% From l3doc, to make @@ -> <module> while @@@@ -> @@
-\cs_set_protected:Npn \__ctxdoc_replace_at_at_aux:Nn #1#2
- {
- \tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ }
- \tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ }
- \tl_replace_all:Nnn #1 { @ @ @ @ } { \token_to_str:N a a }
- \tl_replace_all:Nnn #1 { _ _ @ @ } { _ _ #2 }
- \tl_replace_all:Nnn #1 { _ @ @ } { _ _ #2 }
- \tl_replace_all:Nnn #1 { @ @ } { _ _ #2 }
- \tl_replace_all:Nnn #1 { \token_to_str:N a a } { @ @ }
- }
\ExplSyntaxOff
\makeatother
\RenewDocumentEnvironment{arguments}{}%
@@ -97,8 +85,8 @@
{\endenumerate}
\title{\textbf{The \pkg{zhlipsum} Package: Chinese Dummy Text}}
\author{Xiangdong Zeng}
-\date{2018/09/08 \quad v1.1.1%
- \thanks{\url{https://github.com/Stone-Zeng/zhlipsum}.}}
+\date{2020/04/10 \quad v1.2.0%
+ \thanks{\url{https://github.com/stone-zeng/zhlipsum}.}}
\begin{document}
@@ -140,7 +128,7 @@
bundle, the correspoding options are \opt{UTF8} and \opt{GBK},
while the options in \pkg{zhlipsum} are all in \emph{lowercase}.
-\begin{function}[updated=2018-04-08]{\zhlipsum}
+\begin{function}[updated=2020-04-08]{\zhlipsum}
\begin{syntax}
\cs{zhlipsum}\oarg{paragraph}\oarg{options}
\cs{zhlipsum*}\oarg{paragraph}\oarg{options}
@@ -150,7 +138,7 @@
between the arguments.
\end{function}
-By default, the \cs{zhlipsum} command will insert \tn{par} before,
+By default, the \cs{zhlipsum} command will insert \tn{par}
after and between dummy text paragraphs, while \cs{zhlipsum}|*|
will not give any extra processing. To change the default
behavior, you can use the \opt{before}, \opt{after} and
@@ -212,9 +200,9 @@
\begin{function}[added=2018-03-29]{before,after,inter}
\begin{syntax}
- name = \meta{content}
- after = \meta{content}
- inter = \meta{content}
+ before = \meta{content}
+ after = \meta{content}
+ inter = \meta{content}
\end{syntax}
Insert contents before, after or between dummy text paragraphs.
Note that the \tn{par} command inserted when using \cs{zhlipsum}
@@ -311,7 +299,7 @@
! Using `\newzhlipsum{big5}{許蓋功, 蓋功許, 功許蓋}' directly will
! lead to an error.
- ! Use <, >, + to replace {, } and \, and set the original {, } and \
+ ! Use <, >, + to replace {, } and \, then set the original {, } and \
! to be `other' category (i.e. catcode=12).
\begingroup
\catcode`\<=1
Binary files old/doc/latex/zhlipsum/zhlipsum.pdf and new/doc/latex/zhlipsum/zhlipsum.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zhlipsum.doc.tlpobj new/tlpkg/tlpobj/zhlipsum.doc.tlpobj
--- old/tlpkg/tlpobj/zhlipsum.doc.tlpobj 2019-02-28 04:19:14.000000000 +0100
+++ new/tlpkg/tlpobj/zhlipsum.doc.tlpobj 2020-04-16 01:57:30.000000000 +0200
@@ -1,9 +1,9 @@
name zhlipsum.doc
category Package
-revision 48629
+revision 54758
shortdesc doc files of zhlipsum
relocated 1
-docfiles size=87
+docfiles size=105
RELOC/doc/latex/zhlipsum/README.md
RELOC/doc/latex/zhlipsum/zhlipsum-en.pdf
RELOC/doc/latex/zhlipsum/zhlipsum-en.tex
++++++ zhlipsum.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zhlipsum/zhlipsum-big5.def new/tex/latex/zhlipsum/zhlipsum-big5.def
--- old/tex/latex/zhlipsum/zhlipsum-big5.def 2018-09-08 23:45:24.000000000 +0200
+++ new/tex/latex/zhlipsum/zhlipsum-big5.def 2020-04-12 00:25:18.000000000 +0200
@@ -7,7 +7,7 @@
%% zhlipsum.dtx (with options: `text,big5')
%% zhlipsum-text.dtx (with options: `text,big5')
%%
-%% Copyright (C) 2017, 2018 by Xiangdong Zeng
+%% Copyright (C) 2017--2020 by Xiangdong Zeng
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -35,7 +35,7 @@
%% zhlipsum-en.pdf,
%% and README.md.
%%
-\GetIdInfo $Id: zhlipsum.dtx 1.1.1 2018-09-08 12:00:00Z Xiangdong Zeng $
+\GetIdInfo $Id: zhlipsum.dtx 1.2.0 2020-04-10 12:00:00Z Xiangdong Zeng $
{Chinese dummy text with Big5 encoding (for zhlipsum)}
\ProvidesExplFile{\ExplFileName-big5.def}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zhlipsum/zhlipsum-gbk.def new/tex/latex/zhlipsum/zhlipsum-gbk.def
--- old/tex/latex/zhlipsum/zhlipsum-gbk.def 2018-09-08 23:45:24.000000000 +0200
+++ new/tex/latex/zhlipsum/zhlipsum-gbk.def 2020-04-12 00:25:18.000000000 +0200
@@ -7,7 +7,7 @@
%% zhlipsum.dtx (with options: `text,gbk')
%% zhlipsum-text.dtx (with options: `text,gbk')
%%
-%% Copyright (C) 2017, 2018 by Xiangdong Zeng
+%% Copyright (C) 2017--2020 by Xiangdong Zeng
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -35,7 +35,7 @@
%% zhlipsum-en.pdf,
%% and README.md.
%%
-\GetIdInfo $Id: zhlipsum.dtx 1.1.1 2018-09-08 12:00:00Z Xiangdong Zeng $
+\GetIdInfo $Id: zhlipsum.dtx 1.2.0 2020-04-10 12:00:00Z Xiangdong Zeng $
{Chinese dummy text with GBK encoding (for zhlipsum)}
\ProvidesExplFile{\ExplFileName-gbk.def}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zhlipsum/zhlipsum-utf8.def new/tex/latex/zhlipsum/zhlipsum-utf8.def
--- old/tex/latex/zhlipsum/zhlipsum-utf8.def 2018-09-08 23:45:24.000000000 +0200
+++ new/tex/latex/zhlipsum/zhlipsum-utf8.def 2020-04-12 00:25:18.000000000 +0200
@@ -7,7 +7,7 @@
%% zhlipsum.dtx (with options: `text,utf8')
%% zhlipsum-text.dtx (with options: `text,utf8')
%%
-%% Copyright (C) 2017, 2018 by Xiangdong Zeng
+%% Copyright (C) 2017--2020 by Xiangdong Zeng
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -35,7 +35,7 @@
%% zhlipsum-en.pdf,
%% and README.md.
%%
-\GetIdInfo $Id: zhlipsum.dtx 1.1.1 2018-09-08 12:00:00Z Xiangdong Zeng $
+\GetIdInfo $Id: zhlipsum.dtx 1.2.0 2020-04-10 12:00:00Z Xiangdong Zeng $
{Chinese dummy text with UTF-8 encoding (for zhlipsum)}
\ProvidesExplFile{\ExplFileName-utf8.def}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zhlipsum/zhlipsum.sty new/tex/latex/zhlipsum/zhlipsum.sty
--- old/tex/latex/zhlipsum/zhlipsum.sty 2018-09-08 23:45:24.000000000 +0200
+++ new/tex/latex/zhlipsum/zhlipsum.sty 2020-04-12 00:25:18.000000000 +0200
@@ -6,7 +6,7 @@
%%
%% zhlipsum.dtx (with options: `package')
%%
-%% Copyright (C) 2017, 2018 by Xiangdong Zeng
+%% Copyright (C) 2017--2020 by Xiangdong Zeng
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
@@ -36,7 +36,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{expl3}
-\GetIdInfo $Id: zhlipsum.dtx 1.1.1 2018-09-08 12:00:00Z Xiangdong Zeng $
+\GetIdInfo $Id: zhlipsum.dtx 1.2.0 2020-04-10 12:00:00Z Xiangdong Zeng $
{Chinese dummy text}
\ProvidesExplPackage{\ExplFileName}
{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription}
@@ -56,100 +56,96 @@
\tl_new:N \l__zhlipsum_tmpa_tl
\seq_new:N \l__zhlipsum_tmpa_seq
\seq_new:N \l__zhlipsum_tmpb_seq
-\tl_new:N \g__zhlipsum_encoding_tl
+\str_new:N \l__zhlipsum_tmpa_str
\seq_new:N \g_zhlipsum_seq
-\seq_new:N \c_zhlipsum_simp_seq
-\seq_new:N \c_zhlipsum_trad_seq
-\seq_set_from_clist:Nn \c_zhlipsum_simp_seq { simp, zhufu, aspirin }
-\seq_set_from_clist:Nn \c_zhlipsum_trad_seq { trad, xiangyu, nanshanjing }
+\seq_const_from_clist:Nn \c_zhlipsum_simp_seq { simp, zhufu, aspirin }
+\seq_const_from_clist:Nn \c_zhlipsum_trad_seq { trad, xiangyu, nanshanjing }
\cs_generate_variant:Nn \file_input:n { x }
-\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { Vn } { T, TF }
-\prg_new_protected_conditional:Npnn \__zhlipsum_if_unicode_engine: { T, F, TF }
+\prg_new_conditional:Npnn \__zhlipsum_if_unicode_engine: { T, F, TF }
{
\bool_lazy_any:nTF
{
- { \sys_if_engine_xetex_p: }
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_uptex_p: }
+ \sys_if_engine_xetex_p:
+ \sys_if_engine_luatex_p:
+ \sys_if_engine_uptex_p:
}
- { \prg_return_true: }
- { \prg_return_false: }
+ { \prg_return_true: } { \prg_return_false: }
}
-\prg_new_protected_conditional:Npnn \__zhlipsum_if_encoding:n #1 { T, F, TF }
+\prg_new_conditional:Npnn \__zhlipsum_if_encoding:n #1 { T, F, TF }
{
- \tl_if_eq:VnTF \g__zhlipsum_encoding_tl {#1}
+ \str_if_eq:VnTF \g__zhlipsum_encoding_str {#1}
{ \prg_return_true: } { \prg_return_false: }
}
+\prg_generate_conditional_variant:Nnn \__zhlipsum_if_encoding:n { V } { T, F, TF }
+\str_new:N \g__zhlipsum_encoding_str
\cs_new:Npn \__zhlipsum_msg_new:nn { \msg_new:nnn { zhlipsum } }
\cs_new:Npn \__zhlipsum_error:n { \msg_error:nn { zhlipsum } }
\cs_new:Npn \__zhlipsum_error:nn { \msg_error:nnn { zhlipsum } }
+\cs_new:Npn \__zhlipsum_warning:n { \msg_warning:nn { zhlipsum } }
\cs_new:Npn \__zhlipsum_warning:nn { \msg_warning:nnn { zhlipsum } }
\cs_new:Npn \__zhlipsum_warning:nnn { \msg_warning:nnnn { zhlipsum } }
\cs_new:Npn \__zhlipsum_warning:nxxx { \msg_warning:nnxxx { zhlipsum } }
\cs_new:Npn \__zhlipsum_info:nn { \msg_info:nnn { zhlipsum } }
-\cs_new_eq:NN \__zhlipsum_par: \tex_par:D
\keys_define:nn { zhlipsum / option }
{
encoding .choices:nn =
{ utf8, gbk, big5 }
- {
- \tl_gset_eq:NN \g__zhlipsum_encoding_tl \l_keys_choice_tl
- \__zhlipsum_if_unicode_engine:T
- {
- \__zhlipsum_if_encoding:nF { utf8 }
- {
- \tl_gset:Nn \g__zhlipsum_encoding_tl { utf8 }
- \__zhlipsum_warning:nn { unicode-engine } {#1}
- }
- }
- \__zhlipsum_if_ctex_valid_encoding:F
- { \__zhlipsum_error:nn { ctex-invalid-encoding } {#1} }
- },
+ { \str_gset:Nn \g__zhlipsum_encoding_str {#1} },
encoding / unknown .code:n =
{ \__zhlipsum_error:nn { invalid-encoding } {#1} },
encoding .value_required:n = true,
unknown .code:n = { \__zhlipsum_error:n { unknown-option } }
}
-\__zhlipsum_msg_new:nn { unicode-engine }
+\__zhlipsum_msg_new:nn { invalid-encoding }
{
- You~ are~ now~ using~ Unicode~ engine~ \c_sys_engine_str. \\
- Encoding~ "#1"~ is~ invalid.~ Changed~ into~ "utf8".
+ Encoding~"#1"~is~invalid. \\
+ Available~encodings~are~"utf8",~"gbk"~and~"big5".
}
-\__zhlipsum_msg_new:nn { ctex-invalid-encoding }
+\__zhlipsum_msg_new:nn { unknown-option }
+ { Package~option~'\l_keys_key_tl'~is~unknown. }
+\cs_new_protected:Npn \__zhlipsum_check_unicode_engine_encoding:
{
- Package~ option~ "encoding=#1"~ is~ in~ conflict~ with~ ctex's~
- option~ "\tl_use:N \l__ctex_encoding_tl".\\\\
- Please~ check~ the~ package~ options.
+ \__zhlipsum_if_unicode_engine:T
+ {
+ \str_if_empty:NF \g__zhlipsum_encoding_str
+ {
+ \__zhlipsum_if_encoding:nF { utf8 }
+ { \__zhlipsum_warning:n { unicode-engine } }
+ }
+ \str_gset:Nn \g__zhlipsum_encoding_str { utf8 }
+ }
}
-\__zhlipsum_msg_new:nn { invalid-encoding }
+\__zhlipsum_msg_new:nn { unicode-engine }
{
- Encoding~ "#1"~ is~ invalid. \\
- Available~ encodings~ are~ "utf8",~ "gbk"~ and~ "big5".
+ You~are~now~using~Unicode~engine~\c_sys_engine_str\c_space_tl~so~
+ encoding~"\g__zhlipsum_encoding_str"~is~invalid. \\
+ Changed~into~"utf8".
}
-\__zhlipsum_msg_new:nn { unknown-option }
- { Package~ option~ "\l_keys_key_tl"~ is~ unknown. }
-\prg_new_protected_conditional:Npnn \__zhlipsum_if_ctex_valid_encoding: { F }
+\cs_new_protected:Npn \__zhlipsum_check_ctex_encoding:
{
- \tl_if_exist:NTF \l__ctex_encoding_tl
+ \tl_if_exist:NT \l__ctex_encoding_tl
{
- \tl_set:Nx \l__zhlipsum_tmpa_tl
+ \str_set:Nx \l__zhlipsum_tmpa_str
{ \str_lower_case:f { \l__ctex_encoding_tl } }
- \str_if_eq:NNTF \g__zhlipsum_encoding_tl \l__zhlipsum_tmpa_tl
- { \prg_return_true: } { \prg_return_false: }
+ \str_if_empty:NF \g__zhlipsum_encoding_str
+ {
+ \__zhlipsum_if_encoding:VF \l__zhlipsum_tmpa_str
+ { \__zhlipsum_warning:n { ctex-encoding-conflict } }
+ }
+ \str_gset_eq:NN \g__zhlipsum_encoding_str \l__zhlipsum_tmpa_str
}
- { \prg_return_true: }
}
-\tl_if_exist:NTF \l__ctex_encoding_tl
+\__zhlipsum_msg_new:nn { ctex-encoding-conflict }
{
- \tl_if_eq:VnTF \l__ctex_encoding_tl { UTF8 }
- { \tl_gset:Nn \g__zhlipsum_encoding_tl { utf8 } }
- {
- \tl_if_eq:VnT \l__ctex_encoding_tl { GBK }
- { \tl_gset:Nn \g__zhlipsum_encoding_tl { gbk } }
- }
+ Package~option~"encoding=\g__zhlipsum_encoding_str"~is~in~conflict~with~
+ ctex's~option~"\l__ctex_encoding_tl". \\
+ Changed~into~"encoding=\l__zhlipsum_tmpa_str".
}
- { \tl_gset:Nn \g__zhlipsum_encoding_tl { utf8 } }
\ProcessKeysOptions { zhlipsum / option }
+\__zhlipsum_check_unicode_engine_encoding:
+\__zhlipsum_check_ctex_encoding:
+\str_if_empty:NT \g__zhlipsum_encoding_str
+ { \str_gset:Nn \g__zhlipsum_encoding_str { utf8 } }
\tl_new:N \l__zhlipsum_name_tl
\tl_new:N \l__zhlipsum_before_tl
\tl_new:N \l__zhlipsum_after_tl
@@ -193,14 +189,14 @@
\group_begin:
\IfBooleanF {#1}
{
- \tl_set:Nn \l__zhlipsum_before_tl { \__zhlipsum_par: }
- \tl_set:Nn \l__zhlipsum_after_tl { \__zhlipsum_par: }
- \tl_set:Nn \l__zhlipsum_inter_tl { \__zhlipsum_par: }
+ \tl_set:Nn \l__zhlipsum_before_tl { }
+ \tl_set:Nn \l__zhlipsum_after_tl { \par }
+ \tl_set:Nn \l__zhlipsum_inter_tl { \par }
}
\IfValueTF {#3}
{
\keys_set:nn { zhlipsum } {#3}
- \zhlipsum_use:Vn \l__zhlipsum_name_tl {#2}
+ \__zhlipsum:n {#2}
}
{
\IfValueTF {#2}
@@ -208,19 +204,18 @@
\__zhlipsum_if_key_value_list:nTF {#2}
{
\keys_set:nn { zhlipsum } {#2}
- \zhlipsum_use:Vn \l__zhlipsum_name_tl { 1 - 3 }
+ \__zhlipsum:n { 1 - 3 }
}
- { \zhlipsum_use:Vn \l__zhlipsum_name_tl {#2} }
+ { \__zhlipsum:n {#2} }
}
- { \zhlipsum_use:Vn \l__zhlipsum_name_tl { 1 - 3 } }
+ { \__zhlipsum:n { 1 - 3 } }
}
\group_end:
}
-\prg_new_protected_conditional:Npnn \__zhlipsum_if_key_value_list:n #1 { TF }
- {
- \tl_if_in:nnTF {#1} { = }
- { \prg_return_true: } { \prg_return_false: }
- }
+\cs_new_protected:Npn \__zhlipsum:n #1
+ { \exp_args:No \zhlipsum_use:nn { \l__zhlipsum_name_tl } {#1} }
+\cs_new_protected:Npn \__zhlipsum_if_key_value_list:nTF #1
+ { \tl_if_in:nnTF {#1} {=} }
\seq_new:N \l__zhlipsum_par_num_seq
\cs_new_protected:Npn \zhlipsum_use:nn #1#2
{
@@ -229,57 +224,47 @@
\zhlipsum_if_exist:nTF {#1}
{
\__zhlipsum_parse_par:nn {#1} {#2}
- \seq_pop_right:NN \l__zhlipsum_par_num_seq \l__zhlipsum_tmpa_tl
- \tl_use:N \l__zhlipsum_before_tl
- \seq_map_inline:Nn \l__zhlipsum_par_num_seq
+ \seq_if_empty:NF \l__zhlipsum_par_num_seq
{
- \__zhlipsum_use:nn {#1} {##1}
- \tl_use:N \l__zhlipsum_inter_tl
+ \seq_pop_right:NN \l__zhlipsum_par_num_seq \l__zhlipsum_tmpa_tl
+ \l__zhlipsum_before_tl
+ \seq_map_inline:Nn \l__zhlipsum_par_num_seq
+ {
+ \__zhlipsum_use:nn {#1} {##1}
+ \l__zhlipsum_inter_tl
+ }
+ \__zhlipsum_use:nn {#1} { \l__zhlipsum_tmpa_tl }
+ \l__zhlipsum_after_tl
}
- \__zhlipsum_use:nn {#1} { \tl_use:N \l__zhlipsum_tmpa_tl }
- \tl_use:N \l__zhlipsum_after_tl
}
{ \__zhlipsum_error:nn { invalid-name } {#1} }
}
{ \__zhlipsum_error:n { CJK-invalid-encoding } }
}
-\cs_generate_variant:Nn \zhlipsum_use:nn { Vn }
\__zhlipsum_msg_new:nn { invalid-name }
{
- Name~ "#1"~ is~ unknown. \\\\
+ Name~ "#1"~ is~ unknown. \\
Please~ use~ the~ pre-defined~ Chinese~ dummy~ texts~ or~
declare~ new~ one.
}
\__zhlipsum_msg_new:nn { CJK-invalid-encoding }
{
- The~ current~ CJK~ environment~ uses~ "\tl_use:N \CJK@@@enc"~
- encoding,\\
+ The~ current~ CJK~ environment~ uses~ "\CJK@@@enc"~ encoding,~
but~ zhlipsum~ package~ has~ been~ loaded~ with~ the~ option~
- "encoding=\tl_use:N \g__zhlipsum_encoding_tl".\\\\
+ "encoding=\g__zhlipsum_encoding_str". \\
Please~ check~ the~ package~ options.
}
\prg_new_protected_conditional:Npnn \__zhlipsum_if_cjk_valid_encoding: { TF }
{
\tl_if_exist:NTF \CJK@@@enc
{
- \tl_set:Nx \l__zhlipsum_tmpa_tl { \str_lower_case:f { \CJK@@@enc } }
- \str_if_eq:NNTF \g__zhlipsum_encoding_tl \l__zhlipsum_tmpa_tl
- { \prg_return_true: }
+ \exp_args:NV \str_case:nn \g__zhlipsum_encoding_str
{
- \__zhlipsum_if_encoding:nTF { gbk }
- {
- \str_if_eq:VnTF \l__zhlipsum_tmpa_tl { gb }
- { \prg_return_true: } { \prg_return_false: }
- }
- {
- \__zhlipsum_if_encoding:nTF { big5 }
- {
- \str_if_eq:VnTF \l__zhlipsum_tmpa_tl { bg5 }
- { \prg_return_true: } { \prg_return_false: }
- }
- { \prg_return_false: }
- }
+ { utf8 } { \str_if_eq:VnTF \CJK@@@enc { UTF8 } }
+ { gbk } { \str_if_in:NnTF \CJK@@@enc { GB } }
+ { big5 } { \str_if_eq:VnTF \CJK@@@enc { Bg5 } }
}
+ { \prg_return_true: } { \prg_return_false: }
}
{ \prg_return_true: }
}
@@ -408,7 +393,7 @@
\tl_const:cn
{ c__zhlipsum_ #1 @ \int_use:c { g__zhlipsum_ #1 _int } _tl } {#2}
}
-\file_input:x { zhlipsum- \g__zhlipsum_encoding_tl .def }
+\file_input:x { zhlipsum- \g__zhlipsum_encoding_str .def }
\endinput
%%
%% End of file `zhlipsum.sty'.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zhlipsum.tlpobj new/tlpkg/tlpobj/zhlipsum.tlpobj
--- old/tlpkg/tlpobj/zhlipsum.tlpobj 2019-02-28 04:19:14.000000000 +0100
+++ new/tlpkg/tlpobj/zhlipsum.tlpobj 2020-04-16 01:57:30.000000000 +0200
@@ -1,6 +1,6 @@
name zhlipsum
category Package
-revision 48629
+revision 54758
shortdesc Chinese dummy text
relocated 1
longdesc This package provides an interface to dummy text in Chinese
@@ -12,10 +12,9 @@
RELOC/tex/latex/zhlipsum/zhlipsum-utf8.def
RELOC/tex/latex/zhlipsum/zhlipsum.sty
catalogue-also lipsum
-catalogue-contact-bugs https://github.com/Stone-Zeng/zhlipsum/issues
-catalogue-contact-repository https://github.com/Stone-Zeng/zhlipsum
+catalogue-contact-bugs https://github.com/stone-zeng/zhlipsum/issues
+catalogue-contact-repository https://github.com/stone-zeng/zhlipsum
catalogue-ctan /macros/latex/contrib/zhlipsum
-catalogue-date 2018-09-08 18:58:53 +0200
catalogue-license lppl1.3c
catalogue-topics dummy-gen chinese latex3 macro-supp
-catalogue-version 1.1.1
+catalogue-version 1.2.0
++++++ zlmtt.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/zlmtt/README new/doc/fonts/zlmtt/README
--- old/doc/fonts/zlmtt/README 2014-07-01 00:33:16.000000000 +0200
+++ new/doc/fonts/zlmtt/README 2019-06-12 22:08:41.000000000 +0200
@@ -4,7 +4,10 @@
http://www.ctan.org/license/lppl1.3
for the details of that license.
-Current version: 1.01
+Current version: 1.02
+
+Changes in version 1.02
+Modified the definitions of \proptt and \monott to take into account the font weight specified in the preamble. (Thanks, Frank Mittelbach.)
Changes in version 1.01
Added macro \lctt to access light-condensed weight.
Binary files old/doc/fonts/zlmtt/zlmtt-doc.pdf and new/doc/fonts/zlmtt/zlmtt-doc.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/fonts/zlmtt/zlmtt-doc.tex new/doc/fonts/zlmtt/zlmtt-doc.tex
--- old/doc/fonts/zlmtt/zlmtt-doc.tex 2014-07-01 00:33:16.000000000 +0200
+++ new/doc/fonts/zlmtt/zlmtt-doc.tex 2019-06-12 22:08:41.000000000 +0200
@@ -42,7 +42,7 @@
\newpage
The options you may use in loading this package are:
\begin{itemize}
-\item {\tt scaled=1.05} will load the fonts scaled to $1.05$ times natural size. This is useful with Roman fonts having an x-height greater than Computer Modern.
+\item {\tt scaled=1.05} (or {\tt scale=1.05}) will load the fonts scaled to $1.05$ times natural size. This is useful with Roman fonts having an x-height greater than Computer Modern.
\item
{\tt proportional} (or just {\tt p}) loads the proportionally spaced version of the fonts. (By default, typewriter text is {\tt monospaced}.)
\item The defaults for \verb|\mdseries| and \verb|\bfseries|, which determine the series used to render medium and bold, are ({\tt m}) and ({\tt b}). You may change these defaults without affecting the settings for Roman and Sans Serif fonts as follows:
@@ -55,10 +55,12 @@
{\tt med} (or just {\tt m}) makes \verb|\bfseries| render using ({\tt m}).
\end{itemize}
\end{itemize}
-Note that the weight options depend on the {\tt mweights} package which was introduced only in July $2013$ and may require an update to your \TeX\ distribution.
+Note that the weight options depend on the {\tt mweights} package which was introduced in July $2013$.
The package defines two macros, \verb|\proptt| and \verb|\monott| that allow you to use proportional typewriter mode or monospace typewriter mode whether or not you selected the {\tt proportional} option. This document uses {\tt monospace} mode, but I can write \verb|\proptt{proportional spacing}| and get \proptt{proportional spacing}, or \verb|\textit{\proptt{proportionally spaced slanted}}| to get \textit{\proptt{proportionally spaced slanted}}. The macro \verb|\lctt| prints its argument in light-condensed weight, monospaced mode, and uses a slanted font if italic shape is in force. E.g., \verb|\lctt{light condensed}| produces \lctt{light condensed}, and \verb|\textit{\lctt{light condensed italic}}| produces \textit{\lctt{light condensed italic}}.
+As of version {\tt 1.02}, \verb|\proptt| and \verb|\monott| do not switch to medium weight if in your preamble you specified that regular means light.
+
This package supports all the encodings supported by the {\tt lmodern} package.
{\bf Examples}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zlmtt.doc.tlpobj new/tlpkg/tlpobj/zlmtt.doc.tlpobj
--- old/tlpkg/tlpobj/zlmtt.doc.tlpobj 2019-02-28 04:19:20.000000000 +0100
+++ new/tlpkg/tlpobj/zlmtt.doc.tlpobj 2019-06-13 01:38:41.000000000 +0200
@@ -1,9 +1,9 @@
name zlmtt.doc
category Package
-revision 34485
+revision 51368
shortdesc doc files of zlmtt
relocated 1
-docfiles size=18
+docfiles size=16
RELOC/doc/fonts/zlmtt/README
RELOC/doc/fonts/zlmtt/zlmtt-doc.pdf
RELOC/doc/fonts/zlmtt/zlmtt-doc.tex
++++++ zlmtt.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zlmtt/zlmtt.sty new/tex/latex/zlmtt/zlmtt.sty
--- old/tex/latex/zlmtt/zlmtt.sty 2014-07-01 00:33:16.000000000 +0200
+++ new/tex/latex/zlmtt/zlmtt.sty 2019-06-12 22:08:41.000000000 +0200
@@ -1,4 +1,4 @@
-\ProvidesPackage{zlmtt}[2014/06/28 v1.01 Alternate support package for Latin Modern TypeWriter]
+\ProvidesPackage{zlmtt}[2019/06/11 v1.02 Alternate support package for Latin Modern TypeWriter]
% Load after every package that (re)defines \ttdefault.
\renewcommand{\ttdefault}{zlmtt}
\newif\if@zlmtt@mw
@@ -23,9 +23,12 @@
}
\def\zlmtt@scale{1}
\DeclareOptionX{scaled}{\def\zlmtt@scale{#1}}
+\DeclareOptionX{scale}{\def\zlmtt@scale{#1}}
\ProcessOptionsX\relax
-\newcommand{\proptt}[1]{{\fontfamily{zlmvtt}\selectfont #1}}
-\newcommand{\monott}[1]{{\fontfamily{zlmtt}\selectfont #1}}
+%\newcommand{\proptt}[1]{{\fontfamily{zlmvtt}\selectfont #1}}
+%\newcommand{\monott}[1]{{\fontfamily{zlmtt}\selectfont #1}}
+\newcommand{\monott}[1]{{\def\ttdefault{zlmtt}\texttt{#1}}} % 2019-06-11
+\newcommand{\proptt}[1]{{\def\ttdefault{zlmvtt}\texttt{#1}}} % ditto
\newcommand{\lctt}[1]{{\fontfamily{zlmtt}\fontseries{lc}\selectfont #1}}
\endinput
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zlmtt.tlpobj new/tlpkg/tlpobj/zlmtt.tlpobj
--- old/tlpkg/tlpobj/zlmtt.tlpobj 2019-02-28 04:19:20.000000000 +0100
+++ new/tlpkg/tlpobj/zlmtt.tlpobj 2019-06-13 01:38:41.000000000 +0200
@@ -1,6 +1,6 @@
name zlmtt
category Package
-revision 34485
+revision 51368
shortdesc Use Latin Modern Typewriter fonts
relocated 1
longdesc The package allows selection of Latin Modern Typewriter fonts
@@ -27,7 +27,7 @@
RELOC/tex/latex/zlmtt/ts1zlmvtt.fd
RELOC/tex/latex/zlmtt/zlmtt.sty
catalogue-ctan /fonts/zlmtt
-catalogue-date 2016-06-24 19:18:15 +0200
+catalogue-date 2019-06-12 05:18:42 +0200
catalogue-license lppl1.3
catalogue-topics font-supp
-catalogue-version 1.01
+catalogue-version 1.02
++++++ zwpagelayout.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zwpagelayout/README new/doc/latex/zwpagelayout/README
--- old/doc/latex/zwpagelayout/README 2013-01-16 00:01:45.000000000 +0100
+++ new/doc/latex/zwpagelayout/README 2020-02-28 23:32:29.000000000 +0100
@@ -1,5 +1,5 @@
=============================================================================
-Package: zwpagelayout Version 1.4c 13 Janyary 2013
+Package: zwpagelayout Version 1.4d 28 February 2020
=============================================================================
This package was developed as a typographers toolbox offering the most
@@ -10,12 +10,24 @@
Partial PDF/X conformance is implemented and black overprint is enabled
in pdfTeX, dvips, as well as (x)dvipdfm(x) drivers, i.e in XeLaTeX.
-Version 1.4c is a bug fix, the PDF boxes now properly work in the
-(x)dvipdfm(x) family of drivers.
+Version 1.4d is a bug fix:
+* PDF/X-1a identification corrected.
+* Package iftex loaded instead of ifpdf and ifxetex.
+* Lualatex compatibility supported
Version 1.4 implements black overprint for (x)dvipdfm(x) family of drivers,
i.e. it now works also with XeLaTeX.
+
+Installation:
+
+1. put zwpagelayout.sty to the directory where latex expects packages,
+ preferably texmf-dist/tex/latex/zwpagelayout
+
+2. put all remaining files to a directory where texdoc looks for
+ documentation, preferably texmf-dist/doc/zwpagelayout
+
+
The license of the package is LPPL.
Author: Z. Wagner, http://icebearsoft.euweb.cz
Binary files old/doc/latex/zwpagelayout/adjustfoot.pdf and new/doc/latex/zwpagelayout/adjustfoot.pdf differ
Binary files old/doc/latex/zwpagelayout/adjusthead.pdf and new/doc/latex/zwpagelayout/adjusthead.pdf differ
Binary files old/doc/latex/zwpagelayout/coversample.pdf and new/doc/latex/zwpagelayout/coversample.pdf differ
Binary files old/doc/latex/zwpagelayout/zwpagelayout.pdf and new/doc/latex/zwpagelayout/zwpagelayout.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zwpagelayout/zwpagelayout.tex new/doc/latex/zwpagelayout/zwpagelayout.tex
--- old/doc/latex/zwpagelayout/zwpagelayout.tex 2013-01-16 00:01:45.000000000 +0100
+++ new/doc/latex/zwpagelayout/zwpagelayout.tex 2020-02-28 23:32:29.000000000 +0100
@@ -1,4 +1,4 @@
-%% $Id: zwpagelayout.tex 454 2013-01-13 18:30:27Z zw $
+%% $Id: zwpagelayout.tex 548 2020-02-28 13:27:51Z zw $
\input utf8-t1 % encTeX required
\documentclass[11pt]{article}
\usepackage{zwgetfdate}
@@ -118,11 +118,20 @@
to be switched off and just add the crop marks provided the paper dimensions are correctly
supplied. The details will be explained later when describing the package options.
+\section{Installation}\label{installation}
+The package consists of a single file, \texttt{zwpagelayout.sty}. Put it to a directory where
+\LaTeX\ expects packages, preferably \texttt{texmf-dist/tex/latex/zwpagelayout}. All remaining
+files belong to the documentation, put them to a directory where documentation (including
+documentation sources) is expected by \pkg{texdoc} or a similar program, preferably
+\texttt{texmf-dist/doc/zwpagelayout}.
+
\section{Package dependence}
As written in the introduction, the goal was to implement as much within this single package in
order to reduce the risk of clashes. Yet a few packages may be loaded. The package needs to know
-what engine is being used. For this purpose the \pkg{ifxetex} and \pkg{ifpdf} packages are used. If
-any of these packages is not found, it is assumed that the corresponding engine is not available.
+what engine is being used. For this purpose the \pkg{iftex} package\footnote{Up to version 1.4c
+both \pkg{ifxetex} and \pkg{ifpdf} were used. Nowadays both these packages are deprecated and load
+\pkg{iftex}. The package would fail with a critical error if they were used.} is used. If
+the package is not found, it is assumed that the engines are not available.
No error is reported. The color support requires the \pkg{color} package. It is loaded only if the
color support is requested. The algorithm for deciding when the package is needed will be described
in detail in section~\ref{color}.
@@ -1262,6 +1271,15 @@
specify the date in the \cmd{usepackage} or \cmd{RequirePackage} command if you rely on a specific
feature not available in the old version of the package.
+\subsection{Version 1.4d, 2020/02/07}
+\begin{itemize}
+\item Bug fix, packages \pkg{ifpdf} and \pkg{ifxetex} replaced with \pkg{iftex}.
+\item Bug fix, identification of PDF/X-1a corrected.
+\item Feature request, luatex85 loaded in order to support Lua\LaTeX\ compatibility.
+\item Modification, distribution file flattened as required by CTAN, see
+section~\ref{installation}.
+\end{itemize}
+
\subsection{Version 1.4c, 2013/01/13}
Bug fix, the PDF boxes are properly set even in the (x)dvipdfm(x) family of drivers, i.\,e.\@ in
\XeLaTeX.
@@ -1346,7 +1364,7 @@
\section{License}
The package can be used and distributed according to the \LaTeX\ Project Public License version~1.3 or later the
-text of which can be found at the \texttt{License.txt} file in the \texttt{doc} directory or at
+text of which can be found at the \texttt{License.txt} file or at
\url{http://www.latex-project.org/lppl.txt}
\section{Trade marks}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zwpagelayout.doc.tlpobj new/tlpkg/tlpobj/zwpagelayout.doc.tlpobj
--- old/tlpkg/tlpobj/zwpagelayout.doc.tlpobj 2019-02-28 04:19:21.000000000 +0100
+++ new/tlpkg/tlpobj/zwpagelayout.doc.tlpobj 2020-02-29 02:00:24.000000000 +0100
@@ -1,9 +1,9 @@
name zwpagelayout.doc
category Package
-revision 28846
+revision 53965
shortdesc doc files of zwpagelayout
relocated 1
-docfiles size=204
+docfiles size=205
RELOC/doc/latex/zwpagelayout/License.txt
RELOC/doc/latex/zwpagelayout/LoremIpsumDolor.tex
RELOC/doc/latex/zwpagelayout/README
++++++ zwpagelayout.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zwpagelayout/zwpagelayout.sty new/tex/latex/zwpagelayout/zwpagelayout.sty
--- old/tex/latex/zwpagelayout/zwpagelayout.sty 2013-01-16 00:01:45.000000000 +0100
+++ new/tex/latex/zwpagelayout/zwpagelayout.sty 2020-02-28 23:32:29.000000000 +0100
@@ -1,7 +1,7 @@
-\ProvidesPackage{zwpagelayout}[2013/01/13 ZW Page Layout]
-\PackageInfo{zwpagelayout}{$Id: zwpagelayout.sty 453 2013-01-13 17:12:17Z zw $\@gobble}
+\ProvidesPackage{zwpagelayout}[2020/02/28 ZW Page Layout]
+\PackageInfo{zwpagelayout}{$Id: zwpagelayout.sty 547 2020-02-28 13:17:43Z zw $\@gobble}
-%% Copyright 2008--2013 Z. Wagner, http://icebearsoft.euweb.cz
+%% Copyright 2008--2020 Z. Wagner, http://icebearsoft.euweb.cz
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,8 +20,8 @@
% adjustfoot.tex, adjustfoot.pdf, adjusthead.tex, adjusthead.pdf,
% coversample.tex, coversample.pdf, LoremIpsumDolor.tex.
-\@ifpackageloaded{ifpdf}{}{\IfFileExists{ifpdf.sty}{\RequirePackage{ifpdf}}{\newif\ifpdf}}
-\@ifpackageloaded{ifxetex}{}{\IfFileExists{ifxetex.sty}{\RequirePackage{ifxetex}}{\newif\ifxetex}}
+\@ifpackageloaded{iftex}{}{\IfFileExists{iftex.sty}{\RequirePackage{iftex}}{\newif\ifpdf\newif\ifxetex\newif\ifluatex}}
+\ifluatex\RequirePackage{luatex85}\fi
\RequirePackage{kvoptions}[2010/02/22]
\SetupKeyvalOptions{family=zwpl,prefix=zwpl@}
@@ -342,7 +342,7 @@
\ifcat$\zwpl@pdfminorversion$ \else \ZWifdriver{pdftex}{\pdfminorversion3 \relax}\fi
\def\zwpl@pdfxinfo{}
\ifzwpl@pdfx
- \def\zwpl@pdfxinfo{ /GTS_PDFXVersion (PDF/X-1:2001) /GTS_PDFXConformance (PDFX-1a:2001)}
+ \def\zwpl@pdfxinfo{ /GTS_PDFXVersion (PDF/X-1a:2001) /GTS_PDFXConformance (PDFX-1a:2001)}
\ifcat$\zwpl@ICCfile$ \else
\ifcase\zwpl@Driver
\or
@@ -401,7 +401,7 @@
/S/GTS_PDFX
/OutputCondition (\zwpl@OutputCondition)
/OutputConditionIdentifier (\zwpl@OutputConditionIdentifier)
- /RegistryName (http://www/color.org)\zwpl@profile
+ /RegistryName (http://www.color.org)\zwpl@profile
]}
\ifcase\zwpl@Driver
\or
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zwpagelayout.tlpobj new/tlpkg/tlpobj/zwpagelayout.tlpobj
--- old/tlpkg/tlpobj/zwpagelayout.tlpobj 2019-02-28 04:19:21.000000000 +0100
+++ new/tlpkg/tlpobj/zwpagelayout.tlpobj 2020-02-29 02:00:24.000000000 +0100
@@ -1,6 +1,6 @@
name zwpagelayout
category Package
-revision 28846
+revision 53965
shortdesc Page layout and crop-marks
relocated 1
longdesc This package was developed as a typographers' toolbox offering
@@ -14,7 +14,6 @@
catalogue-also geometry crop
catalogue-contact-home http://icebearsoft.euweb.cz/tex/
catalogue-ctan /macros/latex/contrib/zwpagelayout
-catalogue-date 2017-04-18 05:31:40 +0200
catalogue-license lppl
catalogue-topics geometry production
catalogue-version 1.4d
++++++ zxjafont.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjafont/LICENSE new/doc/latex/zxjafont/LICENSE
--- old/doc/latex/zxjafont/LICENSE 2018-05-05 00:10:36.000000000 +0200
+++ new/doc/latex/zxjafont/LICENSE 2020-01-12 22:39:47.000000000 +0100
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+Copyright (c) 2009-2020 Takayuki YATO (aka. "ZR")
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjafont/README-ja.md new/doc/latex/zxjafont/README-ja.md
--- old/doc/latex/zxjafont/README-ja.md 2018-05-05 00:10:36.000000000 +0200
+++ new/doc/latex/zxjafont/README-ja.md 2020-02-24 15:23:17.000000000 +0100
@@ -36,6 +36,30 @@
更新履歴
--------
+ * Version 1.2 〈2020/02/24〉
+ - オプション追加:`expert`。
+ - luatexja-preset との互換のためのオプションを追加。
+ - Moga 系プリセットの仕様を調整。
+ * Version 1.1b 〈2020/02/22〉
+ - luatexja-preset との互換のためのオプションを追加。
+ * Version 1.1a 〈2020/02/15〉
+ - NFSS 改修に対する調整。
+ * Version 1.1 〈2020/02/08〉
+ - 和文処理モードでも `prop` が使えるようにした。
+ * Version 1.0 〈2020/02/02〉
+ - 3 ウェイトのサポート。`(no)threeweight` オプション追加。
+ - xeCJK 読込時も和文処理モードに切り替える。
+ - オプション追加:`(no)ignorejatype`。
+ * Version 0.7 〈2020/01/18〉
+ - オプション追加:`(no)bold`、`nojisshape`。
+ - オプション別名:`(no)deluxe`。
+ - バグ修正。
+ * Version 0.6 〈2020/01/12〉
+ - プリセット追加:`haranoaji` (thanks:doraTeX 氏)。
+ - `hiragino` を `hiragino-pro` の別名とする。
+ * Version 0.5 〈2019/06/29〉
+ - 非推奨のプリセットを廃止した。
+ - 他パッケージとの互換のため、オプションやプリセットの別名を追加。
* Version 0.4 〈2018/05/04〉
- プリセット追加:`yu-win10`、`sourcehan(-jp)`、`noto(-jp)`、`ume`。
- オプション追加:`90jis`、`jis2004`。
@@ -49,4 +73,4 @@
--------------------
Takayuki YATO (aka. "ZR")
-http://zrbabbler.sp.land.to/
+https://github.com/zr-tex8r
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjafont/README.md new/doc/latex/zxjafont/README.md
--- old/doc/latex/zxjafont/README.md 2018-05-05 00:10:36.000000000 +0200
+++ new/doc/latex/zxjafont/README.md 2020-02-24 15:23:17.000000000 +0100
@@ -12,8 +12,10 @@
### SYSTEM REQUIREMENTS
- - TeX format: XeLaTeX.
- - Prerequisite packages: fontspec.
+ * TeX format: LaTeX.
+ * TeX engine: XeTeX.
+ * Prerequisite packages:
+ - fontspec
### INSTALLATION
@@ -27,11 +29,43 @@
This package is distributed under the MIT License.
+
+zxjafont Package ー main
+------------------------
+
+Please refer to the manual `zxjafont.pdf` (in Japanese) for detail.
+
+
Revision History
----------------
+ * Version 1.2 〈2020/02/24〉
+ - New option: `expert`.
+ - More options for compatibility with luatexja-preset.
+ - Adjustment of presets involving Moga Fonts.
+ * Version 1.1b 〈2020/02/22〉
+ - More options for compatibility with luatexja-preset.
+ * Version 1.1a 〈2020/02/15〉
+ - Adjustment for the revision of NFSS.
+ * Version 1.1 〈2020/02/08〉
+ - Now `prop` is available even in Japanese-font mode.
+ * Version 1.0 〈2020/02/02〉
+ - Now multiweight presets offer three weights per family. New
+ option `(no)threeweight` is added.
+ - Now use of xeCJK activates the Japanese-font mode.
+ - New option: `(no)ignorejatype`.
+ * Version 0.7 〈2020/01/18〉
+ - New options: `(no)bold`, `nojisshape`.
+ - New option aliases: `(no)deluxe`.
+ - Bug fix.
+ * Version 0.6 〈2020/01/12〉
+ - New preset: `haranoaji` (thanks: doraTeX).
+ - `hiragino` is made an alias for `hiragino-pro`.
+ * Version 0.5 〈2019/06/29〉
+ - More aliases are provided.
+ - The deprecated presets are abolished.
* Version 0.4 〈2018/05/04〉
- - New preets: `yu-win10`, `sourcehan(-jp)`, `noto(-jp)`, `ume`.
+ - New presets: `yu-win10`, `sourcehan(-jp)`, `noto(-jp)`, `ume`.
- New options: `90jis`, `jis2004`.
- The use of deprecated presets is warned.
* Version 0.3 〈2015/05/08〉
@@ -43,4 +77,4 @@
--------------------
Takayuki YATO (aka. "ZR")
-http://zrbabbler.sp.land.to/
+https://github.com/zr-tex8r
Binary files old/doc/latex/zxjafont/zxjafont.pdf and new/doc/latex/zxjafont/zxjafont.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjafont/zxjafont.tex new/doc/latex/zxjafont/zxjafont.tex
--- old/doc/latex/zxjafont/zxjafont.tex 2018-05-05 00:10:36.000000000 +0200
+++ new/doc/latex/zxjafont/zxjafont.tex 2020-02-24 15:23:17.000000000 +0100
@@ -12,12 +12,14 @@
\bxtexlogoimport{*}
\usepackage{shortvrb}
\MakeShortVerb{\|}
-\newcommand{\PkgVersion}{0.4}
-\newcommand{\PkgDate}{2018/05/04}
+\newcommand{\PkgVersion}{1.2}
+\newcommand{\PkgDate}{2020/02/24}
\newcommand{\Pkg}[1]{\textsf{#1}}
\newcommand{\Meta}[1]{$\langle$\mbox{}#1\mbox{}$\rangle$}
\newcommand{\Note}{\par\noindent ※}
\newcommand{\Means}{:\ }
+\newcommand{\JEmph}{\textgt}
+\newcommand{\JSl}{\mbox{/}\linebreak[0]}
%-----------------------------------------------------------
\begin{document}
\title{\Pkg{zxjafont} パッケージ(v\PkgVersion)}
@@ -28,25 +30,25 @@
%===========================================================
\section{概要}
-{\XeLaTeX} + fontspec でのフォントファミリ名を直接指定する方式は
+{\XeLaTeX}+\Pkg{fontspec}でのフォントファミリ名を直接指定する方式は
「好きなフォントを指定する」という点では、
{\pLaTeX}\>よりも格段に使い易いが、
-日本語を扱うためには必ず何らかの設定を行う必要があり、
+日本語を扱うためには必ず何らかのフォント設定を行う必要があり、
これが煩わしく感じられる場合もある。
-本パッケージでは、{\pLaTeX}\>において
-一般的に行われている設定を予め用意しておいて、
+本パッケージでは、日本語\>{\LaTeX}\>において
+一般的に行われている日本語用フォント設定を予め用意しておいて、
簡単に呼び出せるようにしている。
-\paragraph{前提フォーマット}
-{\XeLaTeX}。
-
-\paragraph{依存パッケージ}
+\paragraph{前提環境}\mbox{}
\begin{itemize}
-\item \Pkg{fontspec}パッケージ
+\item フォーマット\Means {\LaTeX}
+\item エンジン\Means {\XeTeX}
+\item 依存パッケージ\Means \Pkg{fontspec}パッケージ
\end{itemize}
%===========================================================
\section{使い方}
+\label{sec:Usage}
以下のようにパッケージを読み込むだけである。
(ユーザ命令・環境はない。)
@@ -59,25 +61,31 @@
\Meta{サブ設定}と\Meta{他オプション}は任意個数指定可能である。
もし\Pkg{fontspec}が未読込の場合は自動的に読み込む。
{\XeLaTeX}\>には和文と欧文の元来の区別がないので、
-このパッケージで指定するフォントが全ての文字に通用する。
-ただし、\Pkg{zxjatype}パッケージでは和文と欧文を区別するので、
-それと併用の場合は和文のみにフォント設定が適用される。
+このパッケージで指定するフォントが全ての文字に通用される。
+ただし、\Pkg{xeCJK}パッケージや\Pkg{zxjatype}パッケージの
+日本語処理機能を利用する場合には和文と欧文が区別されるようになり、
+この場合は\JEmph{和文のみ}にフォント設定が適用される。
%-------------------
-\subsection{メイン設定}
+\subsection{メイン設定オプション}
+\label{ssec:Main-Option}
-総称ファミリの設定
-(\Pkg{fontspec}の |\setmainfont|、|\setsansfont|、|\setmonofont|)
+{\LaTeX}\>の総称ファミリに関するプリセット設定、すなわち、
+\Pkg{fontspec}の\>|\setmainfont|\JSl|\setsansfont|\JSl|\setmonofont|\>%
+(\Pkg{xeCJK}\JSl\Pkg{zxjatype}併用時は\>%
+|\setCJKmainfont|\JSl|\setCJKsansfont|\JSl|\setCJKmonofont|)
を行うもの。
-\Note 「メイン設定」は\Pkg{pxchfon}パッケージにおける
-「プリセット設定」をそのまま
-(ただし明朝・ゴシック2ウェイトに縮減して)
+\Note メイン設定のプリセットは\Pkg{pxchfon}パッケージにおける
+プリセットをそのまま
引き継いでいる。
-設定内容の詳細については、\Pkg{pxchfon}の説明書を
-参照してほしい。
+設定内容の詳細については、
+\JEmph{\Pkg{pxchfon}の説明書を参照してほしい}。
+
+\Note 1.0版より、\Pkg{pxchfon}パッケージの多ウェイト設定について
+明朝・ゴシックの3ウェイトが全てサポートされるようになった。
-\paragraph{単ウェイト用の設定}
+\paragraph{単ウェイト用プリセット}
明朝・ゴシック各々1ウェイトのみを用いる設定。
セリフ(|\rmfamily|)に明朝、
サンセリフ(|\sffamily|)と等幅(|\ttfamily|)にゴシックを割り当てる。
@@ -93,14 +101,35 @@
\item |ipaex|\Means
IPAexフォント。
\end{itemize}
-\Note {\XeTeX}\>は「フォント非埋込のPDF生成」に対応していない。
+\Note {\XeTeX}\>は「フォント非埋込のPDF生成」に対応していないので、
+|noembed| プリセットは存在しない。
+
+例えば、|ms|\>プリセットは以下の\Pkg{fontspec}の設定を行う:
+\begin{quote}\small\begin{verbatim}
+\setmainfont{MS-Mincho}[BoldFont=MS-Gothic]
+\setsansfont{MS-Gothic}[BoldFont=MS-Gothic]
+\setmonofont{MS-Gothic}[BoldFont=MS-Gothic]
+\end{verbatim}\end{quote}
+\Note \Pkg{xeCJK}\JSl\Pkg{zxjatype}読込時は和文用フォントの
+設定(|\setCJKmainfont|\>等)に置き換わり、またこの場合は
+和文スケール設定(|Scale|\>オプションキー)が追加される。
+これは以降で紹介する例についても同様である。
+
+\paragraph{多ウェイト用プリセット}
+セリフ(|\rmfamily|)に明朝、
+サンセリフ(|\sffamily|)と等幅(|\ttfamily|)にゴシックを割り当て、
+各々について中字(|\mdseries|)と太字(|\bfseries|)のフォントを
+\Pkg{pxchfon}のプリセットと同様に個別に設定する。
+
+さらに、|threeweight|\>オプションが有効の場合は、
+{p\LaTeX}\>の\Pkg{japanese-otf}で\>|deluxe|\>オプションを指定したときと
+同様に、「明朝の細字(|\rmfamily\ltseries|)」と
+「ゴシックの極太(|\sffamily\ebseries|)」が指定できるようになり、
+明朝とゴシックの各々について3ウェイトのフォントが
+\Pkg{pxchfon}のプリセットと同様に個別に設定される。
+\Note |threeweight|\>オプションは通常は既定で有効になっている
+(詳細は\>\ref{ssec:Other-Option}\>節を参照)。
-\paragraph{多ウェイト用の設定}
-明朝・ゴシック各々2ウェイトを用いる設定
-\footnote{\Pkg{fontspec}では3ウェイト以上の設定ができない。)}。
-セリフに明朝、サンセリフと等幅にゴシックを割り当て、
-各々について通常(|\mdseries|)と太字(|\bfseries|)
-を個別に設定する。
\begin{itemize}
\item |ms-hg|\Means
MSフォント + HGフォント。
@@ -110,17 +139,28 @@
\item |ipaex-hg|\Means
IPAexフォント + HGフォント。
\item |moga|\Means
- Mogaフォント(2004JIS字形)。
- \Note MogaEx系統が用いられる。
+ Mogaフォント(MogaEx;2004JIS字形)。
+ \Note \Pkg{pxchfon}の\>|moga-mobo-ex|(|jis2004|\>有効)と同じで、
+ MogaEx系統が用いられる。
\item |moga-90|\Means
- Mogaフォント(90/2000JIS字形)。
- \Note MogaEx90系統が用いられる。
+ Mogaフォント(MogaEx;90\JSl 2000JIS字形)。
+ \Note \Pkg{pxchfon}の\>|moga-mobo-ex|(|jis2004|\>無効)と同じで、
+ MogaEx90系統が用いられる。
+\item |mogaN-90|\Means
+ Mogaフォント(Moga;90\JSl 2000JIS字形)。
+ \Note \Pkg{pxchfon}の\>|moga-mobo|(|jis2004|\>無効)と同じで、
+ Moga90系統が用いられる。
+ \Note |moga|\JSl|moga-90|\JSl|mogaN-90|\>の各プリセットは、%
+ |jis2004|\JSl|jis90|\>オプションが併用された場合にはそれに応じて
+ 適切な字形をもつフォントの方に切り替える。
+\item |ume|\Means
+ 梅フォント。
\item |kozuka-pro|\Means
小塚フォント(Pro版)。
\item |kozuka-pr6|\Means
小塚フォント(Pr6版)。
\item |kozuka-pr6n|\Means
- 小塚フォント(Pr6n版)。
+ 小塚フォント(Pr6N版)。
\item |hiragino-pro|\Means
ヒラギノフォント基本6書体セット(Pro/Std版)。
\item |hiragino-pron|\Means
@@ -134,56 +174,130 @@
\item |yu-win10|\Means
游書体(Windows~10搭載版)。%TODO
\item |yu-osx|\Means
- 游書体(Mac OS X搭載版)。
+ 游書体(macOS搭載版)。
\item |sourcehan|\Means
Source Han Serif(源ノ明朝)+ Source Han Sans(源ノ角ゴシック)、
- 非サブセット版%TODO
- \footnote{つまり、地域別サブセットOTF版以外のもの。
- 後掲の |noto| も同じ。}。
+ 非サブセット版。%TODO
+ \Note つまり地域別サブセットOTF版以外のもの。
+ フォント名での指定であるため、%
+ \Pkg{pxchfon}の\>|sourcehan|\>と\>|sourcehan-otc|\>の両方と
+ 等価である。
+\item |sourcehan-jp|\Means
+ Source Han Serif + Source Han Sans、
+ 日本用地域別サブセット版。
\item |noto|\Means
Noto Serif CJK + Noto Sans CJK、
非サブセット版。
+ \Note |sourcehan|\>と同様の補足事項が当てはまる。
+ \Pkg{pxchfon}の\>|noto|\>と\>|noto-otc|\>の両方と等価。
+\item |noto-jp|\Means
+ Noto Serif JP + Noto Sans JP、
+ 日本用地域別サブセット版。
+\item |haranoaji|\Means
+ 原ノ味フォント。
+\end{itemize}
+
+例えば\>|haranoaji|\>プリセットについて説明すると、%
+|threeweight|\>が有効の場合は以下の設定
+(3ウェイト)が行われる%
+\footnote{実際には、状況に応じてフォント名の代わりにファイル名
+(\texttt{*.otf})での指定に切り替わる。}
+:
+\begin{quote}\small\begin{verbatim}
+\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiMincho-Bold,
+ FontFace={l}{n}{HaranoAjiMincho-Light}]
+\setsansfont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold,
+ FontFace={eb}{n}{HaranoAjiGothic-Heavy}]
+\setmonofont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold,
+ FontFace={eb}{n}{HaranoAjiGothic-Heavy}]
+\end{verbatim}\end{quote}
+
+|threeweight|\>が無効の場合は以下の設定
+(中字・太字のみの2ウェイト)が行われる:
+\begin{quote}\small\begin{verbatim}
+\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiMincho-Bold]
+\setsansfont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold]
+\setmonofont{HaranoAjiGothic-Regular}[BoldFont=HaranoAjiGothic-Bold]
+\end{verbatim}\end{quote}
+
+|oneweight|\>オプション指定時は以下の設定
+(1ウェイトのみ)が行われる:
+\begin{quote}\small\begin{verbatim}
+\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiGothic-Medium]
+\setsansfont{HaranoAjiGothic-Medium}[BoldFont=HaranoAjiGothic-Medium]
+\setmonofont{HaranoAjiGothic-Medium}[BoldFont=HaranoAjiGothic-Medium]
+\end{verbatim}\end{quote}
+\Note 先の例と異なり明朝の太字がゴシックとなり、
+かつゴシックとして“|HaranoAjiGothic-Medium|”%
+(\Pkg{pxchfon}プリセットにおいて\>|\setgothicfont|\>に
+割り当てられているフォント)が使われることに注意。
+
+そして\>|bold|\>オプション指定時は以下の設定が行われる:
+\begin{quote}\small\begin{verbatim}
+\setmainfont{HaranoAjiMincho-Regular}[BoldFont=HaranoAjiGothic-Bold]
+\setsansfont{HaranoAjiGothic-Bold}[BoldFont=HaranoAjiGothic-Bold]
+\setmonofont{HaranoAjiGothic-Bold}[BoldFont=HaranoAjiGothic-Bold]
+\end{verbatim}\end{quote}
+
+\paragraph{特殊なプリセット}
+\mbox{}
+
+\begin{itemize}
+\item |nopreset|\Means
+ メイン設定を何も行わない。
+ \Note フォントの設定は自分で行うが、それでも何らかの理由で
+ \Pkg{zxjafont}パッケージを読み込みたいという場合に
+ 用いることが想定されている。
\end{itemize}
-\paragraph{ptex-fontmaps互換のオプション}
-
-\Pkg{ptex-fontmaps}のプリセット名を別名として用意した。
+\paragraph{他パッケージとの互換用のプリセット}
+\mbox{}
\begin{itemize}
\item |kozuka|\Means
- |kozuka-pro| の別名。%TODO
+ |kozuka-pro| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
\item |morisawa|\Means
- |morisawa-pro| の別名。%TODO
+ |morisawa-pro| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+\item |moga-mobo|\Means
+ |mogaN-90| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+\item |moga-mobo-ex|\Means
+ |moga-90| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+ \Note 1.2版より、Moga系プリセットが\>|jis90|\JSl|jis2004|\>での
+ 字体指定に従うようになったため、
+ 他のパッケージの動作との互換がより高い動作に変更された。
+ 現在は既定で90JIS字形になることに注意。
+\item |noto-otf|\Means
+ |noto| の別名。
+ (\Pkg{luatexja-preset}でのプリセット名。)
+\item |hiragino|\Means
+ |hiragino-pro| の別名。
+ (\Pkg{ptex-fontmaps}でのプリセット名。)
+ \Note 0.6版で追加。
+ 0.4版以前では |hiragino| が別の設定を指していたが、
+ これは0.5版で廃止された。
\end{itemize}
-\Note なお、|hiragino-pro| と同義の\Pkg{ptex-fontmaps}の
-プリセット名は |hiragino| であるが、本パッケージの |hiragino| は
-旧版の非推奨の設定であり |hiragino-pro| とは異なる。
+\paragraph{廃止されたプリセット}
-\paragraph{旧版の設定}
+0.2a版以前で用意されていた次のプリセット設定は、
+0.5版において廃止された。
+現在は指定するとエラーが発生する。
-v0.2a版以前で用意されていたメイン設定で、現在では非推奨である。
+\Note ただし |hiragino| については現在では |hiragino-pro| の別名と
+解釈される。
-\Note これらは{\TeX} Live 2019のリリース時を目途にして
-\strong{廃止予定}である。
-
-\begin{itemize}
-\item |kozuka4|\Means
- 小塚フォント(Pro版)の単ウェイト使用。
-\item |kozuka6|\Means
- 小塚フォント(Pr6版)の単ウェイト使用。
-\item |kozuka6n|\Means
- 小塚フォント(Pr6n版)の単ウェイト使用。
-\item |hiragino|\Means
- ヒラギノフォント(Pro版)の単ウェイト使用。
-\item |ms-dx|\Means |ms-hg| の別名。
-\item |ipa-dx|\Means |ipa-hg| の別名。
-\item |hiragino-dx|\Means |hiragino-pro| の別名。
-\item |moga-mobo|\Means |moga| の別名。※\Pkg{pxchfon}互換用。
-\end{itemize}
+\begin{quote}
+|kozuka4|、|kozuka6|、|kozuka6n|、|hiragino|、
+|ms-dx|、|ipa-dx|、|hiragino-dx|
+\end{quote}
%-------------------
-\subsection{サブ設定}
+\subsection{サブ設定のオプション}
+\label{ssec:Sub-Option}
\Pkg{fontspec}では使用するフォントを |\newfontfamily| 命令で
増やすことができる。
@@ -218,9 +332,9 @@
\end{itemize}
\item |mobo-90|\Means
-Moboフォント(90/2000JIS字形)を使う設定。
+Moboフォント(90\JSl 2000JIS字形)を使う設定。
\begin{itemize}
-\item |\mobofamily|\Means Moboフォント(90/2000JIS字形)
+\item |\mobofamily|\Means Moboフォント(90\JSl 2000JIS字形)
\end{itemize}
\item |maruberi|\Means
@@ -229,49 +343,104 @@
\item |\mmgfamily|\Means モトヤLマルベリ3等幅
\end{itemize}
\end{itemize}
-\Note \Pkg{fontspec}では取り扱うフォントのウェイトを通常(|\mdseries|)
-と太字(|\bfseries|)の2つに制限している。
-多くのOSでの扱いに合わせているようである。
%-------------------
\subsection{その他のオプション}
+\label{ssec:Other-Option}
\begin{itemize}
\item |oneweight|\Means
-複数ウェイト用のメイン設定を単ウェイトとして用いる。
-\Note \Pkg{pxchfon}の説明書において |\setminchofont|
-と |\setgothicfont| で設定されているウェイトのフォント
-が用いられる。
+多ウェイト用のプリセットを単ウェイトとして用いる。
+\Note \Pkg{pxchfon}のマニュアルのプリセットの記述に
+おいて\>|\setminchofont|\>と\>|\setgothicfont|\>で設定されている
+ウェイトのフォントが用いられる。
+\item |nooneweight|(既定)\Means
+|oneweight|\>の否定。
+
+\item |threeweight|(既定)\Means
+多ウェイト用プリセットを使う場合に3ウェイトを利用できるようにする。
+\item |nothreeweight|\Means
+|threeweight|\>の否定。
+多ウェイト用プリセットは2ウェイトのみ使える。
+\Note |(no)threeweight|\>は1.0版で追加された。
+\Note 既定は\>|threeweight|\>であるが、使用中の\Pkg{fontspec}の版が
+古くて追加ウェイトに対応できない場合は\>|nothreeweight|\>が既定になる。
+
+\item |bold|\Means
+|oneweight|\>と同じく多ウェイト用プリセットを単ウェイトとして用いるが、
+この際のゴシック体のフォントとして太字ウェイトに相当するものを用いる。
+\Note \Pkg{pxchfon}のプリセットでの\>|\setminchofont|\>%
+と\>|\setboldgothicfont|\>のフォントが用いられる。
+\Note \Pkg{luatexja-preset}とは異なり、|bold|\>の指定自体が
+単ウェイト設定を強制する。
+|bold|\>と\>|oneweight|\>を同時に指定した場合は\>|bold|\>が優先する。
+\item |nobold|(既定)\Means
+|bold|\>の否定。
\item |prop|\Means
プロポーショナル幅のフォントを用いる。
-例えば、「IPA明朝」の代わりに「IPA P明朝」、
+例えば「IPA明朝」の代わりに「IPA P明朝」、
「HGS行書体」の代わりに「HGP行書体」を指定する。
既定で用いるのは等幅のフォントだが、
「欧文のみプロポーショナル」の変種(HGフォントの場合「HGS~」名称のもの)
-がある場合はそれを優先させている。
-\Note \Pkg{zxjatype}を用いる場合は、
-和文は等幅フォントを用いることが前提なので、
-このオプションは指定できない(エラーになる)。
+がある場合はそれを優先させる。
+\Note 1.1版より、\Pkg{xeCJK}\JSl\Pkg{zxjatype}併用時でも\>|prop|\>が
+指定できるようになった。
+\item |noprop|(既定)\Means
+|prop|\>の否定。
+(和文が)等幅のフォントを用いる。
\item |scale=|\Meta{実数}\Means
-スケール値(\Pkg{fontspec}の |Scale| 属性の値)。
+和文スケール値(\Pkg{fontspec}の |Scale| 属性の値)。
既定値は、\Pkg{BXjscls}の文書クラスおよび
\Pkg{zxjatype}パッケージで指定されている場合はその値、
なければ1となる。
-\item |90jis|\Means
+\item |jis90|\JSl|90jis|\Means
90JIS字形(2000JIS字形)の使用を指定する。
-
-\item |jis2004|\Means
+\item |jis2004|\JSl|2004jis|\Means
2004JIS字形の使用を指定する。
+\item |nojisshape|(既定)\Means
+特定のJIS字形の使用の指定を行わない。
+
+\item |expert|\Means
+横組専用仮名字形を(可能であれば)利用する。
+\Note \Pkg{luatexja-preset}の\>|expert|\>とは異なり、
+ルビ用字形は未サポート。
+
+\item |ignorejatype|\Means
+たとえ\Pkg{xeCJK}\JSl\Pkg{zxjatype}が読み込まれていたとしても
+それらを無視して、「和文欧文の区別がない」前提の動作を行う。
+\Note この場合「プリセットで指定した日本語フォントが\JEmph{欧文のみ}に
+適用される」という奇妙な動作になる。
+有用性はほぼないと思われるが念のため用意している。
+\item |noignorejatype|(既定)\Means
+|ignorejatype|\>の否定。
+\Note |(no)ignorejatype|\>は1.0版で追加された。
\item |feature={|\Meta{属性リスト}|}|\Means
-このパッケージで指定されるフォント全体に通用する
+このパッケージで指定されるフォント全てに通用する
\Pkg{fontspec}の属性の指定。
+既定値は空。
\end{itemize}
+\paragraph{他パッケージとの互換用のオプション}
+\Pkg{luatexja-preset}との互換のためのもの。
+
+\begin{itemize}
+\item |deluxe|\JSl|nodeluxe|\Means
+ それぞれ |nooneweight|\JSl|oneweight| の別名。
+\item |match|\JSl|fontspec|\Means
+ これらの機能は“常に有効”と考えられるため、黙って無視される。
+\item |nfssonly|\Means
+ 非サポートのため警告が出て無視される。
+\item |noembed|\Means
+ \ref{ssec:Main-Option}で述べた通り、非埋込の設定はサポートできない
+ ので、警告が出た上で、|nopreset|\>プリセットが指定されたものと
+ 見なされる。
+\end{itemize}
+
%===========================================================
\end{document}
%% EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zxjafont.doc.tlpobj new/tlpkg/tlpobj/zxjafont.doc.tlpobj
--- old/tlpkg/tlpobj/zxjafont.doc.tlpobj 2019-02-28 04:19:21.000000000 +0100
+++ new/tlpkg/tlpobj/zxjafont.doc.tlpobj 2020-02-25 01:54:57.000000000 +0100
@@ -1,9 +1,9 @@
name zxjafont.doc
category Package
-revision 47613
+revision 53884
shortdesc doc files of zxjafont
relocated 1
-docfiles size=41
+docfiles size=51
RELOC/doc/latex/zxjafont/LICENSE
RELOC/doc/latex/zxjafont/README-ja.md
RELOC/doc/latex/zxjafont/README.md
++++++ zxjafont.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zxjafont/zxjafont.sty new/tex/latex/zxjafont/zxjafont.sty
--- old/tex/latex/zxjafont/zxjafont.sty 2018-05-05 00:10:36.000000000 +0200
+++ new/tex/latex/zxjafont/zxjafont.sty 2020-02-24 15:23:17.000000000 +0100
@@ -1,7 +1,7 @@
%%
%% This is file 'zxjafont.sty'.
%%
-%% Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2009-2020 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,54 +10,109 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{zxjafont}[2018/05/03 v0.4-pre]
+\ProvidesPackage{zxjafont}[2020/02/24 v1.2]
\def\zxjf@pkgname{zxjafont}
%% preparation
\RequirePackage{ifxetex}\RequireXeTeX
\providecommand{\bxDebug}[1]{}
+%%<+> \zxjafontFeature
+% The default features for fonts declared by this package.
+% (Used if defined.)
+
%--------------------------------------- general
%% packages
\RequirePackage{fontspec}
\RequirePackage{keyval}
-\RequirePackage{etoolbox}
+\RequirePackage{etoolbox}[2011/01/03]% v2.1
%% errors
\def\zxjf@err@ivval#1#2{%
\PackageError\zxjf@pkgname
{Invalid value '#2' for option #1}\@ehc}
+%% switch 'fontspec@mw'
+\newif\ifzxjf@fontspec@mw
+\@ifpackagelater{fontspec}{2014/06/01}{\zxjf@fontspec@mwtrue}{}% v2.4
+
+%% \zxjf@cond\ifXXX...\fi{<true>}{<false>}
+\@gobbletwo\if\if \def\zxjf@cond#1\fi{%
+ #1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+
+%% \zxjf@with@cs\CS{<csname>}
+\def\zxjf@with@cs#1#2{%
+ \expandafter#1\csname#2\endcsname}
+
+%% \zxjf@onlypreamble@def\CS
+\def\zxjf@onlypreamble@def#1{%
+ \@onlypreamble#1\def#1}
+%% \zxjf@onlypreamble@let\CS
+\def\zxjf@onlypreamble@let#1{%
+ \@onlypreamble#1\let#1}
+
+%% \if\zxjf@isvalid{<csname>}...\fi
+\def\zxjf@isvalid#1{%
+ \ifcsvoid{#1}{F}{T}T}
+
+%% \zxjf@if@font@exists
+\ifdefined\IfFontExistsTF
+ \let\zxjf@if@font@exists\IfFontExistsTF
+\else % fallback
+ \def\zxjf@if@font@exists#1{\@firstoftwo}
+\fi
+
%--------------------------------------- handle options
+%% errors
+\zxjf@onlypreamble@def\zxjf@warn@niopt#1{%
+ \PackageWarningNoLine\zxjf@pkgname
+ {Option '#1' is not implemented}}
+
%% constants
\chardef\zxjf@cjkshape@@none=0
\chardef\zxjf@cjkshape@@xc=1 % 90jis
\chardef\zxjf@cjkshape@@mmiv=2 % jis2004
+\chardef\zxjf@jatype@@none=0
+\chardef\zxjf@jatype@@xeCJK=1
+\chardef\zxjf@jatype@@zxjatype=2
%% variables
\let\zxjf@main@preset\relax
\let\zxjf@sub@preset\@empty
\newif\ifzxjf@prop
\newif\ifzxjf@oneweight
+\newif\ifzxjf@threeweight
+\newif\ifzxjf@bold
\let\zxjf@cjkshape\zxjf@cjkshape@@none
\let\zxjf@scale\relax
-\let\zxjf@feat\@empty
-\newif\ifzxjf@zxjatype
+\let\zxjf@feature\@empty
+\let\zxjf@jatype\zxjf@jatype@@none
+\newif\ifzxjf@ignore@jatype
+\newif\ifzxjf@expert
+
+%% default for 'threeweight'
+\ifzxjf@fontspec@mw
+ \zxjf@threeweighttrue
+\fi
-%% \zxjf@main@preset
-\def\zxjf@all@main@preset{%
+%% \zxjf@all@main@preset
+\zxjf@onlypreamble@def\zxjf@all@main@preset{%
+ nopreset,noembed,%
+ %(uniweight)
ms,ipa,ipaex,%
- ms-hg,ipa-hg,ipaex-hg,moga,moga-90,ume,%
+ %(multiweight)
+ ms-hg,ipa-hg,ipaex-hg,moga,moga-90,mogaN-90,ume,%
kozuka-pro,kozuka-pr6,kozuka-pr6n,hiragino-pro,hiragino-pron,%
morisawa-pro,morisawa-pr6n,yu-win,yu-win10,yu-osx,%
- sourcehan,sourcehan-jp,noto,noto-jp,%
- kozuka4,kozuka6,kozuka6n,hiragino,%
- ms-dx,ipa-dx,hiragino-dx,moga-mobo}
+ sourcehan,sourcehan-jp,noto,noto-jp,haranoaji,%
+ moga-mobo,moga-mobo-ex,%
+ %(alias)
+ kozuka,morisawa,moga-mobo-ex,noto-otf,hiragino}
-%% \zxjf@main@sub@preset
-\def\zxjf@all@sub@preset{%
+%% \zxjf@all@sub@preset
+\zxjf@onlypreamble@def\zxjf@all@sub@preset{%
hg,hiraginomg-pro,hiraginomg-pron,mobo,mobo-90,maruberi,%
hiraginomg}
@@ -65,32 +120,60 @@
\def\zxjf@do#1{\DeclareOption{#1}{\def\zxjf@main@preset{#1}}}
\@for\zxjf@x:=\zxjf@all@main@preset\do{%
\expandafter\zxjf@do\expandafter{\zxjf@x}}
-\def\zxjf@do#1{\DeclareOption{#1}{\zxjf@add@sub@preset{#1}}}
+\def\zxjf@do#1{\DeclareOption{#1}{\appto\zxjf@sub@preset{#1,}}}
\@for\zxjf@x:=\zxjf@all@sub@preset\do{%
\expandafter\zxjf@do\expandafter{\zxjf@x}}
-\def\zxjf@add@sub@preset#1{%
- \edef\zxjf@sub@preset{\zxjf@sub@preset#1,}}
% 'prop'
\DeclareOption{prop}{\zxjf@proptrue}
+\DeclareOption{noprop}{\zxjf@propfalse}
% 'oneweight'
\DeclareOption{oneweight}{\zxjf@oneweighttrue}
+\DeclareOption{nooneweight}{\zxjf@oneweightfalse}
+\DeclareOption{nodeluxe}{\zxjf@oneweighttrue}
+\DeclareOption{deluxe}{\zxjf@oneweightfalse}
+% 'threeweight'
+\DeclareOption{threeweight}{\zxjf@threeweighttrue}
+\DeclareOption{nothreeweight}{\zxjf@threeweightfalse}
+% 'bold'
+\DeclareOption{bold}{\zxjf@boldtrue}
+\DeclareOption{nobold}{\zxjf@boldfalse}
% '90jis'/'jis2004'
+\DeclareOption{jis90}{\let\zxjf@cjkshape\zxjf@cjkshape@@xc}
\DeclareOption{90jis}{\let\zxjf@cjkshape\zxjf@cjkshape@@xc}
\DeclareOption{jis2004}{\let\zxjf@cjkshape\zxjf@cjkshape@@mmiv}
+\DeclareOption{2004jis}{\let\zxjf@cjkshape\zxjf@cjkshape@@mmiv}
+\DeclareOption{nojisshape}{\let\zxjf@cjkshape\zxjf@cjkshape@@none}
+% 'ignorejatype'
+\DeclareOption{ignorejatype}{\zxjf@ignore@jatypetrue}
+\DeclareOption{noignorejatype}{\zxjf@ignore@jatypefalse}
+% 'expert'
+\DeclareOption{expert}{\zxjf@experttrue}
+% dummy options for compatibility with luatexja-preset
+\DeclareOption{match}{}% xeCJK always work as 'match' is on
+\DeclareOption{fontspec}{}% always on
+\DeclareOption{nfssonly}{\zxjf@warn@niopt{nfssonly}}
+
+% abolished presets
+\zxjf@onlypreamble@def\zxjf@err@abpre#1{%
+ \PackageError\zxjf@pkgname
+ {The old preset '#1' is *abolished*}{\@ehc}}
+\@for\zxjf@x:={%
+ kozuka4,kozuka6,kozuka6n,ms-dx,ipa-dx,hiragino-dx%
+}\do{\DeclareOption{\zxjf@x}{\zxjf@err@abpre{\CurrentOption}}}
%% options using keyval
-\DeclareOption*{\def\zxjf@nxt{\setkeys{zxjf}}%
- \expandafter\zxjf@nxt\expandafter{\CurrentOption}}
+\DeclareOption*{\def\zxjf@do{\setkeys{zxjf}}%
+ \expandafter\zxjf@do\expandafter{\CurrentOption}}
% 'scale=<real>'
\define@key{zxjf}{scale}{\def\zxjf@scale{#1}}
% 'feature=<text>'
-\define@key{zxjf}{feature}{\def\zxjf@feat{#1}}
+\define@key{zxjf}{feature}{\def\zxjf@feature{#1}}
%% dispatch
-\let\@org@use@ption\@use@ption
-\def\@use@ption{\csname ds@\CurrentOption \endcsname}
+\zxjf@onlypreamble@let\zxjf@org@use@ption\@use@ption
+\def\@use@ption{\csname ds@\CurrentOption \endcsname}% FIXME
\ProcessOptions*
-\let\@use@ption\@org@use@ption
+\let\@use@ption\zxjf@org@use@ption
%% preset must be given
\ifx\zxjf@main@preset\relax
@@ -100,29 +183,37 @@
\space\space\zxjf@all@main@preset}
\expandafter\endinput\fi\relax
-%% detect bxjatype
-\@ifpackageloaded{zxjatype}{\zxjf@zxjatypetrue}{}
-\AtBeginDocument{%
- \unless\ifzxjf@zxjatype
- \@ifpackageloaded{zxjatype}{%
- \PackageError\zxjf@pkgname
- {zxjatype must be loaded before me}\@ehc
- }{}%
- \fi}
-\ifzxjf@zxjatype\ifzxjf@prop
+%% detect zxjatype/xeCJK
+\unless\ifzxjf@ignore@jatype
+ \@ifpackageloaded{xeCJK}{\let\zxjf@jatype\zxjf@jatype@@xeCJK}{}
+ \@ifpackageloaded{zxjatype}{\let\zxjf@jatype\zxjf@jatype@@zxjatype}{}
+ \ifnum\zxjf@jatype=\zxjf@jatype@@none
+ \AtBeginDocument{%
+ \@ifpackageloaded{xeCJK}{%
+ \PackageError\zxjf@pkgname
+ {zxjatype/xeCJK must be loaded before zxjafont}\@ehc
+ }{}%
+ }
+ \fi
+\fi
+
+%% check for 'threeweight'
+\unless\ifzxjf@fontspec@mw\ifzxjf@threeweight
\PackageError\zxjf@pkgname
- {Option 'prop' cannot be used with zxjatype}\@ehc
- \zxjf@propfalse
+ {Option 'threeweight' cannot be used, bebause\MessageBreak
+ your 'fontspec' is too old}
+ {\@ehc}
+ \zxjf@threeweightfalse
\fi\fi
%% decide scale factor
\ifx\zxjf@scale\relax
- % If zxjatype is used, try \JaFontScale, \zxjt@scale,
+ % If zxjatype is used, try \zxjatypeJaScale, \zxjt@scale,
% and \__zxjt_scale_tl.
- \ifzxjf@zxjatype
- \ifdefined\JaFontScale \let\zxjf@scale\JaFontScale
- \else\ifdefined\zxjt@scale \let\zxjf@scale\zxjt@scale
- \else\ifcsname __zxjt_scale_tl\endcsname
+ \ifnum\zxjf@jatype=\zxjf@jatype@@zxjatype
+ \ifdefined\zxjatypeJaScale \let\zxjf@scale\zxjatypeJaScale
+ \else\if\zxjf@isvalid{zxjt@scale}\let\zxjf@scale\zxjt@scale
+ \else\if\zxjf@isvalid{__zxjt_scale_tl}%
\letcs\zxjf@scale{__zxjt_scale_tl}
\fi\fi\fi
\fi
@@ -137,253 +228,285 @@
\fi
\fi
-%% resolve CJKshape
-\edef\zxjf@feat{%
+%% \zxjf@whole@feature
+% All fontspec options including scale.
+\edef\zxjf@whole@feature{%
+ Scale=\zxjf@scale
+ % CJKShape
\ifcase\zxjf@cjkshape % none
- \or CJKShape=JIS1990,% 90jis
- \or CJKShape=JIS2004,% jis2004
+ \or ,CJKShape=JIS1990% 90jis
+ \or ,CJKShape=JIS2004% jis2004
\fi
- \zxjf@feat}
-
-%% \zxjf@xfeat
-% All fontspec options including scale.
-\edef\zxjf@xfeat{Scale=\zxjf@scale,\zxjf@feat}
-\bxDebug{zxjafont>>scale=\zxjf@scale/feat={\zxjf@feat}/%
+ \ifzxjf@expert
+ ,Style=HorizontalKana%
+ \fi
+ \ifdefined\zxjafontFeature
+ ,\expandonce\zxjafontFeature
+ \fi
+ \unless\ifx\zxjf@feature\@empty
+ ,\expandonce\zxjf@feature
+ \fi}
+\bxDebug{zxjafont>>scale=\zxjf@scale/feat={\zxjf@whole@feature}/%
preset=\zxjf@main@preset/\zxjf@sub@preset}
%--------------------------------------- font setup helpers
+%% \zxjf@font@set
+\zxjf@onlypreamble@def\zxjf@font@set#1#2{%
+ \noexpand#1[\expandonce\zxjf@whole@feature,#2]}
+%% \zxjf@newfamily@gen\CSnewjafamily
+\@onlypreamble\zxjf@newfamily@gen\edef\zxjf@newfamily@gen{%
+ \noexpand\zxjf@newfamily@gen@a
+ {\expandonce\zxjf@feature}{\expandonce\zxjf@whole@feature}}
+\zxjf@onlypreamble@def\zxjf@newfamily@gen@a#1#2#3{%
+ \def\zxjf@newfamily##1##2##3{%
+ \csedef{##1family}{%
+ \expandonce{\csname a##1family\endcsname}\noexpand\CJKfamily{##1}}%
+ \zxjf@with@cs\newfontfamily{a##1family}[#1,##2]{##3}%
+ #3{##1}[#2,##2]{##3}}}
+
%% \zxjf@setmainfont{<attributes>}{}, etc.
-\ifzxjf@zxjatype
-\def\zxjf@setmainfont#1{\setjamainfont[\zxjf@xfeat,#1]}
-\def\zxjf@setsansfont#1{\setjasansfont[\zxjf@xfeat,#1]}
-\def\zxjf@setmonofont#1{\setjamonofont[\zxjf@xfeat,#1]}
-\def\zxjf@newfamily#1#2#3{%
- \csedef{#1family}{%
- \expandonce{\csname a#1family\endcsname}\noexpand\CJKfamily{#1}}%
- \expandafter\newfontfamily\csname a#1family\endcsname[\zxjf@feat,#2]{#3}%
- \setjafamilyfont{#1}[\zxjf@xfeat,#2]{#3}}
+\ifnum\zxjf@jatype=\zxjf@jatype@@xeCJK
+\edef\zxjf@setmainfont#1{\zxjf@font@set\setCJKmainfont{#1}}
+\edef\zxjf@setsansfont#1{\zxjf@font@set\setCJKsansfont{#1}}
+\edef\zxjf@setmonofont#1{\zxjf@font@set\setCJKmonofont{#1}}
+\zxjf@newfamily@gen{\setCJKfamilyfont}
+\else\ifnum\zxjf@jatype=\zxjf@jatype@@zxjatype
+\edef\zxjf@setmainfont#1{\zxjf@font@set\setjamainfont{#1}}
+\edef\zxjf@setsansfont#1{\zxjf@font@set\setjasansfont{#1}}
+\edef\zxjf@setmonofont#1{\zxjf@font@set\setjamonofont{#1}}
+\zxjf@newfamily@gen{\setjafamilyfont}
\else
-\def\zxjf@setmainfont#1{\setmainfont[\zxjf@xfeat,#1]}
-\def\zxjf@setsansfont#1{\setsansfont[\zxjf@xfeat,#1]}
-\def\zxjf@setmonofont#1{\setmonofont[\zxjf@xfeat,#1]}
-\def\zxjf@newfamily#1#2{%
- \expandafter\newfontfamily\csname #1family\endcsname[\zxjf@xfeat,#2]}
-\fi
+\edef\zxjf@setmainfont#1{\zxjf@font@set\setmainfont{#1}}
+\edef\zxjf@setsansfont#1{\zxjf@font@set\setsansfont{#1}}
+\edef\zxjf@setmonofont#1{\zxjf@font@set\setmonofont{#1}}
+\edef\zxjf@newfamily#1#2{%
+ \unexpanded{\zxjf@with@cs\newfontfamily}{#1family}%
+ [\expandonce\zxjf@whole@feature,#2]}
+\fi\fi
%--------------------------------------- preset japanese font mappings
%% \zxjf@declare@preset{<name>}{<text>}, etc.
-\def\zxjf@declare@preset#1{%
- \expandafter\zxjf@decl@preset@a\csname zxjf@the@preset@#1\endcsname}
-\def\zxjf@decl@preset@a#1{\@onlypreamble#1\def#1}
+\zxjf@onlypreamble@def\zxjf@declare@preset#1{%
+ \zxjf@with@cs\zxjf@onlypreamble@def{zxjf@the@preset@#1}}
\zxjf@declare@preset{}{}
-\@onlypreamble\zxjf@uniweight
-\def\zxjf@uniweight#1#2{%
- \zxjf@uniweight@opt{#1}{#2}{}}
-\@onlypreamble\zxjf@uniweight@opt
-\def\zxjf@uniweight@opt#1#2#3{%
+\ifzxjf@fontspec@mw %TODO: temporary fix
+\zxjf@onlypreamble@def\zxjf@uniweight#1#2#3{%
+ \zxjf@setmainfont{#3,FontFace={bx}{n}{#2},BoldFont=#2}{#1}%
+ \zxjf@setsansfont{#3,FontFace={bx}{n}{#2},BoldFont=#2}{#2}%
+ \zxjf@setmonofont{#3,FontFace={bx}{n}{#2},BoldFont=#2}{#2}}
+\zxjf@onlypreamble@def\zxjf@multiweight#1#2#3#4#5#6#7#8{%
+ \ifzxjf@bold
+ \zxjf@setmainfont{#8,FontFace={bx}{n}{#5},BoldFont=#5}{#2}%
+ \zxjf@setsansfont{#8,FontFace={bx}{n}{#5},BoldFont=#5}{#5}%
+ \zxjf@setmonofont{#8,FontFace={bx}{n}{#5},BoldFont=#5}{#5}%
+ \else\ifzxjf@oneweight
+ \zxjf@setmainfont{#8,FontFace={bx}{n}{#7},BoldFont=#7}{#2}%
+ \zxjf@setsansfont{#8,FontFace={bx}{n}{#7},BoldFont=#7}{#7}%
+ \zxjf@setmonofont{#8,FontFace={bx}{n}{#7},BoldFont=#7}{#7}%
+ \else\ifzxjf@threeweight
+ \zxjf@setmainfont{#8,FontFace={bx}{n}{#3},BoldFont=#3,
+ FontFace={l}{n}{#1}}{#2}%
+ \zxjf@setsansfont{#8,FontFace={bx}{n}{#5},BoldFont=#5,
+ FontFace={eb}{n}{#6}}{#4}%
+ \zxjf@setmonofont{#8,FontFace={bx}{n}{#5},BoldFont=#5,
+ FontFace={eb}{n}{#6}}{#4}%
+ \else
+ \zxjf@setmainfont{#8,FontFace={bx}{n}{#3},BoldFont=#3}{#2}%
+ \zxjf@setsansfont{#8,FontFace={bx}{n}{#5},BoldFont=#5}{#4}%
+ \zxjf@setmonofont{#8,FontFace={bx}{n}{#5},BoldFont=#5}{#4}%
+ \fi\fi\fi}
+\else
+\zxjf@onlypreamble@def\zxjf@uniweight#1#2#3{%
\zxjf@setmainfont{#3,BoldFont=#2}{#1}%
- \zxjf@setsansfont{#3}{#2}%
- \zxjf@setmonofont{#3}{#2}}
-\@onlypreamble\zxjf@multiweight
-\def\zxjf@multiweight#1#2#3#4#5{%
- \zxjf@multiweight@opt{#1}{#2}{#3}{#4}{#5}{}}
-\@onlypreamble\zxjf@multiweight@opt
-\def\zxjf@multiweight@opt#1#2#3#4#5#6{%
- \ifzxjf@oneweight
- \zxjf@setmainfont{#6,BoldFont=#5}{#1}%
- \zxjf@setsansfont{#6}{#5}%
- \zxjf@setmonofont{#6}{#5}%
+ \zxjf@setsansfont{#3,BoldFont=#2}{#2}%
+ \zxjf@setmonofont{#3,BoldFont=#2}{#2}}
+\zxjf@onlypreamble@def\zxjf@multiweight#1#2#3#4#5#6#7#8{%
+ \ifzxjf@bold
+ \zxjf@setmainfont{#8,BoldFont=#5}{#2}%
+ \zxjf@setsansfont{#8,BoldFont=#5}{#5}%
+ \zxjf@setmonofont{#8,BoldFont=#5}{#5}%
+ \else\ifzxjf@oneweight
+ \zxjf@setmainfont{#8,BoldFont=#7}{#2}%
+ \zxjf@setsansfont{#8,BoldFont=#7}{#7}%
+ \zxjf@setmonofont{#8,BoldFont=#7}{#7}%
+ \else\ifzxjf@threeweight
+ \zxjf@setmainfont{#8,BoldFont=#3,
+ FontFace={l}{n}{#1}}{#2}%
+ \zxjf@setsansfont{#8,BoldFont=#5,
+ FontFace={eb}{n}{#6}}{#4}%
+ \zxjf@setmonofont{#8,BoldFont=#5,
+ FontFace={eb}{n}{#6}}{#4}%
\else
- \zxjf@setmainfont{#6,BoldFont=#2}{#1}%
- \zxjf@setsansfont{#6,BoldFont=#4}{#3}%
- \zxjf@setmonofont{#6,BoldFont=#4}{#3}%
- \fi}
+ \zxjf@setmainfont{#8,BoldFont=#3}{#2}%
+ \zxjf@setsansfont{#8,BoldFont=#5}{#4}%
+ \zxjf@setmonofont{#8,BoldFont=#5}{#4}%
+ \fi\fi\fi}
+\fi
%% \zxjf@declare@preset@with@prop{<name>}{<text>}
-\def\zxjf@declare@preset@with@prop#1#2{%
+\zxjf@onlypreamble@def\zxjf@declare@preset@with@prop#1#2{%
\zxjf@declare@preset{#1}{#2{RawFeature=-palt;-kern}}%
- \zxjf@declare@preset{#1/prop}{#2{RawFeature=+palt;+Wkern}}}
+ \zxjf@declare@preset{#1/prop}{#2{RawFeature=+palt;+kern}}}
%% \zxjf@declare@preset@alias{<name1>}{<name2>}
-\def\zxjf@declare@preset@alias#1#2{%
+\zxjf@onlypreamble@def\zxjf@declare@preset@alias#1#2{%
+ \zxjf@with@cs\@onlypreamble{zxjf@the@preset@#1}%
\csletcs{zxjf@the@preset@#1}{zxjf@the@preset@#2}}
%% \zxjf@declare@preset@alias@with@prop{<name1>}{<name2>}
-\def\zxjf@declare@preset@alias@with@prop#1#2{%
+\zxjf@onlypreamble@def\zxjf@declare@preset@alias@with@prop#1#2{%
\zxjf@declare@preset@alias{#1}{#2}%
\zxjf@declare@preset@alias{#1/prop}{#2/prop}}
+%% \zxjf@declare@preproc{<name>}{<text>}
+\zxjf@onlypreamble@def\zxjf@declare@preproc#1{%
+ \zxjf@with@cs\zxjf@onlypreamble@def{zxjf@the@preproc@#1}}
+%% \zxjf@declare@preproc@alias{<name1>}{<name2>}
+\zxjf@onlypreamble@def\zxjf@declare@preproc@alias#1#2{%
+ \zxjf@with@cs\@onlypreamble{zxjf@the@preproc@#1}%
+ \csletcs{zxjf@the@preproc@#1}{zxjf@the@preproc@#2}}
+
%% \zxjf@use@preset{<name>}
-\def\zxjf@use@preset#1{%
- \undef\zxjf@nxt
- \ifzxjf@prop \letcs\zxjf@nxt{zxjf@the@preset@#1/prop}\fi
- \unless\ifdefined\zxjf@nxt \letcs\zxjf@nxt{zxjf@the@preset@#1}\fi
- \zxjf@nxt}
+\zxjf@onlypreamble@def\zxjf@use@preset#1{%
+ \csuse{zxjf@the@preproc@#1}%
+ \undef\zxjf@do
+ \ifzxjf@prop \letcs\zxjf@do{zxjf@the@preset@#1/prop}\fi
+ \unless\ifdefined\zxjf@do \letcs\zxjf@do{zxjf@the@preset@#1}\fi
+ \zxjf@do}
%% definitions of main preset mappings
+\zxjf@declare@preset{nopreset}{}
+\zxjf@declare@preset{noembed}{%
+ \PackageWarningNoLine\zxjf@pkgname
+ {Preset 'noembed' is not supported, because\MessageBreak
+ XeTeX does not support non-embedded fonts,\MessageBreak
+ fallback to preset 'nopreset'}}
\zxjf@declare@preset{ms}{%
- \zxjf@uniweight{MS-Mincho}{MS-Gothic}}
+ \zxjf@uniweight{MS-Mincho}{MS-Gothic}{}}
\zxjf@declare@preset{ms/prop}{%
- \zxjf@uniweight{MS-PMincho}{MS-PGothic}}
+ \zxjf@uniweight{MS-PMincho}{MS-PGothic}{}}
\zxjf@declare@preset{ms-hg}{%
- \zxjf@multiweight{MS-Mincho}{HGMinchoE}%
- {HGGothicM}{HGGothicE}{MS-Gothic}}
+ \zxjf@multiweight{MS-Mincho}{MS-Mincho}{HGMinchoE}%
+ {HGGothicM}{HGGothicE}{hgrsgu.ttc}{MS-Gothic}{}}
\zxjf@declare@preset{ms-hg/prop}{%
- \zxjf@multiweight{MS-PMincho}{HGPMinchoE}%
- {HGPGothicM}{HGGothicE}{MS-PGothic}}
+ \zxjf@multiweight{MS-PMincho}{MS-PMincho}{HGPMinchoE}%
+ {HGPGothicM}{HGGothicE}{hgrsgu.ttc}{MS-PGothic}{}}
\zxjf@declare@preset{ipa}{%
- \zxjf@uniweight{IPAMincho}{IPAGothic}}
+ \zxjf@uniweight{IPAMincho}{IPAGothic}{}}
\zxjf@declare@preset{ipa/prop}{%
- \zxjf@uniweight{IPAPMincho}{IPAPGothic}}
+ \zxjf@uniweight{IPAPMincho}{IPAPGothic}{}}
\zxjf@declare@preset{ipa-hg}{%
- \zxjf@multiweight{IPAMincho}{HGMinchoE}%
- {HGGothicM}{HGGothicE}{IPAGothic}}
+ \zxjf@multiweight{IPAMincho}{IPAMincho}{HGMinchoE}%
+ {HGGothicM}{HGGothicE}{hgrsgu.ttc}{IPAGothic}{}}
\zxjf@declare@preset{ipa-hg/prop}{%
- \zxjf@multiweight{IPAPMincho}{HGPMinchoE}%
- {HGPGothicM}{HGGothicE}{IPAPGothic}}
+ \zxjf@multiweight{IPAPMincho}{IPAPMincho}{HGPMinchoE}%
+ {HGPGothicM}{HGGothicE}{hgrsgu.ttc}{IPAPGothic}{}}
\zxjf@declare@preset{ipaex}{%
- \zxjf@uniweight{IPAexMincho}{IPAexGothic}}
+ \zxjf@uniweight{\zxjf@Fa}{\zxjf@Fb}{}}
+\zxjf@declare@preproc{ipaex}{%
+ \zxjf@if@font@exists{ipaexm.ttf}%
+ {\def\zxjf@Fa{ipaexm.ttf}\def\zxjf@Fb{ipaexg.ttf}}%
+ {\def\zxjf@Fa{IPAexMincho}\def\zxjf@Fb{IPAexGothic}}}
\zxjf@declare@preset{ipaex-hg}{%
- \zxjf@multiweight{IPAexMincho}{HGSMinchoE}%
- {HGSGothicM}{HGSGothicE}{IPAexGothic}}
+ \zxjf@multiweight{\zxjf@Fa}{\zxjf@Fa}{HGSMinchoE}%
+ {HGSGothicM}{HGSGothicE}{hgrsgu.ttc}{\zxjf@Fb}{}}
+\zxjf@declare@preproc@alias{ipaex-hg}{ipaex}
\zxjf@declare@preset{moga}{%
- \zxjf@multiweight{MogaExMincho}{MogaExMincho Bold}%
- {MogaExGothic}{MogaExGothic Bold}{MogaExGothic}}
-\zxjf@declare@preset{moga-90}{%
- \zxjf@multiweight{MogaEx90Mincho}{MogaEx90Mincho Bold}%
- {MogaEx90Gothic}{MogaEx90Gothic Bold}{MogaEx90Gothic}}
+ \zxjf@multiweight{MogaEx\zxjf@Fa Mincho}{MogaEx\zxjf@Fa Mincho}%
+ {MogaEx\zxjf@Fa Mincho Bold}{MogaEx\zxjf@Fa Gothic}%
+ {MogaEx\zxjf@Fa Gothic Bold}{MogaEx\zxjf@Fa Gothic Bold}%
+ {MogaEx\zxjf@Fa Gothic}{}}
+\zxjf@declare@preset@alias{moga-90}{moga}
+\zxjf@declare@preset{mogaN-90}{%
+ \zxjf@multiweight{Moga\zxjf@Fa Mincho}{Moga\zxjf@Fa Mincho}%
+ {Moga\zxjf@Fa Mincho Bold}{Moga\zxjf@Fa Gothic}%
+ {Moga\zxjf@Fa Gothic Bold}{Moga\zxjf@Fa Gothic Bold}%
+ {Moga\zxjf@Fa Gothic}{}}
+\zxjf@declare@preproc{moga}{%
+ \edef\zxjf@Fa{\ifcase\zxjf@cjkshape \or 90\or \fi}}
+\zxjf@declare@preproc{moga-90}{%
+ \edef\zxjf@Fa{\ifcase\zxjf@cjkshape 90\or 90\or \fi}}
+\zxjf@declare@preproc@alias{mogaN-90}{moga-90}
\zxjf@declare@preset{ume}{%
- \zxjf@multiweight{Ume Mincho}{Ume Mincho}%
- {Ume Gothic}{Ume Gothic O5}{Ume Gothic O5}}
-\zxjf@declare@preset{kozuka-pro}{%
- \zxjf@multiweight@opt{KozMinPro-Regular}{KozMinPro-Bold}%
- {KozGoPro-Regular}{KozGoPro-Bold}%
- {KozGoPro-Medium}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{kozuka-pro/prop}{%
- \zxjf@multiweight@opt{KozMinPro-Regular}{KozMinPro-Bold}%
- {KozGoPro-Regular}{KozGoPro-Bold}%
- {KozGoPro-Medium}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{kozuka-pr6}{%
- \zxjf@multiweight@opt{KozMinProVI-Regular}{KozMinProVI-Bold}%
- {KozGoProVI-Regular}{KozGoProVI-Bold}%
- {KozGoProVI-Medium}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{kozuka-pr6/prop}{%
- \zxjf@multiweight@opt{KozMinProVI-Regular}{KozMinProVI-Bold}%
- {KozGoProVI-Regular}{KozGoProVI-Bold}%
- {KozGoProVI-Medium}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{kozuka-pr6n}{%
- \zxjf@multiweight@opt{KozMinPr6N-Regular}{KozMinPr6N-Bold}%
- {KozGoPr6N-Regular}{KozGoPr6N-Bold}%
- {KozGoPr6N-Medium}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{kozuka-pr6n/prop}{%
- \zxjf@multiweight@opt{KozMinPr6N-Regular}{KozMinPr6N-Bold}%
- {KozGoPr6N-Regular}{KozGoPr6N-Bold}%
- {KozGoPr6N-Medium}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{hiragino-pro}{%
- \zxjf@multiweight@opt{Hiragino Mincho Pro W3}{Hiragino Mincho Pro W6}%
- {Hiragino Kaku Gothic Pro W3}{Hiragino Kaku Gothic Pro W6}%
- {Hiragino Kaku Gothic Pro W6}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{hiragino-pro/prop}{%
- \zxjf@multiweight@opt{Hiragino Mincho Pro W3}{Hiragino Mincho Pro W6}%
- {Hiragino Kaku Gothic Pro W3}{Hiragino Kaku Gothic Pro W6}%
- {Hiragino Kaku Gothic Pro W6}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{hiragino-pron}{%
- \zxjf@multiweight@opt{Hiragino Mincho ProN W3}{Hiragino Mincho ProN W6}%
- {Hiragino Kaku Gothic ProN W3}{Hiragino Kaku Gothic ProN W6}%
- {Hiragino Kaku Gothic ProN W6}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{hiragino-pron/prop}{%
- \zxjf@multiweight@opt{Hiragino Mincho ProN W3}{Hiragino Mincho ProN W6}%
- {Hiragino Kaku Gothic ProN W3}{Hiragino Kaku Gothic ProN W6}%
- {Hiragino Kaku Gothic ProN W6}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{morisawa-pro}{%
- \zxjf@multiweight@opt{A-OTF-RyuminPro-Light.otf}{A-OTF-FutoMinA101Pro-Bold.otf}%
- {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-FutoGoB101Pro-Bold.otf}%
- {A-OTF-GothicBBBPro-Medium.otf}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{morisawa-pro/prop}{%
- \zxjf@multiweight@opt{A-OTF-RyuminPro-Light.otf}{A-OTF-FutoMinA101Pro-Bold.otf}%
- {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-FutoGoB101Pro-Bold.otf}%
- {A-OTF-GothicBBBPro-Medium.otf}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{morisawa-pr6n}{%
- \zxjf@multiweight@opt{A-OTF-RyuminPr6N-Light.otf}{A-OTF-FutoMinA101Pr6N-Bold.otf}%
- {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-FutoGoB101Pr6N-Bold.otf}%
- {A-OTF-GothicBBBPr6N-Medium.otf}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{morisawa-pr6n/prop}{%
- \zxjf@multiweight@opt{A-OTF-RyuminPr6N-Light.otf}{A-OTF-FutoMinA101Pr6N-Bold.otf}%
- {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-FutoGoB101Pr6N-Bold.otf}%
- {A-OTF-GothicBBBPr6N-Medium.otf}{RawFeature=+palt;+kern}}
-\zxjf@declare@preset{yu-win}{%
- \zxjf@multiweight@opt{YuMincho-Regular}{YuMincho-Demibold}%
- {YuGothic-Regular}{YuGothic-Bold}%
- {YuGothic-Regular}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{yu-win/prop}{%
- \zxjf@multiweight@opt{YuMincho-Regular}{YuMincho-Demibold}%
- {YuGothic-Regular}{YuGothic-Bold}%
- {YuGothic-Regular}{RawFeature=+palt;+kern}}
+ \zxjf@multiweight{Ume Mincho}{Ume Mincho}{Ume Mincho}%
+ {Ume Gothic}{Ume Gothic O5}{Ume Gothic O5}{Ume Gothic O5}{}}
+\zxjf@declare@preset@with@prop{kozuka-pro}{%
+ \zxjf@multiweight{KozMinPro-Light}{KozMinPro-Regular}{KozMinPro-Bold}%
+ {KozGoPro-Regular}{KozGoPro-Bold}{KozGoPro-Heavy}%
+ {KozGoPro-Medium}}
+\zxjf@declare@preset@with@prop{kozuka-pr6}{%
+ \zxjf@multiweight{KozMinProVI-Light}{KozMinProVI-Regular}{KozMinProVI-Bold}%
+ {KozGoProVI-Regular}{KozGoProVI-Bold}{KozGoProVI-Heavy}%
+ {KozGoProVI-Medium}}
+\zxjf@declare@preset@with@prop{kozuka-pr6n}{%
+ \zxjf@multiweight{KozMinPr6N-Light}{KozMinPr6N-Regular}{KozMinPr6N-Bold}%
+ {KozGoPr6N-Regular}{KozGoPr6N-Bold}{KozGoPr6N-Heavy}%
+ {KozGoPr6N-Medium}}
+\zxjf@declare@preset@with@prop{hiragino-pro}{%
+ \zxjf@multiweight{Hiragino Mincho Pro W2}{Hiragino Mincho Pro W3}{Hiragino Mincho Pro W6}%
+ {Hiragino Kaku Gothic Pro W3}{Hiragino Kaku Gothic Pro W6}{Hiragino Kaku Gothic Std W8}%
+ {Hiragino Kaku Gothic Pro W6}}
+\zxjf@declare@preset@with@prop{hiragino-pron}{%
+ \zxjf@multiweight{Hiragino Mincho ProN W2}{Hiragino Mincho ProN W3}{Hiragino Mincho ProN W6}%
+ {Hiragino Kaku Gothic ProN W3}{Hiragino Kaku Gothic ProN W6}{Hiragino Kaku Gothic StdN W8}%
+ {Hiragino Kaku Gothic ProN W6}}
+\zxjf@declare@preset@with@prop{morisawa-pro}{%
+ \zxjf@multiweight{A-OTF-RyuminPro-Light.otf}{A-OTF-RyuminPro-Light.otf}{A-OTF-FutoMinA101Pro-Bold.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}{A-OTF-FutoGoB101Pro-Bold.otf}{A-OTF-MidashiGoPro-MB31.otf}%
+ {A-OTF-GothicBBBPro-Medium.otf}}
+\zxjf@declare@preset@with@prop{morisawa-pr6n}{%
+ \zxjf@multiweight{A-OTF-RyuminPr6N-Light.otf}{A-OTF-RyuminPr6N-Light.otf}{A-OTF-FutoMinA101Pr6N-Bold.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}{A-OTF-FutoGoB101Pr6N-Bold.otf}{A-OTF-MidashiGoPr6N-MB31.otf}%
+ {A-OTF-GothicBBBPr6N-Medium.otf}}
+\zxjf@declare@preset@with@prop{yu-win}{%
+ \zxjf@multiweight{YuMincho-Light}{YuMincho-Regular}{YuMincho-Demibold}%
+ {YuGothic-Regular}{YuGothic-Bold}{YuGothic-Bold}%
+ {YuGothic-Regular}}
\zxjf@declare@preset@with@prop{yu-win10}{%
- \zxjf@multiweight@opt{YuMincho-Regular}{YuMincho-Demibold}%
- {YuGothic-Regular}{YuGothic-Bold}%
+ \zxjf@multiweight{YuMincho-Light}{YuMincho-Regular}{YuMincho-Demibold}%
+ {YuGothic-Regular}{YuGothic-Bold}{YuGothic-Bold}%
+ {YuGothic-Medium}}
+\zxjf@declare@preset@with@prop{yu-osx}{%
+ \zxjf@multiweight{YuMincho-Medium}{YuMincho-Medium}{YuMincho-Demibold}%
+ {YuGothic-Medium}{YuGothic-Bold}{YuGothic-Bold}%
{YuGothic-Medium}}
-\zxjf@declare@preset{yu-osx}{%
- \zxjf@multiweight@opt{YuMincho-Medium}{YuMincho-Demibold}%
- {YuGothic-Medium}{YuGothic-Bold}%
- {YuGothic-Medium}{RawFeature=-palt;-kern}}
-\zxjf@declare@preset{yu-osx/prop}{%
- \zxjf@multiweight@opt{YuMincho-Medium}{YuMincho-Demibold}%
- {YuGothic-Medium}{YuGothic-Bold}%
- {YuGothic-Medium}{RawFeature=+palt;+kern}}
\zxjf@declare@preset@with@prop{sourcehan}{%
- \zxjf@multiweight@opt{SourceHanSerif-Regular}{SourceHanSerif-Bold}%
- {SourceHanSans-Regular}{SourceHanSans-Bold}%
+ \zxjf@multiweight{SourceHanSerif-Light}{SourceHanSerif-Regular}{SourceHanSerif-Bold}%
+ {SourceHanSans-Regular}{SourceHanSans-Bold}{SourceHanSans-Heavy}%
{SourceHanSans-Medium}}
\zxjf@declare@preset@with@prop{sourcehan-jp}{%
- \zxjf@multiweight@opt{SourceHanSerifJP-Regular}{SourceHanSerifJP-Bold}%
- {SourceHanSansJP-Regular}{SourceHanSansJP-Bold}%
+ \zxjf@multiweight{SourceHanSerifJP-Light}{SourceHanSerifJP-Regular}{SourceHanSerifJP-Bold}%
+ {SourceHanSansJP-Regular}{SourceHanSansJP-Bold}{SourceHanSansJP-Heavy}%
{SourceHanSansJP-Medium}}
\zxjf@declare@preset@with@prop{noto}{%
- \zxjf@multiweight@opt{NotoSerifCJKjp-Regular}{NotoSerifCJKjp-Bold}%
- {NotoSansCJKjp-Regular}{NotoSansCJKjp-Bold}%
+ \zxjf@multiweight{NotoSerifCJKjp-Light}{NotoSerifCJKjp-Regular}{NotoSerifCJKjp-Bold}%
+ {NotoSansCJKjp-Regular}{NotoSansCJKjp-Bold}{NotoSansCJKjp-Black}%
{NotoSansCJKjp-Medium}}
\zxjf@declare@preset@with@prop{noto-jp}{%
- \zxjf@multiweight@opt{NotoSerifJP-Regular}{NotoSerifJP-Bold}%
- {NotoSansJP-Regular}{NotoSansJP-Bold}%
+ \zxjf@multiweight{NotoSerifJP-Light}{NotoSerifJP-Regular}{NotoSerifJP-Bold}%
+ {NotoSansJP-Regular}{NotoSansJP-Bold}{NotoSansJP-Black}%
{NotoSansJP-Medium}}
-%(obsolete)
-\zxjf@declare@preset{kozuka4}{%
- \zxjf@uniweight@opt{Kozuka Mincho Pro}{Kozuka Gothic Pro}%
- {RawFeature=-palt;-kern}}
-\zxjf@declare@preset{kozuka4/prop}{%
- \zxjf@uniweight@opt{Kozuka Mincho Pro}{Kozuka Gothic Pro}%
- {RawFeature=+palt;+kern}}
-\zxjf@declare@preset{kozuka6}{%
- \zxjf@uniweight@opt{Kozuka Mincho Pro-VI}{Kozuka Gothic Pro-VI}%
- {RawFeature=-palt;-kern}}
-\zxjf@declare@preset{kozuka6/prop}{%
- \zxjf@uniweight@opt{Kozuka Mincho Pro-VI}{Kozuka Gothic Pro-VI}%
- {RawFeature=+palt;+kern}}
-\zxjf@declare@preset{kozuka6n}{%
- \zxjf@uniweight@opt{Kozuka Mincho Pr6N}{Kozuka Gothic Pr6N}%
- {RawFeature=-palt;-kern}}
-\zxjf@declare@preset{kozuka6n/prop}{%
- \zxjf@uniweight@opt{Kozuka Mincho Pr6N}{Kozuka Gothic Pr6N}%
- {RawFeature=+palt;+kern}}
-\zxjf@declare@preset{hiragino}{%
- \zxjf@uniweight@opt{Hiragino Mincho Pro W3}{Hiragino Kaku Gothic Pro W6}%
- {RawFeature=-palt;-kern}}
-\zxjf@declare@preset{hiragino/prop}{%
- \zxjf@uniweight@opt{Hiragino Mincho Pro W3}{Hiragino Kaku Gothic Pro W6}%
- {RawFeature=+palt;+kern}}
+\zxjf@declare@preset@with@prop{haranoaji}{%
+ \zxjf@multiweight{HaranoAjiMincho-Light\zxjf@Fa}{HaranoAjiMincho-Regular\zxjf@Fa}{HaranoAjiMincho-Bold\zxjf@Fa}%
+ {HaranoAjiGothic-Regular\zxjf@Fa}{HaranoAjiGothic-Bold\zxjf@Fa}{HaranoAjiGothic-Heavy\zxjf@Fa}%
+ {HaranoAjiGothic-Medium\zxjf@Fa}}
+\zxjf@declare@preproc{haranoaji}{%
+ \zxjf@if@font@exists{HaranoAjiMincho-Regular.otf}%
+ {\def\zxjf@Fa{.otf}}{\let\zxjf@Fa\@empty}}
%(alias)
\zxjf@declare@preset@alias@with@prop{kozuka}{kozuka-pro}
\zxjf@declare@preset@alias@with@prop{morisawa}{morisawa-pro}
-\zxjf@declare@preset@alias{moga-mobo}{moga}
-%(alias-obsolete)
-\zxjf@declare@preset@alias{ms-dx}{ms-hg}
-\zxjf@declare@preset@alias{ms-dx/prop}{ms-hg/prop}
-\zxjf@declare@preset@alias{ipa-dx}{ipa-hg}
-\zxjf@declare@preset@alias{ipa-dx/prop}{ipa-hg/prop}
-\zxjf@declare@preset@alias{hiragino-dx}{hiragino-pro}
-\zxjf@declare@preset@alias{hiragino-dx/prop}{hiragino-pro/prop}
-
+\zxjf@declare@preset@alias{moga-mobo-ex}{moga-90}
+\zxjf@declare@preproc@alias{moga-mobo-ex}{moga-90}
+\zxjf@declare@preset@alias{moga-mobo}{mogaN-90}
+\zxjf@declare@preproc@alias{moga-mobo}{mogaN-90}
+\zxjf@declare@preset@alias@with@prop{noto-otf}{noto}
+\zxjf@declare@preset@alias@with@prop{hiragino}{hiragino-pro}
+
+%% \zxjf@declare@sub@preset@nf@with@prop{<name>}{<fam>}{<font>}
+\zxjf@onlypreamble@def\zxjf@declare@sub@preset@nf@with@prop#1#2#3{%
+ \zxjf@declare@preset{#1}{\zxjf@newfamily{#2}{RawFeature=-palt;-kern}{#3}}%
+ \zxjf@declare@preset{#1/prop}{\zxjf@newfamily{#2}{RawFeature=+palt;+kern}{#3}}}
%% definitions of sub preset mappings
\zxjf@declare@preset{hg}{%
\zxjf@newfamily{hgmc}{BoldFont=HGSMinchoE}{HGSMinchoB}%
@@ -407,40 +530,42 @@
\zxjf@newfamily{hggs}{}{HGPGyoshotai}%
\zxjf@newfamily{hgpp}{}{HGPSoeiKakupoptai}%
}
-\zxjf@declare@preset{hiraginomg-pro}{%
- \zxjf@newfamily{hmg}{RawFeature=-palt;-kern}{Hiragino Maru Gothic Pro W4}}
-\zxjf@declare@preset{hiraginomg-pro/prop}{%
- \zxjf@newfamily{hmg}{RawFeature=+palt;+kern}{Hiragino Maru Gothic Pro W4}}
-\zxjf@declare@preset{hiraginomg-pron}{%
- \zxjf@newfamily{hmg}{RawFeature=-palt;-kern}{Hiragino Maru Gothic ProN W4}}
-\zxjf@declare@preset{hiraginomg-pron/prop}{%
- \zxjf@newfamily{hmg}{RawFeature=+palt;+kern}{Hiragino Maru Gothic ProN W4}}
-\zxjf@declare@preset@alias{hiraginomg}{hiraginomg-pro}
-\zxjf@declare@preset@alias{hiraginomg/prop}{hiraginomg-pro/prop}
+\zxjf@declare@sub@preset@nf@with@prop{hiraginomg-pro}%
+ {hmg}{Hiragino Maru Gothic Pro W4}
+\zxjf@declare@sub@preset@nf@with@prop{hiraginomg-pron}%
+ {hmg}{Hiragino Maru Gothic ProN W4}
+\zxjf@declare@preset@alias@with@prop{hiraginomg}{hiraginomg-pro}
\zxjf@declare@preset{mobo}{%
- \zxjf@newfamily{mobo}{Bold=MoboExGothic Bold}{MoboExGothic}}
+ \zxjf@newfamily{mobo}{BoldFont=MoboExGothic Bold}{MoboExGothic}}
\zxjf@declare@preset{mobo-90}{%
- \zxjf@newfamily{mobo}{Bold=MoboEx90Gothic Bold}{MoboEx90Gothic}}
+ \zxjf@newfamily{mobo}{BoldFont=MoboEx90Gothic Bold}{MoboEx90Gothic}}
\zxjf@declare@preset{maruberi}{%
\zxjf@newfamily{mmg}{}{MotoyaLMaru}}
-%% warn for deprecated presets
-\@for\zxjf@x:={%
- kozuka4,kozuka6,kozuka6n,hiragino,ms-dx,ipa-dx,hiragino-dx%
-}\do{%
- \ifx\zxjf@x\zxjf@main@preset
- \PackageWarningNoLine\zxjf@pkgname
- {Old preset '\zxjf@x' is deprecated\MessageBreak
- (see the manual for detail)}%
- \fi}
-
%% ... and invokes the specified one!
\zxjf@use@preset{\zxjf@main@preset}
\@for\zxjf@x:=\zxjf@sub@preset\do{\zxjf@use@preset\zxjf@x}
%--------------------------------------- and some extras
+\ifzxjf@threeweight
+ %%<*> \ltdefault/\ltseries
+ \providecommand*\ltdefault{l}
+ \DeclareRobustCommand\ltseries{%
+ \not@math@alphabet\ltseries\relax
+ % \fontseries{\ltdefault} fails on New NFSS
+ % unless alphabetic font also has 'l' series.
+ \edef\f@series{\ltdefault}\selectfont
+ }
+ %%<*> \ebdefault/\ebseries
+ \providecommand*\ebdefault{eb}
+ \DeclareRobustCommand\ebseries{%
+ \not@math@alphabet\ebseries\relax
+ \edef\f@series{\ebdefault}\selectfont
+ }
+\fi
+
%%<*> \useeasyjapanesesettings
\newcommand*\useeasyjapanesesettings{%
\XeTeXlinebreaklocale "ja"\relax
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zxjafont.tlpobj new/tlpkg/tlpobj/zxjafont.tlpobj
--- old/tlpkg/tlpobj/zxjafont.tlpobj 2019-02-28 04:19:21.000000000 +0100
+++ new/tlpkg/tlpobj/zxjafont.tlpobj 2020-02-25 01:54:57.000000000 +0100
@@ -1,12 +1,11 @@
name zxjafont
category Package
-revision 47613
+revision 53884
shortdesc Set up Japanese font families for XeLaTeX
relocated 1
-runfiles size=5
+runfiles size=6
RELOC/tex/latex/zxjafont/zxjafont.sty
catalogue-ctan /language/japanese/zxjafont
-catalogue-date 2018-05-04 16:10:09 +0200
catalogue-license mit
catalogue-topics japanese font-supp xetex
-catalogue-version 0.4
+catalogue-version 1.2
++++++ zxjatype.doc.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjatype/LICENSE new/doc/latex/zxjatype/LICENSE
--- old/doc/latex/zxjatype/LICENSE 2018-05-03 23:03:15.000000000 +0200
+++ new/doc/latex/zxjatype/LICENSE 2020-01-23 18:53:22.000000000 +0100
@@ -1,6 +1,6 @@
The MIT License
-Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+Copyright (c) 2009-2020 Takayuki YATO (aka. "ZR")
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjatype/README-ja.md new/doc/latex/zxjatype/README-ja.md
--- old/doc/latex/zxjatype/README-ja.md 2018-05-03 23:03:15.000000000 +0200
+++ new/doc/latex/zxjatype/README-ja.md 2020-01-23 18:53:22.000000000 +0100
@@ -23,22 +23,122 @@
zxjatype パッケージ ― 本体
---------------------------
-まだ解説が書けておりません…。基本的な機能の説明については以下の Web
-ページで行っていますのでそちらを参照してください。
+基本的な機能の説明については以下の Web ページでも行っているのでそちらも
+参照してほしい。
* [ZXjatype パッケージ]
(http://zrbabbler.sp.land.to/zxjatype.html)
+### パッケージ読込
+
+xeCJK と一緒に読み込む場合:
+
+ \usepackage[<オプション>...,...]{zxjatype}
+
+xeCJK と別個に読み込む場合:
+
+ \usepackage[...]{xeCJK}
+ \usepackage[<オプション>...]{zxjatype}
+
+有効なオプションは以下の通り:
+
+ * `default`:(既定)パッケージ読込直後に日本語用の設定への切替を行う。 (`\zxjapanesestyle` を実行する。)
+ * `nodefault`: `default` の否定。 xeCJK の初期設定が保持される。
+ * `CJKchecksingle`:(既定)xeCJK の文字ウィドウ抑制機能を有効にする。
+ (`CheckSingle=true` を設定する。)
+ * `noCJKchecksingle`: `CJKchecksingle` の否定。xeCJK の初期設定の通り
+ で文字ウィドウ抑制機能が無効になる。
+ * `adjustcharclass`:(既定)日本語の組版規則に合わせて xeCJK の文字
+ クラス設定を変更する。
+ * `noadjustcharclass`: `adjustcharclass` の否定。 xeCJK の文字クラス
+ 設定を変更しない。
+ * `kanakinsoku`: 小書き仮名を行頭禁則の対象にする。具体的には、これら
+ の文字の文字クラスを「閉じ括弧類」に変更する。
+ ※この扱いには副作用があって、直後に約物がある場合の空きが不正になる
+ (約物が並んでいると解釈されるため)。
+ * `nokanakinsoku`:(既定)小書き仮名を行頭禁則の対象にしない。具体的
+ にはこれらの文字の文字クラスを「通常 CJK 文字」に変更する。
+ ※`kanakinsoku`・`nokanakinsoku` の何れの場合も xeCJK の設定に変更を
+ 加えることに注意。変更したくない場合は `noadjustcharclass` にする。
+ * `useinhibitglue`: pTeX と互換の `\inhibitglue` 命令を定義する。
+ ※ただし現状の実装は不完全で問題があることが判っている。
+ * `nouseinhibitglue`:(既定) `useinhibitglue` の否定。`\inhibitglue`
+ は定義されない。
+ * `prefercjk`: 一部の記号類の文字クラスを「非 CJK 文字」(欧文扱い)
+ から「通常 CJK 文字」(和文扱い)に変更する。
+ ※和文扱いの範囲が LuaTeX-ja の初期状態とほぼ同じになる。
+ * `noprefercjk`:(既定)`prefercjk` の否定。
+
+### 機能
+
+xeCJK の CJK フォントファミリ設定において、`\setjafontscale` で設定された
+和文スケール値が `Scale` の値として設定される。以下の命令が対象となる。
+
+ - `\setCJKmainfont`
+ - `\setCJKsansfont`
+ - `\setCJKmonofont`
+ - `\setCJKfamilyfont`
+
+zxjatype の独自の命令。
+
+ * `\setjafontscale{<実数>}`: 和文スケール値を設定する。
+ ※空の引数も可能で、この場合は和文スケール値設定が抑止される。
+ * `\>`: 明示的に和欧文間空白を出力する。
+ ※数式モード中では LaTeX カーネルの定義が維持される。
+ ※他のパッケージで再定義が行われている場合は定義されない。
+ * `\inhibitglue`: その箇所で和文文字間に自動的に入る空白を抑制する。
+ ※`useinhibitglue` オプション指定時にのみ定義される。
+ * `\<`: `\inhibitglue` と同義。
+ ※他のパッケージで再定義が行われている場合は定義されない。
+ * `\textrawen{<テキスト>}`: 和文処理を無効化し、引数のテキストを欧文
+ フォントで出力する。
+ * `rawentext` 環境: `\textrawen` の環境版。
+ * `\textrawja{<テキスト>}`: 和文処理を無効化し、引数のテキストを和文
+ フォントで出力する。
+ * `rawjatext` 環境: `\textrawja` の環境版。
+ * `\zxjapanesestyle`: 日本語用の設定に切り替える。
+ ※この命令はユーザによる再定義が可能。
+ * `\zxusejapaneseparameter`: 和欧文間空白と和文間空白を日本語組版に
+ 適した値にする。
+ * `\zxuseoriginalparameter`: 和欧文間空白と和文間空白を xeCJK の初期
+ 設定に戻す。
+
+なお、`\zxjapanesestyle` の初期値は以下のとおりである:
+
+ \xeCJKsetup{
+ AllowBreakBetweenPuncts = true,
+ PunctStyle = fullwidth,
+ }%
+ \zxusejapaneseparameters
+
+### 旧版との互換のための命令
+
+ * `\setjamainfont`: xeCJK の `\setCJKmainfont` と同義。
+ * `\setjasansfont`: xeCJK の `\setCJKsansfont` と同義。
+ * `\setjamonofont`: xeCJK の `\setCJKmonofont` と同義。
+ * `\setjafamilyfont`: xeCJK の `\setCJKfamilyfont` と同義。
+ * `\jafamily`: xeCJK の `\CJKfamily` と同義。
+
+### 参考:0.6 版で廃止された機能
+
+ * `\(no)jafamilyinverbatim` 命令
+
更新履歴
--------
+ * Version 0.7 ‹2020/01/22›
+ - xeCJK 2.x 版の使用を非推奨(将来廃止予定)とする。
+ - `(no)prefercjk` オプションを新設。
+ - 和文スケール値を `\zxjatypeJaScale` に格納する。
+ - バグ修正。
+
* Version 0.6c ‹2018/05/03›
- バグ修正。
* Version 0.6b ‹2017/08/03›
- - (試験的) `(no)useinhibitglue` オプション。
- - (試験的) `(no)kanakinsoku` オプション。
+ - `(no)useinhibitglue` オプション。
+ - `(no)kanakinsoku` オプション。
* Version 0.6a ‹2017/08/02›
- バグ修正。
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/doc/latex/zxjatype/README.md new/doc/latex/zxjatype/README.md
--- old/doc/latex/zxjatype/README.md 2018-05-03 23:03:15.000000000 +0200
+++ new/doc/latex/zxjatype/README.md 2020-01-23 18:53:22.000000000 +0100
@@ -44,6 +44,7 @@
Revision History
----------------
+ * Version 0.7 ‹2020/01/22›
* Version 0.6c ‹2018/05/03›
* Version 0.6b ‹2017/08/03›
* Version 0.6a ‹2017/08/02›
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zxjatype.doc.tlpobj new/tlpkg/tlpobj/zxjatype.doc.tlpobj
--- old/tlpkg/tlpobj/zxjatype.doc.tlpobj 2019-02-28 04:19:21.000000000 +0100
+++ new/tlpkg/tlpobj/zxjatype.doc.tlpobj 2020-01-24 01:57:35.000000000 +0100
@@ -1,9 +1,9 @@
name zxjatype.doc
category Package
-revision 47597
+revision 53500
shortdesc doc files of zxjatype
relocated 1
-docfiles size=48
+docfiles size=50
RELOC/doc/latex/zxjatype/LICENSE
RELOC/doc/latex/zxjatype/README-ja.md
RELOC/doc/latex/zxjatype/README.md
++++++ zxjatype.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tex/latex/zxjatype/zxjatype.sty new/tex/latex/zxjatype/zxjatype.sty
--- old/tex/latex/zxjatype/zxjatype.sty 2018-05-03 23:03:15.000000000 +0200
+++ new/tex/latex/zxjatype/zxjatype.sty 2020-01-23 18:53:22.000000000 +0100
@@ -1,7 +1,7 @@
%%
%% This is file 'zxjatype.sty'.
%%
-%% Copyright (c) 2018 Takayuki YATO (aka. "ZR")
+%% Copyright (c) 2009-2020 Takayuki YATO (aka. "ZR")
%% GitHub: https://github.com/zr-tex8r
%% Twitter: @zr_tex8r
%%
@@ -10,11 +10,12 @@
%% package declaration
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{zxjatype}[2018/05/03 v0.6c ZX Japanese typeset]
+\ProvidesPackage{zxjatype}[2020/01/22 v0.7 ZX Japanese typeset]
\RequirePackage{ifxetex}\RequireXeTeX
%% code guards
\edef\zxjt@restore@codes{%
+ \catcode33=\the\catcode33%
\catcode34=\the\catcode34%
\catcode39=\the\catcode39%
\catcode43=\the\catcode43%
@@ -24,11 +25,13 @@
\catcode58=\the\catcode58%
\catcode60=\the\catcode60%
\catcode62=\the\catcode62%
- \catcode63=\the\catcode63%
\catcode94=\the\catcode94%
\catcode96=\the\catcode96%
+ \catcode124=\the\catcode124%
+ \catcode126=\the\catcode126%
\endlinechar=\the\endlinechar%
\relax}
+\catcode33=12 %
\catcode34=12 % <">
\catcode39=12 % <'>
\catcode43=12 % <+>
@@ -38,9 +41,10 @@
\catcode58=12 % <:>
\catcode60=12 % <<>
\catcode62=12 % <>>
-\catcode63=12 % >
\catcode94=7 % <^>
\catcode96=12 % <`>
+\catcode124=12 % <|>
+\catcode126=13 % <~>
\AtEndOfPackage{%
\zxjt@restore@codes
\let\zxjt@restore@codes\@undefined
@@ -49,7 +53,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% BOOTSTRAP CODE
-%
+%
%% definitions
\def\zxjt@pkgname{zxjatype}
@@ -58,7 +62,8 @@
\newif\ifzxjt@adjustcharclass
\newif\ifzxjt@kanakinsoku
\newif\ifzxjt@useinhibitglue
-\providecommand*\bxDebug{\@gobble}
+\newif\ifzxjt@prefercjk
+\providecommand\bxDebug[1]{}
%% process options
\DeclareOption{default}{\zxjt@defaulttrue}
@@ -76,6 +81,8 @@
\DeclareOption{nokanakinsoku}{\zxjt@kanakinsokufalse}
\DeclareOption{useinhibitglue}{\zxjt@useinhibitgluetrue}
\DeclareOption{nouseinhibitglue}{\zxjt@useinhibitgluefalse}
+\DeclareOption{prefercjk}{\zxjt@prefercjktrue}
+\DeclareOption{noprefercjk}{\zxjt@prefercjkfalse}
%
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{xeCJK}}
\ExecuteOptions{default,CJKchecksingle,adjustcharclass}
@@ -90,6 +97,10 @@
\let\zxjt@go@to@main\@empty
}{%
\bxDebug{xeCJK v2.x found.}%
+ \PackageWarningNoLine\zxjt@pkgname
+ {!!!!!!!! IMPORTANT !!!!!!!!\MessageBreak
+ Support for xeCJK v2.x will be *dropped*\MessageBreak
+ in the near future}
\long\def\zxjt@go@to@main#1\zxjt@begin@old@code{}%
}
@@ -130,6 +141,11 @@
\ifzxjt@useinhibitglue
\bool_set_true:N \l__zxjt_useinhibitglue_bool
\fi
+%% \l__zxjt_prefercjk_bool
+\bool_new:N \l__zxjt_prefercjk_bool
+\ifzxjt@prefercjk
+ \bool_set_true:N \l__zxjt_prefercjk_bool
+\fi
%%-------------------------------------- error messages
@@ -150,8 +166,8 @@
}
\__zxjt_msg_new:nn { jafamilyinverbatim-disabled }
{
- \token_to_str:N \(no)jafamilyinverbatim \c_space_tl
- ~is~disabled~in~this~version.
+ \token_to_str:N \( no)jafamilyinverbatim~
+ is~disabled~in~this~version.
}
\__zxjt_msg_new:nn { CJKfam-failed }
{
@@ -181,9 +197,9 @@
% (A mere \scan_stop: suffices?)
\cs_new:Nn \__zxjt_boundary:
{
- \ifhmode
+ \if_mode_horizontal:
\hbox:n {}
- \fi
+ \fi:
}
%% \__zxjt_leavevmode:
@@ -259,7 +275,7 @@
\AtBeginDocument
{
\cs_set_eq:NN \__zxjt_after_decl_CJKfam:n \__zxjt_after_decl_CJKfam_db:n
- \seq_remove_duplicates:N \g__zxjt_CJKfam_seq
+ \seq_gremove_duplicates:N \g__zxjt_CJKfam_seq
\seq_map_function:NN \g__zxjt_CJKfam_seq \__zxjt_after_decl_CJKfam:n
\seq_gclear:N \g__zxjt_CJKfam_seq
}
@@ -332,7 +348,7 @@
\bxDebug { family( #1 )~<=~ \g__zxjt_onefam_info_tl }
\tl_if_empty:NF \g__zxjt_onefam_info_tl
{
- \prop_put:NnV \g__zxjt_CJKfam_prop { #1 } \g__zxjt_onefam_info_tl
+ \prop_gput:NnV \g__zxjt_CJKfam_prop { #1 } \g__zxjt_onefam_info_tl
}
}
@@ -360,6 +376,8 @@
% The encoding used for CJK-families.
\tl_new:N \g__zxjt_encoding_tl
\tl_gset:Nn \g__zxjt_encoding_tl { EU1 }
+\cs_if_exist:NT \g_fontspec_encoding_tl
+ { \tl_set_eq:NN \g__zxjt_encoding_tl \g_fontspec_encoding_tl }
%% \__zxjt_use_CJKfam:
% Switches the NFSS family to the family corresponding to the current CJK-
@@ -501,6 +519,7 @@
"30E7, "30EE, "30F5, "30F6, "30FC, "31F0, "31F1, "31F2, "31F3, "31F4,
"31F5, "31F6, "31F7, "31F8, "31F9, "31FA, "31FB, "31FC, "31FD, "31FE,
"31FF, "309D, "309E, "30FD, "30FE,
+ "1B150, "1B151, "1B152, "1B164, "1B165, "1B166, "1B167,
}
\xeCJKDeclareCharClass { FullRight }
{
@@ -518,6 +537,36 @@
\xeCJKsetup { LongPunct+ = { ^^^^2015 } }
}
+\bool_if:NT \l__zxjt_prefercjk_bool
+ {
+ \clist_map_inline:nn
+ {
+ "2002, "2010, "2011, "2016, "201A, "201E, "2020, "2021,
+ "2022, "2030, "2032, "2033, "2039, "203A, "203B, "203C,
+ "203E, "203F, "2042, "2044, "2047, "2048, "2049, "2051
+ }
+ { \XeTeXcharclass #1 = \c__zxjt_CJK_class_int }
+ \clist_map_inline:nn
+ {
+ { "2070, "243F },
+ { "2460, "27BF },
+ { "2900, "29FF },
+ { "2B00, "2BFF },
+ { "FE50, "FE6F },
+ { "1F100, "1F1DF }
+ }
+ {
+ \clist_set:Nn \l_tmpa_clist {#1}
+ \int_step_inline:nnn
+ { \clist_item:Nn \l_tmpa_clist { 1 } }
+ { \clist_item:Nn \l_tmpa_clist { 2 } }
+ {
+ \int_compare:nNnF { \XeTeXcharclass ##1 } = { \c__zxjt_CJK_class_int }
+ { \XeTeXcharclass ##1 = \c__zxjt_CJK_class_int }
+ }
+ }
+ }
+
%%-------------------------------------- public commands
%%<*> \setjamainfont / \setjasansfont / \setjamonofont
@@ -571,23 +620,29 @@
}
}
-%% \__zxjt_scale_tl
+%% \l__zxjt_scale_tl
% The scale value to be applied to CJK fonts.
-\tl_new:N \__zxjt_scale_tl
+\tl_new:N \l__zxjt_scale_tl
%% \l__zxjt_scale_spec_tl
\tl_new:N \l__zxjt_scale_spec_tl
+%%<+> \zxjatypeJaScale
+% The scale value to be applied to CJK fonts.
+% (Same as \l__zxjt_scale_tl, but developer-level public.)
+
%%<*> \setjafontscale{<real>}
-%% Sets the value of \__zxjt_scale_tl, which defaults to 1.
+%% Sets the value of \l__zxjt_scale_tl, which defaults to 1.
\NewDocumentCommand \setjafontscale { m }
{
% NB: the argument is not expanded
- \tl_set:Nn \__zxjt_scale_tl { #1 }
- \tl_if_blank:VTF \__zxjt_scale_tl
+ \tl_set:Nn \l__zxjt_scale_tl { #1 }
+ \tl_set_eq:NN \zxjatypeJaScale \l__zxjt_scale_tl
+ \tl_set_eq:cN { __zxjt_scale_tl } \l__zxjt_scale_tl
+ \tl_if_blank:VTF \l__zxjt_scale_tl
{ \tl_clear:N \l__zxjt_scale_spec_tl }
- {
+ {
\tl_set:Nn \l__zxjt_scale_spec_tl
- { Scale = \__zxjt_scale_tl , }
+ { Scale = \l__zxjt_scale_tl , }
}
}
@@ -616,11 +671,11 @@
{
\cs_set:Npn \>
{
- \ifmmode
+ \if_mode_math:
\mskip \medmuskip
- \else
+ \else:
\CJKecglue \scan_stop:
- \fi
+ \fi:
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/tlpkg/tlpobj/zxjatype.tlpobj new/tlpkg/tlpobj/zxjatype.tlpobj
--- old/tlpkg/tlpobj/zxjatype.tlpobj 2019-02-28 04:19:21.000000000 +0100
+++ new/tlpkg/tlpobj/zxjatype.tlpobj 2020-01-24 01:57:35.000000000 +0100
@@ -1,12 +1,11 @@
name zxjatype
category Package
-revision 47597
+revision 53500
shortdesc Standard conforming typesetting of Japanese, for XeLaTeX
relocated 1
runfiles size=8
RELOC/tex/latex/zxjatype/zxjatype.sty
catalogue-ctan /language/japanese/zxjatype
-catalogue-date 2018-05-03 14:56:59 +0200
catalogue-license mit
catalogue-topics std-conform japanese xetex
-catalogue-version 0.6c
+catalogue-version 0.7