From 387961768f65ec00d171b3781d4b87ea94bb19f5 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 5 Jan 2024 03:02:50 +0000 Subject: CTAN sync 202401050302 --- macros/generic/gtl/README.md | 5 +- macros/generic/gtl/gtl.dtx | 97 +- macros/generic/gtl/gtl.pdf | Bin 550901 -> 595898 bytes .../latex/contrib/babel-contrib/italian/README.txt | 36 +- .../contrib/babel-contrib/italian/italian.dtx | 2237 +++++++++++--------- .../contrib/babel-contrib/italian/italian.pdf | Bin 471835 -> 504924 bytes macros/latex/contrib/easybook/easybook.dtx | 9 +- macros/latex/contrib/easybook/easybook.ins | 4 +- macros/latex/contrib/easybook/easybook.pdf | Bin 589403 -> 589428 bytes macros/latex/contrib/easybook/easybook.tex | 50 +- macros/latex/contrib/l3build/CHANGELOG.md | 10 +- macros/latex/contrib/l3build/README.md | 6 +- macros/latex/contrib/l3build/l3build-arguments.lua | 16 +- macros/latex/contrib/l3build/l3build-aux.lua | 5 +- macros/latex/contrib/l3build/l3build-check.lua | 26 +- macros/latex/contrib/l3build/l3build-clean.lua | 2 +- macros/latex/contrib/l3build/l3build-ctan.lua | 2 +- .../contrib/l3build/l3build-file-functions.lua | 4 +- macros/latex/contrib/l3build/l3build-help.lua | 4 +- macros/latex/contrib/l3build/l3build-install.lua | 3 +- .../contrib/l3build/l3build-manifest-setup.lua | 2 +- macros/latex/contrib/l3build/l3build-manifest.lua | 4 +- macros/latex/contrib/l3build/l3build-stdmain.lua | 22 +- macros/latex/contrib/l3build/l3build-tagging.lua | 2 +- .../latex/contrib/l3build/l3build-typesetting.lua | 17 +- macros/latex/contrib/l3build/l3build-unpack.lua | 2 +- macros/latex/contrib/l3build/l3build-upload.lua | 14 +- macros/latex/contrib/l3build/l3build-variables.lua | 2 +- macros/latex/contrib/l3build/l3build-zip.lua | 2 +- macros/latex/contrib/l3build/l3build.1 | 6 +- macros/latex/contrib/l3build/l3build.dtx | 8 +- macros/latex/contrib/l3build/l3build.ins | 4 +- macros/latex/contrib/l3build/l3build.lua | 14 +- macros/latex/contrib/l3build/l3build.pdf | Bin 748206 -> 747742 bytes macros/latex/contrib/overpic/overpic.dtx | 70 +- macros/latex/contrib/overpic/overpic.pdf | Bin 371275 -> 404377 bytes 36 files changed, 1462 insertions(+), 1223 deletions(-) (limited to 'macros') diff --git a/macros/generic/gtl/README.md b/macros/generic/gtl/README.md index 6a2b00189d..39fc63c487 100644 --- a/macros/generic/gtl/README.md +++ b/macros/generic/gtl/README.md @@ -7,11 +7,8 @@ Manipulate unbalanced lists of tokens The `gtl` TeX/LaTeX package provides tools to manipulate lists of tokens which may be unbalanced. -This package requires up-to-date versions of the `l3kernel`, -`l3packages` and `l3experimental` bundles. - The package is extracted by running `pdflatex gtl.ins`. -For documentation, run `pdflatex gtl.dtx` twice. +For documentation, run `pdflatex gtl.dtx` thrice. This is work in progress, all suggestions/comments/bug reports are welcome! See https://github.com/blefloch/latex-gtl diff --git a/macros/generic/gtl/gtl.dtx b/macros/generic/gtl/gtl.dtx index 2f42e6b535..6e520e30b6 100644 --- a/macros/generic/gtl/gtl.dtx +++ b/macros/generic/gtl/gtl.dtx @@ -1,5 +1,5 @@ % \iffalse -%% File: gtl.dtx Copyright (C) 2013,2015,2017,2018 Bruno Le Floch +%% File: gtl.dtx Copyright (C) 2013,2015,2017,2018,2024 Bruno Le Floch %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -27,9 +27,9 @@ % % \title{The \textsf{gtl} package: \\ % manipulate unbalanced lists of tokens\thanks{This -% file has version number 0.5, last revised 2018/12/28.}} +% file has version number 0.6, last revised 2024/01/04.}} % \author{Bruno Le Floch} -% \date{2018/12/28} +% \date{2024/01/04} % % \maketitle % \tableofcontents @@ -120,7 +120,7 @@ % { % \token_if_eq_meaning:NNT #1 \q_recursion_tail % { \__gtldoc_more:Nw \__gtldoc_aux:N } -% \str_case_x:nnF {#1} +% \str_case_e:nnF {#1} % { % \c_percent_str { \__gtldoc_aux:N } ^^A ignore percent % ^ { \__gtldoc_hat:N } ^^A check for "^^A" @@ -178,7 +178,7 @@ % \__gtldoc_varg_aux:w ##1 \q_recursion_tail % } % { -% \tl_put_right:Nx \l__gtldoc_arg_tl { ##1 \iow_char:N \^^M } +% \tl_put_right:Ne \l__gtldoc_arg_tl { ##1 \iow_char:N \^^M } % \__gtldoc_more:Nw \__gtldoc_varg_loop:w % } % } @@ -192,25 +192,25 @@ % \tl_if_blank:nF {#2} % { \msg_warning:nnn { gtldoc } { discarded } {#2} } % \tl_put_right:Nn \l__gtldoc_arg_tl {#1} -% \tl_remove_all:Nx \l__gtldoc_arg_tl { \iow_char:N \^^M \iow_char:N \% } ^^A from l3doc -% \tl_remove_all:Nx \l__gtldoc_arg_tl { \tl_to_str:n { ^ ^ A } } ^^A from l3doc -% \tl_remove_all:Nx \l__gtldoc_arg_tl { \iow_char:N \^^I } ^^A from l3doc -% \tl_remove_all:Nx \l__gtldoc_arg_tl { \iow_char:N \^^M } ^^A from l3doc +% \tl_remove_all:Ne \l__gtldoc_arg_tl { \iow_char:N \^^M \iow_char:N \% } ^^A from l3doc +% \tl_remove_all:Ne \l__gtldoc_arg_tl { \tl_to_str:n { ^ ^ A } } ^^A from l3doc +% \tl_remove_all:Ne \l__gtldoc_arg_tl { \iow_char:N \^^I } ^^A from l3doc +% \tl_remove_all:Ne \l__gtldoc_arg_tl { \iow_char:N \^^M } ^^A from l3doc % ^^A \@@_replace_at_at:N \l_@@_tmpa_tl ^^A from l3doc but not done here -% \exp_args:NNx \seq_set_from_clist:Nn \l__gtldoc_arg_seq +% \exp_args:NNe \seq_set_from_clist:Nn \l__gtldoc_arg_seq % { \tl_to_str:N \l__gtldoc_arg_tl } % \str_if_empty:NF \l__gtldoc_TF_str % { % \seq_clear:N \l__gtldoc_arg_TF_seq % \seq_map_inline:Nn \l__gtldoc_arg_seq % { -% \seq_put_right:Nx \l__gtldoc_arg_TF_seq { ##1 TF } -% \seq_put_right:Nx \l__gtldoc_arg_TF_seq { ##1 T } -% \seq_put_right:Nx \l__gtldoc_arg_TF_seq { ##1 F } -% \str_if_eq_x:nnT { \l__gtldoc_TF_str } { pTF } -% { \seq_put_right:Nx \l__gtldoc_arg_TF_seq { \__gtldoc_pred:w ##1 } } +% \seq_put_right:Ne \l__gtldoc_arg_TF_seq { ##1 TF } +% \seq_put_right:Ne \l__gtldoc_arg_TF_seq { ##1 T } +% \seq_put_right:Ne \l__gtldoc_arg_TF_seq { ##1 F } +% \str_if_eq:eeT { \l__gtldoc_TF_str } { pTF } +% { \seq_put_right:Ne \l__gtldoc_arg_TF_seq { \__gtldoc_pred:w ##1 } } % } -% \seq_set_map:NNn \l__gtldoc_arg_seq +% \seq_set_map_e:NNn \l__gtldoc_arg_seq % \l__gtldoc_arg_TF_seq { \tl_to_str:n {##1} } % } % \seq_concat:NNN \l__gtldoc_fn_seq \l__gtldoc_fn_seq \l__gtldoc_arg_seq @@ -293,10 +293,10 @@ % \tl_if_blank:nF {#2} % { \msg_warning:nnn { gtldoc } { discarded } {#2} } % \tl_put_right:Nn \l__gtldoc_arg_tl {#1} -% \exp_args:NNx \seq_set_from_clist:Nn \l__gtldoc_arg_seq +% \exp_args:NNe \seq_set_from_clist:Nn \l__gtldoc_arg_seq % { \tl_to_str:N \l__gtldoc_arg_tl } -% \seq_set_filter:NNx \l__gtldoc_arg_seq \l__gtldoc_arg_seq -% { \exp_not:N \tl_if_head_eq_charcode_p:nN {####1} \c_backslash_str } +% \exp_args:NNNe \seq_set_filter:NNn \l__gtldoc_arg_seq \l__gtldoc_arg_seq +% { \exp_not:N \tl_if_head_eq_charcode_p:nN {##1} \c_backslash_str } % \seq_concat:NNN \l__gtldoc_tested_fn_seq \l__gtldoc_tested_fn_seq \l__gtldoc_arg_seq % } % \group_end: @@ -344,7 +344,7 @@ % initially be empty. % \end{function} % -% \begin{function}{\gtl_const:Nn, \gtl_const:Nx} +% \begin{function}[updated = 2024-01-04]{\gtl_const:Nn, \gtl_const:Ne, \gtl_const:Nx} % \begin{syntax} % \cs{gtl_const:Nn} \meta{gtl~var} \Arg{token list} % \end{syntax} @@ -399,7 +399,7 @@ % % \subsection{Adding data to token list variables} % -% \begin{function}{\gtl_set:Nn, \gtl_set:Nx, \gtl_gset:Nn, \gtl_gset:Nx} +% \begin{function}[updated = 2024-01-04]{\gtl_set:Nn, \gtl_set:Ne, \gtl_set:Nx, \gtl_gset:Nn, \gtl_gset:Ne, \gtl_gset:Nx} % \begin{syntax} % \cs{gtl_set:Nn} \meta{gtl~var} \Arg{token list} % \end{syntax} @@ -785,13 +785,13 @@ \cs_set_protected:Npn \@@_tmp:w #1#2#3#4 { \group_end: - \tl_gset:cx { ver @ #1 . sty } { #2 ~ v#3 ~ #4 } - \cs_if_exist_use:NF \wlog { \iow_log:x } + \tl_gset:ce { ver @ #1 . sty } { #2 ~ v#3 ~ #4 } + \cs_if_exist_use:NF \wlog { \iow_log:e } { Package: ~ #1 ~ #2 ~ v#3 ~ #4 } } \@@_tmp:w } - {gtl} {2018/12/28} {0.5} {Manipulate unbalanced lists of tokens} + {gtl} {2024/01/04} {0.6} {Manipulate unbalanced lists of tokens} % \end{macrocode} % % \subsection{Helpers} @@ -881,6 +881,7 @@ % \begin{macro} % { % \gtl_set:Nn, \gtl_gset:Nn, \gtl_const:Nn, +% \gtl_set:Ne, \gtl_gset:Ne, \gtl_const:Ne, % \gtl_set:Nx, \gtl_gset:Nx, \gtl_const:Nx % } % Storing a balanced token list into an extended token list variable @@ -890,9 +891,9 @@ \cs_new_protected:Npn \gtl_set:Nn { \@@_set:NNn \tl_set:Nn } \cs_new_protected:Npn \gtl_gset:Nn { \@@_set:NNn \tl_gset:Nn } \cs_new_protected:Npn \gtl_const:Nn { \@@_set:NNn \tl_const:Nn } -\cs_new_protected:Npn \gtl_set:Nx { \@@_set:NNn \tl_set:Nx } -\cs_new_protected:Npn \gtl_gset:Nx { \@@_set:NNn \tl_gset:Nx } -\cs_new_protected:Npn \gtl_const:Nx { \@@_set:NNn \tl_const:Nx } +\cs_generate_variant:Nn \gtl_set:Nn { Ne , Nx } +\cs_generate_variant:Nn \gtl_gset:Nn { Ne , Nx } +\cs_generate_variant:Nn \gtl_const:Nn { Ne , Nx } \cs_new_protected:Npn \@@_set:NNn #1#2#3 { #1 #2 { \s_@@ { } {#3} { } } } % \end{macrocode} @@ -973,9 +974,9 @@ % of \cs{@@_put_left:wn}. % \begin{macrocode} \cs_new_protected:Npn \gtl_put_left:Nn #1#2 - { \tl_set:Nx #1 { \exp_after:wN \@@_put_left:wn #1 {#2} } } + { \tl_set:Ne #1 { \exp_after:wN \@@_put_left:wn #1 {#2} } } \cs_new_protected:Npn \gtl_gput_left:Nn #1#2 - { \tl_gset:Nx #1 { \exp_after:wN \@@_put_left:wn #1 {#2} } } + { \tl_gset:Ne #1 { \exp_after:wN \@@_put_left:wn #1 {#2} } } \cs_new:Npn \@@_put_left:wn \s_@@ #1#2#3 #4 { \tl_if_empty:nTF {#1} @@ -996,9 +997,9 @@ % Symmetric of \cs{gtl_put_left:Nn}. % \begin{macrocode} \cs_new_protected:Npn \gtl_put_right:Nn #1#2 - { \tl_set:Nx #1 { \exp_after:wN \@@_put_right:wn #1 {#2} } } + { \tl_set:Ne #1 { \exp_after:wN \@@_put_right:wn #1 {#2} } } \cs_new_protected:Npn \gtl_gput_right:Nn #1#2 - { \tl_gset:Nx #1 { \exp_after:wN \@@_put_right:wn #1 {#2} } } + { \tl_gset:Ne #1 { \exp_after:wN \@@_put_right:wn #1 {#2} } } \cs_new:Npn \@@_put_right:wn \s_@@ #1#2#3 #4 { \tl_if_empty:nTF {#3} @@ -1039,9 +1040,9 @@ % \meta{b} parts. % \begin{macrocode} \cs_new_protected:Npn \gtl_concat:NNN #1#2#3 - { \tl_set:Nx #1 { \exp_last_two_unbraced:Noo \@@_concat:ww #2 #3 } } + { \tl_set:Ne #1 { \exp_last_two_unbraced:Noo \@@_concat:ww #2 #3 } } \cs_new_protected:Npn \gtl_gconcat:NNN #1#2#3 - { \tl_gset:Nx #1 { \exp_last_two_unbraced:Noo \@@_concat:ww #2 #3 } } + { \tl_gset:Ne #1 { \exp_last_two_unbraced:Noo \@@_concat:ww #2 #3 } } \cs_new:Npn \@@_concat:ww \s_@@ #1#2#3 \s_@@ #4#5#6 { \tl_if_blank:nTF {#3} @@ -1124,13 +1125,13 @@ \cs_new:Npn \gtl_to_str:n #1 { \@@_to_str:w #1 } \cs_new:Npn \@@_to_str:w \s_@@ #1#2#3 { \@@_to_str_loopi:nnw { } #1 \q_nil \q_mark {#2} {#3} } -\cs_new:Npx \@@_to_str_loopi:nnw #1#2 +\cs_new:Npe \@@_to_str_loopi:nnw #1#2 { \exp_not:N \quark_if_nil:nTF {#2} { \exp_not:N \@@_to_str_testi:nnw {#1} {#2} } { \exp_not:N \@@_to_str_loopi:nnw { #1 #2 \iow_char:N \} } } } -\cs_new:Npx \@@_to_str_testi:nnw #1#2#3 \q_mark +\cs_new:Npe \@@_to_str_testi:nnw #1#2#3 \q_mark { \exp_not:N \tl_if_empty:nTF {#3} { \exp_not:N \@@_to_str_endi:nnn {#1} } @@ -1141,13 +1142,13 @@ } \cs_new:Npn \@@_to_str_endi:nnn #1#2#3 { \@@_to_str_loopii:nnw #3 { #1 #2 } \q_nil \q_stop } -\cs_new:Npx \@@_to_str_loopii:nnw #1#2 +\cs_new:Npe \@@_to_str_loopii:nnw #1#2 { \exp_not:N \quark_if_nil:nTF {#2} { \exp_not:N \@@_to_str_testii:nnw {#1} {#2} } { \exp_not:N \@@_to_str_loopii:nnw { #2 \iow_char:N \{ #1 } } } -\cs_new:Npx \@@_to_str_testii:nnw #1#2#3 \q_stop +\cs_new:Npe \@@_to_str_testii:nnw #1#2#3 \q_stop { \exp_not:N \tl_if_empty:nTF {#3} { \exp_not:N \tl_to_str:n {#1} } @@ -1174,7 +1175,7 @@ \cs_new_protected:Npn \@@_show:NNN #1#2#3 { \gtl_if_exist:NTF #3 - { \exp_args:Nx #1 { \token_to_str:N #3 = \gtl_to_str:N #3 } } + { \exp_args:Ne #1 { \token_to_str:N #3 = \gtl_to_str:N #3 } } { #2 #3 } } % \end{macrocode} @@ -1515,12 +1516,12 @@ \cs_new_protected:Npn \gtl_pop_left:N #1 { \gtl_if_empty:NF #1 - { \tl_set:Nx #1 { \exp_after:wN \@@_pop_left:w #1 } } + { \tl_set:Ne #1 { \exp_after:wN \@@_pop_left:w #1 } } } \cs_new_protected:Npn \gtl_gpop_left:N #1 { \gtl_if_empty:NF #1 - { \tl_gset:Nx #1 { \exp_after:wN \@@_pop_left:w #1 } } + { \tl_gset:Ne #1 { \exp_after:wN \@@_pop_left:w #1 } } } \cs_new:Npn \@@_pop_left:w \s_@@ #1#2#3 { @@ -1620,9 +1621,9 @@ % chunk. % \begin{macrocode} \cs_new_protected:Npn \gtl_pop_left_tl:N #1 - { \tl_set:Nx #1 { \exp_after:wN \@@_pop_left_tl:w #1 } } + { \tl_set:Ne #1 { \exp_after:wN \@@_pop_left_tl:w #1 } } \cs_new_protected:Npn \gtl_gpop_left_tl:N #1 - { \tl_gset:Nx #1 { \exp_after:wN \@@_pop_left_tl:w #1 } } + { \tl_gset:Ne #1 { \exp_after:wN \@@_pop_left_tl:w #1 } } \cs_new:Npn \@@_pop_left_tl:w \s_@@ #1#2#3 { \s_@@ @@ -1669,9 +1670,9 @@ % not blank, pop its first item. % \begin{macrocode} \prg_new_protected_conditional:Npnn \gtl_pop_left_item:NN #1#2 { TF , T , F } - { \exp_after:wN \@@_pop_left_item:wNNN #1#2 \tl_set:Nx #1 } + { \exp_after:wN \@@_pop_left_item:wNNN #1#2 \tl_set:Ne #1 } \prg_new_protected_conditional:Npnn \gtl_gpop_left_item:NN #1#2 { TF , T , F } - { \exp_after:wN \@@_pop_left_item:wNNN #1#2 \tl_gset:Nx #1 } + { \exp_after:wN \@@_pop_left_item:wNNN #1#2 \tl_gset:Ne #1 } \cs_new_protected:Npn \@@_pop_left_item:wNNN \s_@@ #1#2#3 #4#5#6 { @@ -1679,7 +1680,7 @@ { \tl_if_blank:nTF {#2} { \prg_return_false: } { - \tl_set:Nx #4 { \tl_head:n {#2} } + \tl_set:Ne #4 { \tl_head:n {#2} } #5 #6 { \s_@@ { } { \tl_tail:n {#2} } @@ -1698,7 +1699,7 @@ { \tl_if_blank:nTF {#1} { \prg_return_false: } { - \tl_set:Nx #5 { \tl_head:n {#1} } + \tl_set:Ne #5 { \tl_head:n {#1} } #6 #7 { \s_@@ @@ -1760,9 +1761,9 @@ % } % \begin{macrocode} \cs_new_protected:Npn \gtl_pop_left_text:N #1 - { \tl_set:Nx #1 { \exp_after:wN \@@_pop_left_text:w #1 } } + { \tl_set:Ne #1 { \exp_after:wN \@@_pop_left_text:w #1 } } \cs_new_protected:Npn \gtl_gpop_left_text:N #1 - { \tl_gset:Nx #1 { \exp_after:wN \@@_pop_left_text:w #1 } } + { \tl_gset:Ne #1 { \exp_after:wN \@@_pop_left_text:w #1 } } \cs_new:Npn \@@_pop_left_text:w \s_@@ #1#2#3 { \s_@@ diff --git a/macros/generic/gtl/gtl.pdf b/macros/generic/gtl/gtl.pdf index ad58b0763c..9a59713c9d 100644 Binary files a/macros/generic/gtl/gtl.pdf and b/macros/generic/gtl/gtl.pdf differ diff --git a/macros/latex/contrib/babel-contrib/italian/README.txt b/macros/latex/contrib/babel-contrib/italian/README.txt index 9537d10159..4f00b6e963 100644 --- a/macros/latex/contrib/babel-contrib/italian/README.txt +++ b/macros/latex/contrib/babel-contrib/italian/README.txt @@ -1,17 +1,37 @@ -The italian.dtx file has version number 1.4.07 dated 2022-03-27. +The italian.dtx file has version number 1.5.00 dated 2024-01-03. It is and update of a series fo files starting with the first one in 1990 -Copyright (C) 1990-2022 Claudio Beccari +Copyright (C) 1990-2024 Claudio Beccari Maintainer Claudio Beccari -Contact: claudio dot beccari at gmail dot com +Contact: claudio.beccari at gmail.com -This bundle contains the source file italian.dtx and this README.txt file. By running pdfLaTeX on this italian.dtx file you obtain both the documentation italian.pdf and the language description file italian.ldf. +This bundle contains the source file italian.dtx and this +README.txt file. By running pdfLaTeX on this italian.dtx file +you obtain both the documentation italian.pdf and the language +description file italian.ldf. Description -This file contain the necessary and supplementary data for typesetting documents in Italian with babel as the language manager. -It defines the infix words, the date in various formats. Optionally lets the user activate a number of shorthands to perform routine frequent tasks by means of the active character " that can be freely activated and deactivated. -It defines an intelligent mathematical comma that recognises if it has to perform as a punctuation mark or as a decimal separator. Another user command activates or deactivates some commands to supply a minimum of the performance that is fully provided by the siunitx package. The file allows using babel also when a document is typeset with XeLaTeX or LuaLaTeX, even if, according to the author, polyglossia is preferred when typesetting documents in Italian, in spite of the fact that gloss-italian.ldf for polyglossia provides less facilities than the ones available with babel. +This file contain the necessary and supplementary data for +typesetting documents in Italian with babel as the language +manager. +It defines the infix words, the date in various formats. +Optionally lets the user activate a number of shorthands to +perform routine frequent tasks by means of the active +character " that can be freely activated and deactivated. +It defines an intelligent mathematical comma that recognises +if it has to perform as a punctuation mark or as a decimal +separator. +It defines an 'english" environment that deactivates the +intelligent comma functionality, but it is the user +responsibility to use the decimal point in any fractional +numerical string. +Another user command activates or deactivates some commands +to supply a minimum of the performance that is fully provided +by the siunitx and similar packages. The file allows using +babel also when a document is typeset with XeLaTeX or LuaLaTeX. -The documentation that is provided by running LaTeX on the italian.dtx file provides full documentation of every facility provided by the italian.ldf file. +The documentation that is provided by running LaTeX on the +italian.dtx file provides full documentation of every facility +provided by the italian.ldf file. The documentation contains the licence clauses. diff --git a/macros/latex/contrib/babel-contrib/italian/italian.dtx b/macros/latex/contrib/babel-contrib/italian/italian.dtx index 45ab2375c8..e21225605b 100644 --- a/macros/latex/contrib/babel-contrib/italian/italian.dtx +++ b/macros/latex/contrib/babel-contrib/italian/italian.dtx @@ -10,14 +10,14 @@ \preamble ------------------------------------------ The Italian support for babel: italian.ldf. -Copyright (C) 1990-2022 Claudio Beccari +Copyright (C) 1990-2024 Claudio Beccari All rights reserved License information appended. \endpreamble \postamble -Copyright (C) 1990-2022 Claudio Beccari +Copyright (C) 1990-2024 Claudio Beccari It may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c @@ -51,8 +51,8 @@ This file is a self unpacking one. % % \fi % \iffalse -% Tell the \LaTeX\ system who we are and write an entry on the -% transcript. +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. %\fi %\iffalse %<*driver> @@ -60,25 +60,25 @@ This file is a self unpacking one. % %\ProvidesLanguage{italian} %<*code> - [2022/03/27 v.1.4.07 Italian support for the babel system] + [2024/01/03 v.1.5.00 Italian support for the babel system] % %% %% Please report errors to: claudio dot beccari at gmail dot com %% % -% This file is part of the babel system, it provides the source -% code for the Italian language definition file. +% This file is part of the babel system, it provides the +% source code for the Italian language definition file. % The original version of this file was written by Maurizio % Codogno, (mau@beatles.cselt.stet.it). -% The package was completely rewritten by Claudio Beccari, who added -% several features. +% The package was completely rewritten by Claudio Beccari, +% who added several features. %<*driver> \documentclass{ltxdoc} \GetFileInfo{italian.dtx} \title{The Italian support for babel} \date{\fileversion\space--- \filedate} \author{\makebox[\textwidth]{Claudio Beccari --- -email: \texttt{claudio dot beccari at gmail dot com}}} +email: \texttt{claudio.beccari at gmail.com}}} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{booktabs} @@ -99,7 +99,7 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % %\fi % -% \CheckSum{798} +% \CheckSum{761} % % \changes{italian-0.99}{1990/07/11}{First version, from english.doc} % \changes{italian-1.0}{1991/04/23}{Modified for babel 3.0} @@ -178,211 +178,278 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % \changes{italian-1.4.06}{2022-03-23}{Eliminated several macros in the % intelligent comma definition that made the whole group difficult to % understand and maintain.} -% \changes{italian-1.4.07}{2022-03-27}{Added the necessary code to have -% the intelligent comma work correctly with the |{,}| group} +% \changes{italian-1.4.07}{2022-03-27}{Added the necessary code +% to have the intelligent comma work correctly with the |{,}| +% group} +% \changes{italian 1.4.08}{2024-01-03}{Modified intelligent +% comma} % % \section{The Italian language} -% \textbf{Important notice}: This language description file relies on -% functionalities provided by a modern TeX system distribution with -% pdfLaTeX working in extended mode (eTeX commands available); it -% should perform correctly also with XeLaTeX and LuaLaTeX; tests have -% been made also with the latter programs, but it was really tested in -% depth with |babel| and pdfLaTeX. +% \textbf{\color{red}Important notice}: This language +% description file relies on functionalities provided by a +% modern TeX system distribution with pdfLaTeX working in +% extended mode (eTeX commands available); it should perform +% correctly also with XeLaTeX and LuaLaTeX; tests have +% been made also with the latter programs, but it was really +% tested in depth with |babel| and pdfLaTeX. % % \bigskip % -% The file \file{\filename}\footnote{The file described in this -% section has version number \fileversion\ and was last revised on -% \filedate. The original author is Maurizio Codogno. -% It was initially revised -% by Johannes Braams and then completely rewritten by Claudio Beccari} -% defines all the required and some optional language-specific -% macros for the Italian language. +% The file \file{\filename}\footnote{The file described in +% this section has version number \fileversion\ and was last +% revised on \filedate. The original author is Maurizio +% Codogno. It was initially revised by Johannes Braams and +% then completely rewritten by Claudio Beccari} +% defines all the required and some optional language- +% specific macros for the Italian language. % % \begin{table}[!htb]\centering % \begin{tabular}{cp{90mm}} % \toprule -% |"| & inserts a compound word mark where hyphenation is legal; -% it allows etymological hyphenation which is recommended -% for technical terms, chemical names and the like; it -% does not work if the next character is represented with -% a control sequence or is an accented character.\\ +% |"| & inserts a compound word mark where hyphenation is +% legal; it allows etymological hyphenation which is +% recommended for technical terms, chemical names and +% the like; it does not work if the next character is +% represented with a control sequence or is an accented +% character.\\ % \texttt{\string"\string|} -% & the same as the above without the limitation on -% characters represented with control sequences or accented -% ones.\\ -% |""| & inserts open quotes ``.\\ %^^A'' emacs matching -% |"<| & inserts open guillemets without trailing space.\\ -% |">| & inserts closed guillemets without leading space.\\ -% |"/| & allows hyphenation of both words connected with slash.\\ -% |"-| & allows hyphenation of both words connected with a short dash -% (\emph{trattino copulativo}, in Italian)\\ +% & the same as the above without the limitation on +% characters represented with control sequences or +% accented ones.\\ +% |""|& inserts open quotes ``.\\ +% |"<|& inserts open guillemets without trailing space.\\ +% |">|& inserts closed guillemets without leading space.\\ +% |"/|& allows hyphenation of both words connected with +% slash.\\ +% |"-|& allows hyphenation of both words connected with a +% short dash (\emph{trattino copulativo}, in Italian)\\ % \bottomrule % \end{tabular} -% \caption{shorthands for the Italian language. These shorthands are -% available only if command \texttt{\string\setactivedoublequote} is -% given after loading \babel\ and before -% \texttt{\string\begin\{document\}}.}\label{t:itshrtct} +% \caption{shorthands for the Italian language. These +% shorthands are available only if command +% \texttt{\string\setactivedoublequote} is given after +% loading \babel\ and before +% \texttt{\string\begin\{document\}}.}\label{t:itshrtct} % \end{table} % -% The features of this language definition file are the following: +% The features of this language definition file are the +% following: % \begin{enumerate} -% \item The Italian hyphenation is invoked, provided that the Italian -% hyphenation pattern files were loaded when the specific format file -% was built. This is normally done with the initial installation of -% \TeX\-Live, but other distributions may not do so. -% \item The language dependent infix words to be inserted by such -% commands as |\chapter|, |\caption|, |\tableofcontents|, -% etc. are redefined in accordance with the Italian -% typographical practice. -% \item Since Italian can be easily hyphenated and Italian practice -% allows to break a word before the last two letters, hyphenation -% parameters have been set accordingly, but a very high demerit -% value has been set in order to avoid word breaks in the -% penultimate line of a paragraph. Specifically the |\clubpenalty|, -% and the |\widowpenalty| are set to rather high values and -% |\finalhyphendemerits| is set to such a high value that -% hyphenation is strongly discouraged between the last two lines -% of a paragraph. -% \item Some language specific shorthands have been defined so as to -% allow etymological hyphenation, specifically |"| inserts a -% break point at any word boundary that the typesetter chooses, -% provided it is not followed by an accented letter (very unlikely -% in Italian, where compulsory accents fall only on the last and -% ending vowel of a word, but it may take place with compound words -% that include foreign roots), and \verb="|= when the desired break -% point falls before an accented letter. As you can read in -% table~\ref{t:itshrtct}, these shorthands are available only if -% they get activated with |\setactivedoublequote| after -% loading \babel\ but before the |\begin{docuemnt}| statement. This -% is done in order to preserve the user from package conflicts: -% if s/he wants to use these facilities s/he must remember that -% conflicts may arise unless active characters are deactivated; -% this can be done with the \babel\ command |\shorthadsoff{"}| -% (and reactivated with |\shorthandson{"}|) when its wise to do -% so; conflicts have been reported with package \file{xypic} and -% with \texttt{TikZ}, but the latter has its own library to -% deactivate all active characters, not just the double quotes, -% the only Italian language possibly activated character. -% \item Some Italian compound words have a connecting short dash (a -% hyphen sign) between them without any space between the component -% words and the short dash; in this situation standard \LaTeX\ allows -% a line break only just after the short dash; this may lead to -% paragraphs with protruding lines or with ugly looking wide inter -% word spaces. If a break point is desired in the second word, one -% may use a |"| sign just after the short dash; but if a line break -% is required in the first word, them the |"-| shorthand comes in -% handy; pay attention though, that if you use an en-dash or an -% em-dash (both should not be used in Italian as compound words -% connectors, but\dots) then the |"-| shorthand might impeach the -% |--| or |---| ligatures, thus producing an unacceptable appearance. -% \item The shorthand |""| introduces the raised (English) opening -% double quotes; this shorthand proves its usefulness when one -% reminds that the Italian keyboard misses the back tick key, and -% the back tick on a Windows based platform may be obtained only by -% pressing the \texttt{Alt} key while keying the numerical code -% 0096 in the numeric keypad; very, very annoying! -% \item The shorthands |"<| and |">| insert the guillemets sometimes -% used also in Italian typography; with the T1 font encoding -% the ligatures |<<| and |>>| should insert such signs directly, -% but not all the virtual fonts that claim to follow the T1 font -% encoding actually contain the guillemets; with the OT1 encoding -% the guillemets are not available and must be faked in some -% way. By using the |"<| and |">| shorthands (even with the T1 -% encoding) the necessary tests are performed and in case the -% guillemets are faked by means of the special LaTeX math symbols. -% At the same time if OpenType fonts are being used with XeLaTeX -% or LuaLaTeX, there are no problems with guillemets. -% \item Three new specific commands |\unit|, |\ped|, and |\ap| are -% introduced so as to enable the correct composition of technical -% mathematics according to the ISO~31/XI recommendations. -% The definition of |\unit| takes place only at ``begin document'' -% so that it is possible to verify if some other similar -% functionalities have already been defined by other packages, such -% as |units.sty| or |siunitx.sty|. Command |\unit| does not -% conflict with package |SIunitx| and it may be redefined by means -% of its internals. -% Nevertheless command |\unit| is deactivated by -% default; the user can activate it by entering the command -% |\setISOcompliance| after loading the \babel\ package and before the -% |\begin{document}| statement. The above checks will enter into -% action even if this ISO compliance is set, in order to avoid -% conflicts with the above named packages. The |\ap| and |\ped| -% commands remain available because up to now no specific conflicts -% have been reported. -% \item Since in all languages different from English the decimal +% \item +% The Italian hyphenation is invoked, provided that the +% Italian hyphenation pattern files were loaded when the +% specific format file was built. This is normally done +% with the initial installation of \TeX\-Live, but other +% distributions may not do so. +% \item +% The language dependent infix words to be inserted by such +% commands as |\chapter|, |\caption|, |\tableofcontents|, +% etc. are redefined in accordance with the Italian +% typographical practice. +% \item +% Since Italian can be easily hyphenated and Italian +% practice allows to break a word before the last two +% letters, hyphenation parameters have been set accordingly, +% but a very high demerit value has been set in order to +% avoid word breaks in the penultimate line of a paragraph. +% Specifically the |\clubpenalty|, and the |\widowpenalty| +% are set to rather high values and |\finalhyphendemerits| +% is set to such a high value that hyphenation is strongly +% discouraged between the last two lines of a paragraph. +% \item +% Some language specific shorthands have been defined so as +% to allow etymological hyphenation, specifically |"| +% inserts a break point at any word boundary that the +% user chooses, provided it is not followed by an +% accented letter (very unlikely in Italian, where +% compulsory accents fall only on the last and ending vowel +% of a word, but it may take place with compound words that +% include foreign roots), and \verb="|= when the desired +% break point falls before an accented letter. As you can +% read in table~\ref{t:itshrtct}, these shorthands are +% available only if they get activated with +% |\setactivedoublequote| after loading \babel\ but before +% the |\begin{docuemnt}| statement. This is done in order to +% preserve the user from package conflicts: if s/he wants to +% use these facilities s/he must remember that conflicts may +% arise unless active characters are deactivated; this can +% be done with the \babel\ command |\shorthadsoff{"}| (and +% reactivated with |\shorthandson{"}|) when its wise to do +% so; conflicts have been reported with package \file{xypic} +% and with \texttt{TikZ}, but the latter has its own library +% to deactivate all active characters, not just the double +% quotes, the only Italian language possibly activated +% character. +% \item +% Some Italian compound words have a connecting short dash (a +% hyphen sign) between them without any space between the +% component words and the short dash; in this situation +% standard \LaTeX\ allows a line break only just after the +% short dash; this may lead to paragraphs with protruding +% lines or with ugly looking wide inter word spaces. If a +% break point is desired in the second word, one may use a +% |"| sign just after the short dash; but if a line break +% is required in the first word, then the |"-| shorthand +% comes in\ handy; pay attention though, that if you use an +% en-dash or an em-dash (both should not be used in Italian +% as compound words connectors, but\dots) then the |"-| +% shorthand might impeach the |--| or |---| ligatures, thus +% producing an unacceptable appearance. +% \item +% The shorthand |""| introduces the raised (English) opening +% double quotes; this shorthand proves its usefulness when +% one reminds that the Italian keyboard misses the back tick +% key, and the back tick on a Windows based platform may be +% obtained only by pressing the \texttt{Alt} key while keying +% the numerical code 0096 in the numeric keypad; very, very +% annoying! +% \item +% The shorthands |"<| and |">| insert the guillemets +% sometimes used also in Italian typography; with the T1 font +% encoding the ligatures |<<| and |>>| should insert such +% signs directly, but not all the virtual fonts that claim to +% follow the T1 font encoding actually contain the +% guillemets; with the OT1 encoding the guillemets are not +% available and must be faked in some way. By using the |"<| +% and |">| shorthands (even with the T1 encoding) the +% necessary tests are performed and in case the guillemets +% are faked by means of the special LaTeX math symbols. +% At the same time if OpenType fonts are being used with +% XeLaTeX or LuaLaTeX, there are no problems with guillemets. +% +% \textcolor{red}{Remember, though, that at least since 2022 +% the default input encoding is Unicode; therefore any +% platform has means to insert non T! encoded characters, and +% the necessary glyphs are taken from suitable other font +% encodings, for example the Text Companion fonts with +% encoding TS1, without the need to load the corresponding +% packages; on a Mac platform, for example, users can input +% guillemets by striking \texttt{option+\char92} and +% \texttt{option+\char124} respectively for « and~». +% Notice that this specific file is typeset with |pdflatex| +% and the previous guillemets have been entered directly in +% the source file by means of \texttt{«} and \texttt{»} while +% using the Latin Modern fonts.} +% \item +% Three specific commands |\unit|, |\ped|, and |\ap| are +% introduced so as to enable the correct composition of +% technical mathematics according to the ISO~80000 +% recommendations. +% +% The definition of |\unit| takes place only at “begin +% document” so that it is possible to verify if some other +% similar functionalities have already been defined by other +% packages, such as |units.sty| or |siunitx.sty|. Command +% |\unit| does not conflict with package |SIunitx| and it may +% be redefined by means of its internals. Nevertheless +% command |\unit| is deactivated by default; users can +% activate it by entering the command |\setISOcompliance| +% after loading the \babel\ package and before the +% |\begin{document}| statement. The above checks will enter +% into action even if this ISO compliance is set, in order to +% avoid conflicts with the above named packages. The |\ap| +% and |\ped| commands remain available because up to now no +% specific conflicts have been reported. +% \item +% Since in all languages different from English the decimal % separator according to the ISO regulations \emph{must} be a -% comma\footnote{Actually the Bureau International des Pois et -% M\'esures allows also the point as a decimal separator without -% mentioning any language, but recommends to follow the national -% typographical traditions.}; since no language description file nor -% the \babel\ package itself provides for this functionality, a not so -% simple intelligent comma definition is provided such that at least -% in mathematics it behaves correctly. -% There are other packages that provide a similar functionality, for -% example |icomma| and |ncccomma|; |icomma|, apparently is not in -% conflict with |dcolumn|, but requires a space after the comma -% all the times it plays the r\^ole of a punctuation mark; -% |ncccomma| checks if the next token is a digit, but it repeats ten -% tests every time it meets a comma, irrespective from what it is +% comma\footnote{Actually the Bureau International des Pois +% et Mésures allows also the point as a decimal mark +% without mentioning any language, but recommends to follow +% the national typographical traditions.}; since no language +% description file nor the \babel\ package itself provides +% for this functionality, a not so simple intelligent comma +% definition is provided such that at least in mathematics it +% behaves correctly. There are other packages that provide a +% similar functionality, for example |icomma|, |ncccomma| +% and |decimalcomma|; |icomma|, apparently is not in +% conflict with |dcolumn|, but requires a space after the +% comma all the times it plays the r\^ole of a punctuation +% mark; |ncccomma| and |decimal comma| check if the next +% token is a digit, but they repeat up to ten tests every +% time they meet a comma, irrespective from what it is % followed by. I believe that my solution is better than that -% provided by both those packages; but I assume that -% if the user loads one of those packages, it prefers to use their -% functionality; in case one of those packages is loaded, this module -% excludes its own intelligent comma functionality. -% By default this functionality is turned \emph{off}, therefore the -% user should turn it on by means of the |\IntelligentComma| command; -% it can turn it off by means of |\NoIntelligentComma|. Please, read -% subsection~\ref{ssec:comma} to see the various situations where a -% mathematical comma may be used and how to overcome the few cases -% when the macros of this file don't behave as expected. The section -% describes also some limitations when some conflicting packages are -% being loaded. Apparently there are conflicts with package -% |unicode-math| because active characters are defined with different -% codes. Therefore this functionality is not available when -% typesetting with XeLaTeX or LuaLaTeX. -% \item In Italian legal documents it is common to tag list-items -% with the old fashioned 21-letter Italian alphabet, that differs from -% the Latin one by the omission of the letters `j', `k', `w',`x', and -% `y'. This applies for both upper and lower case tags. -% This feature is obtained by using the commands |\XXIletters| and -% |\XXVIletters| that allow to switch back and forth -% between 21- and 26-letter tagging. +% provided by those packages; but I assume that if users load +% one of those packages, they prefer to use their +% functionalities; in case one of those packages is loaded, +% this module excludes its own intelligent comma +% functionality. +% +% By default this functionality is turned \emph{off}, +% therefore users should turn it on by means of the +% |\IntelligentComma| command; they can turn it off by means +% of |\NoIntelligentComma|. Please, read +% subsection~\ref{ssec:comma} to see the various situations +% where a mathematical comma may be used and how to overcome +% the few cases when the macros of this file don't behave as +% expected. The section describes also some limitations when +% some conflicting packages are being loaded. Apparently +% there are conflicts with package |unicode-math| because +% active characters are defined with different codes. +% Therefore this functionality is not available when +% typesetting with XeLaTeX or LuaLaTeX unless |decimalcomma| +% is used, because it is conformant with |unicode-math| +% settings. +% +% \item +% Sometimes it is necessary to quote English texts; if such +% texts contain some math, the |\IntelligentComma| must be +% deactivated; an \texttt{english} environment (not available +% in |babel| but available in |polyglossia|, although without +% the functionalities connected with the English math +% typesetting) is defined so that, besides locally setting +% the English language, issues a |\NoIntelligentComma| +% command; nevertheless users are still responsible to use +% the decimal point while typesetting English math. +% \item +% In Italian legal documents it is common to tag list-items +% with the old fashioned 21-letter Italian alphabet, that +% differs from the Latin one by the omission of the letters +% `j', `k', `w',`x', and `y'. This applies for both upper and +% lower case tags. This feature is obtained by using the +% commands |\XXIletters| and |\XXVIletters| that allow to +% switch back and forth between 21- and 26-letter tagging. % \end{enumerate} % % For this language a few shorthands have been defined, -% table~\ref{t:itshrtct}, some of which are introduced to overcome -% certain limitations of the Italian keyboard; in -% section~\ref{s:itkbd} there are other comments and hints in order -% to overcome some other keyboard limitations. +% table~\ref{t:itshrtct}, some of which are introduced to +% overcome certain limitations of the Italian keyboard; in +% section~\ref{s:itkbd} there are other comments and hints in +% order to overcome some other keyboard limitations. % % \subsection*{Acknowlegements} -% It is my pleasure to acknowledge the contributions of Giovanni Dore, -% Davide Liessi, Grazia Messineo, Giuseppe Toscano, who spotted some bugs -% or conflicts with other packages, mainly |amsmath| and |icomma|, and -% with digits hidden inside macros or control sequences representing -% implicit characters. Testing by real users and their feedback is -% essential with open software such as the uncountable contributions -% to the \TeX\ system. Thank you very much. +% It is my pleasure to acknowledge the contributions of Giovanni +% Dore, Davide Liessi, Grazia Messineo, Giuseppe Toscano, who +% spotted some bugs or conflicts with other packages, mainly +% |amsmath| and |icomma|, and with digits hidden inside macros +% or control sequences representing implicit characters. +% Testing by real users with their feedback is essential with +% open software such as the uncountable contributions to the +% \TeX\ system. Thank you very much. % % \StopEventually{% -% \begin{thebibliography}{1} -% \bibitem{CBec} Beccari C., ``Computer Aided Hyphenation for +% \begin{thebibliography}{1} +% \bibitem{CBec} Beccari C., ``Computer Aided Hyphenation for % Italian and Modern Latin'', \textsf{TUGboat} vol.~13, n.~1, % pp.~23-33 (1992). -% \bibitem{Becc2} Beccari C., ``Typesetting mathematics for science -% and technology according to ISO\,31/XI'', \textsf{TUGboat} -% vol.~18, n.~1, pp.~39-48 (1997). -% \end{thebibliography}} +% \bibitem{Becc2} Beccari C., “Typesetting mathematics for +% science and technology according to ISO\,31/XI”, +% \textsf{TUGboat} vol.~18, n.~1, pp.~39-48 (1997). +% \bibitem{Becc3} Beccari C., “Regole e consigli per comporre +% la matematica della fisica e delle scienze sperimentali +% secondo le norme ISO”, (2023); PDF document in Italian to +% be downloaded from the Documentation section of the Italian +% TUG site \url{www.guitex.org}. +% \end{thebibliography}} % %\section{The commented code} -% The macro |\LdfInit| takes care of preventing that this file is -% loaded more than once, checking the category code of the -% \texttt{@} sign, etc. -% \changes{italian-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform -% initial checks} -% \changes{italian-1.2j}{1996/12/29}{Added braces around second arg of -% \cs{LdfInit}} +% The macro |\LdfInit| takes care of preventing that this +% file is loaded more than once, checking the category code +% of the \texttt{@} sign, etc. +% \changes{italian-1.2i}{1996/11/03}{Now use \cs{LdfInit} to +% perform initial checks} +% \changes{italian-1.2j}{1996/12/29}{Added braces around second +% arg of \cs{LdfInit}} %\iffalse %<*code> %\fi @@ -390,14 +457,16 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \LdfInit{italian}{captionsitalian}% % \end{macrocode} % -% When this file is read as an option, i.e. by the |\usepackage| -% command, \texttt{italian} will be an `unknown' language in which -% case we have to make it known. So we check for the existence of -% |\l@italian| to see whether we have to do something here. +% When this file is read as an option, i.e. by the +% |\usepackage| command, \texttt{italian} will be an `unknown' +% language in which case we have to make it known. +% So we check for the existence of |\l@italian| to see whether +% we have to do something here. % % \changes{italian-1.0}{1991/04/23}{Now use \cs{adddialect} if % language undefined} -% \changes{italian-1.0h}{1991/10/08}{Removed use of \cs{@ifundefined}} +% \changes{italian-1.0h}{1991/10/08}{Removed use of +% \cs{@ifundefined}} % \changes{italian-1.1}{1992/02/16}{Added a warning when no % hyphenation patterns were loaded.} % \changes{italian-1.2e}{1994/06/26}{Now use \cs{@nopatterns} to @@ -408,25 +477,31 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \adddialect\l@italian0\fi % \end{macrocode} % -% The next step consists of defining commands to switch to (and -% from) the Italian language. +% The next step consists of defining commands to switch to +% (and from) the Italian language. % % \begin{macro}{\captionsitalian} -% The macro |\captionsitalian| defines all strings used -% in the four standard document classes provided with \LaTeX. -% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} definitions} +% The |\captionsitalian| macro defines all strings used +% in the various standard document classes provided with +% \LaTeX. +% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} +% definitions} % \changes{italian-1.0c}{1991/06/06}{\cs{pagename} should be % \cs{headpagename}} -% \changes{italian-1.0d}{1991/07/01}{`contiene' substitued by `Allegati' -% as suggested by Marco Bozzo (\texttt{BOZZO@CERNVM}).} -% \changes{italian-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% \changes{italian-1.0d}{1991/07/01}{`contiene' substituted +% by `Allegati' as suggested by Marco Bozzo +% (\texttt{BOZZO@CERNVM}).} +% \changes{italian-1.1}{1992/02/16}{Added \cs{seename}, +% \cs{alsoname} % and \cs{prefacename}} % \changes{italian-1.1}{1993/07/15}{\cs{headpagename} should be % \cs{pagename}} -% \changes{italian-1.2b}{1994/05/19}{Changed some of the infix words} +% \changes{italian-1.2b}{1994/05/19}{Changed some of the infix +% words} % \changes{italian-1.2g}{1995/07/04}{Added \cs{proofname} for % AMS-\LaTeX} -% \changes{italian-1.2h}{1995/07/27}{Added translation of `Proof'} +% \changes{italian-1.2h}{1995/07/27}{Added translation of +% `Proof'} % \begin{macrocode} \addto\captionsitalian{% \def\prefacename{Prefazione}% @@ -455,20 +530,22 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % \end{macro} % % \begin{macro}{\dateitalian} -% The macro |\dateitalian| redefines the command -% |\today| to produce Italian dates. -% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} definitions} +% The |\dateitalian| macro redefines the command +% |\today| to produce Italian dates. +% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} +% definitions} % \changes{italian-1.4.04}{2020-05-10}{Added commands % \cs{OrdinalDayNumberOn} and \cs{OrdinalDayNumberOff}} -% Normally in Italian day numbers a set as cardinal numbers; some -% people prefer to use the ordinal number for day~1, and use the -% cardinal number with the superscript masculine `o'. By default -% this functionality is turned off but the user can select it with -% command |\OrdinalDayNumberOn| and deselect it with -% |\OrdinalDayNumberOff|. The national official regulation require -% the cardinal numbers only with fully numerical dates; they allow, -% without prescribing, roman numbers and ordinal numbers only when -% the month name is spelled out in letters. +% Normally in Italian day numbers a set as cardinal numbers; +% some people prefer to use the ordinal number for day~1, and +% use the cardinal number with the superscript masculine `o'. +% By default this functionality is turned off but the user can +% select it with command |\OrdinalDayNumberOn| and deselect it +% with |\OrdinalDayNumberOff|. The national official +% regulations require the cardinal numbers only with fully +% numerical dates; they allow, without prescribing, roman +% numbers and ordinal numbers only when the month name is +% spelled out in letters. % \begin{macrocode} \newif\ifOrdinalDayNumber \OrdinalDayNumberfalse \def\OrdinalDayNumberOn{\OrdinalDayNumbertrue} @@ -479,9 +556,9 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \else \number\day \fi~\ifcase\month\or - gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or - luglio\or agosto\or settembre\or ottobre\or novembre\or - dicembre\fi\space \number\year}}% + gennaio\or febbraio\or marzo\or aprile\or maggio\or + giugno\or luglio\or agosto\or settembre\or ottobre\or + novembre\or dicembre\fi\space \number\year}}% % \end{macrocode} % \end{macro} % @@ -489,10 +566,10 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % \changes{italian-1.2b}{1994/05/19}{Added setting of left and % righthyphenmin} % -% The italian hyphenation patterns can be used with both +% The Italian hyphenation patterns can be used with both % |\lefthyphenmin| and |\righthyphenmin| set to~2. -% \changes{italian-1.2m}{2000/09/22}{Now use \cs{providehyphenmins} to -% provide a default value} +% \changes{italian-1.2m}{2000/09/22}{Now use +% \cs{providehyphenmins} to provide a default value} % \begin{macrocode} \providehyphenmins{\CurrentOption}{\tw@\tw@} % \end{macrocode} @@ -503,7 +580,7 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % % \changes{italian-1.2b}{1994/05/19}{Added settings of club- and % widowpenalty} -% Lower the chance that clubs or widows occur. +% Lower the chance that clubs or widows occur. % \begin{macrocode} \addto\extrasitalian{% \babel@savevariable\clubpenalty @@ -515,8 +592,8 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % \changes{italian-1.2b}{1994/05/19}{Added setting of % finalhyphendemerits} % -% Never ever break a word between the last two lines of a paragraph -% in Italian texts. +% Never ever break a word between the last two lines of a +% paragraph in Italian texts. % \begin{macrocode} \addto\extrasitalian{% \babel@savevariable\finalhyphendemerits @@ -525,28 +602,29 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % % \changes{italian-1.2h}{1995/11/10}{Now give the apostrophe a % lowercase code} -% \changes{italian-1.2l}{1999/04/5}{Changed example ``begl'italiani'' -% (obsolete spelling) with another, ``nell'altezza'', that behaves -% the same way} -% \changes{italian 1.4.01}{2019-01-05}{Set the lccode of the apostrophe -% that should be valid for both the pdflatex and the OpentType aware -% typesetting engines xelatelx and lualatex.} +% \changes{italian-1.2l}{1999/04/5}{Changed example +% ``begl'italiani'' +% (obsolete spelling) with another, ``nell'altezza'', that +% behaves the same way} +% \changes{italian 1.4.01}{2019-01-05}{Set the lccode of the +% apostrophe that should be valid for both pdflatex and the +% OpentType aware typesetting engines xelatex and lualatex.} % \changes{italian 1.4.03}{2019-11-16}{Adjust the lccode for the -% apostrophe so as to work also with platex and uplatex. Thanks to -% Hironobu Yamashita who spotted the -% error and suggested the correction.} -% -% In order to enable the hyphenation of words such as -% ``nell'altezza'' we give the \texttt{'} a non-zero lower case -% code. When we do that, \TeX\ finds the following hyphenation -% points |nel-l'al-tez-za| instead of none. If this |italian.ldf| is -% used with |babel| when typesetting with |xelatex| or -% |lualatex| the apostrophe must receive a unicode code point. -% Therefore we use a special test that was suggested by Hironobu -% Yamashita\footnote{Thanks to Hironobu Yamashita -% } if this |babel| language option -% is used while using either |pdflatex| or a Unicode aware -% typesetting engine. +% apostrophe so as to work also with platex and uplatex. +% Thanks to Hironobu Yamashita +% who spotted the error and suggested the correction.} +% +% In order to enable the hyphenation of words such as +% “nell'altezza'’ we give the \texttt{'} a non-zero lower case +% code. When we do that, \TeX\ finds the following hyphenation +% points |nel-l'al-tez-za| instead of none. If this +% |italian.ldf| is used with |babel| when typesetting with +% |xelatex| or |lualatex| the apostrophe must receive a unicode +% code point. Therefore we use a special test that was +% suggested by Hironobu Yamashita\footnote{Thanks to Hironobu +% Yamashita } if this |babel| +% language option is used while using either |pdflatex| or a +% Unicode aware typesetting engine. % \begin{macrocode} \addto\extrasitalian{% @@ -557,35 +635,39 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \lccode\string"2019=0\fi} % \end{macrocode} -% Notice, though, that if you use |babel| when typesetting with |lualatex| -% or |xelatex| using the |fontspec| usual commands and options may not -% lead to their proper font alternative variants being used. Apparently -% the |\babelfont| command is more performant in transmitting the proper -% information to |fontspec|. Of course |\babelfont| must be used after the -% |babel| package has been invoked; while there appears to be no loading -% precedence requirements when |fontspec| and |polyglossia| are used. +% Notice, though, that if you use |babel| when typesetting with +% |lualatex| or |xelatex| using the |fontspec| usual commands +% and options may not lead to their proper font alternative +% variants being used. Apparently the |\babelfont| command is +% more performant in transmitting the proper information to +% |fontspec|. Of course |\babelfont| must be used after the +% |babel| package has been invoked; while there appears to be no +% loading precedence requirements when |fontspec| and +% |polyglossia| are used. % \end{macro} % \end{macro} % % \subsection{Traditionally labelled enumerate environment} -% \changes{italian-1.2v}{2010/01/02}{Support for traditional Italian} -% In some traditional texts, especially of legal nature, enumerations -% labelled with lower or upper case letters use the reduced Latin -% alphabet that omits the so called ``non Italian letters'': j, k, w, -% x, and y. -% -% \changes{italian-1.2w}{2011/01/03}{Added switching mechanism between -% normal and traditional enumeration labelling} -% \changes{italian-1.3}{2013/09/27}{The |traditional| language attribute -% has been dropped while the commands to switch back and forth from -% 21- to 26-letter alphabet are retained} +% \changes{italian-1.2v}{2010/01/02}{Support for traditional +% Italian} +% In some traditional texts, especially of legal nature, +% enumerations labelled with lower or upper case letters use +% the reduced Latin alphabet that omits the so called “non +% Italian letters”: j, k, w, x, and y. +% +% \changes{italian-1.2w}{2011/01/03}{Added switching mechanism +% between normal and traditional enumeration labelling} +% \changes{italian-1.3}{2013/09/27}{The |traditional| language +% attribute has been dropped while the commands to switch +% back and forth from 21- to 26-letter alphabet are retained} % \begin{macro}{\XXIletters} % \begin{macro}{\XXVIletters} -% At the same time it is considered useful to have the possibility of -% switching back and forth from the 21-letter tagging and the 26-letter -% one. This requires a counter that keeps the switching status (0 for 21 -% letters and 1 for 26 letters) and commands |\XXIletters| and -% |\XXVIletters| to set the switch. Default is 26 letter tagging. +% At the same time it is considered useful to have the +% possibility of switching back and forth from the 21-letter +% tagging and the 26-letter one. This requires a counter that +% keeps the switching status (0 for 21 letters and 1 for 26 +% letters) and commands |\XXIletters| and |\XXVIletters| to set +% the switch. Default is 26 letter tagging. % \begin{macrocode} \newcount\it@lettering \it@lettering=\@ne \newcommand*\XXIletters{\it@lettering=\z@} @@ -597,8 +679,9 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % \end{macrocode} % \end{macro} % \end{macro} -% To make this feasible it's necessary to redefine the way the \LaTeX\ -% |\@alph| and |\@Alph| work. Let's make the alternate definitions: +% To make this feasible it's necessary to redefine the way the +% \LaTeX\ |\@alph| and |\@Alph| work. Let's make the alternate +% definitions: % \begin{macrocode} \def\it@alph#1{% \ifcase\it@lettering @@ -607,8 +690,8 @@ email: \texttt{claudio dot beccari at gmail dot com}}} z\else\@ctrerr\fi \or \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or - j\or k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or - w\or x\or y\or z\else\@ctrerr\fi + j\or k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or + v\or w\or x\or y\or z\else\@ctrerr\fi \fi}% \def\it@Alph#1{% \ifcase\it@lettering @@ -617,108 +700,130 @@ email: \texttt{claudio dot beccari at gmail dot com}}} Z\else\@ctrerr\fi \or \ifcase#1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or - J\or K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or - W\or X\or Y\or Z\else\@ctrerr\fi + J\or K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or + V\or W\or X\or Y\or Z\else\@ctrerr\fi \fi}% % \end{macrocode} % -% In order to have a complete description, the situation is as such: +% In order to have a complete description, the situation is as +% such: % \begin{enumerate} -% \item If you want to always use the 21-letter item tagging, simply -% use the |\XXIletters| declaration just after |\begin{document}| -% and this setting remains global (provided, of course, that the -% declaration is defined, i.e. that the Italian language is the -% default one); in this way the setting is global while you use -% the Italian language. -% \item The |XXVIletter| command, issued outside any environment sets -% the 26-letter item tagging in a global way; this setting is the -% default one. -% \item If you specify |\XXIletters| just before entering an -% environment that uses alphabetic tagging, this environment will -% be tagged with the 21-letter alphabet, but this is a local setting, -% because the letter tagging takes place only from the second level -% of enumeration. -% \item The declarations |\XXIletters| and |\XXVIletters| let you -% switch back and forth between the two kinds of tagging, But this -% kind of tagging, the 21-letter one, is meaningful only in Italian -% and when you change language, letter tagging reverts to the -% 26-letter one. +% \item +% If you want to always use the 21-letter item tagging, simply +% use the |\XXIletters| declaration just after +% |\begin{document}| and this setting remains global +% (provided, of course, that the declaration is defined, i.e. +% that the Italian language is the default one); in this way +% the setting is global while you use the Italian language. +% \item +% The |XXVIletter| command, issued outside any environment +% sets the 26-letter item tagging in a global way; this +% setting is the default one. +% \item +% If you specify |\XXIletters| just before entering an +% environment that uses alphabetic tagging, this environment +% will be tagged with the 21-letter alphabet, but this is a +% local setting, because the letter tagging takes place only +% from the second level of enumeration. +% \item +% The declarations |\XXIletters| and |\XXVIletters| let you +% switch back and forth between the two kinds of tagging, but +% this kind of tagging, the 21-letter one, is meaningful only +% in Italian and when you change language, letter tagging +% reverts to the 26-letter one. % \end{enumerate} % % \changes{italian-1.2m}{2000/01/05}{Support for etymological % hyphenation} % -% \subsection{Support for etymological hyphenation} -% -% In Italian etymological hyphenation is desirable with -% technical terms, chemical names, and the like. -% -% \subsubsection{Some history} -% In his article on Italian hyphenation \cite{CBec} Beccari pointed -% out that the Italian language gets hyphenated on a phonetic -% basis, although etymological hyphenation is allowed; this is in -% contrast with what happens in Latin, for example, where -% etymological hyphenation is always used. Since the patterns for -% both languages would become too complicated in order to cope with -% etymological hyphenation, in his paper Beccari proposed the -% definition of an active character `|_|' such that it could insert -% a ``soft'' discretionary hyphen at the compound word -% boundary. For several reasons that idea and the specific active -% character proved to be unpractical and was abandoned. -% -% This problem is so important with the majority of the European -% languages, that \babel\ from the very beginning developed -% the tradition of making the |"| character active so as to perform -% several actions that turned useful with every language. -% One of these actions consisted in defining the shorthand \verb="|=, -% that was extensively used in German and in many other languages, -% in order to insert a discretionary hyphen such that hyphenation -% would not be precluded in the rest of the word as it happens with -% the standard \TeX\ command |\-|. -% -% Meanwhile the \texttt{ec} fonts with the double Cork encoding -% (thus formerly called the \texttt{dc} fonts) have become more or -% less standard and are widely used by virtually all Europeans that -% write languages with many special national characters; by so -% doing they avoid the use of the |\accent| primitive which would -% be required with the standard OT1 encoded \texttt{cm} fonts; -% with such OT1 encoded fonts the primitive command |\accent| is such -% that hyphenation becomes almost impossible, in any case strongly -% impeached. -% -% The T1 encoded fonts contain a special character, named -% ``compound word mark'', that occupies slot 23 (or |'27| or |"17| -% in the font scheme and may be input with the sequence |^^W|. -% Up to now, apparently, this special character has never been used -% in a practical way for typesetting languages rich of compound -% words; moreover it has never been inserted in the hyphenation pattern -% files of any language. Beccari modified his pattern file -% \file{ithyph.tex v4.8b} for Italian so as to contain five new -% patterns that involve |^^W|, and he tried to give the -% \babel\ active character |"| a new shorthand definition, -% so as to allow the insertion of the ``compound word mark'' in the -% proper place within any word where two semantic fragments join -% up. With such facility for marking the compound word boundaries, -% etymological hyphenation becomes possible even if the patterns -% know nothing about etymology (but the typesetter hopefully -% does!). +% \subsection{Support for etymological hyphenation} +% +% In Italian etymological hyphenation is desirable with +% technical terms, chemical names, and the like. +% +% \subsubsection{Some history} +% In his article on Italian hyphenation \cite{CBec} Beccari +% pointed out that the Italian language gets hyphenated on a +% phonetic basis, although etymological hyphenation is +% allowed; this is in contrast with what happens in Latin, +% for example, where etymological hyphenation is always used. +% Since the patterns for both languages would become too +% complicated in order to cope with etymological hyphenation, +% in his paper Beccari proposed the definition of an active +% character `|_|' such that it could insert a “soft” +% discretionary hyphen at the compound word boundary. For +% several reasons that idea and the specific active character +% proved to be unpractical and was abandoned. +% +% This problem is so important with the majority of the +% European languages, that \babel\ from the very beginning +% developed the tradition of making the |"| character active +% so as to perform several actions that turned useful with +% every language. +% One of these actions consisted in defining the shorthand +% \verb="|=, that was extensively used in German and in many +% other languages, in order to insert a discretionary hyphen +% such that hyphenation would not be precluded in the rest of +% the word as it happens with the standard \TeX\ command |\-|. +% +% Meanwhile the \texttt{ec} fonts with the double Cork encoding +% (thus formerly called the \texttt{dc} fonts) have become more +% or less standard and are widely used by virtually all +% Europeans that write in languages that use many special +% national characters; by so doing they avoid the use of the +% |\accent| primitive which would be required with the standard +% OT1 encoded \texttt{cm} fonts; with such OT1 encoded fonts +% the primitive command |\accent| is such that hyphenation +% becomes almost impossible, in any case strongly impeached. +% +% In practice the OT1 encoded fonts are sufficient for modern +% English only; medieval and renaissance English used accents. +% In modern English accents are not used anymore, but it is +% frequent to use foreign names and, in reference lists, +% foreign authors`s names and document titles written in +% foreign languages, so that accents are necessary also with +% modern English. Therefore OT1 encoded fonts should never be +% used in this XXI century. At he same time, as already +% remarked, the Unicode encoding is become the standard one for +% all \TeX\ input files, that accented characters are not a +% problem any more. +% +% The T1 encoded fonts contain a special character, named +% “compound word mark”, that occupies slot 23 (or |'27| or +% |"17|) in the font scheme and may be input with the sequence +% |^^W|. Up to now, apparently, this special character has +% never been used in a practical way for typesetting languages +% rich of compound words; moreover it has never been inserted +% in the hyphenation pattern files of any language. Beccari +% modified his pattern file \file{ithyph.tex v4.8b} for Italian +% so as to contain five new patterns that involve |^^W|, and he +% tried to give the \babel\ active character |"| a new +% shorthand definition, so as to allow the insertion of the +% “compound word mark” in the proper place within any word +% where two semantic fragments join up. With such facility for +% marking the compound word boundaries, etymological +% hyphenation becomes possible even if the patterns know +% nothing about etymology (but the user hopefully does!). % % \subsubsection{The current solution} % -% Even this solution proved to be inconvenient on certain *NIX -% platforms, so Beccari resorted to another approach that uses the -% \babel\ active character |"| and relies on the category -% code of the character that follows |"|. +% Even this solution proved to be inconvenient on certain *NIX +% platforms, so Beccari resorted to another approach that uses +% the \babel\ active character |"| and relies on the category +% code of the character that follows |"|. % % \changes{italian-1.2n}{2000/02/02}{Completely new etymological % hyphenation facility} % \changes{italian-1.3g}{2014/01/22}{The active double straight -% quote conflicts with other packages; set as an optional facility.} -% Instead of a boolean switch we use a private counter so as to check -% at |\begin{document}| if this facility has to be activated. The -% default value is zero; anything different from zero means that the -% facility has to be activated; this is done with command -% |\setactivedoublequote| to be issued before |\begin{document}| +% quote conflicts with other packages; set as an optional +% facility.} +% +% Instead of a boolean switch we use a private counter so as to +% check at |\begin{document}| if this facility has to be +% activated. The default value is zero; anything different from +% zero means that the facility has to be activated; this is +% done with command |\setactivedoublequote| to be issued before +% |\begin{document}| % % \begin{macrocode} \newcount\it@doublequoteactive \it@doublequoteactive=\z@ @@ -730,13 +835,14 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \initiate@active@char{"}% \addto\extrasitalian{\bbl@activate{"}\languageshorthands{italian}}% % \end{macrocode} -% \begin{macro}{\it@cwm} -% The active character |"| is now defined for language |italian| so -% as to perform different actions in math mode compared to text -% mode; specifically in math mode a double quote is inserted so as -% to produce a double prime sign, while in text mode the temporary -% macro |\it@next| is defined so as to defer any further action -% until the next token category code has been tested. +% \begin{macro}{\it@cwm} +% The active character |"| is now defined for language +% |italian| so as to perform different actions in math mode +% compared to text mode; specifically in math mode a double +% quote is inserted so as to produce a double prime sign, while +% in text mode the temporary macro |\it@next| is defined so as +% to defer any further action until the next token category +% code has been tested. % \begin{macrocode} \declare@shorthand{italian}{"}{% \ifmmode @@ -748,55 +854,56 @@ email: \texttt{claudio dot beccari at gmail dot com}}} }% \fi % \end{macrocode} -% The following statement must be conditionally executed after the above -% modification of the |\extraasitalian| list; in facts at the ``begin -% document'' execution the main language has already been set without -% the above modifications; therefore nothing takes place unless the -% Italian main language is selected again with the explicit command -% |\selectlanguage| without this trick the active double quotes would -% remain inactive; of course |\languagename| contains the string |italian| -% if this language was the main one; by testing this string, the suitable -% command may be issued again with the new settings and the double quotes -% become really active. Thanks to Davide Liessi for reporting this bug. +% The following statement must be conditionally executed after +% the above modification of the |\extraasitalian| list; in +% facts at the “begin document” execution the main language has +% already been set without the above modifications; therefore +% nothing takes place unless the Italian main language is +% selected again with the explicit command |\selectlanguage| +% without this trick the active double quotes would remain +% inactive; of course |\languagename| contains the string +% |italian| if this language was the main one; by testing this +% string, the suitable command may be issued again with the new +% settings and the double quotes become really active. +% Thanks to Davide Liessi for reporting this bug. % \begin{macrocode} \ifdefstring{\languagename}{italian}{\selectlanguage{italian}}{\relax} }% % \end{macrocode} -% \begin{macro}{\it@cwm} -% The \cs{it@next} service control sequence is such that upon its -% execution a temporary variable \cs{it@temp} is made equivalent to -% the next token in the input list without actually removing it. -% Such temporary token is then tested by the macro \cs{it@cwm} -% and if it is found to be a letter token (cathode=11), then it -% introduces a compound word separator control sequence -% \cs{it@allowhyphens} whose expansion introduces a discretionary -% hyphen and an unbreakable zero space; -% otherwise the token is not a letter; then it is therefore -% tested against \verb=|=$_{12}$: if so a compound word separator -% is inserted and the \verb=|= token is removed; -% otherwise two other tests are performed to see if guillemets -% have to be inserted, and in case a suitable intelligent -% guillemet macro is introduced that gobbles unwanted leading -% or trailing spaces; -% otherwise a test is made to see if the next char is a slash -% character, and in case a special discretionary break is inserted -% such as to maintain the slash while allowing the hyphenation -% of both words before and after the slash; -% otherwise another test is performed to see if another -% double quote sign follows: in this case a double open quote -% mark is inserted; -% otherwise another test is made to see if a connecting hyphen char -% follows, and in this case the hyphen char is substituted with -% a discretionary break that allows hyphenation of both words -% before and after the hyphen char; -% otherwise nothing is done. -% -% The double quote shorthand for inserting a double open quote sign -% is useful for people who are inputting Italian text by means of -% an Italian keyboard which unfortunately misses the grave or -% backtick key. -% The shorthand |""| becomes equivalent to |``| for inserting -% raised open high double quotes. +% \begin{macro}{\it@cwm} +% The \cs{it@next} service control sequence is such that upon +% its execution a temporary variable \cs{it@temp} is made' +% equivalent to the next token in the input list without +% actually removing it. +% Such temporary token is then tested by the macro \cs{it@cwm} +% and if it is found to be a letter token (cathode=11), then it +% introduces a compound word separator control sequence +% \cs{it@allowhyphens} whose expansion introduces a +% discretionary hyphen and an unbreakable zero space; +% otherwise the token is not a letter; therefore it is +% tested against \verb=|=$_{12}$: if so a compound word +% separator is inserted and the \verb=|= token is removed; +% otherwise two other tests are performed to see if guillemets +% have to be inserted, and in case a suitable intelligent +% guillemet macro is introduced that gobbles unwanted leading +% or trailing spaces; otherwise a test is made to see if the +% next char is a slash character, and in case a special +% discretionary break is inserted such as to maintain the slash +% while allowing the hyphenation of both words before and after +% the slash; otherwise another test is performed to see if +% another double quote sign follows: in this case a double open +% quote mark is inserted; otherwise another test is made to see +% if a connecting dash char follows, and in this case the +% dash char is substituted with a discretionary break that +% allows hyphenation of both words before and after that dash +% char; otherwise nothing is done. +% +% The double quote shorthand for inserting a double open quote +% sign is useful for people who are inputting Italian text by +% means of an Italian keyboard which unfortunately misses the +% grave or backtick key. +% The shorthand |""| becomes equivalent to |“| for inserting +% raised open high double quotes. % \begin{macrocode} \def\it@@cwm{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}% \def\it@@slash{\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}% @@ -806,29 +913,29 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \ifcat\noexpand\it@temp a% \def\it@@next{\it@@cwm}% \else - \if\noexpand\it@temp \string|% - \def\it@@next{\it@@cwm\@gobble}% + \if\noexpand\it@temp \string|% + \def\it@@next{\it@@cwm\@gobble}% + \else + \if\noexpand\it@temp \string<% + \def\it@@next{\it@@ocap}% \else - \if\noexpand\it@temp \string<% - \def\it@@next{\it@@ocap}% + \if\noexpand\it@temp \string>% + \def\it@@next{\it@@ccap}% + \else + \if\noexpand\it@temp\string/% + \def\it@@next{\it@@slash\@gobble}% \else - \if\noexpand\it@temp \string>% - \def\it@@next{\it@@ccap}% - \else - \if\noexpand\it@temp\string/% - \def\it@@next{\it@@slash\@gobble}% - \else - \ifcat\noexpand\it@temp\noexpand\it@@dqactive - \def\it@@next{``\@gobble}% - \else - \if\noexpand\it@temp\string-% - \def\it@@next{\it@@trattino\@gobble}% - \fi - \fi - \fi + \ifcat\noexpand\it@temp\noexpand\it@@dqactive + \def\it@@next{“\@gobble}% + \else + \if\noexpand\it@temp\string-% + \def\it@@next{\it@@trattino\@gobble}% \fi + \fi \fi + \fi \fi + \fi \fi \it@@next}% % \end{macrocode} @@ -836,120 +943,153 @@ email: \texttt{claudio dot beccari at gmail dot com}}} % \end{macro} % % -% \begin{sloppypar} -% By this definition of |"| if one types |macro"istruzione| the -% possible break points become \textsf{ma-cro-istru-zio-ne}, while -% without the |"| mark they would be \textsf{ma-croi-stru-zio-ne}, -% according to the phonetic rules such that the |macro| prefix is -% not taken as a unit. -% A chemical name such as \texttt{des"clor"fenir"amina"cloridrato} -% is breakable as \textsf{des-clor-fe-nir-ami-na-clo-ri-dra-to} -% instead of \textsf{de-sclor-fe-ni-ra-mi-na-\dots} -% -% In other language description files a shorthand is defined so as -% to allow a break point without actually inserting any hyphen -% sign; examples are given such as \mbox{entrada/salida}; actually -% if one wants to allow a breakpoint after the slash, it is much -% clearer to type |\slash| instead of |/| and \LaTeX\ does -% everything by itself; here the shorthand |"/| was introduced to -% stand for |\slash| so that one can type |input"/output| and allow -% a line break after the slash. -% This shorthand works only for the slash, since in Italian such -% constructs are extremely rare. +% \begin{sloppypar} +% By this definition of |"|, if one types |macro"istruzione| +% the possible break points become +% \textsf{ma-cro-istru-zio-ne}, +% while without the |"| mark they would be +% \textsf{ma-croi-stru-zio-ne}, according to the phonetic rules +% such that the |macro| prefix is not taken as a unit. +% +% A chemical name such as +% \texttt{des"clor"fenir"amina"cloridrato} +% is breakable as \textsf{des-clor-fe-nir-ami-na-clo-ri-dra-to} +% instead of \textsf{de-sclor-fe-ni-ra-mi-na-\dots} +% +% In other language description files a shorthand is defined so +% as to allow a break point without actually inserting any +% hyphen sign; examples are given such as +% \mbox{entrada/salida}; actually if one wants to allow a +% breakpoint after the slash, it is much clearer to type +% |\slash| instead of |/| and \LaTeX\ does everything by +% itself; here the shorthand |"/| was introduced to stand for +% |\slash| so that one can type |input"/output| and allow +% a line break after the slash. This shorthand works only for +% the slash, since in Italian such constructs are extremely +% rare. % \end{sloppypar} % -% Attention: the expansion of |"| takes place before the actual -% expansion of OT1 or T1 accented sequences such as |\`{a}|; -% therefore this etymological hyphenation facility works as it -% should only when the semantic word fragments \textit{do not -% start} with an accented letter; this in Italian is always -% avoidable, because compulsory accents fall only on the last -% vowel, but it may be necessary to mark a compound word where one -% or more components come from a foreign language and contain -% diacritical marks according to the spelling rules of that -% language. In this case the special shorthand \verb!"|! may be -% used that performs exactly as |"| normally does, except that the -% \verb!|! sign is removed from the token input list: +% Attention: the expansion of |"| takes place before the actual +% expansion of OT1 or T1 accented sequences such as |\`{a}|; +% therefore this etymological hyphenation facility works as it +% should only when the semantic word fragments \textit{do not +% start} with an explicitly accented letter; this in Italian +% is always avoidable, because compulsory accents fall only on +% the last vowel, but it may be necessary to mark a compound +% word where one or more components come from a foreign +% language and contain diacritical marks according to the +% spelling rules of that language. In this case the special +% shorthand \verb!"|! may be used that performs exactly as |"| +% normally does, except that the \verb!|! sign is removed from +% the token input list: % \verb!kilo"|\"orsted! gets hyphenated as % \texttt{ki-lo-\"or-sted}; but also -% \texttt{kilo\string"\string|\"orsted} gets hyphenated correctly -% as \texttt{ki-lo-\"or-sted} The \verb="|= macro is necessary -% because, even with a suitable option specified to the |inputenc| -% package, the letter `\"o' does not have category code 11, as the -% ASCII letters do, because of the LICR (LaTeX Internal Character -% Representation), i.e. the set of intermediate macros that have to be -% expanded in order to fetch the proper glyph in the output font. -% -% \changes{italian-1.2l}{1999/04/05}{Added useful macros for +% \texttt{kilo\string"\string|\"orsted} gets hyphenated +% correctly as \texttt{ki-lo-\"or-sted}. +% The \verb="|= macro is necessary because, even with a +% suitable option specified to the |inputenc| package, the +% letter `ö' does not have category code 11, as the ASCII +% letters do, because of the LICR (LaTeX Internal Character +% Representation), i.e. the set of intermediate macros that +% have to be expanded in order to fetch the proper glyph in the +% output font. Users should realise that with \texttt{pdfLaTeX} +% all accented letters are LICR macros, not plain characters as +% they are in \texttt{xelatex} and \texttt{lualatex}. +% +% \changes{italian-1.2l}{1999/04/05}{Added useful macros for % fulfilling ISO 31/XI regulations} % -% \subsection{Facilities required by the ISO 31/XI regulations} -% The ISO 31/XI regulations require that units of measure are -% typeset in upright font in both math and text, and -% that in text mode they are separated from the numerical -% indication of the measure with an unbreakable (thin) space. -% The command |\unit| that was defined for achieving this -% goal happened to conflict with the homonymous command defined by the -% |units.sty| package; we therefore need to test if that package -% has already been loaded so as to avoid conflicts; we assume that -% if the user loads that package, s/he wants to use that package -% facilities and command syntax. +%\subsection{Facilities required by the ISO~80000 regulations} +% +% The ISO~80000\footnote{When this file was initially written, +% only the ISO~3/XI regulations existed and it were +% possible to consult them. In 2009 the new regulations +% ISO~80000 were published; they were divided in several “parts” +% to be sold individually; they were translated in other +% languages, and in Europe and Italy they had prefixes such as +% EN or UNI; in general the title numerical part remained the +% same. They are extremely expensive for a private retired +% citizen, who therefore has access to only a small part of such +% regulations. Admittedly they are not so different from the +% previous edition, but there are several new regulated items, +% that were not present in the previous edition. An important +% change is their title: the previous edition was +% \emph{Mathematical symbols and units for physics and +% technology} while now it is \emph{Mathematical symbols and +% units for natural sciences and technology}.} regulations +% require that units of measure are typeset in upright font in +% both math and text, and that in text mode they are separated +% from the numerical value of the measure with an unbreakable +% (thin) space. The command |\unit| that was defined for +% achieving this goal happened to conflict with the homonymous +% command defined by the |units.sty| package; we therefore need +% to test if that package has already been loaded so as to avoid +% conflicts; we assume that if users load that package, they +% want to use that package facilities and command syntax. % -% Actually there are around several packages that help to typeset -% units of measure in the proper way; besides |units.sty| there are also -% |SIunits| and |siunitx.sty|; the latter nowadays offers the best -% performances in this domain. Therefore we keep controlling the -% possibility that |units.sty| has been loaded just for backwards -% compatibility, but we must do the same with |SIunits| and -% |siunitx.sty|. In order to avoid the necessity o loading packages -% in a certain order, we delay the test until |\begin{document}|. -% -% The same ISO regulations require also that super and subscripts -% (apices and pedices) are in upright font, \emph{not in math -% italics}, when they represent ``adjectives'' or appositions to -% mathematical or physical variables that do not represent -% countable or measurable entities: for example, -% $V_{\mathrm{max}}$ or $V_{\mathrm{rms}}$ for a maximum voltage or -% a root mean square voltage, compared to $V_i$ or $V_T$ as the $i$-th -% voltage in a set, or a voltage that depends on the thermodynamic -% temperature $T$. See \cite{Becc2} for a complete description of -% the ISO regulations in connection with typesetting. -% -% More rarely it happens to use superscripts that are not -% mathematical variables, such as the notation -% $\mathbf{A}^{\!\mathrm{T}}$ to denote the transpose of matrix -% $\mathbf{A}$; text superscripts are useful also as ordinals or -% in old fashioned abbreviations in text mode; for example the -% feminine ordinal $1^{\mathrm{a}}$ or the old fashioned obsolete -% abbreviation F$^{\mathrm{lli}}$ for \mbox{Fratelli} in company -% names (compare with ``Bros.'' for \underline{Bro}ther\underline{s} -% in American English); text subscripts are mostly used in logos. -% -% \begin{macro}{\unit} -% \begin{macro}{\ap} -% \begin{macro}{\ped} -% \begin{macro}{\setISOcompliance} -% First we define the new (internal) commands |\bbl@unit|, |\bbl@ap|, -% and |\bbl@ped| as robust ones. -% \changes{italian-1.3}{2013/09/27}{Added testing to avoid conflicts -% with the units.sty and siunitx.sty packages} -% \changes{italian-1.3g}{2014/01/22}{Besides controlling conflicts with -% units, siunitx, this facility is deactivated by default, and activated -% only if the user wants to} -% This facility is deactivated by default according to the contents of -% an internal counter and the setting of the activation command by the -% user; commands for apices and pedices remain available in any case. +% Actually there are around several packages that help to +% typeset units of measure in the proper way; besides +% |units.sty| there are also |SIunits| and |siunitx.sty|; the +% latter nowadays offers the best performances in this domain. +% +% Therefore we keep controlling the possibility that |units.sty| +% has been loaded just for backwards compatibility, but we must +% do the same with |SIunits| and |siunitx.sty|. In order to +% avoid the necessity o loading packages in a certain order, we +% delay the test until |\begin{document}|. +% +% The same ISO regulations require also that superscripts and +% subscripts (apices and pedices) are typeset in upright font, +% \emph{not in math italics}, when they represent “adjectives” +% or appositions to mathematical or physical symbols that do not +% represent countable or measurable entities: for example, +% $V_{\mathrm{max}}$ or $V_{\mathrm{rms}}$ for a maximum voltage +% or a root mean square voltage, compared to $V_i$ or $V_T$ as +% the $i$-th voltage in a set, or a voltage that depends on the +% thermodynamic temperature $T$. See \cite{Becc2} for a complete +% description of the ISO regulations in connection with +% typesetting. +% +% More rarely it happens to use superscripts that are not +% mathematical symbola, such as the notation +% $\mathbf{A}^{\!\mathrm{T}}$ to denote the transpose of matrix +% $\mathbf{A}$; text superscripts are useful also as ordinals or +% in old fashioned abbreviations in text mode; for example the +% feminine ordinal $1^{\mathrm{a}}$ or the old fashioned +% obsolete abbreviation F$^{\mathrm{lli}}$ for \mbox{Fratelli} +% in company names (compare with “Bros.” for +% \underline{Bro}ther\underline{s} in American English); text +% subscripts are mostly used in logos. +% +% \begin{macro}{\unit} +% \begin{macro}{\ap} +% \begin{macro}{\ped} +% \begin{macro}{\setISOcompliance} +% First we define the new (internal) commands |\bbl@unit|, +% |\bbl@ap|, and |\bbl@ped| as robust ones. +% \changes{italian-1.3}{2013/09/27}{Added testing to avoid +% conflicts with the units.sty and siunitx.sty packages} +% \changes{italian-1.3g}{2014/01/22}{Besides controlling +% conflicts with units, siunitx, this facility is +% deactivated by default, and activated only if the user +% wants to} +% This facility is deactivated by default according to the +% contents of an internal counter and the setting of the +% activation command by the user; commands for apices and +% pedices remain available in any case. % \begin{macrocode} \newcount\it@ISOcompliance \it@ISOcompliance=\z@ \def\setISOcompliance{\it@ISOcompliance=\@ne} -\AtBeginDocument{\unless\ifnum\it@ISOcompliance=\z@% +\AtBeginDocument{% +\unless\ifnum\it@ISOcompliance=\z@% \def\activate@it@unit{\DeclareRobustCommand*{\bbl@it@unit}[1]{% \textormath{\,\textup{##1}}{\,\mathrm{##1}}}} \@ifpackageloaded{units}{}{\@ifpackageloaded{siunitx}{}{% \@ifpackageloaded{SIunits}{}{% \activate@it@unit\addto\extrasitalian{% \babel@save\unit\let\unit\bbl@it@unit}% - }}}\ifcsstring{bbl@main@language}{italian}{\selectlanguage{italian}}{}% + }}}% +\ifcsstring{bbl@main@language}{italian}{\selectlanguage{italian}}{}% \fi} \DeclareRobustCommand*{\bbl@it@ap}[1]{% \textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}% @@ -957,253 +1097,264 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \textormath{$_{\mbox{\fontsize\sf@size\z@ \selectfont#1}}$}{_\mathrm{#1}}}% % \end{macrocode} -% Then we can use |\let| to define the user level commands, but in -% case the macros already have a different meaning before entering -% in Italian mode typesetting, we first save their meaning so -% as to restore them on exit. +% Then we can use |\let| to define the user level commands, but +% in case the macros already have a different meaning before +% entering in Italian mode typesetting, we first save their +% meanings so as to restore them on exit. % \begin{macrocode} \addto\extrasitalian{% \babel@save\ap\let\ap\bbl@it@ap \babel@save\ped\let\ped\bbl@it@ped }% % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \subsection{Intelligent comma}\label{ssec:comma} % -% We need to perform some tests that require some -% smart control-sequence handling; therefore we call the |etoolbox| -% package that allows us more testing functionality. There are no -% problems with this package that can be invoked also by other ones -% before or after |babel| is called; the |\RequirePackage| mechanism is -% sufficiently smart to avoid reloading the same package more than -% once. But we have to delay this call, because |italian.ldf| is being -% read while processing the options passed to |babel|, and while -% options are being scanned and processed it is forbidden to load -% packages; we delay it at the end of processing the |babel| package +% We need to perform some tests that require some smart +% control-sequence handling; therefore we call the |etoolbox| +% package that allows us more testing functionality. There are +% no problems with this package that can be invoked also by +% other ones before or after |babel| is called; the +% |\RequirePackage| mechanism is sufficiently smart to avoid +% reloading the same package more than once. But we have to +% delay this call, because |italian.ldf| is being read while +% processing the options passed to |babel|, and while options +% are being scanned and processed it is forbidden to load +% packages; we delay it at the end of processing the |babel| +% package % itself. % \begin{macrocode} \AtEndOfPackage{\RequirePackage{etoolbox}} % \end{macrocode} % -% \begin{macro}{\IntelligentComma} -% \begin{macro}{\NoIntellgentComma} -% This feature is optional, in the sense that it is necessary to issue -% a specific command to activate it; actually this functionality is -% activated or, respectively, deactivated with the self explanatory -% commands |\IntelligentComma| and |\NoIntelligentComma|. They operate -% by setting or resetting the comma sign as an active character in -% mathematics. We defer the definition of the commands that turn on and -% off the intelligent comma feature at the end of the preamble, so as -% to avoid possible conflicts with other packages. It has already been -% pointed out that this procedure for setting up the active comma to -% behave intelligently in math mode, conflicts with the |dcolumn| -% package; therefore we assume these commands are defined when the -% final user typesets a document, but they will be possibly defined -% only at the end of the preamble when it will be known if the -% |dcolumn| package has been loaded. We do the same if packages -% |icomma| or |ncccomma| have been loaded, since that assumes that the -% user wants to use their functionality, not the functionality of this -% package. -% -% We need a command to set the comma as an active charter only in math -% mode; the special |\mathcode| that classifies an active character in -% math is the hexadecimal value |"8000|. By default we set the -% punctuation type of comma, but we let |\IntelligentComma| and -% |\NoIntelligentComma| to |\relax| so that their use is forbidden when -% one of the named packages is loaded. In this way all known conflicts -% are avoided; should the users find out other conflicts, they are -% kindly required to notify them to the maintainer. +% \begin{macro}{\IntelligentComma} +% \begin{macro}{\NoIntellgentComma} +% +% This feature is optional, in the sense that it is necessary to +% issue a specific command to activate it; actually this +% functionality is activated or, respectively, deactivated with +% the self explanatory commands |\IntelligentComma| and +% |\NoIntelligentComma|. They operate by setting or resetting +% the comma sign as an active character in mathematics. We defer +% the definition of the commands that turn on and off the +% intelligent comma feature at the end of the preamble, so as +% to avoid possible conflicts with other packages. It has +% already been pointed out that this procedure for setting up +% the active comma to behave intelligently in math mode, +% conflicts with the |dcolumn| package; therefore we assume +% these commands are defined when the final user typesets a +% document, but they will be possibly defined only at the end of +% the preamble when it will be known if the |dcolumn| package +% has been loaded. We do the same action if packages |icomma|. +% |ncccomma| or |decimalcomma| have been loaded, since this +% assumes that the user wants to use their functionality, not +% the functionality defined in this file. +% +% We need a command to set the comma as an active character only +% in math mode; the special |\mathcode| that classifies an +% active character in math is the hexadecimal value |"8000|. +% By default we set the punctuation comma, but we let +% |\IntelligentComma| and |\NoIntelligentComma| to |\relax| so +% that their use is neutralised when one of the named packages +% is loaded. \textcolor{red}{In this way all known conflicts are +% avoided; should users find out other conflicts, they are +% kindly requested to notify the maintainer}. % \begin{macrocode} -\AtEndOfPackage{\AtEndPreamble{% -\newcommand*\IntelligentComma{\mathcode`\,=\string"8000}% Active comma -\newcommand*\NoIntelligentComma{\mathcode`\,=\string"613B}% Punctuation comma -\@ifpackageloaded{icomma}{\let\IntelligentComma\relax - \let\NoIntelligentComma\relax}{% - \@ifpackageloaded{ncccomma}{\let\IntelligentComma\relax +\AtEndOfPackage{% +% +\AtEndPreamble{% +\newcommand*\IntelligentComma{\mathcode`\,=\string"8000}% +\newcommand*\NoIntelligentComma{\mathcode`\,=\string"613B}% +\@ifpackageloaded{icomma}{% + \let\IntelligentComma\relax \let\NoIntelligentComma\relax}{% - \@ifpackageloaded{dcolumn}{\let\IntelligentComma\relax + \@ifpackageloaded{ncccomma}{% + \let\IntelligentComma\relax + \let\NoIntelligentComma\relax}{% + \@ifpackageloaded{dcolumn}{% + \let\IntelligentComma\relax \let\NoIntelligentComma\relax}{% - \@ifpackageloaded{polyglossia}{% - \ifcsstring{xpg@main@language}{english}{\relax}{% - \mathcode`\,=\string"613B} - }{% - \ifcsstring{languagename}{english}{\relax}{% - \mathcode`\,=\string"613B} - }% + \ProvideDocumentEnvironment{english}{}% + {\begin{otherlanguage}{english}% + \NoIntelligentComma}% + {\end{otherlanguage}}% }}}% }} % \end{macrocode} -% These commands are defined only in the |babel| support for the -% Italian language (this file) and are not defined in the -% corresponding |polyglossia| support for the language. -% In order to have this functionality work properly with pdfLaTeX, -% XeLaTeX, and LuaLaTeX, it is necessary to discover which engine -% is being used, or better, which language handling package is -% being used: |babel| or |polyglossia|? Let us remember that testing -% the actual engine, as it would be possible with package |iftex|, -% does not tell the whole truth, because LuaLaTeX and XeLaTeX behave -% in a similar way for what concerns language handling since they can -% use both |babel| and |polyglossia| (obviously not at the same time); -% so the use of |babel| or |polyglossia| is the real discriminant -% factor, not the typesetting engine. -% -% \begin{macro}{\virgola} -% \begin{macro}{\virgoladecimale} -% We need two kinds of comma, one that is a decimal separator, and -% a second one that is a punctuation mark. +% These commands are defined only in the |babel| support for the +% Italian language (this file). +% +% \begin{macro}{\virgola} +% \begin{macro}{\virgoladecimale} +% We need two kinds of commas, one that is a decimal +% separator/mark, and a second one that is a punctuation mark. % \begin{macrocode} \DeclareMathSymbol{\virgoladecimale}{\mathord}{letters}{"3B} \DeclareMathSymbol{\virgola}{\mathpunct}{letters}{"3B} % \end{macrocode} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} % -% \changes{italian-1.3a}{2013/10/02}{Corrected the bug of the intelligent -% comma when used within the AMS alignment environments} +% \changes{italian-1.3a}{2013/10/02}{Corrected the bug of the +% intelligent comma when used within the AMS alignment +% environments} % -% Math comma activation is done only after the preamble has been -% completed, that is after the |\begin{document}| statement has been -% completely executed. Now we must give a definition to the active -% comma. +% Math comma activation is done only after the preamble has been +% completed, that is after the |\begin{document}| statement has +% been completely executed. Now we must give a definition to the +% active comma. % \begin{macrocode} {\catcode`,\active \gdef,{\futurelet\tempB\?}} % \end{macrocode} -% In facts the above macro lets a temporary control sequence |\tempB| -% be an alias of the token that immediately follows |\?|; |\tempB| then -% behaves as an implicit character if that token is a single character, -% even a space (category cod~10) or a closed brace {category code~3}, -% or an alias of a generic control sequence otherwise. -% -% Is is important to remark that |\?| must be a command that -% does not require arguments; this makes it robust when it is followed -% by other tokens that may play special r\^oles within the -% arguments of other macros or environments. Matter of fact the first -% version 1.3 of this file did accept an argument; and the result was -% that the active comma would ``gobble'' the |&| in vertical math -% alignments and very nasty errors took place, especially within the -% |amsmath| defined ones. This macro |\?| without arguments -% does not do any harm to the AMS environments and a part of the actual -% intelligent comma work is going to be executed by other macros that -% accept an argument in a safe way. -% -% Since the intelligent comma is going to be used only in math mode, -% it must be intelligent enough to avoid problems with commands used -% in math mode; in particular with commands that operate on digits, -% such as |\bar| and |\overline| -% -% At this point the situation may become complicated: the comma -% character in the input file may be followed by a real digit, by an -% analphabetic character of category 12 (other character), by an -% implicit digit, by a macro defined to be a digit, by a macro that is -% not defined to be a digit, by a special character (for example a -% closed brace, an alignment command, et cetera); therefore it is -% necessary to distinguish all these situations; remember that an -% implicit digit cannot be used as a real digit, and a macro gets -% expanded when used within any |\if| clause, except |\ifx|, -% or is prefixed with |\noexpand|. The tests that are going to be made -% hereafater are therefore of different kinds, according to this -% scheme: -% \begin{itemize} -% \item -% we test if the next character is a space (category code~10) and chose -% at once the puntuation comma; -% \item -% we test the the next character id a closed brace (category code~3) -% and chose immediately the decimal comma, assuming we are in a -% situation such as |$2,}619$|, just for backwards compatibility; -% such wrapping of the decimal comma was common when no intelligent -% comma macros or packages were available; -% \item -% we have to check if the next token is |bar| or |\overline| (or a -% |\periodo|, a new command added by this language description file)); -% we assume that these commands are used to mark the digits of the -% periodic component of the fractional part of a rational number. -% May be this assumption is not always correct, but it should be the -% most common situation when one of these commands is immediately -% preceded by a comma. -% \item -% the |\tempB| category is tested against an asterisk to see if -% it is of category 12; this is true if the token is a real digit, or -% an implicit digit, or an analphabetic character; -% \begin{itemize} -% \item -% an implicit digit might be represented by a control sequence; so we -% check this feature; -% \item -% if that |\tempB| is a control sequence, we have to test its -% nature of a digit by testing if it represented one of the ten -% digits; of course it is strongly discouraged to let some control -% sequences be aliases of digits; -% \item +% In facts the above macro lets a temporary control sequence +% |\tempB| be an alias of the token that immediately follows +% |\?|; |\tempB| then behaves as an implicit character if that +% token is a single character, even a space (category cod~10) +% or a closed brace {category code~3}, or an alias of a generic +% control sequence otherwise. +% +% It is important to remark that |\?| must be a command that +% does not require arguments; this makes it robust when it is +% followed by other tokens that may play special rôles within +% the arguments of other macros or environments. Matter of fact +% the first version 1.3 of this file did accept an argument; and +% the result was that the active comma would “gobble” the |&| in +% vertical math alignments and very nasty errors took place, +% especially within the |amsmath| defined ones. This macro |\?| +% without arguments does not do any harm to the AMS environments +% and a part of the actual intelligent comma work is going to be +% executed by other macros that accept an argument in a safe +% way. Since the intelligent comma is going to be used only in +% math mode, it must be intelligent enough to avoid problems +% with commands used in math mode; in particular with commands +% that operate on digits, such as |\bar| and |\overline| +% +% At this point the situation may become complicated: the comma +% character in the input file may be followed by a real digit, +% by an analphabetic character of category 12 (other character), +% by an implicit digit, by a macro defined to be a digit, by a +% macro that is not defined to be a digit, by a special +% character (for example a closed brace, an alignment command, +% et cetera); therefore it is necessary to distinguish all these +% situations; remember that an implicit digit cannot be used as a real digit, and a macro gets expanded when used within any +% |\if| clause, except |\ifx|, or is prefixed with |\noexpand|. +% The tests that are going to be made hereafter are therefore +% of different kinds, according to this scheme: +% \begin{itemize} +% \item +% we test if the next character is a space (category code~10) +% and chose at once the punctuation comma; +% \item +% we test the next character is a closed brace (category +% code~3) and chose immediately the decimal comma, assuming +% we are in a situation such as |$2{,}619$|, just for +% backwards compatibility; such wrapping of the decimal comma +% was common when no intelligent comma macros or packages +% were available; +% \item +% we have to check if the next token is |bar| or |\overline| +% (or a |\periodo|, a new command added by this language +% description file)); we assume that these commands are used +% to mark the digits of the periodic component of the +% fractional part of a rational number. +% May be this assumption is not always correct, but it should +% be the most common situation when one of these commands is +% immediately preceded by a comma. +% \item +% the |\tempB| category is tested against an asterisk to see +% if it is of category 12; this is true if the token is a +% real digit, or an implicit digit, or an analphabetic +% character; +% \begin{itemize} +% \item +% an implicit digit might be represented by a control +% sequence; so we check this feature; +% \item +% if that |\tempB| is a macro, we have to test its +% nature of a digit by testing if it represents one of the +% ten digits; of course it we strongly discourage to let +% some control sequences be an aliase of one or more +% digits; +% \item % in all other cases, as it has category code~12, it is an % analphabetic character. -% \end{itemize} -% \item +% \end{itemize} +% \item % otherwise the |\tempB| is a special character or a command; -% \item -% a test is made to see if it is a macro; in this case we check -% if has been defined to be a digit, -% \item -% if it is not a macro, it must be some other kind of token for -% example another special character. +% \item +% a test is made to see if it is a macro; in this case we +% check if has been defined to be a digit, +% \item +% if it is not a macro, it must be some other kind of token +% for example another special character. % \end{itemize} % -% Notice that if the token is a macro, we do not test if it is defined -% to be a single digit or a string made up of several digits and/or -% other charters. If the macro represents one digit the test is -% correct, otherwise funny results may take place. For this reason it -% is always better to prefix any macro with a space, whatever its -% definition might be; if the macro represents a parameter defined to -% have a numeric value in the range 0--9, then it may represent the -% fractional part of a (single digit) decimal value, and it is correct -% to avoid prefixing it with a space; but the users are warned not to -% make use of numeric strings in the definition of parameters, unless -% they know exactly what they are doing. -% -% The users, if the intelligent comma is active, may use a -% balanced brace comma group |{,}| but we discourage it for new -% documents; in any case such a group works fine if the intelligent -% comma is not active, for example because a stretch of text in a -% different language is being typeset. -% -% So first we test if the comma must act intelligently; we have to -% perform delicate tests; as a last resource this task is demanded to -% another macro with arguments: |\@math@@comma|. In order to make the -% various tests robust we have to resort to the usual trick of the -% auxiliary macros |\@firstoftwo| and |\@secondoftwo| and various -% |\expandafter| commands so as to be sure that each |\if| clause is -% correctly exited without leaving any trace behind. Similarly the -% |\ifcsequal| compares two control sequence names and compares the -% equality of their meanings, just as as |\ifx| does, but they are -% robust in the sense that they don't leave any trace after execution: -% the third argument code is executed if the test is true, and the -% fourth one if it is false. -% Notice that the tests with macros |\periodo|, |\bar|, and|\overline| -% are used to verify if the fractional part after the comma over lines -% its periodic component; users are suggested to use the |\periodo| -% macro that is capable of expanding its argument even if it is a macro -% (that contains digits); for example the division by~7 yields periods -% that contains the periodic sequence $142857$, starting with any digit -% of this sequence: $1/7=0{,}\overline{142857}$, -% $2/7=0{,}\overline{285714}$, $3/7=0{,}\overline{428571}$,\dots. -% Users might define six macros with mnemonic names (for example, -% |\oneoverseven|, |\twooverseven|,\dots) that contain the six digits -% in the proper order, and use such macros instead of the digit -% string, saving themselves possible typos; in math, everybody knows -% that typos are not allowed. -% -% The |ifdigit| macros that is defined hereafter is a test made by -% using a \LaTeX\ kernel internal procedure that compares it only -% argument with one of the ten digits at a time; if the argument -% is a digit choses the decimal comma, otherwise the punctuation one; -% the test is similar but not identical to the one performed by the -% |nccomma| package; on the opposite the test against s space is -% performed with a test similar but not identical to the one done -% by the |icomma| package; all other tests are specific of this +% Notice that if the token is a macro, we do not test if it +% is defined to be a single digit or a string made up of +% several digits and/or other charters. If the macro +% represents one digit the test is correct, otherwise +% unexpected results may take place. For this reason it +% is always better to prefix any macro with a space, whatever +% its definition might be; if the macro represents a +% parameter defined to have a numeric value in the range +% 0--9, then it may represent the fractional part of a +% (single digit) decimal value, and it is correct +% to avoid prefixing it with a space; but the users are +% warned not to make use of numeric strings in the definition +% of parameters, unless they know exactly what they are +% doing. +% +% Users, if the intelligent comma is active, may use a +% balanced brace comma group |{,}| but we discourage it for +% new documents; in any case such a group works fine if the +% intelligent comma is not active, for example because a +% stretch of text in a different language is being typeset. +% +% So first we test if the comma must act intelligently; +% we have to perform delicate tests; as a last resource this +% task is demanded to another macro with arguments: +% |\@math@@comma|. In order to make the various tests robust +% we have to resort to the usual trick of the auxiliary +% macros |\@firstoftwo| and |\@secondoftwo| and various +% |\expandafter| commands so as to be sure that each |\if| +% clause is correctly exited without leaving any trace +% behind. Similarly the |\ifcsequal| compares two control +% sequence \emph{names} and compares the equality of their +% meanings, just as as |\ifx| does, but they are robust in +% the sense that they don't leave any trace after execution: +% the third argument code is executed if the test is true, +% and the fourth one if it is false. +% Notice that the tests with macros |\periodo|, |\bar|, and +% |\overline| are used to verify if the fractional part after +% the comma sets a line over its periodic component; users +% are suggested to use the |\periodo| macro that is capable +% of expanding its argument even if it is a macro (that +% contains digits); for example the division by~7 yields +% periods that contains the periodic sequence $142857$, +% starting with any digit of this sequence: +% $1/7=0{,}\overline{142857}$, $2/7=0{,}\overline{285714}$, +% $3/7=0{,}\overline{428571}$,\dots. +% Users might define six macros with mnemonic names (for +% example, |\oneoverseven|, |\twooverseven|,\dots) that +% contain the six digits in the proper order, and use such +% macros instead of the digit string, saving themselves +% possible typos; everybody knows that typos are not allowed +% in math. But these macros should be used as arguments of +% |periodo|, otherwise the decimal mark test fails. +% +% The |ifdigit| macros that is defined hereafter is a test +% made by using a \LaTeX\ kernel internal procedure that +% compares its only argument with one of the ten digits at a +% time; if the argument is a digit choses the decimal comma, +% otherwise the punctuation one; the test is similar but not +% identical to the one performed by the |nccomma| package; on +% the opposite the test against a space is performed with a +% test similar but not identical to the one done by the +% |icomma| package; all other tests are specific of this % package. % \begin{macrocode} @@ -1250,7 +1401,7 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \expandafter\@secondoftwo \fi {\virgola}% \tempB actually is a macro - {\@math@@comma}% \tempB is an alias of something else + {\@math@@comma}% \tempB is an alias }% }% }% @@ -1260,30 +1411,32 @@ email: \texttt{claudio dot beccari at gmail dot com}}} } % \end{macrocode} -% -% In particular this macro starts testing if it is an alias for a -% space token (category 10); then tests if it is an alias -% of |\periodo|, or |\bar| or |\overline| and if it is the decimal -% separator should be a decimal comma (see below); otherwise other -% tests are carried on. This macro then tests if the argument has -% category code~12, that is ``other character'', not a letter, nor -% other special signs, as, for example,~|&|. In case if the category -% code is not~12, the comma must act as a punctuation mark; but if it -% is, it might be a digit, or another character, for example an -% asterisk; so we have to test its digit nature; the simplest way that -% we found to test if a token is a digit, is to test if its ASCII code -% lays within the range delimited by the ASCII codes of~`0' (zero) -% and~`9'. -% -% The typesetting engines give the back tick, |`|, the property that -% when a number is required, it yields the ASCII code if the following -% token is an explicit character or a macro argument number; this is -% why we can't use the temporary implicit token we just tested, but we -% must examine the first non blank token that follows the -% |\@math@@comma| macro. Only if the token is a digit, we use the -% decimal comma, otherwise the punctuation mark. This is therefore the -% definition of the |\@math@@comma| macro which is not that simple, -% although the testing macros have clear meanings: +% +% In particular this macro starts testing if it is an alias for +% a space token (category 10); then tests if it is an alias +% of |\periodo|, or |\bar| or |\overline| and if it is the +% decimal separator should be a decimal comma (see below); +% otherwise other tests are carried on. This macro then tests if +% the argument has category code~12, i.e.\ “other character”, +% not a letter, nor other special signs, as, for example,~|&|. +% In case the category code is not~12, the comma must act as a +% punctuation mark; but if its category cose is~12, it might be +% a digit, or another character, for example an asterisk; so we +% have to test its digit nature; the simplest way that we found +% to test if a token is a digit, is to test if its ASCII code +% lays within the range delimited by the ASCII codes +% of~`0' (zero) and~`9'. +% +% The typesetting engines give the back tick, |`|, the property +% that when a number is required, it yields the ASCII code if +% the following token is an explicit character or a macro +% argument number; this is why we can't use the temporary +% implicit token we just tested, but we must examine the first +% non blank token that follows the |\@math@@comma| macro. Only +% if the token is a digit, we use the decimal comma, otherwise +% the punctuation mark. This is therefore the definition of the +% |\@math@@comma| macro which is not that simple, although the +% testing macros have clear meanings: % \begin{macrocode} \DeclareRobustCommand*\@math@@comma[1]{% argument IS of category 12 \ifcsundef{\expandafter\@gobble\string #1}% @@ -1295,273 +1448,315 @@ email: \texttt{claudio dot beccari at gmail dot com}}} {% it's an implicit character of category 12 \let\@tempVirgola\virgola \@tfor\@tempCifra:=0123456789\do{% - \expandafter\if\@tempCifra#1\let\@tempVirgola\virgoladecimale + \expandafter\if\@tempCifra#1\let\@tempVirgola + \virgoladecimale \@break@tfor\fi}\@tempVirgola }#1}% % \end{macrocode} -% The service macros |\ifcsundef|, |\ifnumless|, and |\ifnumgreater| -% are provided by the |etoolbox| package, that shall be read at most at -% the end of the |babel| package processing; therefore we must delay -% the code at ``end preamble'' time, since only at that time -% it will be known if the main language is English, or any other one. -% -% This intelligent comma definition is pretty intelligent, but it -% requires some kind of information from the context; this context does -% not give enough bits of information to this `intelligence' in just -% one case: when the comma plays the r\^ole of a serial separator in -% expressions such as $i=1, 2, 3,\dots,\infty$, entered as -% \verb*?$i=1, 2, 3,\dots,\infty$?. Only in this case the comma must -% be followed by an explicit space; should this space be absent the -% macro takes the following non blank token as a digit, and since it -% actually is a digit, it would use the decimal comma, which -% would be wrong. The control sequences |\dots| and |\infty| are -% tested to see if they are undefined, and since they are defined and -% do not represent digits, the macro inserts a punctuation mark, -% instead of a decimal separator. -% -% Notice that this macro may appear to be inconsistent with the -% contents of a language description file. I don't agree: matter of -% facts even math is part of typesetting a text in a certain language. -% Does this set of macros influence other language description files? -% May be, but I think that the clever use of macros |\IntelligentComma| -% and |\NoIntellingentComma| may solve any interference; they allow to -% use the proper mark even if the Italian language is not the main -% language, the important point is to turn the switch on and/or off. -% By default it is off, so there should not be any interference even -% with legacy documents typeset in Italian. -% -% Notice that there are other packages that contain facilities for -% using the decimal comma as the correct decimal separator; for -% example |SIunitx| defines a command |\num| that not only correctly -% spaces the decimal separator, but also can change the input glyph -% with another one, so that it is possible to copy numbers -% from texts in English (with the decimal point) and paste them -% into the argument of the |\num| macro in an Italian document where -% the decimal point is changed automatically into a decimal comma. Of -% course |SIunitx| does much more than that; if it's being loaded, -% then the default |\NoIntelligentComma| declaration disables the -% functionality defined in this language description file and the -% users can do what they desire with the many functionalities of that -% package. -% -% Apparently a conflict with the active comma arises with the~D column -% defined by the |dcolomn| package. Disabling the “Italian” active -% comma allows the~D column operate correctly. Thanks to Giuseppe -% Toscano for telling me about this conflict. +% The service macros |\ifcsundef|, |\ifnumless|, and +% |\ifnumgreater| are provided by the |etoolbox| package, that +% shall be read at most at the end of the |babel| package +% processing; therefore we must delay the code at “end preamble” +% time, since only at that time it will be known if the main +% language is Italian, or any other one. +% +% This intelligent comma definition is pretty intelligent, but +% it requires some kind of information from the context; this +% context does not give enough bits of information to this +% `intelligence' in just one case: when the comma plays the +% rôle of a serial separator in expressions such as +% $i=1, 2, 3,\dots,\infty$, entered as +% \verb*?$i=1, 2, 3,\dots,\infty$?. Only in this case the comma +% must be followed by an explicit space; should this space be +% absent the macro takes the following non blank token as a +% digit, and since actually it is a digit, it would use the +% decimal comma, which is wrong. The control sequences +% |\dots| and |\infty| are tested to see if they are undefined, +% and since they are defined and do not represent digits, the +% macro inserts a punctuation mark, instead of a decimal mark. +% +% Notice that this macro may appear to be inconsistent with the +% contents of a language description file. We don't agree: +% matter of facts even math is part of typesetting a text in a +% certain language. Does this set of macros influence other +% language description files? May be, but I think that the +% clever use of macros |\IntelligentComma| and +% |\NoIntellingentComma| may solve any interference; they allow +% to use the proper mark even if the Italian language is not the +% main language, the important point is to turn the switch on +% and/or off. By default it is off, so there should not be any +% interference even with legacy documents typeset in Italian. +% This is why above we defined the environment |english| that +% sets |\NeIntelligentComma| at the beginning of its argument, +% so as to be sure that where the decimal point is the decimal +% mark, no active commas are are in force. +% +% Notice that there are other packages that contain facilities +% for using the decimal comma as the correct decimal mark; for +% example |SIunitx| defines a command |\num| that not only +% correctly spaces the decimal separator, but also can change +% the input glyph with another one, so that it is possible to +% copy numbers from texts in English (with the decimal point) +% and paste them into the argument of the |\num| macro in an +% Italian document where the decimal point is changed +% automatically into a decimal comma. Of course |SIunitx| does +% much more than that; if it's being loaded, then the default +% |\NoIntelligentComma| declaration disables the functionality +% defined in this language description file and the users can do +% what they desire with the many functionalities of that +% package. +% +% Apparently a conflict with the active comma arises with the~D +% column defined by the |dcolomn| package. Disabling the +% “Italian” active comma allows the~D column operate correctly. +% Thanks to Giuseppe Toscano for telling me about this conflict. % \end{macro} % \end{macro} % % \subsection*{Obsolete arrangements} -% In the following sections we describe some features that nowadays -% should be considered totally obsolete. We speak about OT! encoded -% fonts (who uses them today?); about the limitations of the Italian -% keyboard, that with modern operating systems may be overridden -% easily; with French double quotes, that are being used also in -% Italian, although without any space separating them from their -% contents (as it happen in French typography); and so on. Consider -% that this language description file initial versions are more than -% 30 years old, and in these 30 plus years many legacy documents were -% created; the following sections describe what had to be done years -% ago and the information may be useful to upgrade those documents +% +% In the following sections we describe some features that +% nowadays should be considered totally obsolete. We speak about +% OT! encoded fonts (who uses them today?); about the +% limitations of the Italian keyboard, that with modern +% operating systems may be overridden easily; with French double +% quotes, that are being used also in Italian, although without +% any space separating them from their contents (as it happen in +% French typography); and so on. Consider that this language +% description file initial versions are more than 30 years old, +% and in this long stretch of time many legacy documents were +% created; the following sections describe what had to be done +% years ago and the information may be useful to upgrade those documents % % \subsection*{Accents}\label{s:itkbd} -% Most of the other language description files introduce a number -% of shorthands for inserting accents and other language specific -% diacritical marks in a more comfortable way compared to the -% lengthy standard \TeX\ conventions. When an Italian keyboard is -% being used on a Windows based platform, it exhibits such -% limitations that to my best knowledge no convenient shorthands have -% been developed; the reason lies in the fact that the Italian keyboard -% lacks the grave accent (also known as ``backtick''), which is -% compulsory on all accented vowels, but, on the -% opposite, it carries the keys with all the accented \emph{lowercase} -% vowels \`a, \`e, \'e, \`i, \`o, \`u, bot no \emph{uppercase} accented -% vowels are directly available from the keyboard; the keyboard lacks -% also the tie |~| (tilde) key, while the curly braces require pressing -% three keys simultaneously. -% -% The best solution Italians have found so far is to use a smart -% editor that accepts shorthand definitions such that, for example, -% by striking |"(| one gets directly |{| on the screen and the same -% sign is saved into the \file{.tex} file; the same smart editor -% should be capable of translating the accented characters into the -% standard \TeX\ sequences when writing a file to disk (for the -% sake of file portability), and to transform the standard \TeX\ -% sequences into the corresponding signs when loading a \file{.tex} -% file from disk to memory. Such smart editors do exist and can be -% downloaded from the \textsc{ctan} archives. -% -% \changes{italian-1.2p}{2002/07/10}{Removed redefinition of \cs{add@acc} -% since its functionality has been introduced into the kernel of LaTeX -% 2001/06/01} -% -% For what concerns the missing back tick key, -% which is used also for inputting the open quotes, it must be -% noticed that the shorthand |""| described above completely solves -% the problem for \textit{double} raised open quotes; besides this, -% a single open raised quote may be input with the little known -% \LaTeX\ kernel command |\lq|; according to -% the traditions of particular publishing houses, since there are -% no compulsory regulations on the matter, the guillemets -% may be used; in this case the T1 font encoding solves the problem -% by means of its built in ligatures |<<| and |>>|; such ligatures -% are also available when using OpenType fonts with XeLaTeX and -% LuaLaTeX, provided they are loaded with the option -% \texttt{Ligatures = TeX}. But\dots -% -% \subsection*{\emph{Caporali} or French double quotes} -% Although the T1 font encoding ligatures solve the problem, there -% are some circumstances where even the T1 font encoding cannot be -% used, either because the author\slash typesetter wants to use the -% OT1 encoding, or because s/he uses a font set that does -% not comply completely with the T1 font encoding; some virtual -% fonts, for example, are supposed to implement the double Cork -% font encoding but actually miss some glyphs; one such virtual -% font set is given by the \texttt{ae} virtual fonts, because they -% are supposed to implement such double font encoding by using -% virtual fonts that map the |CM| fonts to a T1 font scheme; the -% type~1 PostScript version of the |CM| fonts do exist, therefore -% one believes to be able of using them with pdfLaTeX; but since -% the |CM| fonts do not contain the guillemets, neither the |AM| -% ones do. -% Since guillemets (in Italian \emph{caporali}) do not exist in -% any OT1 encoded \texttt{cm} Latin font, their glyphs must be -% substituted with something else that fakes them. -% -% \changes{italian-1.2q}{2005/02/05}{Redefined the caporali machinery -% so as to avoid incompatibilities with the slides class, as there -% are no Cyrillic slides fonts as there are for Latin script} -% \changes{italian-1.3}{2013/09/30}{The slide font fix-up is not any -% more necessary with the new caporali handling method.} -% -% In the previous versions of this language description file the -% absent guillemets were faked with other fonts, by taking example -% from the solution the French had found for their language -% description file; they would get suitable guillemets from the -% cyrillic fonts; this solution was good in most cases, except when -% the ``slides fonts'' were used, because there is no Cyryllic slide -% font around. +% Most of the other language description files introduce a +% number of shorthands for inserting accents and other language +% specific diacritical marks in a more comfortable way compared +% to the lengthy standard \TeX\ conventions. When an Italian +% keyboard is being used on a Windows based platform, it +% exhibits such limitations that to our best knowledge no +% convenient shorthands have been developed; the reason lies in +% the fact that the Italian keyboard lacks the grave accent +% (also known as “backtick”), which is compulsory on all +% accented vowels, but, on the opposite, it contains the keys +% with all the accented \emph{lowercase} vowels \`a, \`e, \'e, +% \`i, \`o, \`u, bot no \emph{uppercase} accented vowels are +% directly available from the keyboard; the keyboard lacks +% also the tie |~| (tilde) key, while the curly braces require +% pressing three keys simultaneously. +% +% The best solution Italians have found so far is to use a smart +% editor that accepts shorthand definitions such that, for +% example, by striking |"(| one gets directly |{| on the screen +% and the same sign is saved into the \file{.tex} file; the same +% smart editor should be capable of translating the accented +% characters into the standard \TeX\ sequences when writing a +% file to disk (for the sake of file portability), and to +% transform the standard \TeX\ sequences into the corresponding +% signs when loading a \file{.tex} file from disk to memory. +% Such smart editors do exist and can be downloaded from the +% \textsc{ctan} archives. +% +% \changes{italian-1.2p}{2002/07/10}{Removed redefinition of +% \cs{add@acc} since its functionality has been introduced +% into the kernel of LaTeX 2001/06/01} +% +% For what concerns the missing back tick key, which is used +% also for inputting the open quotes, it must be noticed that +% the shorthand |""| described above completely solves the +% problem for \textit{double} raised open quotes; besides this, +% a single open raised quote may be input with the little known +% \LaTeX\ kernel command |\lq|; according to the traditions of +% particular publishing houses, since there are no compulsory +% regulations on the matter, the guillemets may be used; in this +% case the T1 font encoding solves the problem by means of its +% built in ligatures |<<| and |>>|; such ligatures are also +% available when using OpenType fonts with XeLaTeX and +% LuaLaTeX, provided they are loaded with the option +% \texttt{Ligatures = TeX}. But\dots +% +% \subsection*{\emph{Caporali} or French double quotes} +% Although the T1 font encoding ligatures solve the problem, +% there are some circumstances where even the T1 font encoding +% cannot be used, either because the authors\slash typesetters +% want to use the old deprecated OT1 encoding, or because they +% use a font set that does not comply completely with the T1 +% font encoding; some virtual fonts, for example, are supposed +% to implement the double Cork font encoding but actually they +% miss some glyphs; one such virtual font set was given by the +% \texttt{ae} virtual fonts, because they were supposed to +% implement such double font encoding by using virtual fonts +% that mapped the OT1 encoded |CM| fonts to a T1 font scheme; +% Such fonts are not distributed any more with any \TeX\ system +% installation, therefore if some vintage source file uses them +% the correction is to replace them by the vector Latin Modern +% ones. % -% This might seem a negligible ``feature'' because the modern classes -% or extension modules to produce slides mostly avoid the ``old'' fonts -% for slides created by Leslie Lamport when he made available the macro -% package LaTeX to the TeX community. -% -% Since I designed renewed slide fonts extending those -% created by Leslie Lamport to the T1 encoding, the Text Companion -% fonts, and the most frequent ``regular'' and AMS math fonts with the -% same graphic style and excellent legibility (LXfonts), I thought that -% this feature is not so negligible. It's true that nowadays nobody -% should use the old OT1 encoding when typesetting in any language, -% English included, because independently form the document main -% language, it is very frequent to quote text in other languages, -% or to type foreign proper names of persons or places; nevertheless -% having in mind a minimum of backwards compatibility and hoping -% that the deliberate use of OT1 encoding (still necessary to typeset -% mathematics) is being abandoned, I decided to simplify the previous -% handling of guillemets. -% -% Therefore here I will test at ``begin document'' only if the OT1 -% encoding is the default one, while if the T1 encoding is the default -% one, that the font collection |AE| is not being used; should -% it be the case, I will substitute the guillemets with the LaTeX -% special symbols reduced to script size, and I will not try to fake -% the guillemets with better solutions; evidently if OpenType fonts -% are being used, nothing is done; so the tests that follow concern -% only typesetting old documents or the lack of a wiser choice of fonts -% and their encodings; an info message is issued and output to the -% |.log| file. -% -% \begin{macro}{\LtxSymbCaporali} -% \begin{macro}{\it@ocap} -% \begin{macro}{\it@ccap} -% First the macro |\LtxSymvCaporali| is defined so as to assign a -% default definition of the faked guillemets: each one of these macro -% sets actually redefines the control sequences |\it@ocap| and -% |\it@ccap| that are the ones effectively activated by the shorthands -% |"<| and |">|. -% By default the caporali glyphs are taken from T1-encoded fonts; at -% the end of the preamble some tests are performed to control if the -% default fonts contain such glyphs, and in case a different font is -% chosen. +% The type~1 PostScript version of the |CM| fonts do exist, +% therefore one believes to be able of using them with pdfLaTeX; +% but since the |CM| fonts do not contain the guillemets, +% neither the |AE| ones do. Since guillemets (in Italian +% \emph{caporali}) do not exist in any OT1 encoded \texttt{cm} +% Latin font, their glyphs must be substituted with something +% else that fakes them. Again the best solution is to correct +% the preamble of such vintage source file by replacing the call +% to those old not available fonts with the vector Latin Modern +% fonts. +% +% \changes{italian-1.2q}{2005/02/05}{Redefined the caporali +% machinery so as to avoid incompatibilities with the slides +% class, as there are no Cyrillic slides fonts as there are +% for Latin script} +% \changes{italian-1.3}{2013/09/30}{The slide font fix-up is not +% any more necessary with the new caporali handling method.} +% +% In the previous versions of this language description file the +% absent guillemets were faked with other fonts, by taking +% example from the solution the French had found for their +% language description file; they would get suitable guillemets +% from the Cyrillic fonts; this solution was good in most cases, +% except when the “slides fonts” were used, because there is no +% Cyryllic slides font around. +% +% This might seem a negligible “feature” because the modern +% classes or extension modules to produce slides mostly avoid +% the “old” fonts for slides created by Leslie Lamport when he +% made available the macro package LaTeX to the TeX community. +% +% Since the renewed slide fonts were created by extending the +% Leslie Lamport's one to the T1 encoding, the Text Companion +% fonts, and the most frequent “regular” and AMS math fonts with +% the same graphic style and excellent legibility (LXfonts), we +% thought that this feature is not so negligible. It's true that +% nowadays nobody should use the old OT1 encoding when +% typesetting in any language, English included, because +% independently from the document main language, it is very +% frequent to quote text in other languages, or to type foreign +% proper names of persons or places; nevertheless having in mind +% a minimum of backwards compatibility and hoping that the +% deliberate use of OT1 encoding (still necessary to typeset +% mathematics) is being abandoned, we decided to simplify the +% previous handling of guillemets. +% +% Therefore here we will test at “begin document” only if the +% OT1 encoding is the default one, while if the T1 encoding is +% the default one, that the font collection |AE| is not being +% used; should it be the case, we will substitute the guillemets +% with the LaTeX special symbols reduced to script size, and we +% will not try to fake the guillemets with better solutions; +% evidently if OpenType fonts are being used, nothing is done; +% so the tests that follow concern only typesetting old +% documents or the lack of a wiser choice of fonts and their +% encodings; an info message is issued and output to the |.log| +% file. +% +% \begin{macro}{\LtxSymbCaporali} +% \begin{macro}{\it@ocap} +% \begin{macro}{\it@ccap} +% First the macro |\LtxSymbCaporali| is defined so as to assign +% a default definition of the faked guillemets: each one of +% these macro sets actually redefines the control sequences +% |\it@ocap| and |\it@ccap| that are the ones effectively +% activated by the shorthands |"<| and |">|. +% +% By default the caporali glyphs are taken from T1-encoded +% fonts; at the end of the preamble some tests are performed to +% control if the default fonts contain such glyphs, and in case +% a different font is chosen. +% % \begin{macrocode} \def\LtxSymbCaporali{% - \DeclareRobustCommand*{\it@ocap}{\mbox{% - \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}% - \ignorespaces}% - \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi - \mbox{% - \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}% + \DeclareRobustCommand*{\it@ocap}{\mbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}% + \ignorespaces}% + \DeclareRobustCommand*{\it@ccap}{\@killglue + \mbox{\fontencoding{U}\fontfamily{lasy}\selectfont)% + \kern-0.20em)}}% }% -\def\T@unoCaporali{\DeclareRobustCommand*{\it@ocap}{<<\ignorespaces}% - \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi>>}}% -\T@unoCaporali +% +\def\T@unoCaporali{% default setting + \DeclareRobustCommand*{\it@ocap}{<<\ignorespaces}% + \DeclareRobustCommand*{\it@ccap}{\@killglue >>}}% +\T@unoCaporali % \end{macrocode} -% Nevertheless a macro for choosing where to get glyphs for real -% guillemets is offered; the syntax is the following: -% \begin {flushleft} -% |\CaporaliFrom|\marg{encoding}\marg{family}\marg{open guill. slot}% -% \marg{close guill. slot} -% \end{flushleft} -% where \meta{encoding} and \meta{family} identify the font family -% name of that particular encoding from which to get the missing -% guillemets; \meta{open guill. slot} and \meta{close guill. slot} -% are the (preferably) decimal slot addresses of the opening and -% closing guillemets the user wants to use. For example if the -% T1-encoded Latin Modern fonts are desired, the specific command -% should be -% \begin {flushleft} +% Such macros make available the internal commands |\it@ocap| +% and |\it@ccap|; they become available when users specify in +% their preambles either the |\LteSymbCaporali| or in a personal +% \texttt{.sty} file the |\T@unoCaporali| command. The former +% gets the real glyphs from the \texttt{lasy} font and deletes +% any space after the open guillemets and before the closed +% ones, as it si necessary in Italian typography; the latter +% one uses the special ligature of two pairs of angle brackets +% while deleting any space as the former commands do. +% Both sets of commands are deprecated, unless vintage files +% have to be recompiled. Nowadays (2024) with the default UTF-8 +% encoding and T1 encoded fonts, glyphs « and » may +% be directly entered. +% +% Nevertheless a macro for choosing where to get glyphs for real +% guillemets is offered; the syntax is the following: +% \begin{flushleft} +% |\CaporaliFrom|\marg{encoding}\marg{family}\verb|%| +% \marg{open guill. slot}\marg{close guill. slot} +% \end{flushleft} +% where \meta{encoding} and \meta{family} identify the font +% family name of that particular encoding from which to get the +% missing guillemets; \meta{open guill. slot} and +% \meta{close guill. slot} are the (preferably) decimal slot +% addresses of the opening and closing guillemets the user wants +% to use. For example if the T1-encoded Latin Modern fonts are +% desired, the specific command should be +% \begin {flushleft}\obeylines % |\CaporaliFrom{T1}{lmr}{19}{20}| -% \end{flushleft} -% These user choices might be necessary for assuring the correct -% typesetting -% with fonts that contain the required glyphs and are available -% also in PostScript form so as to use them directly with {pdfLaTeX}, -% for example. +% or +% |\CaporaliFrom{LGR}{Artemisia}{123}{125}| +% \end{flushleft} +% These user choices might be necessary for assuring the correct +% typesetting with fonts that contain the required glyphs and +% are available also in PostScript form so as to use them +% directly, for example, with \texttt{pdflatex}. % \begin{macrocode} \def\CaporaliFrom#1#2#3#4{% \DeclareFontEncoding{#1}{}{}% \DeclareTextCommand{\it@ocap}{T1}{% - {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% - \DeclareTextCommand{\it@ccap}{T1}{\ifdim\lastskip>\z@\unskip\fi% + {\fontencoding{#1}\fontfamily{#2}% + \selectfont\char#3\ignorespaces}}% + \DeclareTextCommand{\it@ccap}{T1}{\@kilglue {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}% - \DeclareTextCommand{\it@ocap}{OT1}{% - {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% - \DeclareTextCommand{\it@ccap}{OT1}{\ifdim\lastskip>\z@\unskip\fi% - {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} +} % \end{macrocode} -% Notice that the above macro is strictly tied to the T1 encoding; -% it won't do anything if the default encoding is not the T1 one. -% Therefore if the |AE| font collection is being used it would be -% good idea to issue the command shown above as an example in order -% to get the proper guillemets\footnote{Actually the \texttt{AE} -% fonts should not be used at all; the same results, more or less -% are obtained by using the Latin Modern ones, that are not virtual -% fonts and contain the whole T1 font scheme. Nevertheless the faked -% glyphs are not so bad, so the solution I restored from old versions -% of the language description file is acceptable}. - -% Then we set a boolean variable and test the default family; -% if such family has a name that starts with the letters ``ae'' -% then we have no built in guillemets; of course if the AE font family -% is chosen after the \babel\ package is loaded, the test does not -% perform as required. +% Notice that the above macro is strictly tied to the T1 +% encoding; it won't do anything if the default encoding is not +% the T1 one. Therefore if the |AE| font collection is being +% used it would be a good idea to issue the commands shown above +% as an example in order to get the proper guillemets^^A +%\footnote{Actually the \texttt{AE} fonts should not be used at +% all; the same results, are obtained by using the Latin Modern +% ones, that are not virtual fonts and contain the whole T1 font +% scheme. Nevertheless the faked glyphs are not so bad, so the +% solution we restored from old versions of the language +% description file is acceptable}. +% +% Then we set a boolean variable and test the default family; if +% such family has a name that starts with the letters “ae” +% then we have no built in guillemets; of course if the AE font +% family is chosen after the \babel\ package is loaded, the test +% does not perform as required. % \begin{macrocode} \def\get@ae#1#2#3!{\def\bbl@ae{#1#2}}% \def\@ifT@one@noCap{\expandafter\get@ae\f@family!% \def\bbl@temp{ae}\ifx\bbl@ae\bbl@temp\expandafter\@firstoftwo\else - \expandafter\@secondoftwo\fi}% + \expandafter\@secondoftwo\fi}% % \end{macrocode} -% Now we can set some real settings; first we start by testing -% the encoding; if the encoding is OT1 we set the faked caporali -% with LaTeX symbols and issue a warning; then we test if the font -% family is the AE one we set again the faked caporali and issue -% another warning\footnote{Notice the it is impossible to check -% if the slots 19 and 20 of the AE fonts are defined by means of -% the eTeX macro \texttt{\char92iffontchar}, because they are -% actually defined as black squares!}; otherwise we set the commands -% valid for the T1 encoding, that work well also with the TeX -% Ligatures of the OpenType fonts. +% Now we can set some real settings; first we start by testing +% the encoding; if the encoding is OT1 we set the faked caporali +% with LaTeX symbols and issue a warning; then if the +% font family is the AE one we set again the faked caporali and +% issue another warning\footnote{Notice that it is impossible to +% check if the slots 19 and 20 of the AE fonts are defined by +% means of the eTeX macro \texttt{\char92iffontchar}, because +% they are actually defined as black squares!}; otherwise we set +% the commands valid for the T1 encoding. % \begin{macrocode} \AtBeginDocument{\normalfont\def\bbl@temp{OT1}% \ifx\cf@encoding\bbl@temp @@ -1571,16 +1766,17 @@ email: \texttt{claudio dot beccari at gmail dot com}}} With OT1 encoding guillemets are poorly faked\MessageBreak \space\space\space Use T1 encoding\MessageBreak\space\space\space - or specify a font with command \string\CaporaliFrom\MessageBreak - \space\space\space - See the documentation concerning the babel-italian typesetting - \MessageBreak\space\space}% + or specify a font with command % + \string\CaporaliFrom\MessageBreak\space\space\space + See the documentation concerning the babel-italian + typesetting\MessageBreak\space\space}% \else \ifx\cf@encoding\bbl@t@one \@ifT@one@noCap{% \LtxSymbCaporali \GenericWarning{italian.ldf\space}{% - File italian.ldf warning: \MessageBreak\space\space\space + File italian.ldf warning: \MessageBreak\space\space + \space The AE font collection does not contain the guillemets \MessageBreak\space\space\space Use the Latin Modern font collection instead @@ -1590,17 +1786,18 @@ email: \texttt{claudio dot beccari at gmail dot com}}} \fi } % \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection*{Finishing commands} % -% \subsection*{Finishing commands} -% The macro |\ldf@finish| takes care of looking for a -% configuration file, setting the main language to be switched on -% at |\begin{document}| and resetting the category code of -% \texttt{@} to its original value. -% \changes{italian-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap -% up} +% The |\ldf@finish| macro takes care of looking for a +% configuration file, setting the main language to be switched +% on at |\begin{document}| and resetting the category code of +% \texttt{@} to its original value. +% \changes{italian-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to +% wrap up} % \begin{macrocode} \ldf@finish{italian}% % \end{macrocode} diff --git a/macros/latex/contrib/babel-contrib/italian/italian.pdf b/macros/latex/contrib/babel-contrib/italian/italian.pdf index 009f29080c..d9cd207cdd 100644 Binary files a/macros/latex/contrib/babel-contrib/italian/italian.pdf and b/macros/latex/contrib/babel-contrib/italian/italian.pdf differ diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index f49e14c200..17b0945a04 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -1,5 +1,5 @@ % -% Copyright (C) 2021-2022 by Qu Yi +% Copyright (C) 2021-2024 by Qu Yi % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2022/11/08}{1.71D} +\ProvidesExplClass{easybook}{2024/01/04}{2024A} {Easily typesetting Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -304,7 +304,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2022/11/08}{1.71D} +\ProvidesExplPackage{easybase}{2024/01/04}{2024A} {Easily typesetting Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -1776,6 +1776,7 @@ format = hang, labelfont = {color = ctex@frame}, labelsep = quad, + hypcap = false, singlelinecheck = true } \captionsetup[table]{font = eb@table@font} @@ -2334,7 +2335,7 @@ } % %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2022/11/08}{1.71D} +\ProvidesExplFile{eb-tcolorbox.cfg}{2024/01/04}{2024A} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \addtotcbstyle #1#2 diff --git a/macros/latex/contrib/easybook/easybook.ins b/macros/latex/contrib/easybook/easybook.ins index a8df3cd45a..dd041f6aab 100644 --- a/macros/latex/contrib/easybook/easybook.ins +++ b/macros/latex/contrib/easybook/easybook.ins @@ -1,5 +1,5 @@ % -% Copyright (C) 2021-2022 by Qu Yi +% Copyright (C) 2021-2024 by Qu Yi % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -19,7 +19,7 @@ \usedir{tex/latex/easybook} \preamble -Copyright (C) 2021-2022 by Qu Yi +Copyright (C) 2021-2024 by Qu Yi This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf index cf8ebd4ce7..d6455ad028 100644 Binary files a/macros/latex/contrib/easybook/easybook.pdf and b/macros/latex/contrib/easybook/easybook.pdf differ diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index de17154a4b..cb18b47540 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -1,18 +1,20 @@ +\PassOptionsToPackage{svgnames}{xcolor} \documentclass[load-preamble+]{cnltx-doc} \usepackage[fontset = fandol]{ctex} \usepackage { - enumitem,newtxmath,indentfirst,tabularray,ninecolors, + enumitem,newtxmath,indentfirst,tabularray, fancyvrb,geometry,hologo,pifont,changelog } \definecolorscheme{blue} { cs => violet, - option => olive6, - cnltx => blue, - link => purple5, - module => orange, + option => Green, + cnltx => MediumBlue, + link => DeepPink, + module => FireBrick, + beginend => FireBrick, meta => black, versionnote => black } @@ -21,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v1.71D, - date = 2022/11/08, + version = v2024A, + date = 2024/01/04, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -38,15 +40,15 @@ } \KOMAoptions{numbers = noenddot} \setfootnoterule[0.5pt]{0.4\columnwidth} -\addtokomafont{headsepline}{\color{blue}} -\addtokomafont{footnoterule}{\color{blue}} +\addtokomafont{headsepline}{\color{MediumBlue}} +\addtokomafont{footnoterule}{\color{MediumBlue}} \addtokomafont{section}{\normalfont\sffamily} \addtokomafont{subsection}{\normalfont\sffamily} \addtokomafont{subsubsection}{\normalfont\sffamily} \DeclareTOCStyleEntry[entryformat = \sffamily]{default}{section} \DeclareFieldFormat[book]{title}{\textsf{#1}} \geometry{margin = 1in,marginparwidth = 0.6in} -\SetEnumitemValue{label}{smallbullet}{\small\color{blue}\textbullet} +\SetEnumitemValue{label}{smallbullet}{\small\color{MediumBlue}\textbullet} \setlist{nosep,topsep = \smallskipamount,labelsep = 0.5em} \setlist[1]{labelindent = \parindent} \setlist[itemize,1]{label = smallbullet,leftmargin = *} @@ -141,7 +143,7 @@ baselinestretch = 1.2, gobble = 2, fontsize = \small, - rulecolor = \color{blue}, + rulecolor = \color{MediumBlue}, framerule = 0.5pt, frame = single, framesep = 6pt @@ -171,7 +173,6 @@ \labelformat{ctexexam}{例#1} \begin{document} - \section{准备开始} 您在使用 \cls*{easybook} 文档类编写文档前可能需要具备以下的条件: \begin{itemize} @@ -225,18 +226,18 @@ \ding{72} 需要注意正确\textbf{编译索引}要增加 \code{-shell-escape} 命令行选项。 \subsection{依赖宏包} -以下为 \pkg*{easybase} 直接调用的关键宏包清单,通常情况下它们是常用且稳定的。棕色背景的宏包表示修改了或依赖它们的内部命令。绿色背景的宏包表示并未调用它们,但做了一些预配置,可在导言区手动载入以实现相关的功能。 +以下为 \pkg*{easybase} 直接调用的关键宏包清单,通常情况下它们是常用且稳定的。\colorbox{PaleTurquoise}{蓝色}背景的宏包表示修改了或依赖它们的内部命令。\colorbox{GreenYellow}{绿色}背景的宏包表示并未调用它们,但做了一些预配置,可在导言区手动载入以实现相关的功能。 \insertalltblr { - colspec = @{}*{5}{c}@{}, + colspec = *{5}{c}, cells = {cmd = \pkg*}, - cell{1}{3,4} = yellow8, - cell{2}{5} = yellow8, - cell{3}{2,4} = yellow8, - cell{5}{1} = yellow8, - cell{1}{2} = green8, - cell{3}{1,4} = green8, - cell{5}{2} = green8 + cell{1}{3,4} = PaleTurquoise, + cell{2}{5} = PaleTurquoise, + cell{3}{2,4} = PaleTurquoise, + cell{5}{1} = PaleTurquoise, + cell{1}{2} = GreenYellow, + cell{3}{1,4} = GreenYellow, + cell{5}{2} = GreenYellow }{ amsthm & bicaption & ctexbook & caption & chemformula \\ enumitem & etoolbox & fancyhdr & geometry & hyperref \\ @@ -764,13 +765,13 @@ \defdownfntmark{\notminipage{\textcolor{blue}{\thedownfootnote}}{}} \end{ctexexam} \keychoice{fncustom-format}{format code,match} - 单独设定自定义脚注标记的格式,选项 \code{match} 可以匹配 \option*{spcmd} 全局的值。自定义脚注的命令与用法可以见下方的介绍。 + 单独设定自定义脚注标记的格式,选项 \code{match} 可以匹配 \option*{spcmd} 全局的值。自定义脚注内容和正文标记的命令与用法可以见下方和\ref{exam:custom footnote markers} 的介绍。 \begin{commands}\noitemsep \command{Footnote}[\oarg{内容标记}\marg{正文标记}\marg{脚注文本}]\default{} \command{Footnotetext}[\marg{内容标记}\marg{脚注文本}]\default{} \command{Footnotemark}[\marg{正文标记}] - 这些是自定义标记且不影响正常编号的脚注命令,用法与它们对应首字母小写的命令类似。\meta{内容标记} 默认与 \meta{正文标记} 一致,可以进行微调。如果当前标记为空,那么将会使用上一个脚注标记。 - \begin{ctexexam} + 这些是自定义标记且不影响正常编号的脚注命令,用法与它们对应首字母小写的命令类似。\meta{内容标记} 默认与 \meta{正文标记} 一致,这也是最常见的情况,也可以定义为不同符号或格式。如果当前标记为空,那么将会使用上一个脚注标记。 + \begin{ctexexam}[labelref = exam:custom footnote markers] \Footnote{*}{这是可以自定义标记的脚注。} \end{ctexexam} \end{commands} @@ -1326,6 +1327,7 @@ \shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。} \shortversion{v = 1.644,date = 2022/03/10,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。} \shortversion{v = 1.682,date = 2022/05/01,changes = 将迷你页判断命令 \cs*{notminipage} 改为被保护命令兼容 \pkg*{circledtext} 宏包。} + \shortversion{v = 2024A,date = 2024/01/04,changes = 核对依赖宏包的更新改动,优化使用手册的内容细节。} \end{changelog} \nocite{*} diff --git a/macros/latex/contrib/l3build/CHANGELOG.md b/macros/latex/contrib/l3build/CHANGELOG.md index 8d1ec76440..c06b9a380f 100644 --- a/macros/latex/contrib/l3build/CHANGELOG.md +++ b/macros/latex/contrib/l3build/CHANGELOG.md @@ -7,6 +7,13 @@ this project uses date-based 'snapshot' version identifiers. ## [Unreleased] +## [2024-01-04] + +### Changed +- Throw warnings on unknown doc name(s) +- Always execute `runtest_tasks()` if set (issue \#327) +- Print failures correctly when these occur in multiple configurations + ## [2023-12-15] ### Fixed @@ -746,7 +753,8 @@ this project uses date-based 'snapshot' version identifiers. - Rationalise short option names: removed `-d`, `-E`, `-r` - Target `cmdcheck`: specific to LaTeX kernel work -[Unreleased]: https://github.com/latex3/l3build/compare/2023-12-15..HEAD +[Unreleased]: https://github.com/latex3/l3build/compare/2024-01-04...HEAD +[2024-01-04]: https://github.com/latex3/l3build/compare/2023-12-15...2024-01-04 [2023-12-15]: https://github.com/latex3/l3build/compare/2023-12-13-2...2023-12-15 [2023-12-13-2]: https://github.com/latex3/l3build/compare/2023-12-13...2023-12-13-2 [2023-12-13]: https://github.com/latex3/l3build/compare/2023-12-12...2023-12-13 diff --git a/macros/latex/contrib/l3build/README.md b/macros/latex/contrib/l3build/README.md index c071c434e6..c2bba6cc5b 100644 --- a/macros/latex/contrib/l3build/README.md +++ b/macros/latex/contrib/l3build/README.md @@ -1,7 +1,7 @@ l3build: a testing and building system for LaTeX ================================================= -Release 2023-12-15 +Release 2024-01-04 Overview -------- @@ -31,6 +31,6 @@ The LaTeX kernel is developed by [The LaTeX Project](https://latex-project.org). ----- -

