summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-01-04 03:01:50 +0000
committerNorbert Preining <norbert@preining.info>2022-01-04 03:01:50 +0000
commit1903b598f8dda613f5c584bb18ccfd2fd8c278bb (patch)
tree6da721cd34b3b84a6c5bc781203c4b129fd89707 /macros
parent682f8522246e030fbbdea7391dce107754c485d3 (diff)
CTAN sync 202201040301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/wrapfig2/README.txt2
-rw-r--r--macros/latex/contrib/wrapfig2/wrapfig2.dtx150
-rw-r--r--macros/latex/contrib/wrapfig2/wrapfig2.pdfbin511808 -> 532255 bytes
-rw-r--r--macros/latex/contrib/yb-book/DEPENDS.txt33
-rw-r--r--macros/latex/contrib/yb-book/README.md25
-rw-r--r--macros/latex/contrib/yb-book/samples/sample.tex41
-rw-r--r--macros/latex/contrib/yb-book/yb-book-logo.pdfbin0 -> 5216 bytes
-rw-r--r--macros/latex/contrib/yb-book/yb-book.cls341
-rw-r--r--macros/latex/contrib/yb-book/yb-book.pdfbin0 -> 239404 bytes
-rw-r--r--macros/latex/contrib/yb-book/yb-book.tex79
-rw-r--r--macros/luatex/generic/luatexja/README8
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-en.pdfbin694135 -> 713111 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ja.pdfbin1125361 -> 1140418 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja.dtx156
-rw-r--r--macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty4
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-adjust.lua2
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-inputbuf.lua39
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-jfmglue.lua35
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-jfont.lua18
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua11
-rw-r--r--macros/luatex/generic/luatexja/src/ltjclasses.dtx5
-rw-r--r--macros/luatex/generic/luatexja/src/ltjsclasses.dtx1
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja.sty2
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty5
-rw-r--r--macros/texinfo/latest/texinfo.tex28
25 files changed, 822 insertions, 163 deletions
diff --git a/macros/latex/contrib/wrapfig2/README.txt b/macros/latex/contrib/wrapfig2/README.txt
index 38d2c8a284..c6f5011111 100644
--- a/macros/latex/contrib/wrapfig2/README.txt
+++ b/macros/latex/contrib/wrapfig2/README.txt
@@ -1,5 +1,5 @@
%%%% README.txt file
-This README.txt for package wrapfig2[2021-12-25 v.4.0 ...]
+This README.txt for package wrapfig2[2022-01-03 v.4.0.1 ...]
This work is author maintained
diff --git a/macros/latex/contrib/wrapfig2/wrapfig2.dtx b/macros/latex/contrib/wrapfig2/wrapfig2.dtx
index 5b6d9f8813..36b142c967 100644
--- a/macros/latex/contrib/wrapfig2/wrapfig2.dtx
+++ b/macros/latex/contrib/wrapfig2/wrapfig2.dtx
@@ -45,7 +45,7 @@ wrapfig2.sty and wrapfig2.pdf, plus the auxiliary file README.txt.
%<+package>\ProvidesPackage{wrapfig2}%
%^^A<+readme>File README.txt for package wrapfig2
%<*package|readme>
- [2021-12-21 v.4.0 Wrapfig extended]
+ [2022-01-03 v.4.0.1 Wrapfig extended]
%</package|readme>
%<*driver>
%
@@ -217,25 +217,27 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%
% The original software had some idiosyncrasies; Donald Arseneau
% described them in the documentation of his package; I am sorry
-% to say that such idiosyncrasies have not been reduced; but in any case
-% the solution is to wrap the inserted object with a sufficient
-% number of lines, i.e. by a sufficiently long paragraph.
-%
-% The above implies that no wrapped object code should be inserted
-% by the end of a paragraph; again no object code should be inserted
-% within any list; not even close to the end or to the
-% beginning of section. Arseneau's code is capable of
+% to say that such idiosyncrasies have not been reduced; but in
+% any case in order to avoid such peculiar anomalies, it is
+% sufficient to wrap the inserted object with a reasonable
+% number of lines, i.e. by a reasonably long paragraph.
+%
+% The above implies that no wrapped object code should be specified
+% in the source file close the end of a paragraph; again no object
+% code should be inserted within any list; not even close to the end
+% or to the beginning of section. Arseneau's code is capable of
% specifying the wrapping number of lines such that two or more
% paragraphs can be indented so as to wrap a longish insertion,
% but it is wise to avoid such risky situations. Moreover, if the
% inserted figure or table has a numbered caption, the number might
-% not result in the correct order with the normal corresponding
+% not result in the correct sequence of the normal corresponding
% floating objects.
%
% Therefore the usefulness of the wrapping procedure depends very
% much from the document author ability to move around his/her code
% until a suitable position is found. Certainly a good place is
-% within a longish first section at the beginning of a new chapter.
+% within a longish first section paragraph at the beginning of a
+% new chapter.
%
% The code of this package does not do anything to correct such
% idiosyncrasies. They are caused by the limitations of the
@@ -246,17 +248,17 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% \meta{number of indented lines} argument does not mean the total
% number, but the correction number to add-to or subtract-from to the
% value computed by the default mechanism devised by Arseneau. We assume
-% that any user first uses the software to insert an object to be wrapped
+% that all user first use the software to insert an object to be wrapped
% by the surrounding text without specifying any value with the
-% specific optional argument; then evaluates the result, and if the
+% specific optional argument; then they evaluate the result, and if the
% space below the wrapped object is too large, or if such space is
-% too small s/he counts the necessary number of lines and specifies
+% too small they count the necessary number of lines and specify
% it to be processed during another document compilation. When the
% object to be wrapped is tall, it is very easy to miscount the
% necessary number of lines, while is is very easy to evaluate the
% necessary small correction to the default computed value.
%
-% A third purpose of this package is to define a new environment,
+% A furher purpose of this package is to define a new environment,
% \Env{wraptext}, to wrap a framed text block typeset on a grey
% background as if it were a figure. On \texttt{texstackexchange}
% a solution was suggested to a user who was asking for such an
@@ -269,11 +271,11 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% of the indented lines number would still be necessary. We added also
% the possibility of optionally specifying the measure of the
% wrapped text, even if this measure should not be too different
-% from a half of the wrapping text measure: with a value too different
-% from \texttt{0.5\cs{linewidth}} either the wrapped text has problems
-% with inter word spaces and hyphenation because of the small measure,
-% or, on the opposite, the indented lines of the wrapping text have
-% similar problems.
+% from a half of the wrapping text measure.In facts, with a value too
+% different from \texttt{0.5\cs{linewidth}} either the wrapped text has
+% problems with inter word spaces and hyphenation because of the small
+% measure, or, on the opposite, the indented lines of the wrapping text
+% have similar problems.
%
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \section{Environment syntax}
@@ -312,7 +314,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%\section{Examples}
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% We display some examples by using fake objects such that suitably
-% long paragraphs are available; some fake language long paragraphs are
+% long paragraphs are available; some fake-language long-paragraphs are
% obtained by means of the \pack{kantlipsum} package functionalities.
% They contain paragraphs that look as Kant's sentences, but we
% doubt that Immanuel Kant ever wrote such texts\dots
@@ -322,7 +324,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
-%\begin{wrapfigure}{r}{50mm}*
+%\begin{wrapfigure}{r}{50mm}
%\centering\unitlength=1mm
%\begin{picture}(40,30)
%\polygon(0,0)(40,0)(40,30)(0,30)
@@ -362,11 +364,11 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% case a \cs{centering} command might help to center the table
% within the indention of the wrapping text. Nevertheless the
% software can compute the object width if a zero value is specified
-% or if the mandatory \meta{width} parameter is completely omitted;
-% this second possibility is a feature of this package, that uses a
-% \LaTeXiii property by which even a braced argument can be treated
-% as an optional argument with a predefined default value; see below
-% more details about this feature.
+% or if the \meta{width} parameter is completely omitted together
+% with its braces; this second possibility is a feature of this
+% package, that uses a \LaTeXiii property by which even a braced
+% argument can be treated as an optional argument with a predefined
+% default value; see below more details about this feature.
%
%\begin{wraptable}{l}
%\centering
@@ -404,9 +406,9 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% this width parameter might yield better looking results.
%
% On the opposite if the user estimates that the table with its
-% caption might use 5 lines, and specified such a value as the
+% caption might use 5~lines, and specified such a value as the
% first (optional) argument to the environment, the result would
-% be this poor one, with the last caption line overlapping the
+% be the following poor one, with the last caption line overlapping the
% wrapping text.
%
%\begin{wraptable}[5]{l}
@@ -421,8 +423,6 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%\end{wraptable}
%\kant[2]
%
-% If
-%
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \subsection{A wrapped text}
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -524,7 +524,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% and its default value amounts to half the current measure; it can
% be specified but it should not be too different from 50\% the
% current measure. For the standard environments this parameter value
-% is mandatory, but, we recall, for the redefined environments
+% is mandatory, but, we recall, only for the redefined environments
% \env{wrapfigure} and \env{wraptable}, this braced argument is optional.
%
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -532,20 +532,19 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Pictures and textual arrays may be floated by means of the standard
% \amb{figure} and \amb{table} environments. But other floating
-% objects may be defined by means of the \pack{float} package,
-% just to name one, or classes. Besides floating, the main difference
-% is the name of the caption “label”: Figure, Table, Algorithm,
-% Example, and so on.
+% objects may be defined by means of other packages, for example the
+% \pack{float}, or classes, such as \class{memoir}. Besides floating,
+% the main difference is the name of the caption “label”: Figure, Table,
+% Algorithm, Example, and so on.
%
% If floating is not necessary, this package (as well as the original
% one) allows to use the underlying environment \Env{wrapfloat}
% that uses the same syntax as \Env{wrapfigure} plus the mandatory
% name of the new object: even a figure might be introduced without
% using \amb{wrapfigure}, by using instead:
-%\begin{flushleft}\ttfamily\obeylines
-%\Benv{wrapfloat}\Marg{figure}\oarg{line number}\marg{placement}\%
-%\quad \oarg{overhang}\marg{width}\meta{$\star$}
-%\qquad\qquad\meta{image}
+%\begin{flushleft}\setfontsize{9.275}\ttfamily\obeylines
+%\Benv{wrapfloat}\Marg{figure}\oarg{line number}\marg{placement}\oarg{overhang}\marg{width}\meta{$\star$}
+%\quad\qquad\meta{image}
%\Eenv{wrapfloat}
%\end{flushleft}
% Another \meta{object} may be wrapped by using:
@@ -588,7 +587,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%\begin{quote}
% Most, but not all, of the argument types defined by \pack{xparse}
% are now supported at the kernel level. In particular, the types
-% \texttt{g/G}, \texttt{l} and \texttt{u} are not provided by the
+% \texttt{g/G}, \texttt{l} and \texttt{u}, are not provided by the
% kernel code; these are \emph{deprecated} but still available by
% explicitly loading \pack{xparse}. All other argument types are
% now available directly within the \LaTeXe kernel.
@@ -649,10 +648,10 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% and \pack{xfp} packages before loading \pack{wrapfig2}.
% Notice that most of the \pack{xparse} package functionalities
% at the date required for the format file are already included. The
-% \pack{xparse} package has been available about in 2018; should the user
-% have available a definitely older \TeX system installation, s/he
+% \pack{xparse} package has been available about in 2018; should the users
+% have available a definitely older \TeX system installation, they
% should upgrade it, or must avoid using this \pack{wrapfig2} package
-% and use the original one; if s/he needs to wrap text, s/he should
+% and use the original one; if they need to wrap text, they should
% resort to some ingenious tricks to do it.
%
% The opening command of the \Env{wrapfloat} environment receives
@@ -696,10 +695,10 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% to be wrapped, that does not have a specific width; moreover the
% inserted text must not be too wide, nor too short in order to avoid
% problems for its justification or the justification of the wrapping
-% text. The framed box width is preset to 50\% of the normal text measure,
-% but it can be optionally specified to a different value (not too
-% different from 50\%), while for the other environments the wrapped
-% material width is an \emph{optional braced parameter}.
+% lines. The framed box width is preset to 50\% of the normal text
+% measure, but it can be optionally specified to a different value (not
+% too different from 50\%), while for the other environments the wrapped
+% material width is an \emph{braced optional parameter}.
%
% For what concerns the \Env{wraptext} environment, see below,
% because the code is a little more complicated and requires some
@@ -709,23 +708,26 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% because the computation of the insertion block height is pretty
% precise and at most the user might desire one line more or less
% depending on the measure of the whole text, and that of the
-% inserted block and/or the measure of the indented wrapped lines.
+% inserted block and/or the measure of the indented wrapped lines;
+% sometimes it might be necessary to get rid of the space below the
+% inserted block when it gets typeset at the bottom of a page.
%
% It is true that some of the input parameters specified to the opening
-% command with \LaTeXiii are available also to the closing commands; see
-% the last paragraph of section~2 in the \pack{xparse} documentation.
+% command of any environment with \LaTeXiii are available also to the
+% closing commands; see the last paragraph of section~2 in the
+% \pack{xparse} documentation.
% But the following definition, besides using special delimiters for
% optional parameters, uses the separate opening and closing
% macros of the \Env{wrapfloat} environment; such procedure
% apparently breaks this second availability of the input parameters,
% therefore it is necessary to save them into local macros or count
-% registers (assignments of \TeX count registers are \emph{local},
-% while assignment of the \LaTeX\ named counters, through the
+% registers (assignments to \TeX count registers are \emph{local},
+% while assignment to \LaTeX\ named counters, through the
% \cs{setcounter} macro and its siblings, are \emph{global}) so
% that we can use their values within the closing commands.
%
-% The \cs{NWF@box} has been assigned at the beginning; remember
-% that \LaTeXiii registers of any kind are not limited in number
+% The \cs{NWF@box} box register has been assigned at the beginning;
+% remember that \LaTeXiii registers of any kind are not limited in number
% as they were some years ago even with \LaTeXe.
% The last opening commands are conceived to box the object to be
% wrapped, typeset within a \Env{minipage} with the default or
@@ -785,7 +787,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% arguments.
%
% The main function of this environment is to handle the box that
-% contains the figure, or the table, or the framed test, or what
+% contains the figure, or the table, or the framed text, or what
% else, so that the inserted box is preceded and followed by the
% suitable vertical spaces, and it is possible to compute the
% number of lines to be indented; often this computed number is correct;
@@ -793,7 +795,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% within prohibited wrapping text, such number might need to be
% corrected. As it can be seen the optional star is not among
% the argument descriptors of the opening commands; it will be
-% the following macro \cs{WR@wr} to take care of examining
+% the following macro \cs{WR@wr} responsible of taking care of
% the list of arguments and see if a star has been specified and
% not yet read by the preceding commands.
%
@@ -855,7 +857,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% After these adjustments, it computes the box total height plus some
% fixed amounts needed mostly to set the wrapped material below the
% first wrapping text first line. Here is where the \LaTeXiii
-% \cs{fpeval} computing macro comes into play so as to assign such
+% \cs{fpeval} computing function comes into play so as to assign such
% height to \cs{WF@size}. Some unusual macros are executed; they
% were devised by Arseneau to deal with possibly floating wrapped
% objects. The optional star is not accepted by this macro; if the user
@@ -864,11 +866,11 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% the user specifies it for this environment, an asterisk appears
% at the beginning of the wrapped text.
%
-% The mandatory \texttt{\#4} \meta{width} parameter (actually a
-% \meta{optional braced parameter}) may be specified
+% The braced \texttt{\#4} \meta{width} parameter (actually a
+% \meta{braced optional parameter}) may be specified
% to be \texttt{0pt}; in any case \texttt{0pt} is the default parameter
% value; if so, the object is treated at its natural width, by
-% boxing it into an hbox and using this hbox width as the working width
+% boxing it into an hbox and using this box width as the working width
% \begin{macrocode}
\NewDocumentCommand\WF@wr{o m o m s}{%
\xdef\WF@wfname{wrap\@captype\space}%
@@ -1030,7 +1032,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
\fi
\xdef\WF@place{\the\lccode\lccode\WF@place}%
}% twice to get only l or r
- \hbox to\z@{% llap o rlap depending on lor r; calc effective width
+ \hbox to\z@{% llap o rlap depending on l or r; calc effective width
\@tempdima\wd\WF@box \@tempdimb\WF@ovh
\advance\@tempdima-\@tempdimb \advance\@tempdima\columnsep
\@tempdimb\hsize \advance\@tempdimb-\@tempdima
@@ -1062,7 +1064,6 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
\aftergroup\WF@startwrapping
\fi
}
-
% \end{macrocode}
%
% Here comes the very important macro that counts the wrapping indented
@@ -1074,14 +1075,13 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% fact that this macro cannot preview actions that have not
% yet taken place when this macro is executed.
%
-% This macro is the one that counts the lines to be indented by
-% rounding the division of the box height by the current base
-% line skip. Notice that \texttt{WF@wrappedlines} is the name
-% of a \LaTeX named counter, not of a \TeX numeric register;
-% therefore special LaTeX commands, such as \cs{setocounter} or
-% \cs{value}, have to be used in order to set or access the
-% numerical value stored within the \TeX register associated
-% to the \LaTeX counter name.
+% This macro counts the lines to be indented by rounding the division
+% of the box height by the current base line skip. Notice that
+% \texttt{WF@wrappedlines} is the name of a \LaTeX named counter,
+% not of a \TeX numeric register; therefore special LaTeX commands,
+% such as \cs{setocounter} or \cs{value}, have to be used in order
+% to set or access the numerical value stored within the \TeX
+% register associated to the \LaTeX counter name.
% \begin{macrocode}
\def\WF@startwrapping{%
\ifnum\WF@wli=\z@ % no number was specified
@@ -1309,7 +1309,7 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
%
% Here there is some Arseneau's code that renders his \pack{wrapfig}
% code compatible with \cs{newfloat} of class \class{memoir}, and
-% with \cs{newfoatlist} of package \pack{ccaption}. We leave his code
+% with \cs{newfloatlist} of package \pack{ccaption}. We leave his code
% hereafter; but we did not test it with this package.
% \begin{macrocode}
\let\WF@floatstyhook\relax
@@ -1370,13 +1370,13 @@ X\ifdim\fontdimen1\font=0pt\kern-0.15em\fi
% \end{macrocode}
% We never described the package options; this code was present
-% in Arseneau's code and ve leave it here, with the necessary
-% package name change. We think that this \opz{verbose} option
+% in Arseneau's code and we leave it here, with the necessary
+% package-name changes. We think that this \opz{verbose} option
% was and remains useless, since the instances of command
% \cs{WF@info} were mostly commented out in the original code;
% in any case, input of this code is stopped if the
% \cs{DeclareOption} command is not defined; this command was
-% defined with \LaTeXe; therefore this is a residual of the old
+% defined with \LaTeXe; therefore might be a residual of the old
% times when \LaTeXccix was still in use, more than 25 years
% ago\dots
% \begin{macrocode}
diff --git a/macros/latex/contrib/wrapfig2/wrapfig2.pdf b/macros/latex/contrib/wrapfig2/wrapfig2.pdf
index 5e60317074..1b17f61e8e 100644
--- a/macros/latex/contrib/wrapfig2/wrapfig2.pdf
+++ b/macros/latex/contrib/wrapfig2/wrapfig2.pdf
Binary files differ
diff --git a/macros/latex/contrib/yb-book/DEPENDS.txt b/macros/latex/contrib/yb-book/DEPENDS.txt
new file mode 100644
index 0000000000..df34424b3d
--- /dev/null
+++ b/macros/latex/contrib/yb-book/DEPENDS.txt
@@ -0,0 +1,33 @@
+hard xkeyval
+hard geometry
+hard fontenc
+hard inputenc
+hard anyfontsize
+hard tikz
+hard chngcntr
+hard lastpage
+hard paralist
+hard xcolor
+hard graphicx
+hard setspace
+hard textcomp
+hard enumitem
+hard float
+hard ulem
+hard qrcode
+hard wrapfig
+hard xfp
+hard soul} % in order to use \st{
+hard xifthen
+hard csquotes
+hard biblatex
+hard imakeidx
+hard microtype
+hard libertine
+hard footmisc
+hard titlesec
+hard titlesec
+hard fancyhdr
+hard wrapfig
+hard mdframed
+hard changepage
diff --git a/macros/latex/contrib/yb-book/README.md b/macros/latex/contrib/yb-book/README.md
new file mode 100644
index 0000000000..a9eae33589
--- /dev/null
+++ b/macros/latex/contrib/yb-book/README.md
@@ -0,0 +1,25 @@
+[![make](https://github.com/yegor256/yb-book/actions/workflows/make.yml/badge.svg)](https://github.com/yegor256/yb-book/actions/workflows/make.yml)
+[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/yegor256/yb-book/blob/master/LICENSE.txt)
+
+This LaTeX class I use to format [my books](https://www.yegor256.com/books.html),
+which I sell [on Amazon](https://www.amazon.com/Yegor-Bugayenko/e/B01AM1QMDK).
+
+First, [install it](https://en.wikibooks.org/wiki/LaTeX/Installing_Extra_Packages)
+from [CTAN](https://ctan.org/pkg/yb-book)
+and then use in the preamble:
+
+```tex
+\documentclass{yb-book}
+\renewcommand*\theauthor{Jeff Lebowski}
+\renewcommand*\thevolume{1}
+\renewcommand*\thetitle{New Book About OOP}
+\begin{document}
+Hello, world!
+\end{document}
+```
+
+If you want to contribute yourself, make a fork, then create a branch,
+then run `make` in the root directory.
+It should compile everything without errors. If not, submit an issue and wait.
+Otherwise, make your changes and then run `make` again. If the build is
+still clean, submit a pull request.
diff --git a/macros/latex/contrib/yb-book/samples/sample.tex b/macros/latex/contrib/yb-book/samples/sample.tex
new file mode 100644
index 0000000000..b5528d54ca
--- /dev/null
+++ b/macros/latex/contrib/yb-book/samples/sample.tex
@@ -0,0 +1,41 @@
+% (The MIT License)
+%
+% Copyright (c) 2021 Yegor Bugayenko
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the 'Software'), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all
+% copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+% SOFTWARE.
+
+\documentclass{../yb-book}
+\renewcommand*\thetitle{\LaTeX{} Class yb-book}
+\renewcommand*\theauthor{Yegor Bugayenko}
+\begin{document}
+
+\ybPrintTitlePage
+
+\newpage
+
+\chapter{Overview}
+
+\section{Purpose}
+
+\index{computer}
+This is a very interesting book about computers.
+
+\ybPrintIndex
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/yb-book/yb-book-logo.pdf b/macros/latex/contrib/yb-book/yb-book-logo.pdf
new file mode 100644
index 0000000000..5d49cb9daa
--- /dev/null
+++ b/macros/latex/contrib/yb-book/yb-book-logo.pdf
Binary files differ
diff --git a/macros/latex/contrib/yb-book/yb-book.cls b/macros/latex/contrib/yb-book/yb-book.cls
new file mode 100644
index 0000000000..4b99e80514
--- /dev/null
+++ b/macros/latex/contrib/yb-book/yb-book.cls
@@ -0,0 +1,341 @@
+% (The MIT License)
+%
+% Copyright (c) 2021-2022 Yegor Bugayenko
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the 'Software'), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all
+% copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+% SOFTWARE.
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{yb-book}[2022/01/03 0.1.0 YB Branded Book Style]
+
+\RequirePackage{xkeyval}
+
+\makeatletter
+\newif\ifyb@draft
+\DeclareOptionX{draft}{\yb@drafttrue}
+\newif\ifyb@compact
+\DeclareOptionX{compact}{\yb@compacttrue}
+\newif\ifyb@manuscript
+\DeclareOptionX{manuscript}{\yb@manuscripttrue}
+\ProcessOptionsX
+\makeatother
+
+\makeatletter\ifyb@draft
+ \PassOptionsToClass{11pt}{book}
+ \PassOptionsToClass{oneside}{book}
+\else
+ \ifyb@manuscript
+ \PassOptionsToClass{12pt}{book}
+ \PassOptionsToClass{oneside}{book}
+ \else
+ \PassOptionsToClass{11pt}{book}
+ \PassOptionsToClass{twoside}{book}
+ \fi
+\fi\makeatother
+
+\LoadClass{book}
+
+\RequirePackage{geometry}
+ \geometry{paperwidth=6in, paperheight=9in, bindingoffset=0.25in, left=0.75in, right=0.75in, top=0.75in, bottom=1.25in}
+ \makeatletter\ifyb@draft
+ \geometry{a4paper, margin=1in, left=1.5in}
+ \else
+ \ifyb@manuscript
+ \geometry{a4paper, margin=1.2in}
+ \fi
+ \fi\makeatother
+
+\RequirePackage[T1]{fontenc}
+\RequirePackage[utf8]{inputenc}
+\RequirePackage{anyfontsize}
+\RequirePackage{tikz}
+ \usetikzlibrary{positioning}
+ \usetikzlibrary{shapes}
+ \usetikzlibrary{fit}
+\RequirePackage{chngcntr}
+ \counterwithout{footnote}{chapter}
+\RequirePackage{lastpage}
+\RequirePackage{paralist}
+\RequirePackage{xcolor}
+\RequirePackage{graphicx}
+\RequirePackage{setspace}
+ \setstretch{1.2}
+ \makeatletter\ifyb@draft\setstretch{1.1}\fi\makeatother
+ \makeatletter\ifyb@compact\setstretch{1.0}\fi\makeatother
+ \makeatletter\ifyb@manuscript\setstretch{1.1}\fi\makeatother
+\RequirePackage{textcomp}
+\RequirePackage[inline]{enumitem}
+ \setlist{nosep}
+\RequirePackage{float}
+\RequirePackage[normalem]{ulem}
+\RequirePackage{qrcode}
+\RequirePackage{wrapfig}
+ \pagestyle{plain}
+\RequirePackage{xfp}
+\RequirePackage{soul} % in order to use \st{} to strikethrough
+\RequirePackage{xifthen}
+\RequirePackage[autostyle=try]{csquotes}
+
+\RequirePackage[indexing=cite,style=authoryear,natbib=true,maxnames=1,minnames=1,doi=false,url=false,isbn=false,isbn=false]{biblatex}
+ \DeclareCiteCommand{\citetitle}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexnames{labelname}}
+ {}%
+ \printfield[citetitle]{labeltitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+ \DeclareCiteCommand*{\citetitle}
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \usebibmacro{prenote}}
+ {\ifciteindex
+ {\indexnames{labelname}}
+ {}%
+ \printfield[citetitle]{title}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+\RequirePackage{imakeidx}
+ \renewbibmacro*{citeindex}{\indexnames{labelname}{}}
+ \makeindex
+ \indexsetup{othercode={\hyphenpenalty=10000}}
+
+\newenvironment{condensed}{%
+ \begingroup\setstretch{1.0}%
+ % This lsstyle is defined by 'letterspace' in microtype
+ \lsstyle}{\endgroup}
+
+\makeatletter\ifyb@draft\else
+ \RequirePackage[letterspace=-50]{microtype}
+\fi\makeatother
+
+\makeatletter\ifyb@manuscript
+ \RequirePackage[tt=false,type1=true]{libertine}
+\fi\makeatother
+
+\RequirePackage[bottom,perpage,multiple]{footmisc}
+ % see https://tex.stackexchange.com/questions/40072/incompatibility-between-footmisc-option-multiple-and-hyperref/62091#62091
+ \makeatletter\let\yb@oldfootnote\footnote\makeatother
+ \makeatletter\newcommand\yb@nexttoken\relax\makeatother
+ \makeatletter\newcommand\yb@isfootnote{%
+ \ifx\footnote\yb@nexttoken\textsuperscript{,}\fi}\makeatother
+ \makeatletter\renewcommand\footnote[1]{%
+ \yb@oldfootnote{#1}\futurelet\yb@nexttoken\yb@isfootnote}\makeatother
+
+\makeatletter
+ \let\yb@oldsection\section
+ \ifyb@draft
+ \RequirePackage[medium]{titlesec}
+ \else
+ \RequirePackage[raggedright]{titlesec}
+ \titlespacing{\section}{0in}{6pt}{6pt}[1in]
+ \renewcommand\section{\newpage\yb@oldsection}
+ \fi
+\makeatother
+
+\makeatletter\ifyb@compact
+ \renewcommand\section{\vspace{2em}\yb@oldsection}
+\fi\makeatother
+
+\makeatletter\ifyb@draft
+ \RequirePackage{fancyhdr}
+ \pagestyle{fancy}
+ \renewcommand\headrulewidth{0pt}
+ \renewcommand\footrulewidth{0pt}
+ \fancyhf{}
+ \fancyhead[L,C,LO,CO]{}
+ \fancyhead[R,RO]{
+ \begin{textblock}{4}(11.5,1)
+ \begin{tikzpicture}
+ \node [color=gray, rotate=270, font=\ttfamily\scriptsize, text width=5in] at (0,0) {
+ Copyright \textcopyright{} \the\year{} by \theauthor{}.
+ All rights reserved. No part of the contents of this book may be
+ reproduced or transmitted in any form or by any means without the
+ written permission of the publisher.
+ This particular manuscript is printed for
+ \textbf{\thereviewer{}} and may be used only for one-time review. The
+ manuscript has to be destroyed after the review.
+ };
+ \end{tikzpicture}
+ \end{textblock}
+ }
+ \fancyfoot[C,CO]{\small\ttfamily page \#\thepage{} of \pageref{LastPage}}
+\fi\makeatother
+
+\renewcommand\maketitle{
+ {\LARGE\textbf{\thetitle}}
+ \\[1em]
+ by \theauthor{}
+ \\[4em]
+ \ifx\thevolume\empty\else%
+ Volume \thevolume{}\\
+ \fi
+ \ifx\thedate\empty\else%
+ Rendered on \thedate{}
+ \fi
+ \ifx\theversion\empty\else%
+ \\
+ Ver. \theversion{}
+ \fi
+}
+
+\makeatletter\newcommand\ybPrintTitlePage{
+ \ifyb@draft\else
+ \begin{titlepage}
+ \ttfamily
+ \vspace*{\fill}
+ \noindent
+ {\Huge\textbf{\thetitle}}
+ \\[1em]
+ by \theauthor{}
+ \\[4em]
+ \ifx\thevolume\empty\else%
+ Volume \thevolume{}\\
+ \fi
+ \ifx\thedate\empty\else%
+ \thedate{}
+ \fi
+ \ifx\thedate\empty\else%
+ \\
+ \theversion{}
+ \fi
+ \vspace*{\fill}
+ \end{titlepage}
+ \fi
+}\makeatother
+
+\makeatletter\newcommand\ybPrintTOC{
+ \ifyb@draft\else
+ \ifyb@compact\else\cleardoublepage\fi
+ {\setstretch{0.7}\tableofcontents}
+ \fi
+}\makeatother
+
+\makeatletter\newcommand\ybPrintIndex[1][Index]{
+ \ifyb@draft\else
+ \cleardoublepage
+ {
+ \setstretch{1.0}
+ \small
+ \addcontentsline{toc}{chapter}{#1}
+ \printindex
+ }
+ \fi
+}\makeatother
+
+\newcommand\ybPrintIcons{%
+ \ifdefempty{\theemail{}}{}{%
+ \includegraphics[height=1em]{images/icon-email.pdf}%
+ \theemail{}%
+ }%
+ \includegraphics[height=1em]{images/icon-twitter.pdf}%
+ \includegraphics[height=1em]{images/icon-linkedin.pdf}%
+ \includegraphics[height=1em]{images/icon-github.pdf}%
+ \includegraphics[height=1em]{images/icon-instagram.pdf}%
+ \includegraphics[height=1em]{images/icon-facebook.pdf}%
+ \thesocial{}%
+}
+
+% quotes
+\RequirePackage{wrapfig}
+\RequirePackage{mdframed}
+\RequirePackage{changepage}
+ \strictpagecheck
+\mdfdefinestyle{quoteodd}{backgroundcolor=black!0,
+ leftmargin=6pt,rightmargin=0pt,
+ innerleftmargin=6pt,innerrightmargin=0pt,
+ innertopmargin=0pt,innerbottommargin=0pt,
+ skipabove=0pt,skipbelow=0pt,
+ linewidth=2pt,
+ topline=false,bottomline=false,rightline=false}
+\mdfdefinestyle{quoteeven}{backgroundcolor=black!0,
+ rightmargin=6pt,leftmargin=0pt,
+ innerrightmargin=6pt,innerleftmargin=0pt,
+ innertopmargin=0pt,innerbottommargin=0pt,
+ skipabove=0pt,skipbelow=0pt,
+ linewidth=2pt,
+ topline=false,bottomline=false,leftline=false}
+\makeatletter\newcommand\ybQuote[3]{%
+ \ifthenelse{\isempty{#3}}{}{
+ \ifx\hfuzz#2\hfuzz%
+ \index{#3}%
+ \else%
+ \index{#3, #2}%
+ \fi%
+ }%
+ \def\yb@body{%
+ \raggedright%
+ \ifx\hfuzz#3\hfuzz%
+ #1%
+ \else%
+ ``#1''\\\raggedleft---#2 #3%
+ \fi%
+ }
+ \ifyb@draft%
+ \begin{wrapfigure}{r}{0.4\textwidth}%
+ \begin{mdframed}[style=quoteodd]%
+ \yb@body%
+ \end{mdframed}%
+ \end{wrapfigure}%
+ \else%
+ \begin{wrapfigure}{o}[12pt]{0.4\textwidth}%
+ \sffamily\checkoddpage%
+ \ifoddpage%
+ \begin{mdframed}[style=quoteodd]\yb@body\end{mdframed}%
+ \else%
+ \begin{mdframed}[style=quoteeven]\yb@body\end{mdframed}%
+ \fi%
+ \vspace{-12pt}
+ \end{wrapfigure}%
+ \fi%
+}\makeatother
+
+\makeatletter\newcommand\ybPrintBibliography{%
+ \AtNextBibliography{\small}%
+ \raggedright%
+ \ifyb@manuscript%
+ \setlength\bibitemsep{0pt}%
+ \newpage%
+ \begin{multicols}{2}{\setstretch{1.0}\printbibliography}\end{multicols}
+ \else
+ \printbibliography
+ \fi
+}\makeatother
+
+\AtBeginDocument{%
+ \raggedbottom%
+ \setlength\topskip{0mm}%
+ \setlength\parindent{0pt}%
+ \setlength\parskip{6pt}%
+ \interfootnotelinepenalty=10000%
+}
+
+\newcommand*\thetitle{\textbackslash{}thetitle}
+\newcommand*\thevolume{}
+\newcommand*\thedate{}
+\newcommand*\theemail{\textbackslash{}theemail}
+\newcommand*\thesocial{\textbackslash{}thesocial}
+\newcommand*\theversion{\textbackslash{}theversion}
+\newcommand*\theauthor{\textbackslash{}theauthor}
+\newcommand*\thereviewer{\textbackslash{}thereviewer}
+\newcommand*\theyear{\textbackslash{}theyear}
+\newcommand*\theprice{\textbackslash{}theprice}
+
+\endinput
diff --git a/macros/latex/contrib/yb-book/yb-book.pdf b/macros/latex/contrib/yb-book/yb-book.pdf
new file mode 100644
index 0000000000..cde5f931f5
--- /dev/null
+++ b/macros/latex/contrib/yb-book/yb-book.pdf
Binary files differ
diff --git a/macros/latex/contrib/yb-book/yb-book.tex b/macros/latex/contrib/yb-book/yb-book.tex
new file mode 100644
index 0000000000..0937552058
--- /dev/null
+++ b/macros/latex/contrib/yb-book/yb-book.tex
@@ -0,0 +1,79 @@
+% (The MIT License)
+%
+% Copyright (c) 2021-2022 Yegor Bugayenko
+%
+% Permission is hereby granted, free of charge, to any person obtaining a copy
+% of this software and associated documentation files (the 'Software'), to deal
+% in the Software without restriction, including without limitation the rights
+% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+% copies of the Software, and to permit persons to whom the Software is
+% furnished to do so, subject to the following conditions:
+%
+% The above copyright notice and this permission notice shall be included in all
+% copies or substantial portions of the Software.
+%
+% THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+% SOFTWARE.
+
+\documentclass[compact,manuscript]{./yb-book}
+\usepackage{ffcode}
+\usepackage{href-ul}
+\renewcommand*\theversion{0.1.0}
+\renewcommand*\thedate{2022/01/03}
+\renewcommand*\thetitle{\LaTeX{} Class \ff{yb-book}}
+\renewcommand*\theauthor{Yegor Bugayenko}
+
+\begin{document}
+
+\includegraphics[height=6em]{yb-book-logo.pdf}
+\vspace*{24pt}
+
+\maketitle
+
+\index{Amazon}
+The provided class \ff{yb-book} helps me design
+\href{https://www.yegor256.com/books.html}{my books} and
+publish them
+\href{https://www.amazon.com/Yegor-Bugayenko/e/B01AM1QMDK}{on Amazon}.
+
+There are a few class options you can use:
+
+\ff{compact} --- when you need to make text more compact
+and take less vertical space;
+
+\ff{manuscript} --- when the format is not for Amazon printing,
+but for some other purposes (the page size is A4), like the document
+you are reading right now;
+
+\ff{draft} --- when it's a draft for reviewers (the page size is A4)
+and you want to have a watermark and a compact form of the content;
+
+\section*{Printers}
+
+There are a number of printers, commands that print large blocks of text
+in the expected format:
+
+\ff{\textbackslash{}ybPrintTitlePage} --- prints the first page of a book.
+
+\ff{\textbackslash{}ybPrintTOC} --- prints the table of contents.
+
+\ff{\textbackslash{}ybQuote} --- prints a side quote.
+
+\ff{\textbackslash{}ybPrintBibliography} --- prints the list of bib references.
+
+\ff{\textbackslash{}ybPrintIcons} --- prints your social icons.
+
+\ff{\textbackslash{}ybPrintIndex[1]} --- prints index with an optional name of the section (instead of ``Index'').
+
+For more samples, check the directory \ff{samples/}.
+
+You are welcome to suggest additional commands, but the style
+of my books is intentionally as simple as possible, avoiding formatting
+as much as possible.
+
+\end{document} \ No newline at end of file
diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README
index 6ecb431970..6d7fe60543 100644
--- a/macros/luatex/generic/luatexja/README
+++ b/macros/luatex/generic/luatexja/README
@@ -1,4 +1,4 @@
-The LuaTeX-ja Package 20211024.0
+The LuaTeX-ja Package 20220103.0
--------------------------------
Copyright (c) 2011--2021 The LuaTeX-ja project
License: modified BSD (see COPYING)
@@ -42,9 +42,9 @@ Installation
2. If you must/want to install manually:
a. Download the source archive from CTAN,
- or tagged as 20211024.0 in the Git repository by
+ or tagged as 20220103.0 in the Git repository by
<http://git.osdn.jp/view?p=luatex-ja/luatexja.git
- ;a=snapshot;h=refs/tags/20211024.0;sf=tgz>
+ ;a=snapshot;h=refs/tags/20220103.0;sf=tgz>
b. Extract the archive and process following three files by LuaLaTeX
to generate classes for Japanese typesetting:
@@ -93,4 +93,4 @@ Notes
This file and ltj-kinsoku.lua are not used anymore.
(Do not remove ltj-kinsoku.tex.)
-Last commit date: Sun Oct 24 13:28:03 2021 +0900
+Last commit date: Mon Jan 3 12:19:51 2022 +0900
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
index 6f4ce08e8a..dcb0a086ee 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
index cc188cb9d0..f91aac1df4 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx
index 46106f0930..4d553f38ec 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja.dtx
+++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx
@@ -4721,8 +4721,8 @@ we specify <ratio> to $0.25/(0.5+0.25)=1/3$.
JFMによって本来挿入されるグルーの他に
\Param{kanjiskip}分の空白を自然長(\texttt{kanjiskip\_natural}),伸び量(\texttt{kanjiskip\_stretch}),
-縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する\footnote{本来\Param{xkanjiskip}が挿入される場所においては
- \Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに.追加できる.}%
+縮み量(\texttt{kanjiskip\_shrink})ごとに挿入する
+% \footnote{本来\Param{xkanjiskip}が挿入される場所においては\Param{xkanjiskip}分の空白を自然長・伸び量・縮み量ごとに}%
ための指定である.いずれも省略された場合のデフォルト値は0(追加しない)である.
例えば,\LuaTeX-jaの横組標準JFMの \texttt{jfm-ujis.lua} では,
@@ -4730,8 +4730,8 @@ JFMによって本来挿入されるグルーの他に
\item 通常の文字「あ」と開き括弧類の間に入るグルーは,自然長・縮み量半角,伸び量0のグルー
となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
た分だけ伸びることが許される.
- \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と通常の文字「う」「え」の間にも
-自然長・縮み量半角,伸び量0のグルー
+ \item 同様に,閉じ括弧類(全角コンマ「,」も含む)と和文文字「う」「え」,
+ 閉じ括弧類と「f」の間も自然長・縮み量半角,伸び量0のグルー
となっているが,さらに\Param{kanjiskip}の伸び量に \texttt{kanjiskip\_stretch}(ここでは1)を掛け
た分だけ伸びることが許される.
\item 一方,開き括弧類と通常の文字の間,また通常の文字と閉じ括弧類の間は
@@ -4741,16 +4741,16 @@ JFMによって本来挿入されるグルーの他に
となっている.従って,以下のような組版結果を得る.
\medskip
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\begin{LTXexample}[width=18\zw]
+\leavevmode\let\V=\vrule
+\ltjsetparameter{kanjiskip=0pt plus 5\zw}
+\ltjsetparameter{xkanjiskip=0pt plus 0.5\zw}
+\V\hbox spread 7\zw{aあ「い」う,えお」f}\V
-\vrule\hbox{あ「い」う,えお}\vrule\par
+\vrule\hbox{ああ「い」う,えお」f}\V\par
\ltjsetparameter{kanjiskip=0pt minus \zw}
-\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule
+\V\hbox spread -2.5\zw{aあ「い」う,えお」f}\V
\end{LTXexample}
-
\end{cslist}
%</ja>
%<*en>
@@ -4767,7 +4767,7 @@ and is also easy to shrink.
\item[kanjiskip\_natural=<num>\textrm{, }%
kanjiskip\_stretch=<num>\textrm{, }kanjiskip\_shrink=<num>]\leavevmode
-These keys specifies the amount of the natural width of \Param{kanjiskip}
+These keys specifies the amount of the natural width of \Param{kanjiskip}%
(the stretch/shrink part, respectively) which will be inserted
in addition to the original JFM glue. Default values of them are all 0.
@@ -4778,8 +4778,8 @@ a glue whose natural part and shrink part are both half-width, while its stretch
zero. However, this glue also can be stretched
as much as the stretch part of \Param{kanjiskip} times the value of
\texttt{kanjiskip\_stretch} key (1 in this case).
- \item Between an ideographic closeing brackets (the ideographic comma ``,''
- is included) and an ordinal letter, we have the same glue.
+ \item Between an ideographic closeing brackets (including the ideographic comma ``,'')
+ and an ordinal letter (including an \textbf{ALchar} ``f\/''), we have the same glue.
Again, this glue also can be stretched
as much as the stretch part of \Param{kanjiskip} times the value of
\texttt{kanjiskip\_stretch} key (1 in this case).
@@ -4791,14 +4791,15 @@ a glue whose natural part and shrink part are both half-width, while its stretch
Hence we have the following result:
\medskip
-\begin{LTXexample}[width=16\zw]
-\leavevmode
-\ltjsetparameter{kanjiskip=0pt plus 3\zw}
-\vrule\hbox to 15\zw{あ「い」う,えお}\vrule
+\begin{LTXexample}[width=18\zw]
+\leavevmode\let\V=\vrule
+\ltjsetparameter{kanjiskip=0pt plus 5\zw}
+\ltjsetparameter{xkanjiskip=0pt plus 0.5\zw}
+\V\hbox spread 7\zw{aあ「い」う,えお」f}\V
-\vrule\hbox{あ「い」う,えお}\vrule\par
+\vrule\hbox{aあ「い」う,えお」f}\V\par
\ltjsetparameter{kanjiskip=0pt minus \zw}
-\vrule\hbox to 6.5\zw{あ「い」う,えお}\vrule
+\V\hbox spread -2.5\zw{aあ「い」う,えお」f}\V
\end{LTXexample}
\end{cslist}
@@ -7764,7 +7765,8 @@ for making the difference obvious.}
\begin{cslist}
\item[\cs{ltjenableadjust[...]}]
\verb+...+ に指定したkey-valueリストに従い,「行末文字の位置調整」「優先順位付きの行長調整」
- 「『中身までみた』行送り計算」「段階的な行送り調整」を有効化/無効化する.
+ 「『中身までみた』行送り計算」「段階的な行送り調整」%「濁点・半濁点付き仮名文字の正規化」
+ を有効化/無効化する.
指定できるキーは以下の通り.
\begin{description}
\item[\texttt{lineend=[false,true,extended]}]
@@ -7776,6 +7778,8 @@ for making the difference obvious.}
「中身までみた」行送り計算を無効化(\texttt{false}),または有効化(\texttt{true}).
\item[\texttt{linestep=[false,true]}]
段階的な行送り調整を無効化(\texttt{false}),または有効化(\texttt{true}).
+% \item[\texttt{composekana=[false,true]}]
+% 濁点・半濁点付き仮名文字の正規化を無効化(\texttt{false}),または有効化(\texttt{true}).
\end{description}
どのキーともキー名のみを指定した場合は値として\texttt{true}が指定されたものと扱われる.
@@ -9939,6 +9943,116 @@ u
その行はそこで改行するようにした方がいいだろう.
%</ja>
+\begin{table}[t]
+%<ja> \caption{「基底文字+合成用濁点・半濁点」から合成済み文字への変換をサポートする組み合わせ}
+%<en> \caption{Normalization of Kana Character Sequences with Combining (Semi)-voiced Sound Mark}\medskip
+ \label{tab:kana_composite}
+ \def\D#1{%
+ {\fboxsep0pt\fcolorbox{cyan}{white}%
+ {\hbox to 1\zw{\hss#1}}}} %"
+ \def\DC#1{\D{\unitlength=1\zw
+ \begin{picture}(1,0)
+ \put(0.5,0.38){\arc[0,15]{0.25}}\put(0.5,0.38){\arc[30,45]{0.25}}\put(0.5,0.38){\arc[60,75]{0.25}}
+ \put(0.5,0.38){\arc[90,105]{0.25}}\put(0.5,0.38){\arc[120,135]{0.25}}\put(0.5,0.38){\arc[150,165]{0.25}}
+ \put(0.5,0.38){\arc[180,195]{0.25}}\put(0.5,0.38){\arc[210,225]{0.25}}\put(0.5,0.38){\arc[240,255]{0.25}}
+ \put(0.5,0.38){\arc[270,285]{0.25}}\put(0.5,0.38){\arc[300,315]{0.25}}\put(0.5,0.38){\arc[330,345]{0.25}}
+ \end{picture}\llap{#1\kern-.7\zw}}}
+ \def\CDJ#1#2{$\mbox{\D{\char"#1}}+\mbox{\DC{゛}}\rightarrow \mbox{\D{\char"#2}}$}
+ \def\CHJ#1#2{$\mbox{\D{\char"#1}}+\mbox{\DC{゜}}\rightarrow \mbox{\D{\char"#2}}$}
+ \small\centering
+ \begin{tabular}{@{}llllll@{}}
+ \CDJ{3046}{3094}&
+ \CDJ{304B}{304C}&
+ \CDJ{304D}{304E}&
+ \CDJ{304F}{3050}&
+ \CDJ{3051}{3052}&
+ \CDJ{3053}{3054}\\
+ \CDJ{3055}{3056}&
+ \CDJ{3057}{3058}&
+ \CDJ{3059}{305A}&
+ \CDJ{305B}{305C}&
+ \CDJ{305D}{305E}&
+ \CDJ{305F}{3060}\\
+ \CDJ{3061}{3062}&
+ \CDJ{3064}{3065}&
+ \CDJ{3066}{3067}&
+ \CDJ{3068}{3069}&
+ \CDJ{306F}{3070}&
+ \CDJ{3072}{3073}\\
+ \CDJ{3075}{3076}&
+ \CDJ{3078}{3079}&
+ \CDJ{307B}{307C}&
+ \CDJ{309D}{309E}&
+ \CDJ{30A6}{30F4}&
+ \CDJ{30AB}{30AC}\\
+ \CDJ{30AD}{30AE}&
+ \CDJ{30AF}{30B0}&
+ \CDJ{30B1}{30B2}&
+ \CDJ{30B3}{30B4}&
+ \CDJ{30B5}{30B6}&
+ \CDJ{30B7}{30B8}\\
+ \CDJ{30B9}{30BA}&
+ \CDJ{30BB}{30BC}&
+ \CDJ{30BD}{30BE}&
+ \CDJ{30BF}{30C0}&
+ \CDJ{30C1}{30C2}&
+ \CDJ{30C4}{30C5}\\
+ \CDJ{30C6}{30C7}&
+ \CDJ{30C8}{30C9}&
+ \CDJ{30CF}{30D0}&
+ \CDJ{30D2}{30D3}&
+ \CDJ{30D5}{30D6}&
+ \CDJ{30D8}{30D9}\\
+ \CDJ{30DB}{30DC}&
+ \CDJ{30EF}{30F7}&
+ \CDJ{30F0}{30F8}&
+ \CDJ{30F1}{30F9}&
+ \CDJ{30F2}{30FA}&
+ \CDJ{30FD}{30FE}\\
+ \CHJ{306F}{3071}&
+ \CHJ{3072}{3074}&
+ \CHJ{3075}{3077}&
+ \CHJ{3078}{307A}&
+ \CHJ{307B}{307D}&
+ \CHJ{30CF}{30D1}\\
+ \CHJ{30D2}{30D4}&
+ \CHJ{30D5}{30D7}&
+ \CHJ{30D8}{30DA}&
+ \CHJ{30DB}{30DD}
+ \end{tabular}
+\end{table}
+%<*en>
+\subsection{Composition of Kana from Combining Character Sequences}
+In (u)\pTeX, Hiragana and Katakana in the NFD form%
+\footnote{namely, character sequences which contains
+ ``COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK''~(\texttt{U+3099}) and
+ ``COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK''~(\texttt{U+309A}).}
+are normalized to precomposed characters before (u)\pTeX\ looks into the input line.
+Character sequences which are involved in this normalization are shown in \autoref{tab:kana_composite}.
+
+The above normalization process is also performed in \LuaTeX-ja version~20220103.0 or later, because
+fonts might not have these transformation as an OpenType feature.
+%</en>
+
+%<*ja>
+\subsection{濁点・半濁点付き仮名文字の正規化}
+\TeX~Live~2016以降の(u)\pTeX では,合成用濁点(\texttt{U+3099})・合成用半濁点(\texttt{U+309A})を用いて
+表現された平仮名・片仮名を合成済み文字に変換する(具体的には\autoref{tab:kana_composite}の組み合わせ)という処理を行っている.
+この処理を行っている要因としては,
+\begin{itemize}
+ \item 無用なトラブルを避けるため.
+ 濁点・半濁点付きの仮名文字が「合成用濁点・半濁点を使って入力されているか」「最初から合成済み文字で入力されているか」を
+ 見た目から判別することは難しい.
+ \item \pTeX との互換性のため.\pTeX は内部コードがJIS~X~0208の範囲に限られるため,
+ 合成用濁点・半濁点は利用できない.そのため上記の変換処理はさらに前から行われていた.
+\end{itemize}
+
+一方,\LuaTeX(-ja)では入力の変換は基本的に行わず,文字の合成は使用しているフォントのOpenType機能に委ねるという立場である.
+しかし,\autoref{tab:kana_composite}に挙げた変換はUnicode正規化の範疇であり,この内容を持っているフォントは多くない.
+よって,前段落で述べた2つの理由(と\upTeX との互換性という意味も込めて)も考慮して,
+バージョン20220103.0以降では,\LuaTeX-jaは入力行に対して\autoref{tab:kana_composite}の変換を行う.
+%</ja>
+
%<*ja>
%<en>\section{Insertion of JFM glues, \Param{kanjiskip} and \Param{xkanjiskip}}
diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
index 5636179464..d325df7dc6 100644
--- a/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
+++ b/macros/luatex/generic/luatexja/src/addons/luatexja-adjust.sty
@@ -64,7 +64,7 @@
\expandafter\let\csname ifltj@in@latex\expandafter\endcsname
\csname iftrue\endcsname
\NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{luatexja-adjust}[2019-01-06]
+ \ProvidesPackage{luatexja-adjust}[2022-01-03]
\fi %</LaTeX>
% Load core module if not yet.
@@ -109,7 +109,7 @@
\the\ltjadj@status@lp, \the\ltjadj@status@ls)}\ignorespaces
}
\protected\def\ltjdisableadjust{%
- \ltjenableadjust[lineend=false,priority=false,profile=false,linestep=false]}
+ \ltjenableadjust[lineend=false,priority=false,profile=false,linestep=false]}%
\protected\def\ltjenableadjust{%
\ltx@ifnextchar[{\@@ltjenableadjust}{\@@ltjenableadjust[lineend,priority]}}%]
diff --git a/macros/luatex/generic/luatexja/src/ltj-adjust.lua b/macros/luatex/generic/luatexja/src/ltj-adjust.lua
index 56effa3c57..76a1a68ec4 100644
--- a/macros/luatex/generic/luatexja/src/ltj-adjust.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-adjust.lua
@@ -434,7 +434,7 @@ do
luatexja.lineskip.setting(
status_lp>0 and 'profile' or 'dummy',
status_ls>0 and 'step' or 'dummy'
- )
+ )
end
local function disable_cb() -- only for compatibility
enable_cs(0,0,0,0)
diff --git a/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua b/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
index e1623199e4..7f39b9b8d7 100644
--- a/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-inputbuf.lua
@@ -14,6 +14,43 @@ local id_glyph = node.id 'glyph'
local getcatcode, getcount = tex.getcatcode, tex.getcount
local ltjc_is_japanese_char_curlist = ltjc.is_japanese_char_curlist
+local substituter
+do
+ local uchar = utf.char
+ local cd, cp = uchar(0x3099), uchar(0x309A)
+ substituter = (utf.substituter or utf.subtituter) -- typo in lualibs?
+ {
+ ['ウ'..cd] = 'ヴ', ['う'..cd] = uchar(0x30F4),
+ ['か'..cd] = 'が', ['カ'..cd] = 'ガ',
+ ['き'..cd] = 'ぎ', ['キ'..cd] = 'ギ',
+ ['く'..cd] = 'ぐ', ['ク'..cd] = 'グ',
+ ['け'..cd] = 'げ', ['ケ'..cd] = 'ゲ',
+ ['こ'..cd] = 'ご', ['コ'..cd] = 'ゴ',
+ --
+ ['さ'..cd] = 'ざ', ['サ'..cd] = 'ザ',
+ ['し'..cd] = 'じ', ['シ'..cd] = 'ジ',
+ ['す'..cd] = 'ず', ['ス'..cd] = 'ズ',
+ ['せ'..cd] = 'ぜ', ['セ'..cd] = 'ゼ',
+ ['そ'..cd] = 'ぞ', ['ソ'..cd] = 'ゾ',
+ --
+ ['た'..cd] = 'だ', ['タ'..cd] = 'ダ',
+ ['ち'..cd] = 'ぢ', ['チ'..cd] = 'ヂ',
+ ['つ'..cd] = 'づ', ['ツ'..cd] = 'ヅ',
+ ['て'..cd] = 'で', ['テ'..cd] = 'デ',
+ ['と'..cd] = 'ど', ['ト'..cd] = 'ド',
+ --
+ ['は'..cd] = 'ば', ['ハ'..cd] = 'バ', ['は'..cp] = 'ぱ', ['ハ'..cp] = 'パ',
+ ['ひ'..cd] = 'び', ['ヒ'..cd] = 'ビ', ['ひ'..cp] = 'ぴ', ['ヒ'..cp] = 'ピ',
+ ['ふ'..cd] = 'ぶ', ['フ'..cd] = 'ブ', ['ふ'..cp] = 'ぷ', ['フ'..cp] = 'プ',
+ ['へ'..cd] = 'べ', ['ヘ'..cd] = 'ベ', ['へ'..cp] = 'ぺ', ['ヘ'..cp] = 'ペ',
+ ['ほ'..cd] = 'ぼ', ['ホ'..cd] = 'ボ', ['ほ'..cp] = 'ぽ', ['ホ'..cp] = 'ポ',
+ --
+ ['ゝ'..cd] = 'ゞ', ['ヽ'..cd] = 'ヾ',
+ ['ワ'..cd] = uchar(0x30F7), ['ヰ'..cd] = uchar(0x30F8),
+ ['ヱ'..cd] = uchar(0x30F9), ['ヲ'..cd] = uchar(0x30FA),
+ }
+end
+
--- the following function is modified from jafontspec.lua (by K. Maeda).
--- Instead of "%", we use U+FFFFF for suppressing spaces.
--DEBUG require"socket"
@@ -21,7 +58,7 @@ local time_line = 0
local start_time_measure, stop_time_measure
= ltjb.start_time_measure, ltjb.stop_time_measure
local function add_comment(buffer)
- start_time_measure 'inputbuf'
+ start_time_measure 'inputbuf'; buffer = substituter(buffer)
local i = utflen(buffer)
local c = utfbyte(buffer, i)
while (i>0) and (getcatcode(c)==1 or getcatcode(c)==2) do
diff --git a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
index 9ce7816070..a2bede6442 100644
--- a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfmglue',
- date = '2021-09-18',
+ date = '2022-01-02',
description = 'Insertion process of JFM glues, [x]kanjiskip and others',
})
luatexja.jfmglue = luatexja.jfmglue or {}
@@ -975,24 +975,20 @@ end
-- NA, NB: alchar or math
local function get_NA_skip()
local pm = Np.met
- local g, _, kn, kp, kh = new_jfm_glue(
- pm.char_type,
- fast_find_char_class(
- (Nq.id == id_math and -1 or (Nq.xspc>=2 and 'alchar' or 'nox_alchar')), pm),
- Np.class)
- local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc')
- and get_xkanjiskip_low(false, pm, kn, kp, kh)
+ local qclass = fast_find_char_class(
+ (Nq.id == id_math and -1 or (Nq.xspc>=2 and 'alchar' or 'nox_alchar')), pm)
+ local g, _, kn, kp, kh = new_jfm_glue(pm.char_type, qclass, Np.class)
+ local k = g and (Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc'
+ and get_kanjiskip_low(true, pm, kn, kp, kh)
return g, k
end
local function get_NB_skip()
local qm = Nq.met
- local g, _, kn, kp, kh = new_jfm_glue(
- qm.char_type, Nq.class,
- fast_find_char_class(
- (Np.id == id_math and -1 or (Np.xspc%2==1 and 'alchar' or 'nox_alchar')), qm)
- )
- local k = ((Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc')
- and get_xkanjiskip_low(false, qm, kn, kp, kh)
+ local pclass = fast_find_char_class(
+ (Np.id == id_math and -1 or (Np.xspc%2==1 and 'alchar' or 'nox_alchar')), qm)
+ local g, _, kn, kp, kh = new_jfm_glue(qm.char_type, Nq.class, pclass)
+ local k = g and (Nq.xspc>=2) and (Np.xspc%2==1) and combine_spc 'auto_xspc'
+ and get_kanjiskip_low(true, qm, kn, kp, kh)
return g, k
end
@@ -1037,8 +1033,7 @@ local function handle_np_jachar(mode)
if not g then g = get_kanjiskip() end
handle_penalty_normal(0, Np.pre, g); real_insert(g); real_insert(k)
elseif Nq.pre then
- local g, k
- if non_ihb_flag then g, k = get_NA_skip() end -- N_A->X
+ local g, k; if non_ihb_flag then g, k = get_NA_skip() end -- N_A->X
if not g then g = get_xkanjiskip(Np) end
handle_penalty_normal((qid==id_hlist and 0 or Nq.post), Np.pre, g);
real_insert(g); real_insert(k)
@@ -1059,8 +1054,10 @@ end
-- jachar .. (anything)
local function handle_nq_jachar()
if Np.pre then
- local g = non_ihb_flag and get_NB_skip() or get_xkanjiskip(Nq) -- N_B->X
- handle_penalty_normal(Nq.post, (Np.id==id_hlist and 0 or Np.pre), g); real_insert(g)
+ local g, k; if non_ihb_flag then g, k = get_NB_skip()end -- N_B->X
+ if not g then g = get_xkanjiskip(Nq) end
+ handle_penalty_normal(Nq.post, (Np.id==id_hlist and 0 or Np.pre), g);
+ real_insert(g); real_insert(k)
else
local g =non_ihb_flag and (get_OB_skip()) -- O_B
if Np.id==id_glue then handle_penalty_normal(Nq.post, 0, g)
diff --git a/macros/luatex/generic/luatexja/src/ltj-jfont.lua b/macros/luatex/generic/luatexja/src/ltj-jfont.lua
index b097809883..4c19e33cb2 100644
--- a/macros/luatex/generic/luatexja/src/ltj-jfont.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-jfont.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfont',
- date = '2021-09-18',
+ date = '2021-11-06',
description = 'Loader for Japanese fonts',
})
@@ -889,12 +889,16 @@ do
end
end
- local function prepare_extra_data_font(id, res)
+ local function prepare_extra_data_font(id, res, name)
if type(res)=='table' and (res.psname or res.filename) then
- local bname = res.psname or nameonly(res.filename)
- local t = font_extra_basename[bname]
- if not t then bname = prepare_extra_data_base(res) end
- font_extra_info[id] = bname and (t or font_extra_basename[bname]) or dummytable
+ if (res.embedding=='no') and (type(name)=='string') and (name:sub(1,5)=='psft:') then
+ font_extra_info[id] = res.resources.ltj_extra
+ else
+ local bname = res.psname or nameonly(res.filename)
+ local t = font_extra_basename[bname]
+ if not t then bname = prepare_extra_data_base(res) end
+ font_extra_info[id] = bname and (t or font_extra_basename[bname]) or dummytable
+ end
end
end
luatexbase.add_to_callback(
@@ -907,7 +911,7 @@ do
luatexbase.add_to_callback(
'luatexja.define_font',
function (res, name, size, id)
- prepare_extra_data_font(id, res)
+ prepare_extra_data_font(id, res, name)
end,
'ltj.prepare_extra_data', 1)
diff --git a/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua b/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
index 499d3eda4a..49f2018e4d 100644
--- a/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-rmlgbm.lua
@@ -5,7 +5,7 @@ luatexja.load_module('base'); local ltjb = luatexja.base
local cidfont_data = {}
local cache_chars = {}
-local cache_ver = 10
+local cache_ver = 11
local identifiers = fonts.hashes.identifiers
local cid_reg, cid_order, cid_supp, cid_name
@@ -157,6 +157,7 @@ do
tth[pricode], cidmo[i], pricode
= { index = i }, pricode, pricode+1;
end
+ ttu[i] = cidmo[i]
ttu[cid_order .. '.' .. i] = cidmo[i]
end
@@ -231,7 +232,7 @@ do
cidf_vert_processor = {
function (head, fnum)
local fontdata = font_getfont(fnum)
- if head and luatexja.jfont.font_metric_table[fnum].vert_activated then
+ if head and luatexja.jfont.font_metric_table[fnum] and luatexja.jfont.font_metric_table[fnum].vert_activated then
local vt = fontdata.ltj_vert_table
local nh = is_node(head) and to_direct(head) or head
for n in traverse_id(id_glyph, head) do
@@ -245,6 +246,9 @@ do
}
end
+local dummy_vht, dummy_vorg = {}, {}
+setmetatable(dummy_vht, {__index = function () return 1 end } )
+setmetatable(dummy_vorg, {__index = function () return 0.88 end } )
local function cid_cache_outdated(t) return t.version~=cache_ver end
local function read_cid_font()
local dat = ltjb.load_cache("ltj-cid-auto-" .. string.lower(cid_name),
@@ -260,6 +264,9 @@ local function read_cid_font()
end
if cidfont_data[cid_name] then
cidfont_data[cid_name].shared.processes = cidf_vert_processor
+ cidfont_data[cid_name].resources.ltj_extra
+ = { ind_to_uni = cidfont_data[cid_name].resources.unicodes,
+ vheight = dummy_vht, vorigin = dummy_vorg }
for i,v in pairs(cidfont_data[cid_name].characters) do
if not v.width then v.width = 655360 end
v.height, v.depth = 576716.8, 78643.2 -- optimized for jfm-ujis.lua
diff --git a/macros/luatex/generic/luatexja/src/ltjclasses.dtx b/macros/luatex/generic/luatexja/src/ltjclasses.dtx
index a9c24bb5b9..2511e6e0ff 100644
--- a/macros/luatex/generic/luatexja/src/ltjclasses.dtx
+++ b/macros/luatex/generic/luatexja/src/ltjclasses.dtx
@@ -137,6 +137,7 @@
% \changes{v1.8f}{2020/09/30}{add a fourth argument for better
% hyperref compability
% (sync with ltsect.dtx 2020/07/27 v1.1e)}
+% \changes{v1.8f-ltj-21}{2021-12-22}{余計なコメントの削除.}
% \fi
%
% \iffalse
@@ -166,7 +167,7 @@
%<11pt&bk>\ProvidesFile{ltjtbk11.clo}
%<12pt&bk>\ProvidesFile{ltjtbk12.clo}
%</tate>
- [2020-09-30 v1.8f-ltj-20
+ [2021-12-22 v1.8f-ltj-21
%<article|report|book> Standard LuaLaTeX-ja class]
%<10pt|11pt|12pt> Standard LuaLaTeX-ja file (size option)]
%<*driver>
@@ -4712,8 +4713,6 @@
% \section{各種パッケージへの対応}
% もともと縦組での利用を想定されていないいくつかのパッケージについて、
% 補正するためのコードを記述しておきます。
-%% この節のコードは|filehook|パッケージ(Lua\TeX-ja読み込み時に自動でロードされます)
-%% の機能を用いています。
%
% [2020-08-03 LTJ] \LaTeX\~2020-10-01に対応するため、Lua\TeX-jaの提供する命令
% (|filehook|パッケージの命令の別名か、新\LaTeX のフック機構を利用して同様の内容を書いたもの)
diff --git a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx
index f0c8830bfd..b47fe05311 100644
--- a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx
+++ b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx
@@ -5141,6 +5141,7 @@
\splittopskip\footnotesep
\splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize\columnwidth \@parboxrestore
+ \def\@currentcounter{footnote}%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty
index 5c86aa9b78..48db2624ec 100644
--- a/macros/luatex/generic/luatexja/src/luatexja.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja.sty
@@ -27,7 +27,7 @@
\newif\ifltj@disablejfam
%%%% VERSION
-\def\LuaTeXjaversion{20211024.0}
+\def\LuaTeXjaversion{20220103.0}
%% Check if LaTeX is used.
\begingroup\expandafter\expandafter\expandafter\endgroup
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
index db444aecb7..fcc8922fea 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjp-siunitx.sty
@@ -1,5 +1,5 @@
%
-% lltjp-siunitx.sty 2021-04-19
+% lltjp-siunitx.sty 2021-10-31
%
\NeedsTeXFormat{LaTeX2e}
@@ -31,6 +31,9 @@
\__siunitx_print_text_replace:n {#1}
}
}
+\cs_set_eq:NN \ltj_orig__siunitx_table_collect_begin:w \__siunitx_table_collect_begin:w
+\cs_set_protected:Npn \__siunitx_table_collect_begin:w #1 \relax
+ { \ltj_orig__siunitx_table_collect_begin:w }
}% siunitx v3.00 end
{% siunitx v2.xx
\cs_generate_variant:Nn \tl_if_in:NnT { coT }
diff --git a/macros/texinfo/latest/texinfo.tex b/macros/texinfo/latest/texinfo.tex
index dba0dec80b..951ac11fcf 100644
--- a/macros/texinfo/latest/texinfo.tex
+++ b/macros/texinfo/latest/texinfo.tex
@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2021-11-01.16}
+\def\texinfoversion{2022-01-02.12}
%
% Copyright 1985, 1986, 1988, 1990-2021 Free Software Foundation, Inc.
%
@@ -3193,14 +3193,9 @@ end
% \kern-0.4pt\hrule}%
% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% definition of @key with no lozenge. If the current font is already
-% monospace, don't change it; that way, we respect @kbdinputstyle. But
-% if it isn't monospace, then use \tt.
+% definition of @key with no lozenge.
%
-\def\key#1{{\setregularquotes
- \nohyphenation
- \ifmonospace\else\tt\fi
- #1}\null}
+\def\key#1{{\setregularquotes \nohyphenation \tt #1}\null}
% @clicksequence{File @click{} Open ...}
\def\clicksequence#1{\begingroup #1\endgroup}
@@ -11248,23 +11243,6 @@ directory should work if nowhere else does.}
\defbodyindent = .5cm
}}
-% Use @smallerbook to reset parameters for 6x9 trim size.
-% (Just testing, parameters still in flux.)
-\def\smallerbook{{\globaldefs = 1
- \parskip = 1.5pt plus 1pt
- \textleading = 12pt
- %
- \internalpagesizes{7.4in}{4.8in}%
- {-.2in}{-.4in}%
- {0pt}{14pt}%
- {9in}{6in}%
- %
- \lispnarrowing = 0.25in
- \tolerance = 700
- \contentsrightmargin = 0pt
- \defbodyindent = .4cm
-}}
-
% Use @afourpaper to print on European A4 paper.
\def\afourpaper{{\globaldefs = 1
\parskip = 3pt plus 2pt minus 1pt