summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-03-03 03:01:26 +0000
committerNorbert Preining <norbert@preining.info>2021-03-03 03:01:26 +0000
commit6a1383661dd7817761345a9d4ddfd9db6ba2dd1e (patch)
treedec33644ee8df10255c235853ff6ef809b223a90 /macros
parent4763ec8ceefaf2b038d591b8c15d88d081aec6c9 (diff)
CTAN sync 202103030301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/fewerfloatpages/MANIFEST.md133
-rw-r--r--macros/latex/contrib/fewerfloatpages/README.md4
-rw-r--r--macros/latex/contrib/fewerfloatpages/changes.txt9
-rw-r--r--macros/latex/contrib/fewerfloatpages/fewerfloatpages-code.pdfbin595536 -> 595537 bytes
-rw-r--r--macros/latex/contrib/fewerfloatpages/fewerfloatpages-doc.pdfbin421147 -> 420653 bytes
-rw-r--r--macros/latex/contrib/fewerfloatpages/fewerfloatpages.dtx6
-rw-r--r--macros/latex/contrib/fewerfloatpages/fewerfloatpages.ins4
-rw-r--r--macros/latex/contrib/fewerfloatpages/l3doc-TUB.cls10
-rw-r--r--macros/latex/contrib/graphics-def/dvipdfmx.def26
-rw-r--r--macros/latex/contrib/graphics-def/xetex.def26
-rw-r--r--macros/latex/contrib/l3backend/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3backend/README.md2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-basics.dtx14
-rw-r--r--macros/latex/contrib/l3backend/l3backend-box.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-code.pdfbin805668 -> 836068 bytes
-rw-r--r--macros/latex/contrib/l3backend/l3backend-color.dtx26
-rw-r--r--macros/latex/contrib/l3backend/l3backend-draw.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-graphics.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-header.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-opacity.dtx2
-rw-r--r--macros/latex/contrib/l3backend/l3backend-pdf.dtx35
-rw-r--r--macros/latex/contrib/l3backend/l3backend.ins2
-rw-r--r--macros/latex/contrib/lni/CHANGELOG.md13
-rw-r--r--macros/latex/contrib/lni/README.md4
-rw-r--r--macros/latex/contrib/lni/lni-author-template.tex2
-rw-r--r--macros/latex/contrib/lni/lni-paper-example-de.tex2
-rw-r--r--macros/latex/contrib/lni/lni.dtx143
-rw-r--r--macros/latex/contrib/lni/lni.ins124
-rw-r--r--macros/latex/contrib/lni/lni.pdfbin360183 -> 360866 bytes
-rw-r--r--macros/latex/contrib/parskip/README.md4
-rw-r--r--macros/latex/contrib/parskip/changes.txt6
-rw-r--r--macros/latex/contrib/parskip/parskip-code.pdfbin226324 -> 225639 bytes
-rw-r--r--macros/latex/contrib/parskip/parskip.dtx6
-rw-r--r--macros/latex/contrib/parskip/parskip.ins2
-rw-r--r--macros/latex/contrib/parskip/parskip.pdfbin175119 -> 174611 bytes
-rw-r--r--macros/luatex/generic/luatexko/ChangeLog14
-rw-r--r--macros/luatex/generic/luatexko/README2
-rw-r--r--macros/luatex/generic/luatexko/luatexko-doc.pdfbin325482 -> 328095 bytes
-rw-r--r--macros/luatex/generic/luatexko/luatexko-doc.tex61
-rw-r--r--macros/luatex/generic/luatexko/luatexko-normalize.lua6
-rw-r--r--macros/luatex/generic/luatexko/luatexko-uhc2utf8.lua6
-rw-r--r--macros/luatex/generic/luatexko/luatexko.lua390
-rw-r--r--macros/luatex/generic/luatexko/luatexko.sty147
-rw-r--r--macros/luatex/generic/luavlna/README.md2
-rw-r--r--macros/luatex/generic/luavlna/luavlna-doc.pdfbin91253 -> 92289 bytes
-rw-r--r--macros/luatex/generic/luavlna/luavlna-doc.tex19
-rw-r--r--macros/luatex/generic/luavlna/luavlna.sty4
-rw-r--r--macros/luatex/generic/luavlna/luavlna.tex29
48 files changed, 859 insertions, 446 deletions
diff --git a/macros/latex/contrib/fewerfloatpages/MANIFEST.md b/macros/latex/contrib/fewerfloatpages/MANIFEST.md
new file mode 100644
index 0000000000..6baecd081a
--- /dev/null
+++ b/macros/latex/contrib/fewerfloatpages/MANIFEST.md
@@ -0,0 +1,133 @@
+# Manifest for fewerfloatpages
+
+This file is a listing of all files considered to be part of this package.
+It is automatically generated with `texlua build.lua manifest`.
+
+
+## Repository manifest
+
+The following groups list the files included in the development repository of the package.
+Files listed with a ‘†’ marker are included in the TDS but not CTAN files, and files listed
+with ‘‡’ are included in both.
+
+### Source files
+
+These are source files for a number of purposes, including the `unpack` process which
+generates the installation files of the package. Additional files included here will also
+be installed for processing such as testing.
+
+* fewerfloatpages.dtx ‡
+* fewerfloatpages.ins ‡
+* l3doc-TUB.cls ‡
+
+### Typeset documentation source files
+
+These files are typeset using LaTeX to produce the PDF documentation for the package.
+
+* fewerfloatpages-code.tex ‡
+* fewerfloatpages-doc.tex ‡
+
+### Text files
+
+Plain text files included as documentation or metadata.
+
+* MANIFEST.md ‡
+* README.md ‡
+* changes.txt ‡
+
+### Derived files
+
+The files created by ‘unpacking’ the package sources. This typically includes
+`.sty` and `.cls` files created from DocStrip `.dtx` files.
+
+* fewerfloatpages.sty †
+
+### Typeset documents
+
+The output files (PDF, essentially) from typesetting the various source, demo,
+etc., package files.
+
+* fewerfloatpages-code.pdf ‡
+* fewerfloatpages-doc.pdf ‡
+
+### Test files
+
+These files form the test suite for the package. `.lvt` or `.lte` files are the individual
+unit tests, and `.tlg` are the stored output for ensuring changes to the package produce
+the same output. These output files are sometimes shared and sometime specific for
+different engines (pdfTeX, XeTeX, LuaTeX, etc.).
+
+* fewerfloatpages-000.lvt
+* fewerfloatpages-001.lvt
+* fewerfloatpages-002.lvt
+* fewerfloatpages-003.lvt
+* fewerfloatpages-004.lvt
+* fewerfloatpages-005.lvt
+* fewerfloatpages-006.lvt
+* fewerfloatpages-007.lvt
+* fewerfloatpages-008.lvt
+* fewerfloatpages-009.lvt
+* fewerfloatpages-000.tlg
+* fewerfloatpages-001.tlg
+* fewerfloatpages-002.tlg
+* fewerfloatpages-003.tlg
+* fewerfloatpages-004.luatex.tlg
+* fewerfloatpages-004.tlg
+* fewerfloatpages-004.xetex.tlg
+* fewerfloatpages-005.luatex.tlg
+* fewerfloatpages-005.tlg
+* fewerfloatpages-005.xetex.tlg
+* fewerfloatpages-006.tlg
+* fewerfloatpages-007.tlg
+* fewerfloatpages-008.tlg
+* fewerfloatpages-009.tlg
+
+
+## TDS manifest
+
+The following groups list the files included in the TeX Directory Structure used to install
+the package into a TeX distribution.
+
+### Source files (TDS)
+
+All files included in the `fewerfloatpages/source` directory.
+
+* fewerfloatpages.dtx
+* fewerfloatpages.ins
+
+### TeX files (TDS)
+
+All files included in the `fewerfloatpages/tex` directory.
+
+* fewerfloatpages.sty
+* l3doc-TUB.cls
+
+### Doc files (TDS)
+
+All files included in the `fewerfloatpages/doc` directory.
+
+* MANIFEST.md
+* README.md
+* changes.txt
+* fewerfloatpages-code.pdf
+* fewerfloatpages-code.tex
+* fewerfloatpages-doc.pdf
+* fewerfloatpages-doc.tex
+
+
+## CTAN manifest
+
+The following group lists the files included in the CTAN package.
+
+### CTAN files
+
+* MANIFEST.md
+* README.md
+* changes.txt
+* fewerfloatpages-code.pdf
+* fewerfloatpages-code.tex
+* fewerfloatpages-doc.pdf
+* fewerfloatpages-doc.tex
+* fewerfloatpages.dtx
+* fewerfloatpages.ins
+* l3doc-TUB.cls
diff --git a/macros/latex/contrib/fewerfloatpages/README.md b/macros/latex/contrib/fewerfloatpages/README.md
index 25a2f6d771..0511ab415e 100644
--- a/macros/latex/contrib/fewerfloatpages/README.md
+++ b/macros/latex/contrib/fewerfloatpages/README.md
@@ -10,13 +10,13 @@ adjustable.
Package source can be found below:
-https://github.com/FrankMittelbach/fmitex/
+https://github.com/FrankMittelbach/fmitex-fewerfloatpages/
The license is LPPL 1.3c.
-----
-Copyright (C) 2019-2020 Frank Mittelbach<br />
+Copyright (C) 2019-2021 Frank Mittelbach<br />
<https://latex-project.org/> <br />
All rights reserved.
diff --git a/macros/latex/contrib/fewerfloatpages/changes.txt b/macros/latex/contrib/fewerfloatpages/changes.txt
index 67a21fc352..a268651c32 100644
--- a/macros/latex/contrib/fewerfloatpages/changes.txt
+++ b/macros/latex/contrib/fewerfloatpages/changes.txt
@@ -1 +1,8 @@
-No changes yet
+2021-03-02 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * l3doc-TUB.cls: change some deprecated commands to new names.
+
+ * fewerfloatpages.dtx:
+ Moved to a new home (no other changes)
+
+ https://github.com/FrankMittelbach/fmitex-fewerfloatpages
diff --git a/macros/latex/contrib/fewerfloatpages/fewerfloatpages-code.pdf b/macros/latex/contrib/fewerfloatpages/fewerfloatpages-code.pdf
index 305431fc07..b1bbac0b0f 100644
--- a/macros/latex/contrib/fewerfloatpages/fewerfloatpages-code.pdf
+++ b/macros/latex/contrib/fewerfloatpages/fewerfloatpages-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/fewerfloatpages/fewerfloatpages-doc.pdf b/macros/latex/contrib/fewerfloatpages/fewerfloatpages-doc.pdf
index df15415a7d..364798a3a8 100644
--- a/macros/latex/contrib/fewerfloatpages/fewerfloatpages-doc.pdf
+++ b/macros/latex/contrib/fewerfloatpages/fewerfloatpages-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/fewerfloatpages/fewerfloatpages.dtx b/macros/latex/contrib/fewerfloatpages/fewerfloatpages.dtx
index 01903de287..4707f19643 100644
--- a/macros/latex/contrib/fewerfloatpages/fewerfloatpages.dtx
+++ b/macros/latex/contrib/fewerfloatpages/fewerfloatpages.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: fewerfloatpages.dtx (C) Copyright 2019-2020 Frank Mittelbach
+%% File: fewerfloatpages.dtx (C) Copyright 2019-2021 Frank Mittelbach
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -16,8 +16,8 @@
% for those people who are interested or want to report an issue.
%
-\def\fewerfloatpagesdate {2020/02/14}
-\def\fewerfloatpagesversion{v1.0a}
+\def\fewerfloatpagesdate {2021/03/02}
+\def\fewerfloatpagesversion{v1.0b}
%<*driver>
diff --git a/macros/latex/contrib/fewerfloatpages/fewerfloatpages.ins b/macros/latex/contrib/fewerfloatpages/fewerfloatpages.ins
index d3e1ef0563..024d261b70 100644
--- a/macros/latex/contrib/fewerfloatpages/fewerfloatpages.ins
+++ b/macros/latex/contrib/fewerfloatpages/fewerfloatpages.ins
@@ -3,7 +3,7 @@
%% driver files from the dtx file(s) in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright 2019-2020 Frank Mittelbach
+%% Copyright 2019-2021 Frank Mittelbach
%%
%%
%% This file is part of the fewerfloatpages Bundle for LaTeX.
@@ -35,7 +35,7 @@
This is a generated file.
-Copyright 2019-2020 Frank Mittelbach
+Copyright 2019-2021 Frank Mittelbach
This file was generated from file(s) of the LaTeX `fewerfloatpages Bundle'.
--------------------------------------------------------------------------
diff --git a/macros/latex/contrib/fewerfloatpages/l3doc-TUB.cls b/macros/latex/contrib/fewerfloatpages/l3doc-TUB.cls
index f18911e685..50a8a9a9d9 100644
--- a/macros/latex/contrib/fewerfloatpages/l3doc-TUB.cls
+++ b/macros/latex/contrib/fewerfloatpages/l3doc-TUB.cls
@@ -32,7 +32,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{expl3,xparse,calc}
-\ProvidesExplClass{l3doc-TUB}{2020/02/14}{}
+\ProvidesExplClass{l3doc-TUB}{2021/03/02}{}
{L3 Experimental documentation class (special version for TUGboat with fixes)}
\clist_new:N \g_docinput_clist
\seq_new:N \g_doc_functions_seq
@@ -1400,10 +1400,10 @@
{
\llap
{
- \hbox_unpack_clear:N \l__codedoc_macro_index_box
+ \hbox_unpack_drop:N \l__codedoc_macro_index_box
\vtop to \baselineskip
{
- \vbox_unpack_clear:N \l__codedoc_macro_box
+ \vbox_unpack_drop:N \l__codedoc_macro_box
\vss
}
}
@@ -1443,7 +1443,7 @@
\__codedoc_if_macro_internal:nF {#1}
{ \seq_gput_right:Nn \g_doc_macros_seq {#1} }
\hbox_set:Nw \l__codedoc_macro_index_box
- \hbox_unpack_clear:N \l__codedoc_macro_index_box
+ \hbox_unpack_drop:N \l__codedoc_macro_index_box
\int_gincr:N \c@CodelineNo
\__codedoc_special_index:nn {#1} { main }
\int_gdecr:N \c@CodelineNo
@@ -1455,7 +1455,7 @@
{
\vbox_set:Nn \l__codedoc_macro_box
{
- \vbox_unpack_clear:N \l__codedoc_macro_box
+ \vbox_unpack_drop:N \l__codedoc_macro_box
\hbox { \llap { \__codedoc_print_macroname:nN {#1} #2 \ } }
}
\int_incr:N \l__codedoc_macro_int
diff --git a/macros/latex/contrib/graphics-def/dvipdfmx.def b/macros/latex/contrib/graphics-def/dvipdfmx.def
index 3059916797..a8ebdad500 100644
--- a/macros/latex/contrib/graphics-def/dvipdfmx.def
+++ b/macros/latex/contrib/graphics-def/dvipdfmx.def
@@ -1,5 +1,5 @@
%% dvipdfmx.def
-%% Copyright (C) 2005-2020 LaTeX3 Project, Jin-Hwan Cho, Shunsaku Hirata
+%% Copyright (C) 2005-2021 LaTeX3 Project, Jin-Hwan Cho, Shunsaku Hirata
%% (with contributions from many others)
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%% https://github.com/latex3/graphics-def/issues
%%
\ProvidesFile{dvipdfmx.def}
- [2020/08/26 v5.0h Graphics/color driver for dvipdfmx]
+ [2021/03/02 v5.0i Graphics/color driver for dvipdfmx]
\def\GPT@space{ }
\def\c@lor@arg#1{%
\dimen@#1\p@
@@ -384,15 +384,23 @@
\def\convert@color@cmyk#1{#1 k #1 K}
\def\convert@color@gray#1{#1 g #1 G}
\def\convert@color@rgb#1{#1 rg #1 RG}
+\def\convert@color@#1{%
+ \expandafter\expandafter\expandafter\convert@@color
+ \expandafter\expandafter\expandafter{\csname col@#1\endcsname}%
+}
+% Deal with named colors
+\def\define@color@named#1#2{\expandafter\edef\csname col@#1\endcsname{#2}}
% Change the specials to use the stack
-\chardef\main@pdfcolorstack=1 %
-\ifx\AtBeginDvi\undefined
- \long\def\@firstofone#1{#1}%
- \expandafter\@firstofone
-\else
- \expandafter\AtBeginDvi
+\ifdefined\main@pdfcolorstack\else
+ \chardef\main@pdfcolorstack=1 %
+ \ifx\AtBeginDvi\undefined
+ \long\def\@firstofone#1{#1}%
+ \expandafter\@firstofone
+ \else
+ \expandafter\AtBeginDvi
+ \fi
+ {\special{pdfcolorstackinit \the\main@pdfcolorstack\space page direct (0 g 0 G)}}
\fi
- {\special{pdfcolorstackinit \the\main@pdfcolorstack\space page direct (0 g 0 G)}}
\def\@pdfcolorstack{\the\main@pdfcolorstack\space}
\def\set@color{%
\special{pdfcolorstack \@pdfcolorstack push (\convert@color\current@color)}%
diff --git a/macros/latex/contrib/graphics-def/xetex.def b/macros/latex/contrib/graphics-def/xetex.def
index 6f37ccc3d4..25dd2cefa0 100644
--- a/macros/latex/contrib/graphics-def/xetex.def
+++ b/macros/latex/contrib/graphics-def/xetex.def
@@ -1,5 +1,5 @@
%% xetex.def
-%% Copyright (C) 2005-2020 LaTeX3 Project, Jin-Hwan Cho, Shunsaku Hirata
+%% Copyright (C) 2005-2021 LaTeX3 Project, Jin-Hwan Cho, Shunsaku Hirata
%% (with contributions from many others)
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%% https://github.com/latex3/graphics-def/issues
%%
\ProvidesFile{xetex.def}
- [2020/08/26 v5.0i Graphics/color driver for xetex]
+ [2021/03/02 v5.0j Graphics/color driver for xetex]
\def\GPT@space{ }
\def\c@lor@arg#1{%
\dimen@#1\p@
@@ -483,15 +483,23 @@
\def\convert@color@cmyk#1{#1 k #1 K}
\def\convert@color@gray#1{#1 g #1 G}
\def\convert@color@rgb#1{#1 rg #1 RG}
+\def\convert@color@#1{%
+ \expandafter\expandafter\expandafter\convert@@color
+ \expandafter\expandafter\expandafter{\csname col@#1\endcsname}%
+}
+% Deal with named colors
+\def\define@color@named#1#2{\expandafter\edef\csname col@#1\endcsname{#2}}
% Change the specials to use the stack
-\chardef\main@pdfcolorstack=1 %
-\ifx\AtBeginDvi\undefined
- \long\def\@firstofone#1{#1}%
- \expandafter\@firstofone
-\else
- \expandafter\AtBeginDvi
+\ifdefined\main@pdfcolorstack\else
+ \chardef\main@pdfcolorstack=1 %
+ \ifx\AtBeginDvi\undefined
+ \long\def\@firstofone#1{#1}%
+ \expandafter\@firstofone
+ \else
+ \expandafter\AtBeginDvi
+ \fi
+ {\special{pdfcolorstackinit \the\main@pdfcolorstack\space page direct (0 g 0 G)}}
\fi
- {\special{pdfcolorstackinit \the\main@pdfcolorstack\space page direct (0 g 0 G)}}
\def\@pdfcolorstack{\the\main@pdfcolorstack\space}
\def\set@color{%
\special{pdfcolorstack \@pdfcolorstack push (\convert@color\current@color)}%
diff --git a/macros/latex/contrib/l3backend/CHANGELOG.md b/macros/latex/contrib/l3backend/CHANGELOG.md
index f787acd709..ed6da43a39 100644
--- a/macros/latex/contrib/l3backend/CHANGELOG.md
+++ b/macros/latex/contrib/l3backend/CHANGELOG.md
@@ -6,6 +6,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2021-03-02]
+
+### Changed
+- Drop 'correction' for link placement in `(x)dvidpfmx`: no longer required
+- Define `\main@pdfcolorstack` for `(x)dvipdfmx` if it does not exist
+
+### Fixed
+- Initialisation of color stacks for `(x)dvipdfmx`
+
## [2021-02-18]
### Changed
@@ -159,7 +168,8 @@ this project uses date-based 'snapshot' version identifiers.
- Include `l3backend` in file names
- Moved backend code to internal for each 'parent' module
-[Unreleased]: https://github.com/latex3/latex3/compare/2021-02-18...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2021-03-02...HEAD
+[2021-03-02]: https://github.com/latex3/latex3/compare/2021-02-18...2021-03-02
[2021-02-18]: https://github.com/latex3/latex3/compare/2021-02-06...2021-02-18
[2021-02-06]: https://github.com/latex3/latex3/compare/2021-01-29...2021-02-06
[2021-01-29]: https://github.com/latex3/latex3/compare/2021-01-09...2021-01-29
diff --git a/macros/latex/contrib/l3backend/README.md b/macros/latex/contrib/l3backend/README.md
index 02118d1218..564a2e8cd6 100644
--- a/macros/latex/contrib/l3backend/README.md
+++ b/macros/latex/contrib/l3backend/README.md
@@ -1,7 +1,7 @@
LaTeX3 Backend Drivers
======================
-Release 2021-02-18
+Release 2021-03-02
This package forms parts of `expl3`, and contains the code used to interface
with backends (drivers) across the `expl3` codebase. The functions here are
diff --git a/macros/latex/contrib/l3backend/l3backend-basics.dtx b/macros/latex/contrib/l3backend/l3backend-basics.dtx
index b7f09e7dbd..c5b5dd73e1 100644
--- a/macros/latex/contrib/l3backend/l3backend-basics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2021-02-18}{}
+ {l3backend-dvipdfmx.def}{2021-03-02}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2021-02-18}{}
+ {l3backend-dvips.def}{2021-03-02}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2021-02-18}{}
+ {l3backend-dvisvgm.def}{2021-03-02}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2021-02-18}{}
+ {l3backend-luatex.def}{2021-03-02}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2021-02-18}{}
+ {l3backend-pdftex.def}{2021-03-02}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2021-02-18}{}
+ {l3backend-xetex.def}{2021-03-02}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3backend/l3backend-box.dtx b/macros/latex/contrib/l3backend/l3backend-box.dtx
index bc0a3ffdd5..84e5dad2cb 100644
--- a/macros/latex/contrib/l3backend/l3backend-box.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-code.pdf b/macros/latex/contrib/l3backend/l3backend-code.pdf
index a70f304b62..3a2b841607 100644
--- a/macros/latex/contrib/l3backend/l3backend-code.pdf
+++ b/macros/latex/contrib/l3backend/l3backend-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3backend/l3backend-color.dtx b/macros/latex/contrib/l3backend/l3backend-color.dtx
index 451a0039a5..50271f57b3 100644
--- a/macros/latex/contrib/l3backend/l3backend-color.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
@@ -211,17 +211,20 @@
{
\int_gincr:N \exp_not:N \g_@@_backend_stack_int
\int_const:Nn #1 { \exp_not:N \g_@@_backend_stack_int }
- \cs_if_exist:NTF \AtBeginDvi
- { \exp_not:N \AtBeginDvi }
- { \exp_not:N \use:n }
+ \use:x
{
- \__kernel_backend_literal:x
+ \cs_if_exist:NTF \AtBeginDvi
+ { \exp_not:N \AtBeginDvi }
+ { \exp_not:N \use:n }
{
- pdfcolorstackinit ~
- \exp_not:N \int_use:N \exp_not:N \g_@@_backend_stack_int
- \c_space_tl
- \exp_not:N \tl_if_blank:nF {#2} { #2 ~ }
- (#3)
+ \__kernel_backend_literal:n
+ {
+ pdfcolorstackinit ~
+ \exp_not:N \int_use:N \exp_not:N \g_@@_backend_stack_int
+ \c_space_tl
+ \exp_not:N \tl_if_blank:nF {#2} { #2 ~ }
+ (#3)
+ }
}
}
}
@@ -235,6 +238,7 @@
{ page ~ direct } { 0 ~ g ~ 0 ~ G }
\int_set_eq:NN \l_@@_backend_stack_int
\c_@@_backend_main_stack_int
+ \int_const:cn { main@pdfcolorstack } { \c_@@_backend_main_stack_int }
}
}
% \end{macrocode}
@@ -768,7 +772,6 @@
% \end{macrocode}
%
% \begin{macro}{\@@_backend_select_separation:nn, \@@_backend_select_devicen:nn}
-% \begin{macro}{\@@_backend_select:n}
% Although \texttt{(x)dvipdfmx} has a built-in approach to color spaces, that
% can't be used with the generic color stacks. So we take an approach in which
% we share the same code as for \pdfTeX{}.
@@ -778,7 +781,6 @@
\cs_new_eq:NN \@@_backend_select_devicen:nn \@@_backend_select_separation:nn
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\@@_backend_separation_init:nnnnn}
% \begin{macro}{\@@_backend_separation_init:n}
diff --git a/macros/latex/contrib/l3backend/l3backend-draw.dtx b/macros/latex/contrib/l3backend/l3backend-draw.dtx
index 5536391276..492a899ee6 100644
--- a/macros/latex/contrib/l3backend/l3backend-draw.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-graphics.dtx b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
index c3ec121c07..fc8ae066a0 100644
--- a/macros/latex/contrib/l3backend/l3backend-graphics.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-header.dtx b/macros/latex/contrib/l3backend/l3backend-header.dtx
index eafd36f50d..41e15d39d9 100644
--- a/macros/latex/contrib/l3backend/l3backend-header.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-opacity.dtx b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
index ee4702a3cd..d4725d6bfe 100644
--- a/macros/latex/contrib/l3backend/l3backend-opacity.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3backend/l3backend-pdf.dtx b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
index ad2b0d5170..b6e7e39837 100644
--- a/macros/latex/contrib/l3backend/l3backend-pdf.dtx
+++ b/macros/latex/contrib/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2021-02-18}
+% \date{Released 2021-03-02}
%
% \maketitle
%
@@ -1352,21 +1352,6 @@
%
% \subsubsection{Annotations}
%
-% \begin{variable}{\g_@@_landscape_bool}
-% There is a bug in \texttt{dvipdfmx}/\XeTeX{} which means annotations do
-% not rotate. As such, we need to know if landscape is active.
-% \begin{macrocode}
-\bool_new:N \g_@@_landscape_bool
-\cs_if_exist:NT \landscape
- {
- \tl_put_right:Nn \landscape
- { \bool_gset_true:N \g_@@_landscape_bool }
- \tl_put_left:Nn \endlandscape
- { \bool_gset_false:N \g_@@_landscape_bool }
- }
-% \end{macrocode}
-% \end{variable}
-%
% \begin{variable}{\g_@@_backend_annotation_int}
% Needed as objects which are not annotations could be created.
% \begin{macrocode}
@@ -1374,27 +1359,11 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_backend_annotation:nnnn, \@@_backend_annotation_aux:nnnn}
+% \begin{macro}{\@@_backend_annotation:nnnn}
% Simply pass the raw data through, just dealing with evaluation of dimensions.
-% The only wrinkle is landscape: we have to adjust by hand.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_annotation:nnnn #1#2#3#4
{
- \bool_if:NTF \g_@@_landscape_bool
- {
- \box_move_up:nn {#2}
- {
- \vbox:n
- {
- \@@_backend_annotation_aux:nnnn
- { #2 + #3 } {#1} { 0pt } {#4}
- }
- }
- }
- { \@@_backend_annotation_aux:nnnn {#1} {#2} {#3} {#4} }
- }
-\cs_new_protected:Npn \@@_backend_annotation_aux:nnnn #1#2#3#4
- {
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
\@@_backend:x
diff --git a/macros/latex/contrib/l3backend/l3backend.ins b/macros/latex/contrib/l3backend/l3backend.ins
index 7fced393bd..5bba632ffb 100644
--- a/macros/latex/contrib/l3backend/l3backend.ins
+++ b/macros/latex/contrib/l3backend/l3backend.ins
@@ -30,7 +30,7 @@ license information is placed in the derived files.
\fi
\let\jobname\relax
-\input l3docstrip.dtx
+\input docstrip %
\askforoverwritefalse
\preamble
diff --git a/macros/latex/contrib/lni/CHANGELOG.md b/macros/latex/contrib/lni/CHANGELOG.md
index ffe1091622..0620ff73a0 100644
--- a/macros/latex/contrib/lni/CHANGELOG.md
+++ b/macros/latex/contrib/lni/CHANGELOG.md
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
+## [1.7.0] - 2021-03-02
+
+### Changed
+
+- Change loading of latest ngerman hyphenation patterns (#47)
+- Change `\year` to `\yearofpublication` to avoid problems (#85)
+
+### Fixed
+- Fix setting of pdf metadata (#87)
+
## [1.6.0] - 2019-10-14
### Added
@@ -96,7 +106,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [1.0.0] - 2017-04-07
First release of the revised files
-[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.6...HEAD
+[Unreleased]: https://github.com/gi-ev/LNI/compare/v1.7...HEAD
+[1.7.0]: https://github.com/gi-ev/LNI/releases/tag/v1.7
[1.6.0]: https://github.com/gi-ev/LNI/releases/tag/v1.6
[1.5.0]: https://github.com/gi-ev/LNI/releases/tag/v1.5
[1.4.0]: https://github.com/gi-ev/LNI/releases/tag/v1.4
diff --git a/macros/latex/contrib/lni/README.md b/macros/latex/contrib/lni/README.md
index 14ba136377..f986ef46f5 100644
--- a/macros/latex/contrib/lni/README.md
+++ b/macros/latex/contrib/lni/README.md
@@ -3,8 +3,8 @@
```
----------------------------------------------------------------------------
lni -- A class for submissions to the ``Lecture Notes in Informatics''
-(c) 2016-2019 Gesellschaft für Informatik (GI)
-Version: 1.6
+(c) 2016-2021 Gesellschaft für Informatik (GI)
+Version: 1.7
Maintainer: Martin Sievers
Email: martin.sievers@schoenerpublizieren.de
License: Released under the LaTeX Project Public License v1.3c or later
diff --git a/macros/latex/contrib/lni/lni-author-template.tex b/macros/latex/contrib/lni/lni-author-template.tex
index 6dffc4195c..abdbd74ce6 100644
--- a/macros/latex/contrib/lni/lni-author-template.tex
+++ b/macros/latex/contrib/lni/lni-author-template.tex
@@ -24,7 +24,7 @@ Firstname2 Lastname2\footnote{University, Department, Address, Country
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag / Start page
\editor{Herausgeber et al.} % Names of Editors
\booktitle{Name-der-Konferenz} % Name of book title
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % if known
\maketitle
diff --git a/macros/latex/contrib/lni/lni-paper-example-de.tex b/macros/latex/contrib/lni/lni-paper-example-de.tex
index 236664d160..40f52c0b1f 100644
--- a/macros/latex/contrib/lni/lni-paper-example-de.tex
+++ b/macros/latex/contrib/lni/lni-paper-example-de.tex
@@ -49,7 +49,7 @@
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag
\editor{Herausgeber et al.} % Namen der Herausgeber
\booktitle{Name-der-Konferenz} % Name des Tagungsband; optional Kurztitel
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % Falls bekannt
\maketitle
diff --git a/macros/latex/contrib/lni/lni.dtx b/macros/latex/contrib/lni/lni.dtx
index 8301090e40..4ad46abd8d 100644
--- a/macros/latex/contrib/lni/lni.dtx
+++ b/macros/latex/contrib/lni/lni.dtx
@@ -60,7 +60,7 @@ License:| Released under the LaTeX Project Public License v1.3c or later
\postamble
-Copyright (C) 2016-2019 by Gesellschaft für Informatik e.V. (GI)
+Copyright (C) 2016-2021 by Gesellschaft für Informatik e.V. (GI)
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -101,11 +101,11 @@ This work consists of the file lni.dtx
%</install>
%<install>\endbatchfile
%<*internal>
-\usedir{source/latex/lni}
-\generate{
- \usepreamble\classpre
- \file{\jobname.ins}{\from{\jobname.dtx}{install}}
-}
+%%%\usedir{source/latex/lni}
+%%%\generate{
+%%%% \usepreamble\classpre
+%%% \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+%%%}
\nopreamble\nopostamble
\usedir{doc/latex/lni}
\generate{
@@ -134,7 +134,7 @@ This work consists of the file lni.dtx
%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<class>\ProvidesClass{lni}
%<*class>
- [2019/10/14 v1.6BETA Official class for submissions to the ``Lecture Notes
+ [2021/03/02 v1.7 Official class for submissions to the ``Lecture Notes
in Informatics'']
%</class>
%<*driver>
@@ -160,8 +160,8 @@ This work consists of the file lni.dtx
\usepackage[%
pdftitle={lni: Official LaTeX class for submissions to the ``Lecture Notes in
Informatics'', published by the ``Gesellschaft für Informatik e.\,V.'' (GI)},
- pdfauthor={Martin Sievers},
- urlcolor=blue,%
+ pdfauthor={Martin Sievers},
+ urlcolor=blue,%
linktoc=both,%
colorlinks=true]{hyperref}
\usepackage[nameinlink,capitalise]{cleveref}
@@ -305,6 +305,13 @@ This work consists of the file lni.dtx
% it more compatible with other packages like \pkg{authorarchive}}
% \changes{v1.6}{2019/10/14}{Fix for BibTeX style}
% \changes{v1.6}{2019/10/14}{Add support for \pkg{selnolig}}
+% \changes{v1.7}{2020/12/03}{Revert redefinition of \cs{year} after
+% \cs{maketitle}}
+% \changes{v1.7}{2021/03/02}{Fix setting of pdf metadata (#87)}
+% \changes{v1.7}{2021/03/02}{Change loading of latest ngerman hyphenation
+% patterns (#47)}
+% \changes{v1.7}{2021/03/02}{Change \cs{year} to \cs{yearofpublication} to
+% avoid problems (#85)}
%
% \GetFileInfo{\jobname.dtx}
% \DoNotIndex{\newcommand,\newenvironment}
@@ -453,7 +460,7 @@ This work consists of the file lni.dtx
% % !TeX program = pdflatex
% % !BIB program = bibtex8
% % !TeX encoding = UTF-8
-% % !TeX spellcheck = de_DE
+% % !TeX spellcheck = en_US
% \documentclass[english]{lni}
% \end{examplecode}
%
@@ -461,7 +468,7 @@ This work consists of the file lni.dtx
% \DescribeMacro{\startpage}\DescribeMacro{\editor}%
% \DescribeMacro{\booktitle\space(changed in v1.6)}%
% \DescribeMacro{\booksubtitle\space(new in v1.6)}%
-% \DescribeMacro{\year}In addition to the macros stated in
+% \DescribeMacro{\yearofpublication}In addition to the macros stated in
% \cref{sec:titlepage} for authors, there are special editor macros to
% influence the layout of the article:
% \begin{itemize}
@@ -601,7 +608,8 @@ This work consists of the file lni.dtx
% \end{table}
% \end{examplecode}
%
-% \subsubsection{Listings\,/\,Source code}
+% \subsubsection{\texorpdfstring{Listings\,/\,Source code}%
+% {Listings/Source code}}
% The \lni{} bundle loads the \pkg{verbatim} and \pkg{listings} package. While
% the former is there for compatability, the later is the standard way of
% integrating source code listings into a \LaTeX{} document.
@@ -785,15 +793,6 @@ This work consists of the file lni.dtx
\ProcessOptions\relax
%
\RequirePackage{iftex}
-\ifPDFTeX
- \RequirePackage{hyphsubst}
- \HyphSubstIfExists{ngerman-x-latest}%
- {\HyphSubstLet{ngerman}{ngerman-x-latest}%
- \ClassInfo{lni}{Using latest German hyphenation patterns}}%
- {\ClassWarning{lni}{Latest German hyphenation patterns could not be found!%
- \MessageBreak If you write a German article you should check your%
- installation}}%
-\fi%
\LoadClass[10pt,twoside,a4paper,fleqn]{article}
\ifPDFTeX
\RequirePackage{cmap}
@@ -806,6 +805,8 @@ This work consists of the file lni.dtx
\RequirePackage[ngerman,english]{babel}
\else
\RequirePackage[english,ngerman]{babel}
+ \babelprovide[hyphenrules=ngerman-x-latest]{ngerman}
+ \ClassInfo{lni}{Using latest German hyphenation patterns}%
\fi%
% Hint by http://tex.stackexchange.com/a/321067/9075 -> enable "= as dashes
\useshorthands*{"}
@@ -848,7 +849,7 @@ This work consists of the file lni.dtx
{\RequirePackage{newtxmath}}%
{}%
\RequirePackage[no-math]{fontspec}
- \IfFontExistsTF{texgyretrmes-regular.otf}
+ \IfFontExistsTF{texgyretermes-regular.otf}
{%
\setmainfont{texgyretermes}[
Extension = .otf,
@@ -956,7 +957,7 @@ This work consists of the file lni.dtx
\normalsize
\expandafter\csname\CROP@font\endcsname{%
``\jobname''\x
- \the\@rigyear/\the\month/\the\day\x
+ \the\year/\the\month/\the\day\x
\CROP@time\x
page\kern.5em\thepage\x
\#\the\CROP@index
@@ -1089,8 +1090,16 @@ This work consists of the file lni.dtx
% \begin{macro}{\author}
% \begin{macrocode}
\renewcommand{\author}{\@dblarg\@@author}
-\def\@@author[#1]#2{\gdef\@shortauthor{{\let\footnote\@gobble%
- \def\and{\unskip,\ }#1}}\gdef\@author{#2}}
+\newcommand{\@@author}[2][]{%
+ \DeclareRobustCommand{\@shortauthor}{%
+ {%
+ %\let\footnote\@gobble%
+ \def\and{\texorpdfstring{\unskip,\ }{}}%
+ #1%
+ }%
+ }%
+ \DeclareRobustCommand{\@author}{#2}%
+ }
% \end{macrocode}
% \end{macro}
% \begin{macro}{\authorrunning}
@@ -1113,7 +1122,7 @@ This work consists of the file lni.dtx
% Title: Kopie aus article.cls mit anderem \thispagestyle
% \begin{macrocode}
\renewcommand\maketitle{\par%
-\begingroup
+ \begingroup
\renewcommand\thefootnote{\@arabic\c@footnote}%
\def\@makefnmark% keine Einrückung der Fußnoten eingestellt
{\@textsuperscript{\normalfont\@thefnmark}}%
@@ -1132,7 +1141,7 @@ This work consists of the file lni.dtx
\fi%
\else
\newpage
- \global\@topnum\z@ % Prevents figures from going at top of page.
+ \global\@topnum\z@% Prevents figures from going at top of page.
\@maketitle
\fi%
\ifnorunningheads
@@ -1142,6 +1151,14 @@ This work consists of the file lni.dtx
\fi%
\@thanks
\endgroup
+ \ifusehyperref
+ \HyXeTeX@CheckUnicode
+ \HyPsd@PrerenderUnicode{\@shortauthor}%
+ \pdfstringdef\@pdfauthor{\@shortauthor}%
+ \HyXeTeX@CheckUnicode
+ \HyPsd@PrerenderUnicode{\@title}%
+ \pdfstringdef\@pdftitle{\@title}%
+ \fi%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
@@ -1215,8 +1232,13 @@ This work consists of the file lni.dtx
\noindent\ignorespaces{\bfseries Keywords:\ }}%
{\global\keywordsfalse}
\let\@RIGsection\section
-\pretocmd\@startsection{\ifkeywords\ClassError{lni}{keywords is an environment, not a macro}%
- {Please change \string\keywords\space to an environment}\keywordsfalse\fi}{}{}
+\pretocmd\@startsection{%
+ \ifkeywords\ClassError{lni}%
+ {keywords is an environment, not a macro}%
+ {Please change \string\keywords\space to an environment}%
+ \keywordsfalse%
+ \fi%
+}{}{}
% \end{macrocode}
% \end{environment}
% Section headings
@@ -1290,7 +1312,7 @@ This work consists of the file lni.dtx
\renewcommand{\labelitemi}{$\bullet$}
\renewcommand*\itemize{%
\ifnum \@itemdepth >\thr@@\@toodeep\else
- \setlength{\labelsep}{0.70cm}%Abstand zum Aufzählungspunkt
+ \setlength{\labelsep}{0.70cm}%
\advance\@itemdepth\@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
\expandafter
@@ -1352,6 +1374,7 @@ This work consists of the file lni.dtx
% \end{macro}
% \begin{macro}{\booktitle}
% \begin{macrocode}
+\def\@bookshorttitle{}
\newcommand{\booktitle}{\@dblarg\@@booktitle}
\def\@@booktitle[#1]#2{\gdef\@bookshorttitle{#1}\gdef\@booktitle{#2}}
% \end{macrocode}
@@ -1366,35 +1389,43 @@ This work consists of the file lni.dtx
% \end{macrocode}
% \end{macro}
% \begin{macrocode}
-\AtBeginDocument{%
- \let\@rigyear\year
- \newcommand*{\@year}{\the\@rigyear}
- \renewcommand*{\year}[1]{%
- \renewcommand{\@year}{#1}%
- }%
-}%
+\newcommand*{\@yearofpublication}{\the\year}
+\newcommand*{\yearofpublication}[1]{\renewcommand*{\@yearofpublication}{#1}}
% \end{macrocode}
% set-up for header and footer
% \begin{macrocode}
\fancypagestyle{plain}{%
\fancyhead{} % Löscht alle Kopfzeileneinstellungen
- \fancyhead[RO]{\small\@editor~(Hrsg.):\ \@bookshorttitle,\hspace{1sp}\null\linebreak%
- Lecture Notes in Informatics (LNI), Gesellschaft für Informatik, Bonn~\@year%
- \hspace{5pt}\thepage\hspace{0.05cm}}
- \fancyhead[LE]{\small\@editor~(Hrsg.):\
- \@bookshorttitle,\linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes
- in Informatics (LNI), Gesellschaft für Informatik, Bonn~\@year}
- \fancyfoot{} % Löscht alle Fußzeileneinstellungen
- \renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile
+ \fancyhead[RO]{%
+ \small\@editor~(Hrsg.):\
+ \ifdefempty{\@bookshorttitle}%
+ {}%
+ {\@bookshorttitle,\hspace{1sp}}%
+ \null\linebreak%
+ Lecture Notes in Informatics (LNI), Gesellschaft für Informatik,
+ Bonn~\@yearofpublication%
+ \hspace{5pt}\thepage\hspace{0.05cm}%
+ }%
+ \fancyhead[LE]{%
+ \small\@editor~(Hrsg.):\
+ \ifdefempty{\@bookshorttitle}%
+ {}%
+ {\@bookshorttitle,\hspace{1sp}}%
+ \linebreak\hspace{0.05cm}\thepage\hspace{5pt} Lecture Notes
+ in Informatics (LNI), Gesellschaft für Informatik,
+ Bonn~\@yearofpublication%
+ }%
+ \fancyfoot{}% Löscht alle Fußzeileneinstellungen
+ \renewcommand{\headrulewidth}{0.4pt}% Linie unter Kopfzeile
}%
\ifnorunningheads
\pagestyle{empty}
\else
\pagestyle{fancy}
- \fancyhead{} % Löscht alle Kopfzeileneinstellungen
+ \fancyhead{}% Löscht alle Kopfzeileneinstellungen
\fancyhead[RO]{\small\@shorttitle\hspace{5pt}\thepage\hspace{0.05cm}}
\fancyhead[LE]{\hspace{0.05cm}\small\thepage\hspace{5pt}\@shortauthor}
- \fancyfoot{} % Löscht alle Fußzeileneinstellungen
+ \fancyfoot{}% Löscht alle Fußzeileneinstellungen
\renewcommand{\headrulewidth}{0.4pt} %Linie unter Kopfzeile
\fi%
% \end{macrocode}
@@ -1417,10 +1448,14 @@ This work consists of the file lni.dtx
colorlinks=true,%
allcolors=black,%
pdfstartview=Fit,%
- pdfauthor={\@author},%
- pdftitle={\@title}%
}%
+%%% \pdfstringdefDisableCommands{%
+%%% \def\unskip{}%
+%%% \renewcommand{\footnote}[1]{}%
+%%% }%
}%
+\else
+ \providecommand{\texorpdfstring}[2]{#2}%
\fi%
% \end{macrocode}
% \begin{macrocode}
@@ -1446,12 +1481,12 @@ This work consists of the file lni.dtx
% \begin{macrocode}
\AtEndPreamble{%
\@ifpackageloaded{hyperref}
- {\RequirePackage[all]{hypcap}}%
- {}%
+ {\RequirePackage[all]{hypcap}}%
+ {}%
}%
% \end{macrocode}
% \begin{macrocode}
-\def\and{\unskip\hspace{-0.42em},\hspace{.6em}}
+\def\and{\texorpdfstring{\unskip\hspace{-0.42em},\hspace{.6em}}{, }}%
% \end{macrocode}
% \begin{macrocode}
\ifusebiblatex
@@ -2948,7 +2983,7 @@ Firstname2 Lastname2\footnote{University, Department, Address, Country
%numbering at this number
\editor{Herausgeber et al.} % Names of Editors
\booktitle{Name-der-Konferenz} % Name of book title
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % if known
\maketitle
@@ -3108,7 +3143,7 @@ Schlagwort1 \and Schlagwort2 %Keyword1 \and Keyword2
\startpage{11} % Beginn der Seitenzählung für diesen Beitrag
\editor{Herausgeber et al.} % Namen der Herausgeber
\booktitle{Name-der-Konferenz} % Name des Tagungsband; optional Kurztitel
-\year{2017}
+\yearofpublication{2017}
%%%\lnidoi{18.18420/provided-by-editor-02} % Falls bekannt
\maketitle
diff --git a/macros/latex/contrib/lni/lni.ins b/macros/latex/contrib/lni/lni.ins
new file mode 100644
index 0000000000..5536ab57b9
--- /dev/null
+++ b/macros/latex/contrib/lni/lni.ins
@@ -0,0 +1,124 @@
+%%
+%% This is file `lni.ins',
+%% --------| -----------------------------------------------------------------
+%% lni:| A class for submissions to the ``Lecture Notes in Informatics''
+%% Author:| Martin Sievers
+%% Email:| martin.sievers@schoenerpublizieren.de
+%% License:| Released under the LaTeX Project Public License v1.3c or later
+%% See:| http://www.latex-project.org/lppl.txt
+%% --------| -----------------------------------------------------------------
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\declarepreamble\bibtexengpre
+lnig.bst
+Lecture Notes in Informatics Style File (english)
+Version 1.0 (2017/04/07)
+
+The Style File is based on alpha.bst
+
+This work may be freely used,
+distributed and modified.
+Modified files should be clearly indicated as such and renamed.
+\endpreamble
+
+\declarepreamble\bibtexgerpre
+lnig.bst
+Lecture Notes in Informatics Style File (german)
+Version 1.0 (2017/04/07)
+
+The Style File is based on alpha.bst
+
+This work may be freely used,
+distributed and modified.
+Modified files should be clearly indicated as such and renamed.
+\endpreamble
+
+\declarepreamble\classpre
+--------| -----------------------------------------------------------------
+ lni:| A class for submissions to the ``Lecture Notes in Informatics''
+ Author:| Martin Sievers
+ Email:| martin.sievers@schoenerpublizieren.de
+License:| Released under the LaTeX Project Public License v1.3c or later
+ See:| http://www.latex-project.org/lppl.txt
+--------| -----------------------------------------------------------------
+\endpreamble
+
+\def\templatepre{%
+\perCent\space !TeX encoding = UTF-8^^J%
+\perCent\space !TeX program = pdflatex^^J%
+\perCent\space !BIB program = bibtex^^J%
+}
+
+\def\templatepreger{%
+\perCent\space !TeX encoding = UTF-8^^J%
+\perCent\space !TeX spellcheck = de_DE^^J%
+}
+
+\postamble
+
+Copyright (C) 2016-2021 by Gesellschaft für Informatik e.V. (GI)
+
+This work 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
+
+This work is "maintained" (as per LPPL maintenance status) by
+Martin Sievers.
+
+This work consists of the file lni.dtx
+ lni.ins
+ README.md
+ CHANGELOG.md
+ and the derived files lni.pdf
+ lni.cls
+ lni-author-template.tex
+ lni-paper-example-de.bib
+ lni-paper-example-de.tex
+ lni.bst
+ lnig.bst
+\endpostamble
+
+\usedir{tex/latex/lni}
+\AddGenerationDate
+\generate{
+ \usepreamble\classpre
+ \file{\jobname.cls}{\from{\jobname.dtx}{class}}
+}
+\usedir{bibtex/bst/lni}
+\generate{
+ \usepreamble\bibtexengpre
+ \file{\jobname.bst}{\from{\jobname.dtx}{bibtex,eng}}
+ \usepreamble\bibtexgerpre
+ \file{lnig.bst}{\from{\jobname.dtx}{bibtex,ger}}
+}
+\endbatchfile
+%%
+%% Copyright (C) 2016-2021 by Gesellschaft für Informatik e.V. (GI)
+%%
+%% This work 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
+%%
+%% This work is "maintained" (as per LPPL maintenance status) by
+%% Martin Sievers.
+%%
+%% This work consists of the file lni.dtx
+%% lni.ins
+%% README.md
+%% CHANGELOG.md
+%% and the derived files lni.pdf
+%% lni.cls
+%% lni-author-template.tex
+%% lni-paper-example-de.bib
+%% lni-paper-example-de.tex
+%% lni.bst
+%% lnig.bst
+%%
+%% End of file `lni.ins'.
diff --git a/macros/latex/contrib/lni/lni.pdf b/macros/latex/contrib/lni/lni.pdf
index f0a4fff3c4..e4aa3474b2 100644
--- a/macros/latex/contrib/lni/lni.pdf
+++ b/macros/latex/contrib/lni/lni.pdf
Binary files differ
diff --git a/macros/latex/contrib/parskip/README.md b/macros/latex/contrib/parskip/README.md
index 19394adfa2..1b9968014c 100644
--- a/macros/latex/contrib/parskip/README.md
+++ b/macros/latex/contrib/parskip/README.md
@@ -8,13 +8,13 @@ Robin Fairbairns.
Package source can be found below:
-https://github.com/FrankMittelbach/fmitex/ (development branch parskip)
+https://github.com/FrankMittelbach/fmitex-parskip
The license is LPPL.
-----
-Copyright (C) 2018 Frank Mittelbach<br />
+Copyright (C) 2018-2021 Frank Mittelbach<br />
<https://latex-project.org/> <br />
All rights reserved.
diff --git a/macros/latex/contrib/parskip/changes.txt b/macros/latex/contrib/parskip/changes.txt
index 6cdccbc1d5..f8f1141e68 100644
--- a/macros/latex/contrib/parskip/changes.txt
+++ b/macros/latex/contrib/parskip/changes.txt
@@ -1,3 +1,9 @@
+#### placed on CTAN as 2.0g ####
+
+2021-03-02 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * parskip.dtx: home repository changed no other modifications
+
#### placed on CTAN as 2.0f ####
2020-06-15 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
diff --git a/macros/latex/contrib/parskip/parskip-code.pdf b/macros/latex/contrib/parskip/parskip-code.pdf
index 0aebb0a149..35f6d63c41 100644
--- a/macros/latex/contrib/parskip/parskip-code.pdf
+++ b/macros/latex/contrib/parskip/parskip-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/parskip/parskip.dtx b/macros/latex/contrib/parskip/parskip.dtx
index 6b4f87b48b..09638ae207 100644
--- a/macros/latex/contrib/parskip/parskip.dtx
+++ b/macros/latex/contrib/parskip/parskip.dtx
@@ -3,7 +3,7 @@
%% File: parskip.dtx
%% (C) Copyright 1989 H.Partl, TU Wien
%% (C) Copyright 2001 Robin Fairbairns
-%% (C) Copyright 2018-2020 Frank Mittelbach
+%% (C) Copyright 2018-2021 Frank Mittelbach
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -15,7 +15,7 @@
%
% The development version of the bundle can be found below
%
-% https://github.com/FrankMittelbach/fmitex/
+% https://github.com/FrankMittelbach/fmitex-parskip/
%
% for those people who are interested or want to report an issue.
%
@@ -183,7 +183,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesPackage{parskip}[2020-06-15 v2.0f non-zero parskip adjustments]
+\ProvidesPackage{parskip}[2021-03-02 v2.0g non-zero parskip adjustments]
% \end{macrocode}
%
%
diff --git a/macros/latex/contrib/parskip/parskip.ins b/macros/latex/contrib/parskip/parskip.ins
index 306d69304e..50dd0c5783 100644
--- a/macros/latex/contrib/parskip/parskip.ins
+++ b/macros/latex/contrib/parskip/parskip.ins
@@ -35,7 +35,7 @@
This is a generated file.
-Copyright 2018-2020 Frank Mittelbach
+Copyright 2018-2021 Frank Mittelbach
This file was generated from file(s) of the LaTeX `parskip Bundle'.
-------------------------------------------------------------------
diff --git a/macros/latex/contrib/parskip/parskip.pdf b/macros/latex/contrib/parskip/parskip.pdf
index 37bac82767..49f937d927 100644
--- a/macros/latex/contrib/parskip/parskip.pdf
+++ b/macros/latex/contrib/parskip/parskip.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexko/ChangeLog b/macros/luatex/generic/luatexko/ChangeLog
index 993b9d0d01..e0dc310e65 100644
--- a/macros/luatex/generic/luatexko/ChangeLog
+++ b/macros/luatex/generic/luatexko/ChangeLog
@@ -1,3 +1,17 @@
+2021-03-01 Dohyun Kim <nomos at ktug org>
+
+ Version 3.0
+
+ * luatexko.lua:
+ do not adjust interword glue after CJK characters
+ when current font is a monospaced font;
+ fix a bug wrt dotemph/ruby/sout position in vertical writing.
+
+ * luatexko.sty:
+ horizontal metrics of default Hangul monospaced font are
+ matched with those of Latin Modern Mono;
+ deprecated command \actualtext is now removed.
+
2020-07-27 Dohyun Kim <nomos at ktug org>
Version 2.9
diff --git a/macros/luatex/generic/luatexko/README b/macros/luatex/generic/luatexko/README
index 5721c1047a..204f8183bb 100644
--- a/macros/luatex/generic/luatexko/README
+++ b/macros/luatex/generic/luatexko/README
@@ -1,4 +1,4 @@
-LuaTeX-ko Package version 2.9 (2020/07/27)
+LuaTeX-ko Package version 3.0 (2021/03/01)
===========================================
This is a Lua(La)TeX macro package that supports typesetting Korean
diff --git a/macros/luatex/generic/luatexko/luatexko-doc.pdf b/macros/luatex/generic/luatexko/luatexko-doc.pdf
index 10bc1d0a27..a8b7ae9d40 100644
--- a/macros/luatex/generic/luatexko/luatexko-doc.pdf
+++ b/macros/luatex/generic/luatexko/luatexko-doc.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexko/luatexko-doc.tex b/macros/luatex/generic/luatexko/luatexko-doc.tex
index 0a5691b9ca..ea7d4fc938 100644
--- a/macros/luatex/generic/luatexko/luatexko-doc.tex
+++ b/macros/luatex/generic/luatexko/luatexko-doc.tex
@@ -31,7 +31,7 @@
}
fonts.protrusions.setups.notoserifcjk = notoserifcjkkr_hb
}
-\defaultfontfeatures+{Renderer=OpenType}
+\defaultfontfeatures+{Renderer=HarfBuzz}
\setmainfont{Latin Modern Roman}[Expansion] % for hb tlig
\setmainhangulfont{Noto Serif CJK KR}[
Scale=0.98,
@@ -85,7 +85,7 @@
RawFeature=vertical,
CompressPunctuations,
InterCharStretch=1pt,
- CharRaise=3.6pt,
+ CharRaise=1pt,
CharacterWidth=Full,
]
\newhangulfontface\rubyfont{Noto Serif CJK KR Medium}[
@@ -97,8 +97,9 @@
\def\XeTeX{\hologo{XeTeX}}
\usepackage[hidelinks]{hyperref}
-\edef\verbatim{\unexpanded\expandafter{\verbatim\linespread{1.1}\selectfont}}
-\edef\itemize{\unexpanded\expandafter{\itemize\small}}
+\AddToHook{env/itemize/begin}{\small}
+\AddToHook{env/verbatim/begin}{\linespread{1.1}}
+
\catcode`|=13 \protected\def|{\verb|\let\\=\textbackslash}
\def\nohyphen{\language\csname l@nohyphenation\endcsname}
\protected\def\cs#1{\texttt{\nohyphen \textbackslash\detokenize{#1}}}
@@ -123,7 +124,7 @@
\author{Dohyun Kim \normalsize |<nomos at ktug org>| \and
Soojin Nam \normalsize |<jsunam at gmail com>| \and
\normalsize <\url{http://github.com/dohyunkim/luatexko}>}
-\date{Version 2.9\quad 2020/07/27}
+\date{Version 3.0\quad 2021/03/01}
\maketitle
\begin{quote}
@@ -134,7 +135,7 @@
\section{부르기}\label{sec:loading}
-\hemph{\texlive\ 2020 이상}{ \small (\luatex\ v1.12 이상)}을 사용해야 한다.
+\hemph{\texlive\ 2021 이상}{ \small (\luatex\ v1.12 이상)}을 사용해야 한다.
\luatexko\ 부르기: \cs{usepackage{luatexko}} 혹은 \cs{usepackage{kotex}}.%
\footnote{%
@@ -213,10 +214,10 @@ verbatim 코드를 식자할 때는 이 기능이 작동하지 않으며,%
부연하건대, |\\language=\\l@nohyphenation| 상황에서 작동하지 않는
그밖의 기능은 다음과 같다: 줄바꿈 허용, InterCharacter, InterHangul,
InterLatinCJK, CompressPunctuations, RemoveClassicSpaces,
- 한글^^b7한자 폰트 문자 다음의 공백 크기 조정 등. }
-문장부호가 고정폭 글꼴일 때에도 작동하지 않는다.%
-\footnote{%
- 또한 플레인텍에서는 영문글꼴을 트루타입/오픈타입으로 지정해야만 작동한다. }
+ 한글^^b7한자 폰트 문자 다음의 공백 크기 조정 등. 마지막의
+ 한글^^b7한자 다음의 공백 크기 조정은 영문자가 고정폭 글꼴일 때에도
+ 작동하지 않는다. }
+문장부호가 고정폭 글꼴일 때에도 작동하지 않는다.
영향 받는 문장부호들의 기본값은 다음과 같다:
\begin{verbatim}
[0x21] ! [0x27] ' [0x28] ( [0x29] )
@@ -341,10 +342,10 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있
\begin{verbatim}
[CharRaise=2pt]
\end{verbatim}
- 세로쓰기에서는 모든 글자들을 지정한 값만큼 오른쪽으로 이동시킨다.
- 세로쓰기에서 이 옵션 값을 고정길이{\small(가령 |pt| 단위)}로 주면
- 크기가 다른 폰트들간에 중앙정렬이 이루어진다.
- 세로쓰기에서 이 옵션을 주지 않으면 |0.5ex|가 기본값으로 동작한다.
+ 세로쓰기에서는 모든 글자들을 지정한 값만큼 오른쪽으로 이동시킨다.%
+ \footnote{%
+ 세로쓰기에서는 이 옵션 값을 고정길이(가령 |pt| 단위)로 주어야
+ 크기가 다른 폰트들간에 중앙정렬이 유지된다. }
\item[RemoveClassicSpaces] \pkgkwd*{RemoveClassicSpaces}%
고문헌 조판시에 CJK 글자들 사이의 공백을 없애준다.%
@@ -353,10 +354,12 @@ fontspec의 글꼴 옵션 외에 \luatexko가 따로 제공하는 것들이 있
\item[CompressPunctuations] \pkgkwd*{CompressPunctuations}%
CJK 구두점 {\small (낫표 따위)}의 글자폭을
- 반각으로 만든다. v2.0부터는 사용자가 지시하지 않는 한 자동으로 글자폭을
- 줄여주지 않는다.%
+ 반각으로 만든다.%
\footnote{%
- 플레인텍에서는 |+compresspunctuations|. }
+ 플레인텍에서는 |+compresspunctuations|.
+ }\,\footnote{%
+ v2.0부터는 사용자가 지시하지 않는 한 자동으로 글자폭을 줄여주지 않는다.
+ }
이 옵션은 |CharacterWidth=AlternateHalf| 내지 {\small (세로쓰기의 경우)}
|Vertical=HalfMetrics|와 거의 같은 기능을 한다.%
\footnote{%
@@ -439,16 +442,17 @@ v2.0부터는 고문헌 조판에서 한글^^b7한자와 영문자가 붙어 나
|vmtx| 정보를 가지고 있지 않은 글꼴은 세로쓰기에 적합치 않은 글꼴이다.
|otfinfo -t <파일>| 명령으로 글꼴에 들어있는 테이블 정보를 알 수 있다. }\,%
\footnote{%
- 폰트 옵션 |Renderer=OpenType| 또는 |Renderer=HarfBuzz| 등
+ 폰트 옵션 |Renderer=HarfBuzz| 또는 |Renderer=OpenType| 등
(플레인텍에서는 |mode=harf| 옵션)을 주고
컴파일하여 HarfBuzz 모듈을 이용하려는 경우 세로쓰기가
현재로서는 지원되지 않는다. 세로쓰기를 하려면 이 옵션을 빼고 디폴트 값인
- |Renderer=Node| (플레인텍에서는 |mode=node|)를 사용하라.}
+ |Renderer=Node| (플레인텍에서는 |mode=node|)를 사용하라.}\,%
+\footnote{%
+ 세로쓰기에서는 \cs{typesetclassic}의 아종인 \cs{typesetvertical}이
+ 기본으로 셋팅되어 있다. 일종의 고문헌 조판으로 보는 것이다.
+}
세로쓰기에서 |CharRaise| 옵션의 효과에 대해서는 제\ref{sec:fontoption}절을
-참조할 것.
-
-세로쓰기에서는 \cs{typesetclassic}의 아종인 \cs{typesetvertical}이
-기본으로 셋팅되어 있다. 일종의 고문헌 조판으로 보는 것이다.
+참조.
\begin{figure}
\framebox[\linewidth]{
@@ -491,8 +495,7 @@ v2.0부터는 고문헌 조판에서 한글^^b7한자와 영문자가 붙어 나
환경을 이용한다. |<dimen>|은 가로쓰기 박스의 너비를 지시한다.%
\footnote{%
플레인텍에서는 \cs{horizontal{<dimen>}} \ldots\ \cs{endhorizontal}. }
-가로쓰기 영역의 폰트 설정은 사용자의 몫이다.%
-\footnote{폰트 지시는 |horizontal| 환경 안에서 행하는 것을 권장한다.}
+가로쓰기 영역의 폰트 설정은 사용자의 몫이다.
\begin{figure}
\framebox[\linewidth]{
@@ -724,6 +727,14 @@ v2.0부터는 자동으로 수식 한글을 잡아주지 않는다.%
\section*{주요 변경 이력}
\begin{itemize}\linespread{1.1}\selectfont
+ \item[v3.0] ------
+ \item \hyperref[sec:fontoption]{세로쓰기에서 |CharRaise| 옵션은
+ 이제 글자들의 \dotemph{추가적인} 이동 길이를 나타낸다.}
+ \item 기본 로드되는 고정폭 한글 폰트(UnDotum)의 폭을
+ Latin Modern Mono 폰트에 맞추어 조정
+ \item \hyperref[sec:fontswitch]{영문자가 고정폭 글꼴일 때
+ 한글^^b7한자 다음에 공백 크기 조정을 하지 않음}
+ \item \cs{actualtext} 명령 제거
\item[v2.6] ------
\item \hyperref[sec:fontswitch]{\cs{hangulbyhangulfont} 및
\cs{hanjabyhanjafont}가 지역적 효력만 가짐}
diff --git a/macros/luatex/generic/luatexko/luatexko-normalize.lua b/macros/luatex/generic/luatexko/luatexko-normalize.lua
index ef8edbd587..2dec726fb6 100644
--- a/macros/luatex/generic/luatexko/luatexko-normalize.lua
+++ b/macros/luatex/generic/luatexko/luatexko-normalize.lua
@@ -1,6 +1,6 @@
-- luatexko-normalize.lua
--
--- Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
+-- Copyright (c) 2013-2021 Dohyun Kim <nomos at ktug org>
-- Soojin Nam <jsunam at gmail com>
--
-- This work may be distributed and/or modified under the
@@ -13,8 +13,8 @@
luatexbase.provides_module({
name = "luatexko-normalize",
- version = "2.9",
- date = "2020/07/27",
+ version = "3.0",
+ date = "2021/03/01",
author = "Dohyun Kim, Soojin Nam",
description = "Hangul normalization",
license = "LPPL v1.3+",
diff --git a/macros/luatex/generic/luatexko/luatexko-uhc2utf8.lua b/macros/luatex/generic/luatexko/luatexko-uhc2utf8.lua
index 40c5748b6f..e82bf2cdfe 100644
--- a/macros/luatex/generic/luatexko/luatexko-uhc2utf8.lua
+++ b/macros/luatex/generic/luatexko/luatexko-uhc2utf8.lua
@@ -1,6 +1,6 @@
-- luatexko-uhc2utf8.lua
--
--- Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
+-- Copyright (c) 2013-2021 Dohyun Kim <nomos at ktug org>
-- Soojin Nam <jsunam at gmail com>
--
-- This work may be distributed and/or modified under the
@@ -13,8 +13,8 @@
luatexbase.provides_module({
name = "luatexko-uhc2utf8",
- version = "2.9",
- date = "2020/07/27",
+ version = "3.0",
+ date = "2021/03/01",
author = "Dohyun Kim, Soojin Nam",
description = "UHC (CP949) input encoding",
license = "LPPL v1.3+",
diff --git a/macros/luatex/generic/luatexko/luatexko.lua b/macros/luatex/generic/luatexko/luatexko.lua
index 8b7f15b966..22fcaf54cf 100644
--- a/macros/luatex/generic/luatexko/luatexko.lua
+++ b/macros/luatex/generic/luatexko/luatexko.lua
@@ -1,6 +1,6 @@
-- luatexko.lua
--
--- Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
+-- Copyright (c) 2013-2021 Dohyun Kim <nomos at ktug org>
-- Soojin Nam <jsunam at gmail com>
--
-- This work may be distributed and/or modified under the
@@ -13,8 +13,8 @@
luatexbase.provides_module {
name = 'luatexko',
- date = '2020/07/27',
- version = '2.9',
+ date = '2021/03/01',
+ version = '3.0',
description = 'typesetting Korean with LuaTeX',
author = 'Dohyun Kim, Soojin Nam',
license = 'LPPL v1.3+',
@@ -41,6 +41,7 @@ local noderemove = node.remove
local nodeslide = node.slide
local nodewrite = node.write
local rangedimensions = node.rangedimensions
+local set_attribute = node.set_attribute
local setglue = node.setglue
local setproperty = node.setproperty
local unset_attribute = node.unset_attribute
@@ -69,12 +70,10 @@ local tableunpack = table.unpack
local add_to_callback = luatexbase.add_to_callback
local attributes = luatexbase.attributes
local call_callback = luatexbase.call_callback
-local callback_descriptions = luatexbase.callback_descriptions
local create_callback = luatexbase.create_callback
local module_warning = luatexbase.module_warning
local new_user_whatsit = luatexbase.new_user_whatsit
local registernumber = luatexbase.registernumber
-local remove_from_callback = luatexbase.remove_from_callback
local function warning (...)
return module_warning("luatexko", stringformat(...))
@@ -141,21 +140,23 @@ local function option_in_font (fontdata, optionname)
if type(fontdata) == "number" then
fontdata = get_font_data(fontdata)
end
- if fontdata.specification then
- return fontdata.specification.features.normal[optionname]
+ if fontdata.shared then
+ return fontdata.shared.features[optionname]
end
end
local function font_opt_dim (fd, optname)
local dim = option_in_font(fd, optname)
if dim then
- local params
+ local params, m, u
if type(fd) == "number" then
params = getparameters(fd)
else
params = fd.parameters
end
- local m, u = dim:match"^(.+)(e[mx])%s*$"
+ if type(dim) == "string" then
+ m, u = dim:match"^(.+)(e[mx])%s*$"
+ end
if m and u and params then
if u == "em" then
dim = m * params.quad
@@ -473,20 +474,27 @@ end
local function hangul_space_skip (curr, newfont)
if curr.lang ~= nohyphen and curr.font ~= newfont then
- local n = getnext(curr)
- if n and n.id == glueid and n.subtype == spaceskip then
- local params = getparameters(curr.font)
- local oldwd, oldst, oldsh, oldsto, oldsho = getglue(n)
- if params
- and oldwd == params.space
- and oldst == params.space_stretch
- and oldsh == params.space_shrink
- and oldsto == 0
- and oldsho == 0 then -- not user's spaceskip
-
- local newwd = font_options.hangulspaceskip[newfont]
- if newwd then
- setglue(n, newwd[1], newwd[2], newwd[3])
+ -- fontloader's "node" mode sets space_stretch to zero
+ -- when the font is a monospaced font (fontspec's \setmonofont
+ -- command does the same thing), which we will bypass here
+ -- for alignment of CJK and Latin glyphs in verbatim environment.
+ -- See http://www.ktug.org/xe/index.php?document_srl=249772
+ if not font_options.monospaced[curr.font] then
+ local n = getnext(curr)
+ if n and n.id == glueid and n.subtype == spaceskip then
+ local params = getparameters(curr.font)
+ local oldwd, oldst, oldsh, oldsto, oldsho = getglue(n)
+ if params
+ and oldwd == params.space
+ and oldst == params.space_stretch
+ and oldsh == params.space_shrink
+ and oldsto == 0
+ and oldsho == 0 then -- not user's spaceskip
+
+ local newwd = font_options.hangulspaceskip[newfont]
+ if newwd then
+ setglue(n, newwd[1], newwd[2], newwd[3])
+ end
end
end
end
@@ -1290,6 +1298,7 @@ function luatexko.get_strike_out_down (box)
else
down = -0.5*ex
end
+
local raise = font_options.charraise[f] or 0
return down - raise
end
@@ -1729,12 +1738,21 @@ local function fontdata_warning(activename, ...)
end
end
+local dfltfntsize = get_font_param(fontcurrent(), "quad") or 655360
+
local function process_vertical_font (fontdata)
+ local fullname = fontdata.fullname
+
+ if fontdata.type == "virtual" then
+ fontdata_warning("vitrual."..fullname,
+ "Virtual font `%s' cannot be\nused for vertical writing.", fullname)
+ return
+ end
+
local subfont = fontdata.specification and fontdata.specification.sub
local tsb_tab = get_tsb_table(fontdata.filename, subfont)
if not tsb_tab then
- local fullname = fontdata.fullname
fontdata_warning("vertical."..fullname,
"Vertical metrics table (vmtx) not found in the font\n`%s'", fullname)
return
@@ -1745,12 +1763,13 @@ local function process_vertical_font (fontdata)
local parameters = fontdata.parameters or {}
local scale = parameters.factor or 655.36
local quad = parameters.quad or 655360
+ local xheight = parameters.x_height or quad/2
local ascender = parameters.ascender or quad*0.8
- local goffset = font_opt_dim(fontdata, "charraise") or
- (parameters.x_height or quad/2)/2
+ local goffset = xheight/2 * (dfltfntsize / quad) -- TODO?
+
-- declare shift amount of horizontal box inside vertical env.
- fontdata.horizboxmoverightamount = goffset
+ fontdata.vertcharraise = goffset
for i,v in pairs(fontdata.characters) do
local voff = goffset - (v.width or 0)/2
@@ -1780,6 +1799,8 @@ local function process_vertical_font (fontdata)
parameters.space_stretch = spacechar.width/2
parameters.space_shrink = spacechar.width/2
end
+ parameters.ascender = quad/2 + goffset
+ parameters.descender = quad/2 - goffset
local res = fontdata.resources or {}
local fea = shared.features or {}
@@ -1822,8 +1843,9 @@ function luatexko.gethorizboxmoveright ()
texattribute.luatexkohanjafontattr,
texattribute.luatexkofallbackfontattr } do
if v and v > 0 then
- local amount = get_font_data(v).horizboxmoverightamount
+ local amount = get_font_data(v).vertcharraise
if amount then
+ amount = amount + (font_options.charraise[v] or 0)
set_macro("luatexkohorizboxmoveright", texsp(amount).."sp")
break
end
@@ -1833,19 +1855,25 @@ end
-- charraise
+local raiseattr = luatexbase.new_attribute"luatexkoraiseattr"
+
local function process_charraise (head)
local curr = head
while curr do
- if curr.id == glyphid then
- local f = curr.font
- local raise = font_options.charraise[f]
- if raise and not option_in_font(f, "vertical") then
- local props = my_node_props(curr)
- if not props.charraised then
+ local id = curr.id
+ if id == glyphid then
+ if not has_attribute(curr,raiseattr) then
+ local f = curr.font
+ local raise = font_options.charraise[f]
+ if raise then
curr.yoffset = (curr.yoffset or 0) + raise
- props.charraised = true
end
+ set_attribute(curr, raiseattr, 1)
end
+ elseif id == discid then
+ process_charraise(curr.pre)
+ process_charraise(curr.post)
+ process_charraise(curr.replace)
end
curr = getnext(curr)
end
@@ -1899,19 +1927,15 @@ local function process_fake_slant_corr (head) -- for font fallback
return head
end
-local function process_fake_slant_font (fontdata)
- local fsl = fontdata.slant
+local function process_fake_slant_font (fontdata, fsl)
if fsl and fsl > 0 then
- fsl = fsl/1000
- local hb = is_harf(fontdata)
+ fontdata.slant = fsl*1000
local params = fontdata.parameters or {}
- if not hb then -- hb done by luaotfload
- params.slant = (params.slant or 0) + fsl*65536 -- slant per point
- end
+ params.slant = (params.slant or 0) + fsl*65536 -- slant per point
+ local hb = is_harf(fontdata)
local scale = hb and hb.scale or params.factor or 655.36
-
local shared = fontdata.shared or {}
local descrs = shared.rawdata and shared.rawdata.descriptions or {}
@@ -1945,9 +1969,7 @@ end
-- wrap up
local pass_fun = function(...) return ... end
-create_callback("luatexko_hpack_first", "data", pass_fun)
create_callback("luatexko_prelinebreak_first", "data", pass_fun)
-create_callback("luatexko_hpack_second", "data", pass_fun)
create_callback("luatexko_prelinebreak_second", "data", pass_fun)
create_callback("luatexko_do_atbegshi", "data", pass_fun)
@@ -1957,141 +1979,181 @@ function luatexko.process_atbegshi (box)
end
end
-add_to_callback("hpack_filter", function(h)
+add_to_callback("pre_shaping_filter", function(h, gc)
+ local par = gc == ""
+ or gc == "vbox"
+ or gc == "vtop"
+ or gc == "insert"
+ or gc == "vcenter"
h = process_fonts(h)
- h = call_callback("luatexko_hpack_first", h)
- h = call_callback("luatexko_hpack_second", h)
- return process_linebreak(h)
-end, "luatexko.hpack_filter.pre_rendering", 1)
+ h = call_callback("luatexko_prelinebreak_first", h, par)
+ h = call_callback("luatexko_prelinebreak_second", h, par)
+ return process_linebreak(h, par)
+end, "luatexko.pre_shaping_filter")
-add_to_callback("pre_linebreak_filter", function(h)
- h = process_fonts(h)
- h = call_callback("luatexko_prelinebreak_first", h, true)
- h = call_callback("luatexko_prelinebreak_second", h, true)
- return process_linebreak(h, true)
-end, "luatexko.pre_linebreak_filter.pre_rendering", 1)
-
-local font_opt_procs = {
- removeclassicspaces = {
- luatexko_hpack_first = process_remove_spaces,
- luatexko_prelinebreak_first = process_remove_spaces,
- },
- interhangul = {
- luatexko_hpack_second = process_interhangul,
- luatexko_prelinebreak_second = process_interhangul,
+local otfregister = fonts.constructors.features.otf.register
+
+local function activate_process (cbnam, cbfun, name)
+ if not active_processes[name] then
+ add_to_callback(cbnam, cbfun, "luatexko."..cbnam.."."..name)
+ active_processes[name] = true
+ end
+end
+
+otfregister {
+ name = "removeclassicspaces",
+ description = "remove spaces in classic typesetting",
+ default = false,
+ manipulators = {
+ node = function()
+ activate_process("luatexko_prelinebreak_first", process_remove_spaces, "removeclassicspaces")
+ end,
+ plug = function()
+ activate_process("luatexko_prelinebreak_first", process_remove_spaces, "removeclassicspaces")
+ end,
},
- interlatincjk = {
- luatexko_hpack_second = process_interlatincjk,
- luatexko_prelinebreak_second = process_interlatincjk,
+}
+
+otfregister {
+ name = "interhangul",
+ description = "insert more glue between Hangul chars",
+ default = false,
+ manipulators = {
+ node = function()
+ activate_process("luatexko_prelinebreak_second", process_interhangul, "interhangul")
+ end,
+ plug = function()
+ activate_process("luatexko_prelinebreak_second", process_interhangul, "interhangul")
+ end,
},
- charraise = {
- hpack_filter = process_charraise,
- pre_linebreak_filter = process_charraise,
+}
+
+otfregister {
+ name = "interlatincjk",
+ description = "insert glue between CJK and Latin",
+ default = false,
+ manipulators = {
+ node = function()
+ activate_process("luatexko_prelinebreak_second", process_interlatincjk, "interlatincjk")
+ end,
+ plug = function()
+ activate_process("luatexko_prelinebreak_second", process_interlatincjk, "interlatincjk")
+ end,
},
- compresspunctuations = {
- hpack_filter = process_glyph_width,
- pre_linebreak_filter = process_glyph_width,
+}
+
+otfregister {
+ name = "charraise",
+ description = "raise chars",
+ default = false,
+ manipulators = {
+ node = function(fontdata)
+ activate_process("post_shaping_filter", process_charraise, "charraise")
+ end,
+ plug = function(fontdata)
+ activate_process("post_shaping_filter", process_charraise, "charraise")
+ end,
},
- slant = {
- hpack_filter = process_fake_slant_corr,
- pre_linebreak_filter = process_fake_slant_corr,
+}
+
+otfregister {
+ name = "compresspunctuations",
+ description = "compress width of CJK punctuations",
+ default = false,
+ manipulators = {
+ node = function()
+ activate_process("post_shaping_filter", process_glyph_width, "compresspunctuations")
+ end,
+ plug = function()
+ activate_process("post_shaping_filter", process_glyph_width, "compresspunctuations")
+ end,
},
}
--- luaotfload expansion feature, committed at 2020.06.08
-luatexko.plug_expansion_loaded = false
-for _,v in next, fonts.handlers.otf.features.manipulators.plug do
- if v.name == "expansion" then
- luatexko.plug_expansion_loaded = true
- break
- end
-end
+otfregister {
+ name = "slant",
+ description = "fake slant fallback fonts",
+ default = false,
+ manipulators = {
+ node = function(fontdata, _, value)
+ process_fake_slant_font(fontdata, value)
+ activate_process("post_shaping_filter", process_fake_slant_corr, "slant")
+ end,
+ plug = function(fontdata, _, value)
+ process_fake_slant_font(fontdata, value)
+ activate_process("post_shaping_filter", process_fake_slant_corr, "slant")
+ end,
+ },
+}
-local font_opt_procs_single = {
- expansion = function(fontdata)
- if not luatexko.plug_expansion_loaded and is_harf(fontdata) then
- local val = option_in_font(fontdata, "expansion")
- local setup = fonts.expansions.setups[val] or {}
- fontdata.stretch = fontdata.stretch or (setup.stretch or 2)*10
- fontdata.shrink = fontdata.shrink or (setup.shrink or 2)*10
- fontdata.step = fontdata.step or (setup.step or .5)*10
- end
- if tex.adjustspacing == 0 then
- texset("global", "adjustspacing", 2)
- end
- end,
-
- protrusion = function(fontdata)
- if is_harf(fontdata) then -- for now, no support in harf mode
- local val = option_in_font(fontdata, "protrusion")
- local setup = fonts.protrusions.setups[val] or {}
- local quad = fontdata.parameters.quad
- for i, v in pairs(setup) do
- local chr = fontdata.characters[i]
- if chr then
- local wdq = chr.width/quad
- chr.left_protruding = chr.left_protruding or wdq*v[1]*1000
- chr.right_protruding = chr.right_protruding or wdq*v[2]*1000
- end
- end
- end
- if tex.protrudechars == 0 then
- texset("global", "protrudechars", 2)
- end
- if option_in_font(fontdata, "compresspunctuations") then
+otfregister {
+ name = "vertical",
+ description = "vertical typesetting",
+ default = false,
+ manipulators = {
+ node = process_vertical_font,
+ plug = function(fontdata)
local fullname = fontdata.fullname
- fontdata_warning("protrude."..fullname,
- "Both `compresspunctuations' and `protrusion' are\nenabled for `%s'.\n"..
- "Beware bad justifications.", fullname)
- end
- end,
-
- slant = process_fake_slant_font,
-
- vertical = function(fontdata)
- local fullname = fontdata.fullname
- if is_harf(fontdata) then
fontdata_warning("vertical."..fullname,
"Currently, vertical writing is not supported\nby harf mode."..
"`Renderer=Node' option is needed for\n`%s'", fullname)
- elseif fontdata.type == "virtual" then
- fontdata_warning("vitrual."..fullname,
- "Virtual font `%s' cannot be\nused for vertical writing.", fullname)
- else
- process_vertical_font(fontdata)
- end
- end,
+ end,
+ },
}
-local function process_patch_font (fontdata)
- if type(fontdata) ~= "table" or
- fontdata.format ~= "opentype" and fontdata.format ~= "truetype" then
- return
- end -- as we have called patch_font_unsafe for hb fonts
-
- for name, procs in pairs( font_opt_procs ) do
- if not active_processes[name] and option_in_font(fontdata, name) then
- if name == "charraise" and option_in_font(fontdata, "vertical") then
- else
- for cbnam, cbfun in pairs( procs ) do
- add_to_callback(cbnam, cbfun, "luatexko."..cbnam.."."..name)
- end
- active_processes[name] = true
+otfregister {
+ name = "expansion",
+ description = "glyph expansion",
+ default = false,
+ manipulators = {
+ node = function()
+ if tex.adjustspacing == 0 then
+ texset("global", "adjustspacing", 2)
end
- end
- end
+ end,
+ plug = function(fontdata, _, value)
+ local setup = fonts.expansions.setups[value] or {}
+ fontdata.stretch = fontdata.stretch or (setup.stretch or 2)*10
+ fontdata.shrink = fontdata.shrink or (setup.shrink or 2)*10
+ fontdata.step = fontdata.step or (setup.step or .5)*10
+ if tex.adjustspacing == 0 then
+ texset("global", "adjustspacing", 2)
+ end
+ end,
+ },
+}
- for name, func in pairs( font_opt_procs_single ) do
- if option_in_font(fontdata, name) then
- func(fontdata)
+local function process_protrusion (fontdata, _, value)
+ local setup = fonts.protrusions.setups[value] or {}
+ local quad = fontdata.parameters.quad
+ for i, v in pairs(setup) do
+ local chr = fontdata.characters[i]
+ if chr then
+ local wdq = chr.width/quad
+ chr.left_protruding = chr.left_protruding or wdq*v[1]*1000
+ chr.right_protruding = chr.right_protruding or wdq*v[2]*1000
end
end
+ if tex.protrudechars == 0 then
+ texset("global", "protrudechars", 2)
+ end
+ if option_in_font(fontdata, "compresspunctuations") then
+ local fullname = fontdata.fullname
+ fontdata_warning("protrude."..fullname,
+ "Both `compresspunctuations' and `protrusion' are\nenabled for `%s'.\n"..
+ "Beware bad justifications.", fullname)
+ end
end
-add_to_callback("luaotfload.patch_font", process_patch_font,
-"luatexko.patch_font")
-add_to_callback("luaotfload.patch_font_unsafe", process_patch_font,
-"luatexko.patch_font")
+otfregister {
+ name = "protrusion",
+ description = "glyph protrusion",
+ default = false,
+ manipulators = {
+ node = process_protrusion,
+ plug = process_protrusion,
+ },
+}
local auxiliary_procs = {
dotemph = {
@@ -2105,11 +2167,9 @@ local auxiliary_procs = {
luatexko_do_atbegshi = process_ruby_post_linebreak,
},
autojosa = {
- luatexko_hpack_first = process_josa,
luatexko_prelinebreak_first = process_josa,
},
reorderTM = {
- luatexko_hpack_first = process_reorder_tonemarks,
luatexko_prelinebreak_first = process_reorder_tonemarks,
},
}
@@ -2151,16 +2211,16 @@ end,
function luatexko.deactivateall (str)
luatexko.deactivated = {}
- for _, name in ipairs{ "hpack_filter",
+ for _, name in ipairs{ "pre_shaping_filter",
+ "post_shaping_filter",
"pre_linebreak_filter",
"hyphenate",
"luatexko_do_atbegshi", -- might not work properly
- "luaotfload.patch_font_unsafe", -- added for harf
- "luaotfload.patch_font" } do
+ } do
local t = {}
- for i, v in ipairs( callback_descriptions(name) ) do
+ for i, v in ipairs( luatexbase.callback_descriptions(name) ) do
if v:find(str or "^luatexko%.") then
- local ff, dd = remove_from_callback(name, v)
+ local ff, dd = luatexbase.remove_from_callback(name, v)
tableinsert(t, { ff, dd, i })
end
end
diff --git a/macros/luatex/generic/luatexko/luatexko.sty b/macros/luatex/generic/luatexko/luatexko.sty
index 958407dc81..f1e0179164 100644
--- a/macros/luatex/generic/luatexko/luatexko.sty
+++ b/macros/luatex/generic/luatexko/luatexko.sty
@@ -1,6 +1,6 @@
% luatexko.sty
%
-% Copyright (c) 2013-2020 Dohyun Kim <nomos at ktug org>
+% Copyright (c) 2013-2021 Dohyun Kim <nomos at ktug org>
% Soojin Nam <jsunam at gmail com>
%
% This work may be distributed and/or modified under the
@@ -13,11 +13,10 @@
\ifdefined\luatexkohangulfontattr \endinput\fi
\ifdefined\selectfont
- \NeedsTeXFormat{LaTeX2e}[2020/02/02]
- \ProvidesPackage{luatexko}[2020/07/27 v2.9 typesetting Korean with LuaTeX]
+ \NeedsTeXFormat{LaTeX2e}[2020/10/01]
+ \ProvidesPackage{luatexko}[2021/03/01 v3.0 typesetting Korean with LuaTeX]
\RequirePackage{luatexbase}
\RequirePackage{fontspec}[2020/02/03]
- \RequirePackage{atbegshi}
\else
\input luatexbase.sty
\input luaotfload.sty
@@ -360,11 +359,6 @@
\ifcase\count@ \directlua{ luatexko.uhc2utf8.stopconvert() }%
\else \directlua{ luatexko.uhc2utf8.startconvert() }%
\fi}
-% actualtext not provided
-\ifdefined\actualtext\else
- \protected\def\actualtext#1#{\luatexkoactualtext}
- \def\luatexkoactualtext#1{#1}
-\fi
% math hangul
\def\setmathhangulblock#1#2{%
\count@="#1
@@ -432,60 +426,60 @@
\catcode`\@=\luatexkoatcatcode
\endinput\fi
% latex
-\RequirePackage{everysel}
-\EverySelectfont{%
- \luatexkohangulselectfont
- \luatexkohanjaselectfont
- \luatexkofallbackselectfont
+\IfHookExistsTF{selectfont}{
+ \AddToHook{selectfont}{%
+ \luatexkohangulselectfont
+ \luatexkohanjaselectfont
+ \luatexkofallbackselectfont }
+}{
+ \RequirePackage{everysel}
+ \EverySelectfont{%
+ \luatexkohangulselectfont
+ \luatexkohanjaselectfont
+ \luatexkofallbackselectfont }
}
-\edef\@rmfamilyhook{\unexpanded\expandafter{\@rmfamilyhook
+\AddToHook{rmfamily}{%
\let\luatexkohangulfont \luatexkomainhangulfont
\let\luatexkohanjafont \luatexkomainhanjafont
\let\luatexkofallbackfont\luatexkomainfallbackfont
-}}
-\edef\@sffamilyhook{\unexpanded\expandafter{\@sffamilyhook
+}
+\AddToHook{sffamily}{%
\let\luatexkohangulfont \luatexkosanshangulfont
\let\luatexkohanjafont \luatexkosanshanjafont
\let\luatexkofallbackfont\luatexkosansfallbackfont
-}}
-\edef\@ttfamilyhook{\unexpanded\expandafter{\@ttfamilyhook
+}
+\AddToHook{ttfamily}{%
\let\luatexkohangulfont \luatexkomonohangulfont
\let\luatexkohanjafont \luatexkomonohanjafont
\let\luatexkofallbackfont\luatexkomonofallbackfont
-}}
-\edef\@defaultfamilyhook{\unexpanded\expandafter{\@defaultfamilyhook
+}
+\AddToHook{normalfont}{%
\let\luatexkohangulfont \luatexkodefaulthangulfont
\let\luatexkohanjafont \luatexkodefaulthanjafont
\let\luatexkofallbackfont\luatexkodefaultfallbackfont
-}}
+}
% fontspec-like
\ExplSyntaxOn
-\cs_new_nopar:Npn \l_luatexko_pacify_bfseries {
+\cs_new_nopar:Npn \l_luatexko_silent_upshape {
\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 }
+ \cs_if_exist:cT
{ \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 }
+ {
+ \cs_set_eq:cc
+ { \g_fontspec_encoding_tl/\l_fontspec_family_tl/##1/\updefault }
+ { \g_fontspec_encoding_tl/\l_fontspec_family_tl/##1/\shapedefault }
+ }
}
}
}
\DeclareDocumentCommand \setmainhangulfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomainhangulfamily { Ligatures=TeX, #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkomainhangulfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -502,7 +496,7 @@
\DeclareDocumentCommand \setsanshangulfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkosanshangulfamily { Ligatures=TeX, #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkosanshangulfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -519,7 +513,7 @@
\DeclareDocumentCommand \setmonohangulfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomonohangulfamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkomonohangulfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -536,7 +530,7 @@
\DeclareDocumentCommand \newhangulfontfamily { m O{} m O{} }
{
\fontspec_set_family:cnn { luatexko_user_family_ \cs_to_str:N #1 } { #2, #4 } { #3 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn #1
{
\cs_set_nopar:Npn \luatexkohangulfont
@@ -555,7 +549,7 @@
\DeclareDocumentCommand \hangulfontspec { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkohangulfontfamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_nopar:Npn \luatexkohangulfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -567,7 +561,7 @@
\DeclareDocumentCommand \setmainhanjafont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomainhanjafamily { Ligatures=TeX, #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkomainhanjafont
{
\fontencoding \g_fontspec_encoding_tl
@@ -584,7 +578,7 @@
\DeclareDocumentCommand \setsanshanjafont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkosanshanjafamily { Ligatures=TeX, #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkosanshanjafont
{
\fontencoding \g_fontspec_encoding_tl
@@ -601,7 +595,7 @@
\DeclareDocumentCommand \setmonohanjafont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomonohanjafamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkomonohanjafont
{
\fontencoding \g_fontspec_encoding_tl
@@ -618,7 +612,7 @@
\DeclareDocumentCommand \newhanjafontfamily { m O{} m O{} }
{
\fontspec_set_family:cnn { luatexko_user_family_ \cs_to_str:N #1 } { #2, #4 } { #3 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn #1
{
\cs_set_nopar:Npn \luatexkohanjafont
@@ -637,7 +631,7 @@
\DeclareDocumentCommand \hanjafontspec { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkohanjafontfamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_nopar:Npn \luatexkohanjafont
{
\fontencoding \g_fontspec_encoding_tl
@@ -650,7 +644,7 @@
\DeclareDocumentCommand \setmainfallbackfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomainfallbackfamily { Ligatures=TeX, #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkomainfallbackfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -667,7 +661,7 @@
\DeclareDocumentCommand \setsansfallbackfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkosansfallbackfamily { Ligatures=TeX, #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkosansfallbackfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -684,7 +678,7 @@
\DeclareDocumentCommand \setmonofallbackfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomonofallbackfamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn \luatexkomonofallbackfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -701,7 +695,7 @@
\DeclareDocumentCommand \newfallbackfontfamily { m O{} m O{} }
{
\fontspec_set_family:cnn { luatexko_user_family_ \cs_to_str:N #1 } { #2, #4 } { #3 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_protected_nopar:Npn #1
{
\cs_set_nopar:Npn \luatexkofallbackfont
@@ -720,7 +714,7 @@
\DeclareDocumentCommand \fallbackfontspec { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkofallbackfontfamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\cs_set_nopar:Npn \luatexkofallbackfont
{
\fontencoding \g_fontspec_encoding_tl
@@ -732,7 +726,7 @@
\DeclareDocumentCommand \setmathhangulfont { O{} m O{} }
{
\fontspec_set_family:Nnn \luatexkomathhangulfamily { #1, #3 } { #2 }
- \l_luatexko_pacify_bfseries
+ \l_luatexko_silent_upshape
\DeclareSymbolFont { mathhangul }
\g_fontspec_encoding_tl \luatexkomathhangulfamily \mddefault \updefault
\int_compare:nNnF { \Umathcharfam"AC00 } = { \symmathhangul }
@@ -746,20 +740,14 @@
\let\adhochanjafont\hanjafontspec
\let\adhocfallbackfont\fallbackfontspec
% interhangul, interlatincjk, charraise
-\def\luatexkopacifybfseries{%
+\def\luatexkosilentupshape{%
\@tfor \@tempa := \mddefault \bfdefault \do {%
\ifcsname \f@encoding/\f@family/\@tempa/\updefault\endcsname \else
+ \ifcsname \f@encoding/\f@family/\@tempa/\shapedefault\endcsname
\global \expandafter\let
\csname \f@encoding/\f@family/\@tempa/\updefault \expandafter\endcsname
\csname \f@encoding/\f@family/\@tempa/\shapedefault\endcsname
- \fi
- }%
- \@tfor \@tempa := \shapedefault \updefault \itdefault \sldefault \do {%
- \ifcsname \f@encoding/\f@family/bx/\@tempa\endcsname \else
- \global \expandafter\let
- \csname \f@encoding/\f@family/bx/\@tempa \expandafter\endcsname
- \csname \f@encoding/\f@family/\bfdefault/\@tempa\endcsname
- \fi
+ \fi\fi
}%
}
\protected\def\addhangulfontfeature#1{%
@@ -767,7 +755,7 @@
\ifdefined\luatexkohangulfont
\fontseries\mddefault\fontshape\shapedefault \luatexkohangulfont \fi
\addfontfeature{#1}%
- \luatexkopacifybfseries
+ \luatexkosilentupshape
\edef\x{\endgroup
\def\noexpand\luatexkohangulfont{%
\noexpand\fontencoding{\UTFencname}%
@@ -780,7 +768,7 @@
\ifdefined\luatexkohanjafont
\fontseries\mddefault\fontshape\shapedefault \luatexkohanjafont \fi
\addfontfeature{#1}%
- \luatexkopacifybfseries
+ \luatexkosilentupshape
\edef\x{\endgroup
\def\noexpand\luatexkohanjafont{%
\noexpand\fontencoding{\UTFencname}%
@@ -793,7 +781,7 @@
\ifdefined\luatexkofallbackfont
\fontseries\mddefault\fontshape\shapedefault \luatexkofallbackfont \fi
\addfontfeature{#1}%
- \luatexkopacifybfseries
+ \luatexkosilentupshape
\edef\x{\endgroup
\def\noexpand\luatexkofallbackfont{%
\noexpand\fontencoding{\UTFencname}%
@@ -806,21 +794,7 @@
\newfontfeature{CharRaise}{charraise=#1}
\newfontfeature{RemoveClassicSpaces}{+removeclassicspaces}
\newfontfeature{CompressPunctuations}{+compresspunctuations}
-% luaotfload expansion feature, committed at 2020.06.08
-\count@=\z@
-\directlua{ if luatexko.plug_expansion_loaded then tex.setcount(255,1) end }
-\ifnum\count@=\z@
- \newfontfeature{Expansion}{expansion=\ifx\empty#1\empty default\else #1\fi }
-\else
- \newfontfeature{Expansion}{expansion=\directlua{
- if "#1" == "" or "#1" == "default" then
- tex.sprint "20 20 5"
- else
- tex.sprint "#1"
- end
- }%
- }
-\fi
+\newfontfeature{Expansion}{expansion=\ifx\empty#1\empty default\else #1\fi }
\newfontfeature{Protrusion}{protrusion=\ifx\empty#1\empty default\else #1\fi }
\newfontfeature{InterCharacter}{intercharacter=#1}
\newfontfeature{InterCharStretch}{intercharstretch=#1}
@@ -854,7 +828,22 @@
\begingroup\ttfamily
\directlua{ luatexko.currenthashangulchars(255) }\expandafter\endgroup
\ifnum\count@=\z@
- \let\luatexkomonohangulfont\luatexkosanshangulfont
+ \def\@tempa{lmtt}\def\@tempb{LatinModernMono(0)}
+ \ifnum 0\ifx\ttdefault\@tempa 1\else\ifx\ttdefault\@tempb 1\fi\fi >\z@
+ \IfFontExistsTF{UnDotum.ttf}
+ {\setmonohangulfont{UnDotum}[
+ UprightFeatures={SizeFeatures={
+ {Size={-8.5}, FakeStretch=1.062},
+ {Size={8.5-11}, FakeStretch=1.05 },
+ {Size={11-}, FakeStretch=1.03 }}},
+ BoldFeatures={SizeFeatures={
+ {Size={-}, FakeStretch=1.05}}},
+ WordSpace={1.66667,0,0}]
+ }
+ {\let\luatexkomonohangulfont\luatexkosanshangulfont }
+ \else
+ \let\luatexkomonohangulfont\luatexkosanshangulfont
+ \fi
\fi
\fi
% just in case, reset luatexkodefault...font
diff --git a/macros/luatex/generic/luavlna/README.md b/macros/luatex/generic/luavlna/README.md
index de38ed0c67..eb5fb3d0d0 100644
--- a/macros/luatex/generic/luavlna/README.md
+++ b/macros/luatex/generic/luavlna/README.md
@@ -1,4 +1,4 @@
-# Luavlna, version 0.1h, 2021-01-08
+# Luavlna, version 0.1i, 2021-03-02
# Introduction
diff --git a/macros/luatex/generic/luavlna/luavlna-doc.pdf b/macros/luatex/generic/luavlna/luavlna-doc.pdf
index 40cca34546..b37ab16b77 100644
--- a/macros/luatex/generic/luavlna/luavlna-doc.pdf
+++ b/macros/luatex/generic/luavlna/luavlna-doc.pdf
Binary files differ
diff --git a/macros/luatex/generic/luavlna/luavlna-doc.tex b/macros/luatex/generic/luavlna/luavlna-doc.tex
index 20a83ae127..470822d4ac 100644
--- a/macros/luatex/generic/luavlna/luavlna-doc.tex
+++ b/macros/luatex/generic/luavlna/luavlna-doc.tex
@@ -36,7 +36,7 @@
\section{Introduction}
-This is a small package for plain Lua\TeX and Lua\LaTeX. In some languages, like
+This is a small package for Plain Lua\TeX and Lua\LaTeX. In some languages, like
Czech or Polish, there should be no single letter words at the line
end, according to the typographical norms. There exists some
external commands (like \verb!vlna!) or packages (\verb!encxvlna!
@@ -144,6 +144,20 @@ The \verb|luavlna| package recognizes the following options
\item[\texttt{defaults}] -- load default settings. Enabled by default.
\end{description}
+
+\section{Default values}
+
+Luavlna defines default settings for Czech and Slovak. If you want to disable them,
+you can use the \texttt{defaults=false} option for Luavlna package. In Plain Lua\TeX{},
+use:
+
+\begin{mycode}
+\begin{verbatim}
+\let\nosingledefaults\relax
+\input luavlna
+\end{verbatim}
+\end{mycode}
+
\section{Commands}
\begin{mycode}
@@ -165,6 +179,7 @@ Default values:
\end{verbatim}
\end{mycode}
+
%By default, all
%single letters are processed, this command can be used to pass a
%string of characters, which should be processed only.
@@ -224,7 +239,7 @@ settings for one language for a whole document, you can use following command:
\subsection{Turning off processing}
-If you want to stop processing of the spaces in the document you can use command
+If you want to stop the processing of spaces in the document you can use the following command:
\begin{mycode}
\cmd{\preventsingleoff}
diff --git a/macros/luatex/generic/luavlna/luavlna.sty b/macros/luatex/generic/luavlna/luavlna.sty
index 89e6d47543..31fb0ba438 100644
--- a/macros/luatex/generic/luavlna/luavlna.sty
+++ b/macros/luatex/generic/luavlna/luavlna.sty
@@ -1,4 +1,4 @@
-\ProvidesPackage{luavlna}[2021-01-08 luavlna]
+\ProvidesPackage{luavlna}[2021-03-02 luavlna]
\RequirePackage{kvoptions}
@@ -23,7 +23,7 @@
\def\enablesplithyphens#1{%
\ifcsname l@#1\endcsname%
- \typeout{set lang #1, \the\csname l@#1\endcsname}
+ \typeout{set lang #1, \the\csname l@#1\endcsname}%
\directlua{enable_split_hyphens("\the\csname l@#1\endcsname")}%
\fi%
}
diff --git a/macros/luatex/generic/luavlna/luavlna.tex b/macros/luatex/generic/luavlna/luavlna.tex
index ab47b8d6fc..dd7415534d 100644
--- a/macros/luatex/generic/luavlna/luavlna.tex
+++ b/macros/luatex/generic/luavlna/luavlna.tex
@@ -51,7 +51,7 @@ set_compounds = function(lang, compounds)
end
set_main_language = function(lang)
- local langid = languages:get_number(lang)
+ local langid = get_lang_id(lang)
if not langid then return nil, "Cannot find language number for: "..lang end
luavlna.set_main_language(langid)
end
@@ -69,22 +69,33 @@ disable_split_hyphens = function(lang)
end
}
+% the langno library supports both numeric and literal names
+% we can try to find the language ID from macros first, if it fails
+% we pass the language name to Lua. it will try to find ID in luanguage.dat and other sources
+\def\singlecharsgetlang#1{%
+ \ifcsname lang@#1\endcsname%
+ \the\csname lang@#1\endcsname%
+ \else% unknown language macro, let langno library to find it
+ #1%
+ \fi%
+}
+
% Set letters which are prevented from breaking
\def\singlechars#1#2{%
-\directlua{set_singlechars("#1","#2")}
+ \directlua{set_singlechars("\singlecharsgetlang{#1}","#2")}%
}
% Define compound initials
\def\compoundinitials#1#2{%
-\directlua{set_compounds("#1","#2")}
+ \directlua{set_compounds("\singlecharsgetlang{#1}","#2")}%
}
% Enable inserting of visual marks for debugging
\def\preventsingledebugon{%
-\directlua{luavlna.debug(true)}
+\directlua{luavlna.debug(true)}%
}
\def\preventsinglelang#1{%
- \directlua{set_main_language("#1")}
+ \directlua{set_main_language("\singlecharsgetlang{#1}")}%
}
%\newluatexattribute\preventsinglestatus
@@ -94,18 +105,18 @@ end
\preventsinglestatus=2
}
-\def\preventsingleoff{
+\def\preventsingleoff{%
\preventsinglestatus=1
}
% Disable inserting of visual marks for dewbugging
\def\preventsingledebugoff{%
-\directlua{luavlna.debug(false)}
+\directlua{luavlna.debug(false)}%
}
% enable/disable split hyphens for a language
-\def\enablesplithyphens#1{\directlua{enable_split_hyphens("#1")}}
-\def\disablesplithyphens#1{\directlua{disable_split_hyphens("#1")}}
+\def\enablesplithyphens#1{\directlua{enable_split_hyphens("\singlecharsgetlang{#1}")}}
+\def\disablesplithyphens#1{\directlua{disable_split_hyphens("\singlecharsgetlang{#1}")}}
% disable processing of units or degrees