Copyright (C) 2014-2023 The LaTeX Project
-http://latex-project.org/
+

Copyright (C) 2014-2024 The LaTeX Project
+https://latex-project.org/
All rights reserved.

diff --git a/macros/latex/contrib/l3build/l3build-arguments.lua b/macros/latex/contrib/l3build/l3build-arguments.lua index 95ed9f59e4..a1755d693d 100644 --- a/macros/latex/contrib/l3build/l3build-arguments.lua +++ b/macros/latex/contrib/l3build/l3build-arguments.lua @@ -1,6 +1,6 @@ --[[ -File l3build-arguments.lua Copyright (C) 2018-2021,2023 The LaTeX Project +File l3build-arguments.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -248,14 +248,14 @@ local function argparse() return { target = "help" } end else - if not optarg then - optarg = arg[i + 1] if not optarg then - stderr:write("Missing value for option " .. a .."\n") - return { target = "help" } + optarg = arg[i + 1] + if not optarg then + stderr:write("Missing value for option " .. a .."\n") + return { target = "help" } + end + i = i + 1 end - i = i + 1 - end end else stderr:write("Unknown option " .. a .."\n") @@ -283,7 +283,7 @@ local function argparse() end end if next(names) then - result["names"] = names + result["names"] = names end return result end diff --git a/macros/latex/contrib/l3build/l3build-aux.lua b/macros/latex/contrib/l3build/l3build-aux.lua index 115117c40f..dd8c410fc0 100644 --- a/macros/latex/contrib/l3build/l3build-aux.lua +++ b/macros/latex/contrib/l3build/l3build-aux.lua @@ -1,6 +1,6 @@ --[[ -File l3build-aux.lua Copyright (C) 2018-2021,2023 The LaTeX Project +File l3build-aux.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -25,6 +25,7 @@ for those people who are interested. -- local safety guards and shortcuts local match = string.match +local gsub = string.gsub local pairs = pairs local print = print @@ -207,4 +208,4 @@ function runcmd(cmd,dir,vars) end end return run(dir,set_epoch_cmd(epoch, forcedocepoch) .. env .. cmd) -end \ No newline at end of file +end diff --git a/macros/latex/contrib/l3build/l3build-check.lua b/macros/latex/contrib/l3build/l3build-check.lua index 65366c91ca..1f2b04ce5a 100644 --- a/macros/latex/contrib/l3build/l3build-check.lua +++ b/macros/latex/contrib/l3build/l3build-check.lua @@ -1,6 +1,6 @@ --[[ -File l3build-check.lua Copyright (C) 2018-2023 The LaTeX Project +File l3build-check.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -628,10 +628,10 @@ function runcheck(name, hide) end end for i=1, #failedengines do - if failedengines[i] == stdengine then - failedengines = {stdengine} - break - end + if failedengines[i] == stdengine then + failedengines = {stdengine} + break + end end -- Return everything return errorlevel, failedengines @@ -657,7 +657,7 @@ function setup_check(name, engine) end end if found then - return + return end -- Attempt to generate missing reference file from expectation for _, kind in ipairs(test_order) do @@ -674,7 +674,7 @@ function setup_check(name, engine) end end if found then - return + return end print( "Error: failed to find any reference or expectation file for " @@ -824,7 +824,7 @@ function runtest(name, engine, hide, ext, test_type, breakout) ) -- On Windows, concatenating here will suppress any non-zero errorlevel -- from the main run, so we split into two parts. - if errlevels[i] == 0 and runtest_tasks(jobname(lvtfile),i) ~= "" then + if runtest_tasks(jobname(lvtfile),i) ~= "" then local errorlevel = runcmd(preamble .. runtest_tasks(jobname(lvtfile),i),testdir) if errorlevel ~= 0 then errlevels[i] = errorlevel end @@ -922,9 +922,9 @@ local function showsavecommands(failurelist) end f:write"\n" if savecmds[stdengine] then - print("\n Afterwards test for engine specific changes using\n") - print(" " .. checkcmd) - f:write(checkcmd) + print("\n Afterwards test for engine specific changes using\n") + print(" " .. checkcmd) + f:write(checkcmd) end f:close() print("") @@ -1057,6 +1057,10 @@ end -- A short auxiliary to print the list of differences for check function checkdiff(config) + local testdir = testdir + if config then + testdir = testdir .. "-" .. config + end local diff_files = ordered_filelist(testdir, "*" .. os_diffext) if next(diff_files) then if config then diff --git a/macros/latex/contrib/l3build/l3build-clean.lua b/macros/latex/contrib/l3build/l3build-clean.lua index e5d5ddec3d..07c3459fdb 100644 --- a/macros/latex/contrib/l3build/l3build-clean.lua +++ b/macros/latex/contrib/l3build/l3build-clean.lua @@ -1,6 +1,6 @@ --[[ -File l3build-clean.lua Copyright (C) 2018,2020,2021 The LaTeX Project +File l3build-clean.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build-ctan.lua b/macros/latex/contrib/l3build/l3build-ctan.lua index b290533b27..c1feb2564a 100644 --- a/macros/latex/contrib/l3build/l3build-ctan.lua +++ b/macros/latex/contrib/l3build/l3build-ctan.lua @@ -1,6 +1,6 @@ --[[ -File l3build-ctan.lua Copyright (C) 2018-2021 The LaTeX Project +File l3build-ctan.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build-file-functions.lua b/macros/latex/contrib/l3build/l3build-file-functions.lua index b5cd9b5f89..a1b22ce570 100644 --- a/macros/latex/contrib/l3build/l3build-file-functions.lua +++ b/macros/latex/contrib/l3build/l3build-file-functions.lua @@ -1,6 +1,6 @@ --[[ -File l3build-file-functions.lua Copyright (C) 2018-2023 The LaTeX Project +File l3build-file-functions.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -22,7 +22,6 @@ for those people who are interested. --]] -local pairs = pairs local print = print local open = io.open @@ -43,7 +42,6 @@ local luatex_version = status.luatex_version local match = string.match local sub = string.sub -local gmatch = string.gmatch local gsub = string.gsub local insert = table.insert diff --git a/macros/latex/contrib/l3build/l3build-help.lua b/macros/latex/contrib/l3build/l3build-help.lua index 3e204df0d6..46b0bc45b3 100644 --- a/macros/latex/contrib/l3build/l3build-help.lua +++ b/macros/latex/contrib/l3build/l3build-help.lua @@ -1,6 +1,6 @@ --[[ -File l3build-help.lua Copyright (C) 2018,2020,2021 The LaTeX Project +File l3build-help.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -27,7 +27,7 @@ local match = string.match local rep = string.rep local sort = table.sort -local copyright = "Copyright (C) 2014-2021 The LaTeX Project\n" +local copyright = "Copyright (C) 2014-2024 The LaTeX Project\n" function version() print( diff --git a/macros/latex/contrib/l3build/l3build-install.lua b/macros/latex/contrib/l3build/l3build-install.lua index ad5aeaaac6..9e2286481e 100644 --- a/macros/latex/contrib/l3build/l3build-install.lua +++ b/macros/latex/contrib/l3build/l3build-install.lua @@ -1,6 +1,6 @@ --[[ -File l3build-install.lua Copyright (C) 2018-2021 The LaTeX Project +File l3build-install.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,6 @@ local var_value = kpse.var_value local gsub = string.gsub local lower = string.lower local match = string.match -local format = string.format local insert = table.insert diff --git a/macros/latex/contrib/l3build/l3build-manifest-setup.lua b/macros/latex/contrib/l3build/l3build-manifest-setup.lua index b5c2b31718..8654b3deb5 100644 --- a/macros/latex/contrib/l3build/l3build-manifest-setup.lua +++ b/macros/latex/contrib/l3build/l3build-manifest-setup.lua @@ -1,6 +1,6 @@ --[[ -File l3build-manifest-setup.lua Copyright (C) 2018,2020,2021 The LaTeX Project +File l3build-manifest-setup.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build-manifest.lua b/macros/latex/contrib/l3build/l3build-manifest.lua index 12b8cdc114..99a82464b2 100644 --- a/macros/latex/contrib/l3build/l3build-manifest.lua +++ b/macros/latex/contrib/l3build/l3build-manifest.lua @@ -1,6 +1,6 @@ --[[ -File l3build-manifest.lua Copyright (C) 2018,2020,2021 The LaTeX Project +File l3build-manifest.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -128,7 +128,7 @@ manifest_build_init = function(entry) Nchar_descr = 11 , -- TODO: generalise } - -- copy default options to each group if necessary + -- copy default options to each group if necessary for kk,ll in pairs(manifest_group_defaults) do if entry[kk] == nil then entry[kk] = ll diff --git a/macros/latex/contrib/l3build/l3build-stdmain.lua b/macros/latex/contrib/l3build/l3build-stdmain.lua index 6209dcd296..d264a78fa4 100644 --- a/macros/latex/contrib/l3build/l3build-stdmain.lua +++ b/macros/latex/contrib/l3build/l3build-stdmain.lua @@ -1,6 +1,6 @@ --[[ -File l3build-stdmain.lua Copyright (C) 2018-2021 The LaTeX Project +File l3build-stdmain.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -122,12 +122,12 @@ target_list = desc = "Updates release tags in files", func = tag, pre = function(names) - if names and #names > 1 then - print("Too many tags specified; exactly one required") - exit(1) - end - return 0 - end + if names and #names > 1 then + print("Too many tags specified; exactly one required") + exit(1) + end + return 0 + end }, uninstall = { @@ -171,10 +171,10 @@ function main(target,names) end else if target_list[target].pre then - errorlevel = target_list[target].pre(names) - if errorlevel ~= 0 then - exit(1) - end + errorlevel = target_list[target].pre(names) + if errorlevel ~= 0 then + exit(1) + end end errorlevel = target_list[target].func(names) end diff --git a/macros/latex/contrib/l3build/l3build-tagging.lua b/macros/latex/contrib/l3build/l3build-tagging.lua index 20ef513f26..0753123f99 100644 --- a/macros/latex/contrib/l3build/l3build-tagging.lua +++ b/macros/latex/contrib/l3build/l3build-tagging.lua @@ -1,6 +1,6 @@ --[[ -File l3build-tagging.lua Copyright (C) 2018-2021 The LaTeX Project +File l3build-tagging.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build-typesetting.lua b/macros/latex/contrib/l3build/l3build-typesetting.lua index d3ba3e5b6f..8de57f3718 100644 --- a/macros/latex/contrib/l3build/l3build-typesetting.lua +++ b/macros/latex/contrib/l3build/l3build-typesetting.lua @@ -1,6 +1,6 @@ --[[ -File l3build-typesetting.lua Copyright (C) 2018-2021,2023 The LaTeX Project +File l3build-typesetting.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -63,7 +63,7 @@ function bibtex(name,dir) if os_type == "windows" then grep = "\\\\" else - grep = "\\\\\\\\" + grep = "\\\\\\\\" end if run(dir, os_grepexe .. " \"^" .. grep .. "citation{\" " .. name .. ".aux > " @@ -184,6 +184,12 @@ function doc(files) local errorlevel = docinit() if errorlevel ~= 0 then return errorlevel end local done = {} + local files_unknown = {} + if files and next(files) then + for _, file in pairs(files) do + files_unknown[file] = true + end + end for _,typesetfiles in ipairs({typesetdemofiles,typesetfiles}) do for _,glob in pairs(typesetfiles) do local destpath,globstub = splitpath(glob) @@ -198,6 +204,7 @@ function doc(files) typeset = false for _,file in pairs(files) do if name == file then + files_unknown[file] = nil typeset = true break end @@ -219,5 +226,11 @@ function doc(files) end end end + if next(files_unknown) then + for file, _ in pairs(files_unknown) do + print("Unknown doc name \"" .. file .. "\"") + end + return 1 + end return 0 end diff --git a/macros/latex/contrib/l3build/l3build-unpack.lua b/macros/latex/contrib/l3build/l3build-unpack.lua index 6ce4b3286b..3c73dc8d14 100644 --- a/macros/latex/contrib/l3build/l3build-unpack.lua +++ b/macros/latex/contrib/l3build/l3build-unpack.lua @@ -1,6 +1,6 @@ --[[ -File l3build-unpack.lua Copyright (C) 2018-2021 The LaTeX Project +File l3build-unpack.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build-upload.lua b/macros/latex/contrib/l3build/l3build-upload.lua index 180572baf4..87158d1b01 100644 --- a/macros/latex/contrib/l3build/l3build-upload.lua +++ b/macros/latex/contrib/l3build/l3build-upload.lua @@ -1,6 +1,6 @@ --[[ -File l3build-upload.lua Copyright (C) 2018-2021 The LaTeX Project +File l3build-upload.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -34,8 +34,6 @@ local popen = io.popen local read = io.read local write = io.write -local os_type = os.type - local len = string.len local lower = string.lower local match = string.match @@ -131,8 +129,8 @@ function upload(tagnames) print("Are you sure you want to continue? [y/n]" ) io.stdout:write("> "):flush() if lower(read(),1,1) ~= "y" then - print'Aborting' - return 1 + print'Aborting' + return 1 end end @@ -247,9 +245,9 @@ function shell(s) local t = assert(h:read('*a')) local success = h:close() if (success) then - return t + return t else - error("\nError from shell command:\n" .. s .. "\n" .. t .. "\n") + error("\nError from shell command:\n" .. s .. "\n" .. t .. "\n") end end @@ -358,7 +356,7 @@ function input_multi_line_field (name) if answer_line~=nil then field = field .. "\n" .. answer_line end - end + end until (return_count==3 or answer_line==nil or answer_line=='\004') return field end diff --git a/macros/latex/contrib/l3build/l3build-variables.lua b/macros/latex/contrib/l3build/l3build-variables.lua index 9e0ed9d47a..123e509a5b 100644 --- a/macros/latex/contrib/l3build/l3build-variables.lua +++ b/macros/latex/contrib/l3build/l3build-variables.lua @@ -1,6 +1,6 @@ --[[ -File l3build-variables.lua Copyright (C) 2018-2023 The LaTeX Project +File l3build-variables.lua Copyright (C) 2018-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build-zip.lua b/macros/latex/contrib/l3build/l3build-zip.lua index 1fab56cf4b..5107415173 100644 --- a/macros/latex/contrib/l3build/l3build-zip.lua +++ b/macros/latex/contrib/l3build/l3build-zip.lua @@ -1,6 +1,6 @@ --[[ -File l3build-zip.lua Copyright (C) 2021 The LaTeX Project +File l3build-zip.lua Copyright (C) 2021-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this diff --git a/macros/latex/contrib/l3build/l3build.1 b/macros/latex/contrib/l3build/l3build.1 index 6b3699cf12..e6d604b560 100644 --- a/macros/latex/contrib/l3build/l3build.1 +++ b/macros/latex/contrib/l3build/l3build.1 @@ -1,8 +1,8 @@ -.TH l3build 1 "2023-12-15" +.TH l3build 1 "2024-01-04" .SH NAME l3build \- Checking and building packages .SH SYNOPSIS -l3build [] [] +l3build [] [] .SH DESCRIPTION The l3build system is a Lua script for building TeX packages, with particular emphasis on regression testing. It is written in cross-platform Lua code, so @@ -10,7 +10,7 @@ can be used by any modern TeX distribution with the texlua interpreter. A package for building with l3build can be written in any TeX dialect; its defaults are set up for LaTeX packages written in the DocStrip style. .PP -The most commonly used l3build commands are: +The most commonly used l3build targets are: .IP check Run all automated tests .IP clean diff --git a/macros/latex/contrib/l3build/l3build.dtx b/macros/latex/contrib/l3build/l3build.dtx index d169f49ccd..047f43f4df 100644 --- a/macros/latex/contrib/l3build/l3build.dtx +++ b/macros/latex/contrib/l3build/l3build.dtx @@ -1,6 +1,6 @@ % \iffalse % -% File l3build.dtx (C) Copyright 2014-2023 The LaTeX Project +% File l3build.dtx Copyright (C) 2014-2024 The LaTeX Project % % It may be distributed and/or modified under the conditions of the % LaTeX Project Public License (LPPL), either version 1.3c of this @@ -251,7 +251,7 @@ % }^^A % } % -% \date{Released 2023-12-15} +% \date{Released 2024-01-04} % % \maketitle % \tableofcontents @@ -340,7 +340,7 @@ % process. % %The example scripts given in Section~\vref{sec:examples} largely cover the required knowledge in Lua programing. -% For a more advanced usage, one may consult general Lua documentations including \url{http://www.lua.org/manual/5.3/manual.html} and for the few |texlua| specific additions see section 4.2 of the \LuaTeX{} manual available locally with |texdoc luatex| command line or at \url{https://www.pragma-ade.com/general/manuals/luatex.pdf}. +% For a more advanced usage, one may consult general Lua documentations including \url{https://www.lua.org/manual/5.3/manual.html} and for the few |texlua| specific additions see section 4.2 of the \LuaTeX{} manual available locally with |texdoc luatex| command line or at \url{https://www.pragma-ade.com/general/manuals/luatex.pdf}. % % \subsection{Main build targets} % @@ -714,7 +714,7 @@ % For example, for the core \LaTeXe{} tests the main test files are contained % in a directory |testfiles|. To test font loading for \XeTeX{} and \LuaTeX{} % there are a second set of tests in |testfiles-TU| which use the short -% |build-TU.lua| file shown in Listing~\vref{lst:configs}. To run both sets of +% |config-TU.lua| file shown in Listing~\vref{lst:configs}. To run both sets of % tests, the main |build.lua| file contains the setting % |checkconfigs = {"build", "config-TU"}|. This will cause \pkg{l3build} to run % first using no additional settings (\emph{i.e.}~reading the normal diff --git a/macros/latex/contrib/l3build/l3build.ins b/macros/latex/contrib/l3build/l3build.ins index c790b35b40..502e505ec8 100644 --- a/macros/latex/contrib/l3build/l3build.ins +++ b/macros/latex/contrib/l3build/l3build.ins @@ -1,6 +1,6 @@ \iffalse meta-comment -File l3build.ins Copyright (C) 2014-2018,2021 The LaTeX Project +File l3build.ins Copyright (C) 2014-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -32,7 +32,7 @@ license information is placed in the derived files. \preamble -Copyright (C) 2014-2021 The LaTeX Project +Copyright (C) 2014-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of diff --git a/macros/latex/contrib/l3build/l3build.lua b/macros/latex/contrib/l3build/l3build.lua index 0154019cb9..995eefe533 100755 --- a/macros/latex/contrib/l3build/l3build.lua +++ b/macros/latex/contrib/l3build/l3build.lua @@ -2,7 +2,7 @@ --[[ -File l3build.lua Copyright (C) 2014-2022 The LaTeX Project +File l3build.lua Copyright (C) 2014-2024 The LaTeX Project It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this @@ -25,14 +25,13 @@ for those people who are interested. --]] -- Version information -release_date = "2023-12-15" +release_date = "2024-01-04" -- File operations are aided by the LuaFileSystem module local lfs = require("lfs") -- Local access to functions -local assert = assert local ipairs = ipairs local insert = table.insert local lookup = kpse.lookup @@ -40,11 +39,8 @@ local match = string.match local gsub = string.gsub local next = next local print = print -local select = select -local tonumber = tonumber local exit = os.exit local open = io.open -local stdout = io.stdout -- l3build setup and functions kpse.set_program_name("kpsewhich") @@ -181,11 +177,11 @@ if #checkconfigs > 1 then exit(2) end for line in f:lines() do - if line == "" then break end - savecmds = savecmds .. " " .. line .. "\n" + if line == "" then break end + savecmds = savecmds .. " " .. line .. "\n" end for line in f:lines() do - recheckcmds = recheckcmds .. " " .. line .. "\n" + recheckcmds = recheckcmds .. " " .. line .. "\n" end f:close() end diff --git a/macros/latex/contrib/l3build/l3build.pdf b/macros/latex/contrib/l3build/l3build.pdf index 7214f3dcea..763d37dc2d 100644 Binary files a/macros/latex/contrib/l3build/l3build.pdf and b/macros/latex/contrib/l3build/l3build.pdf differ diff --git a/macros/latex/contrib/overpic/overpic.dtx b/macros/latex/contrib/overpic/overpic.dtx index ee3ba5cc16..4961b179eb 100644 --- a/macros/latex/contrib/overpic/overpic.dtx +++ b/macros/latex/contrib/overpic/overpic.dtx @@ -19,7 +19,7 @@ % %<*package> \NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{overpic}[2020/02/22 1.3 picture overlays (RN)] +\ProvidesPackage{overpic}[2024/01/04 2.0 picture overlays (RN)] % % %<*driver> @@ -58,7 +58,7 @@ % % \fi % -% \CheckSum{180} +% \CheckSum{178} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -242,7 +242,7 @@ %<*package> % \fi % \begin{macrocode} -\RequirePackage{graphicx,epic} +\RequirePackage{keyval,graphicx,epic} % \end{macrocode} % % \begin{macro}{\OVP@scale} @@ -253,7 +253,7 @@ % \end{macro} % All the keys: % \begin{macrocode} -\define@key{Gin}{rel}{% +\define@key{OVP}{rel}{% \def\OVP@scale{#1}% \ifnum\OVP@scale>\z@ \let\OVP@calc\OVP@calc@rel @@ -261,19 +261,21 @@ \PackageError{overpic}{Invalid number for option `rel'}\@ehc \fi } -\define@key{Gin}{percent}[]{% - \setkeys{Gin}{rel=100}% +\define@key{OVP}{percent}[]{% + \setkeys{OVP}{rel=100}% } -\define@key{Gin}{permil}[]{% - \setkeys{Gin}{rel=\@m}% +\define@key{OVP}{permil}[]{% + \setkeys{OVP}{rel=\@m}% } -\define@key{Gin}{abs}[]{% +\define@key{OVP}{abs}[]{% \let\OVP@calc\OVP@calc@abs } -\newif\ifGin@grid -\define@key{Gin}{grid}[true]{\lowercase{\Gin@boolkey{#1}}{grid}} -\define@key{Gin}{tics}{\count@=#1} -\define@key{Gin}{unit}{\unitlength=\dimexpr#1\relax} +\def\OVP@boolkey#1#2{% + \csname OVP@#2\ifx\relax#1\relax true\else#1\fi\endcsname} +\newif\ifOVP@grid +\define@key{OVP}{grid}[true]{\lowercase{\OVP@boolkey{#1}}{grid}} +\define@key{OVP}{tics}{\count@=#1} +\define@key{OVP}{unit}{\unitlength=\dimexpr#1\relax} % \end{macrocode} % \begin{macro}{\OVP@calc@abs} % Some calculations in abs mode. \cmd{\@tempcnta} is the normalized width @@ -287,6 +289,8 @@ } % \end{macrocode} % \end{macro} +% \changes{2.0}{2024/01/01}{Use a separate namespace for the keys to avoid +% unfavorable influence on \cmd\includegraphics.} % \begin{macro}{\OVP@calc@rel} % Some calculations in rel mode. The bigger value of width or height % is the base. @@ -313,9 +317,9 @@ % \end{macro} % The package options set the defaults: % \begin{macrocode} -\DeclareOption{percent}{\setkeys{Gin}{rel=100}} -\DeclareOption{permil}{\setkeys{Gin}{rel=\@m}} -\DeclareOption{abs}{\setkeys{Gin}{abs}} +\DeclareOption{percent}{\setkeys{OVP}{rel=100}} +\DeclareOption{permil}{\setkeys{OVP}{rel=\@m}} +\DeclareOption{abs}{\setkeys{OVP}{abs}} \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{graphicx}} \ExecuteOptions{percent} \ProcessOptions @@ -323,24 +327,24 @@ % \end{macrocode} % % \begin{environment}{overpic} -% Box 0 gets a graphic. +% Box \cmd{\OVP@box} gets a graphic. % \changes{1.2}{2018/09/02}{Wrong place of \cmd\setkeys % (bug report from 'aminophen')} +% \changes{2.0}{2024/01/04}{Better key handling} % \begin{macrocode} \newenvironment{overpic}[2][]{% + \let\OVP@temp=\KV@errx +% \end{macrocode} +% Silently ignore unknown keys. +% \begin{macrocode} + \let\KV@errx\@gobble \sbox\OVP@box{\includegraphics[#1]{#2}}% - \count@=\z@ \Gin@gridfalse - \setkeys{Gin}{#1}% + \count@=\z@ \OVP@gridfalse + \setkeys{OVP}{#1}% % \end{macrocode} -% Reset the graphics parameter: +% Reset to previous state. % \begin{macrocode} - \let\Gin@outer@scalex\relax - \let\Gin@outer@scaley\relax - \let\Gin@angle\relax - \let\Gin@ewidth\Gin@exclamation - \let\Gin@eheight\Gin@exclamation - \def\Gin@scalex{1}% - \let\Gin@scaley\Gin@exclamation + \let\KV@errx\OVP@temp \OVP@picture{#1}% }{\endpicture} % \end{macrocode} @@ -348,18 +352,18 @@ % \begin{environment}{Overpic} % \changes{1.0}{2017/10/06}{Suggested by \mbox{Herbert Vo\ss}} % \changes{1.3}{2020/02/22}{Added missing \cmd\setkeys} -% Box 0 gets any \TeX\ code. +% Box \cmd{\OVP@box} gets any \TeX\ code. % \begin{macrocode} \newenvironment{Overpic}[2][]{% \sbox\OVP@box{#2}% - \count@=\z@ \Gin@gridfalse - \setkeys{Gin}{#1}% + \count@=\z@ \OVP@gridfalse + \setkeys{OVP}{#1}% \OVP@picture{#1}% }{\endpicture} % \end{macrocode} % \end{environment} % \begin{macro}{\OVP@picture} -% Put box 0 and and optionally grid at the lower left corner of a +% Put box \cmd{\OVP@box} and a optionally grid at the lower left corner of a % picture environment. % \begin{macrocode} \newcommand*\OVP@picture[1]{% @@ -370,7 +374,7 @@ \OVP@calc \picture(\@tempcnta,\@tempcntb)% \put(0,0){\makebox(0,0)[bl]{\usebox\OVP@box}}% - \ifGin@grid + \ifOVP@grid \put(0,0){\normalfont\fontsize\@viipt\@viiipt\selectfont \grid(\@tempcnta,\@tempcntb)(\count@,\count@)[0,0]}% \fi @@ -381,7 +385,7 @@ % Sets new defaults. % \begin{macrocode} \newcommand*\setOverpic[1]{% - \setkeys{Gin}{#1}% + \setkeys{OVP}{#1}% } % \end{macrocode} % \end{macro} diff --git a/macros/latex/contrib/overpic/overpic.pdf b/macros/latex/contrib/overpic/overpic.pdf index 8537ae6883..0fca353cfc 100644 Binary files a/macros/latex/contrib/overpic/overpic.pdf and b/macros/latex/contrib/overpic/overpic.pdf differ -- cgit v1.2.3