summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-07-29 03:00:44 +0000
committerNorbert Preining <norbert@preining.info>2021-07-29 03:00:44 +0000
commitd3fd3960d8402d6f9621d35febef86b241808d99 (patch)
tree0bb90e6c165e75a557f7ca4ba2b83b319091cd71 /macros/latex
parentf083b031d6785bf31f4b35408aca161e81b935f6 (diff)
CTAN sync 202107290300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/lipsum/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/lipsum/DEPENDS.txt1
-rw-r--r--macros/latex/contrib/lipsum/lipsum.dtx125
-rw-r--r--macros/latex/contrib/lipsum/lipsum.pdfbin644963 -> 650355 bytes
-rw-r--r--macros/latex/contrib/media9/ChangeLog5
-rw-r--r--macros/latex/contrib/media9/doc/media9.pdfbin3748257 -> 3748253 bytes
-rw-r--r--macros/latex/contrib/media9/media9.sty8
-rw-r--r--macros/latex/contrib/media9/pdfbase.sty32
-rw-r--r--macros/latex/contrib/moderncv/CHANGELOG14
-rw-r--r--macros/latex/contrib/moderncv/moderncv.cls67
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyi.sty4
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyiii.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyiv.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyv.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcollection.sty51
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorblack.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorblue.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorburgundy.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorgreen.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorgrey.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolororange.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorpurple.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorred.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvcompatibility.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvdebugtools.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvfooti.sty4
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadi.sty3
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadii.sty3
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadiii.sty5
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadiv.sty3
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadv.sty18
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadvi.sty3
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsawesome.sty10
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsletters.sty8
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsmarvosym.sty10
-rw-r--r--macros/latex/contrib/moderncv/moderncvskillmatrix.sty2
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylebanking.sty21
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylecasual.sty26
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleclassic.sty26
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleempty.sty26
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylefancy.sty21
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty20
-rw-r--r--macros/latex/contrib/moderncv/template.tex14
-rw-r--r--macros/latex/contrib/palette/README.md2
-rw-r--r--macros/latex/contrib/palette/palette.dtx21
-rw-r--r--macros/latex/contrib/palette/palette.pdfbin180945 -> 180652 bytes
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin1497883 -> 1498511 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.ins2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin636251 -> 636249 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.tex2
-rw-r--r--macros/latex/contrib/spbmark/spbmark.pdfbin64931 -> 65490 bytes
-rw-r--r--macros/latex/contrib/spbmark/spbmark.sty59
-rw-r--r--macros/latex/contrib/spbmark/spbmark.tex42
55 files changed, 474 insertions, 232 deletions
diff --git a/macros/latex/contrib/lipsum/CHANGELOG.md b/macros/latex/contrib/lipsum/CHANGELOG.md
index a9010903f4..379801f73f 100644
--- a/macros/latex/contrib/lipsum/CHANGELOG.md
+++ b/macros/latex/contrib/lipsum/CHANGELOG.md
@@ -3,7 +3,17 @@ All notable changes to the `lipsum` bundle since mid-2021 will be
documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
-this project uses date-based 'snapshot' version identifiers.
+and this project uses major+minor version identifiers.
+
+## [v2.5]
+
+### Fixed
+- Language 'latin' undefined error with LuaTeX (gh/6).
+
+### Changed
+- Require `babel` for language-specific hyphenation patterns (gh/6).
+- In case a language is unknown, just warn instead of an error (gh/8).
+- Use `\par` by default in `par-sep` rather than `par-end` (gh/7).
## [v2.4]
diff --git a/macros/latex/contrib/lipsum/DEPENDS.txt b/macros/latex/contrib/lipsum/DEPENDS.txt
index 574e1c1ca4..df6e9d50dd 100644
--- a/macros/latex/contrib/lipsum/DEPENDS.txt
+++ b/macros/latex/contrib/lipsum/DEPENDS.txt
@@ -1 +1,2 @@
hard l3kernel
+soft babel
diff --git a/macros/latex/contrib/lipsum/lipsum.dtx b/macros/latex/contrib/lipsum/lipsum.dtx
index 8a20f78de8..6371737414 100644
--- a/macros/latex/contrib/lipsum/lipsum.dtx
+++ b/macros/latex/contrib/lipsum/lipsum.dtx
@@ -15,8 +15,8 @@
% Please send error reports and suggestions for improvements to
% https://github.com/PhelypeOleinik/lipsum
%
-\def\lipsumversion{2.4}
-\def\lipsumdate{2021-06-03}
+\def\lipsumversion{2.5}
+\def\lipsumdate{2021-07-28}
%<*driver>
\ProvidesFile{lipsum.dtx}%
[\lipsumdate\space v\lipsumversion\space
@@ -467,6 +467,12 @@
% disable automatic language switching with
% |\setlipsum{auto-lang=false}|.
%
+% \pkg{lipsum} relies on \pkg{babel}'s \cs{hyphenrules} command to
+% change the hyphenation patterns, thus it requires \pkg{babel} to be
+% loaded in the document if |auto-lang=true|. If \pkg{babel} is not
+% loaded, a warning is printed and the default language is used for
+% hyphenation instead.
+%
% The language is defined individually for each dummy text
% \secref{sec:other-texts}, but you may change it for the current dummy
% text by using |\setlipsum{language=|\meta{lang}|}|. If you load
@@ -1252,29 +1258,29 @@
%
% \begin{macro}{\@@_set_hyphens:,\@@_restore_hyphens:}
% Selects the hyphenation patterns for the language of the dummy text,
-% using \pkg{babel}'s \cs{hyphenrules} if that's defined (when
-% \pkg{babel} is loaded) or using \cs{language}\cs{l@\meta{lang}}
-% otherwise. The hyphenation patterns are properly restored by
+% using \pkg{babel}'s \cs{hyphenrules} if that's defined.
+% If \cs{hyphenrules} doesn't exist (thus \pkg{babel} not loaded),
+% call \cs{@@_set_hyphens_babel_missing:} which will behave in a
+% slightly different way if encountered in the preamble or in the
+% document body. The hyphenation patterns are properly restored by
% \cs{@@_restore_hypehens:} when the text ends.
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_hyphens:
{
\bool_if:NTF \l_@@_autolang_bool
- { \use:x } { \use_none:n }
+ { \use:n } { \use_none:n }
{
\cs_if_exist:NTF \hyphenrules
{
- \exp_not:N \hyphenrules { \g_@@_language_tl }
- \cs_set_protected:Npn \@@_restore_hyphens:
- { \exp_not:N \hyphenrules { \languagename } }
- }
- {
\cs_if_exist:cTF { l@ \g_@@_language_tl }
- { \language \use:c { l@ \g_@@_language_tl } }
- { \msg_error:nn { lipsum } { language-undefined } }
- \cs_set_protected:Npn \@@_restore_hyphens:
- { \language \int_eval:n { \language } \scan_stop: }
+ {
+ \exp_args:NV \hyphenrules \g_@@_language_tl
+ \cs_set_protected:Npx \@@_restore_hyphens:
+ { \exp_not:N \hyphenrules { \languagename } }
+ }
+ { \@@_missing_language_warning: }
}
+ { \@@_set_hyphens_babel_missing: }
}
}
\cs_new_protected:Npn \@@_restore_hyphens:
@@ -1282,6 +1288,48 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_set_hyphens_babel_missing:}
+% In the document preamble this emits a warning telling the user that
+% the proper hyphenations can't be used because \pkg{babel} isn't
+% loaded, then shut up for the rest of the preamble. In the document
+% body however, this is more serious, so we give a final warning and
+% deactivate automatic hyphenation setting.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_set_hyphens_babel_missing:
+ {
+ \msg_warning:nnn { lipsum } { missing-babel } { preamble }
+ \cs_gset_eq:NN \@@_set_hyphens_babel_missing: \prg_do_nothing:
+ }
+\AtBeginDocument
+ {
+ \cs_gset_protected:Npx \@@_set_hyphens_babel_missing:
+ {
+ \@ifpackageloaded { babel }
+ { \msg_error:nnn { lipsum } { missing-babel } { impossible } }
+ { \msg_warning:nnn { lipsum } { missing-babel } { document } }
+ \setlipsum { auto-lang = false }
+ }
+ }
+\cs_if_exist:NT \DeclareHookRule
+ { \DeclareHookRule { begindocument } { lipsum } { after } { babel } }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_missing_language_warning:}
+% Warn the user about an unknown/missing language. Most of the time
+% the issue is a minimal installation that doesn't have Latin, but
+% sometimes it may be a typo. Regardless of the case, warn the user
+% then change the lanugage to \cs{languagename} so the warning appears
+% only once, at least until it is changed again.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_missing_language_warning:
+ {
+ \msg_warning:nn { lipsum } { missing-language }
+ \tl_gset_eq:NN \g_@@_language_tl \languagename
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\NewLipsumPar}
% Developer-Level macro to add a paragraph to the dummy text used by
% \cs{lipsum} and related commands. To specify a new dummy text, see
@@ -1333,22 +1381,22 @@
% \LipsumRestoreSentenceList,
% \LipsumRestoreAll,
% }
-% \begin{macro}{\@@_delim_restore:nnnnn}
+% \begin{macro}{\@@_delim_restore:nnn}
% \begin{macro}{\@@_restore_par_list:,\@@_restore_sentence_list:}
% These are some auxiliaries for the package options and for setting
% up the default behaviour.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_delim_restore:nnnnn #1 #2 #3 #4 #5
+\cs_new_protected:Npn \@@_delim_restore:nnn #1 #2 #3
{
\keys_set:nn { lipsum }
{
- #1-before = , #1-begin = , #1-end = {#2}, #1-after = ,
- #1-before* = , #1-begin* = , #1-end* = {#3}, #1-after* = ,
- #1-sep = {#4}, #1-sep* = {#5}
+ #1-before = , #1-begin = , #1-end = , #1-after = ,
+ #1-before* = , #1-begin* = , #1-end* = , #1-after* = ,
+ #1-sep = {#2}, #1-sep* = {#3}
}
}
\cs_new_protected:Nn \@@_restore_sentence_list:
- { \@@_delim_restore:nnnnn { sentence } { } { } { ~ } { ~ } }
+ { \@@_delim_restore:nnn { sentence } { ~ } { ~ } }
\cs_new_eq:NN \@@_restore_par_list: ?
\cs_new_protected:Npn \LipsumRestoreParList
{
@@ -1379,7 +1427,7 @@
{
% \end{macrocode}
% \opt{nopar} is implemented as a choice key instead of a boolean so
-% we can update the separators using \cs{@@_delim_restore:nnnnn}.
+% we can update the separators using \cs{@@_delim_restore:nnn}.
% It's initially false, and the default is |true| so that
% |\usepackage[nopar]{lipsum}| works as it always did.
% \begin{macrocode}
@@ -1387,12 +1435,12 @@
nopar / true .code:n =
{
\cs_gset_protected:Npn \@@_restore_par_list:
- { \@@_delim_restore:nnnnn { par } { } { \par } { ~ } { } }
+ { \@@_delim_restore:nnn { par } { ~ } { \par } }
} ,
nopar / false .code:n =
{
\cs_gset_protected:Nn \@@_restore_par_list:
- { \@@_delim_restore:nnnnn { par } { \par } { } { } { ~ } }
+ { \@@_delim_restore:nnn { par } { \par } { ~ } }
} ,
nopar .initial:n = false ,
nopar .default:n = true ,
@@ -1470,13 +1518,38 @@
% \begin{macrocode}
\msg_new:nnn { lipsum } { invalid-range }
{ Invalid~number~or~range~'#1'. }
-\msg_new:nnn { lipsum } { language-undefined }
- { Language~'\g_@@_language_tl'~undefined. }
\msg_new:nnn { lipsum } { cmd-deprecated }
{
Command~'\iow_char:N\\#1'~deprecated. \\
See~the~lipsum~documentation~for~help.
}
+\msg_new:nnn { lipsum } { missing-babel }
+ {
+ Hyphenation~patterns~for~'\g_@@_language_tl'~
+ cannot~be~used~because~babel~is~not~loaded.~
+ \str_case:nn {#1}
+ {
+ { preamble }
+ { Loading~lipsum~after~babel~should~fix~the~issue. }
+ { document }
+ {
+ The~default~document~language~will~be~used~
+ for~hyphenation~instead.
+ }
+ { impossible }
+ {
+ Something~wrong~happened~and~the~command~
+ \iow_char:N\\hyphenrules~is~not~available. \\ \\
+ Please~report!
+ }
+ }
+ \\ \\ This~message~won't~be~shown~again.
+ }
+\msg_new:nnn { lipsum } { missing-language }
+ {
+ Unknown~language~'\g_@@_language_tl'.~
+ Hyphenation~patterns~for~'\languagename'~will~be~used~instead.
+ }
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/latex/contrib/lipsum/lipsum.pdf b/macros/latex/contrib/lipsum/lipsum.pdf
index 4186c1880f..c27ddc7e8b 100644
--- a/macros/latex/contrib/lipsum/lipsum.pdf
+++ b/macros/latex/contrib/lipsum/lipsum.pdf
Binary files differ
diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog
index 69d95afb5e..4c625c9304 100644
--- a/macros/latex/contrib/media9/ChangeLog
+++ b/macros/latex/contrib/media9/ChangeLog
@@ -1,3 +1,8 @@
+2021-07-28
+ * v1.18 : media9.sty
+ * v0.49 : pdfbase.sty
+ * fix : default clip path for xforms with dvips
+
2021-07-25
* v1.17 : media9.sty
* v0.48 : pdfbase.sty
diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf
index a2c64debed..289a322c0b 100644
--- a/macros/latex/contrib/media9/doc/media9.pdf
+++ b/macros/latex/contrib/media9/doc/media9.pdf
Binary files differ
diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty
index 6f670f770b..5196d59b4f 100644
--- a/macros/latex/contrib/media9/media9.sty
+++ b/macros/latex/contrib/media9/media9.sty
@@ -41,8 +41,8 @@
\RequirePackage{l3keys2e}
-\def\g@mix@date@tl{2021/07/25}
-\def\g@mix@version@tl{1.17}
+\def\g@mix@date@tl{2021/07/28}
+\def\g@mix@version@tl{1.18}
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
@@ -2409,8 +2409,8 @@
\RequirePackage{l3keys2e}
-\def\g@mix@date@tl{2021/07/25}
-\def\g@mix@version@tl{1.17}
+\def\g@mix@date@tl{2021/07/28}
+\def\g@mix@version@tl{1.18}
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty
index fd21ee6c3b..61397e2a15 100644
--- a/macros/latex/contrib/media9/pdfbase.sty
+++ b/macros/latex/contrib/media9/pdfbase.sty
@@ -83,8 +83,8 @@
% --------
%
% \pbs_pdfxform:nnnnn
-% #1: add pgf/tikz resources (transparency, shading)? (1|0) %dvipdfmx/xetex
-% #2: (not used)
+% #1: add pgf/tikz resources (transparency, shading)? (0|1) %dvipdfmx/xetex
+% #2: write immediately to PDF? (0|1); eg 1 for appearances; pdftex/luatex
% #3: additional resources %all BUT dvips
% #4: additional dictionary entries
% #5: savebox number
@@ -158,8 +158,8 @@
\RequirePackage{l3keys2e}
-\def\g@pbs@date@tl{2021/07/25}
-\def\g@pbs@version@tl{0.48}
+\def\g@pbs@date@tl{2021/07/28}
+\def\g@pbs@version@tl{0.49}
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl}
@@ -1071,8 +1071,8 @@
output.
}
- \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{% #1, #3 not used (resources
- \mode_leave_vertical: % are managed automatically)
+ \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{% #1, #3 not used
+ \mode_leave_vertical: % resources are managed automatically
%rescale box to fit within the papersize while distilling
\tl_gset:cx{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}{\fp_eval:n{min(1.0,
\dim_ratio:nn{\paperwidth}{\box_wd:N#5},
@@ -1083,7 +1083,7 @@
}{
\tl_use:c{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}
}
- %store dimensions (in "dots" units)
+ %store dimensions in "dots" units (DPI)
\tl_set:Nx\l_pbs_width_tl{
\dim_to_decimal:n{\box_wd:N#5}~72.27~div~Resolution~mul~}
\tl_set:Nx\l_pbs_height_tl{
@@ -1099,7 +1099,8 @@
%clipbox (i. e. page area) available for distilling; outlying parts
%get clipped
{
- clippath~pathbbox~newpath~pop~pop~
+ initclip~ % restore default clipping path (page device/whole page)
+ clippath~pathbbox~newpath~pop~pop~ % top-left coordinates
isls {
landplus90 {
% pkg geometry with landscape option
@@ -1438,8 +1439,8 @@
% --------
%
% \pbs_pdfxform:nnnnn
-% #1: add pgf/tikz resources (transparency, shading)? (1|0) %dvipdfmx/xetex
-% #2: used as PDF annotation appearance? (1|0) %dvips/pdftex
+% #1: add pgf/tikz resources (transparency, shading)? (0|1) %dvipdfmx/xetex
+% #2: write immediately to PDF? (0|1); eg 1 for appearances; pdftex/luatex
% #3: additional resources %all BUT dvips
% #4: additional dictionary entries
% #5: savebox number
@@ -1508,8 +1509,8 @@
\RequirePackage{l3keys2e}
-\def\g@pbs@date@tl{2021/07/25}
-\def\g@pbs@version@tl{0.48}
+\def\g@pbs@date@tl{2021/07/28}
+\def\g@pbs@version@tl{0.49}
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl}
@@ -2371,8 +2372,8 @@
output.
}
- \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{% #1, #3 not used (resources
- \mode_leave_vertical: % are managed automatically)
+ \cs_new_protected_nopar:Nn\pbs_pdfxform:nnnnn{% #1, #3 not used
+ \mode_leave_vertical: % resources are managed automatically
%rescale box to fit within the papersize while distilling
\tl_gset:cx{scale_{pbs@obj\int_use:N\g_pbs_obj_int}}{\fp_eval:n{min(1.0,
\dim_ratio:nn{\paperwidth}{\box_wd:N#5},
@@ -2399,7 +2400,8 @@
%clipbox (i. e. page area) available for distilling; outlying parts
%get clipped
{
- clippath~pathbbox~newpath~pop~pop~
+ initclip~ % restore default clipping path (page device/whole page)
+ clippath~pathbbox~newpath~pop~pop~ % top-left coordinates
isls {
landplus90 {
% pkg geometry with landscape option
diff --git a/macros/latex/contrib/moderncv/CHANGELOG b/macros/latex/contrib/moderncv/CHANGELOG
index 41cbe5fb47..5509461d13 100644
--- a/macros/latex/contrib/moderncv/CHANGELOG
+++ b/macros/latex/contrib/moderncv/CHANGELOG
@@ -1,3 +1,17 @@
+version: 2.2.0 (2021-07-28)
+- Remove dot in cventry when using moderncvbodyi.
+- Remove http baseurl in hyperref.
+- Change font encoding to use fontspec with Latin Modern for luatex and xetex,
+ else inputenc / fontenc / lmodern (https://tex.stackexchange.com/a/496643).
+- Add birthdate field command.
+- Add Social entries for WhatsApp, Signal and Matrix.
+- Fix Researcher ID not showing (#29).
+- Make options 'symbols' and 'nosymbols' available to all styles to toggle whether
+ symbols should be used or not. Include symbols in oldstyle by default.
+- Migrate older newcommand syntax in moderncvcollection.sty to the xparse syntax.
+- Fix resumé typo in template. Is now résumé.
+- Various other minor fixes.
+
version 2.1.0 (21 Jan 2021)
- maintainer change: now team maintained (https://github.com/moderncv), since
original repository is basically dead since 2016.
diff --git a/macros/latex/contrib/moderncv/moderncv.cls b/macros/latex/contrib/moderncv/moderncv.cls
index 2facfcd8d4..b14fc53e24 100644
--- a/macros/latex/contrib/moderncv/moderncv.cls
+++ b/macros/latex/contrib/moderncv/moderncv.cls
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{moderncv}[2021/01/21 v2.1.0 modern curriculum vitae and letter document class]
+\ProvidesClass{moderncv}[2021-07-28 v2.2.0 modern curriculum vitae and letter document class]
%-------------------------------------------------------------------------------
@@ -96,33 +96,22 @@
\fi
\fi
-% do not use inputenc and do not automatically load lmodern to avoid problems with German
-% charactes, see
-% https://tex.stackexchange.com/questions/496630/lualatex-problems-with-german-characters
+% for luatex and xetex, do not use inputenc and fontenc
+% see https://tex.stackexchange.com/a/496643
\ifxetexorluatex
-% \RequirePackage{fontspec}
-% \defaultfontfeatures{Ligatures=TeX}
-% \RequirePackage{unicode-math}
-% \setmainfont{Latin Modern}
-% \setsansfont{Latin Modern Sans}
-% \setmathfont{Latin Modern Math}
-% \ifluatex
-% \usepackage{luatextra}
-% \usepackage{lualatex-math} %loads fontspec
-% \usepackage{shellesc} % fix a bug for lualatex shellescape
-% \fi
+ \RequirePackage{fontspec}
+ \defaultfontfeatures{Ligatures=TeX}
+ \RequirePackage{unicode-math}
+ \setmainfont{Latin Modern Roman}
+ \setsansfont{Latin Modern Sans}
+ \setmonofont{Latin Modern Mono}
+ \setmathfont{Latin Modern Math}
\else
- \RequirePackage[utf8]{inputenc}
-% \RequirePackage[utf8]{inputenx}
-% %additions for utf8
-% \input{ix-utf8enc.dfu}
- \RequirePackage[T1]{fontenc}
- % loading lmodern can cause issues with certain special characters. avoid.
-% \IfFileExists{lmodern.sty}%
-% {\RequirePackage{lmodern}}%
-% {}
-% \fi
+ \RequirePackage[utf8]{inputenc}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{lmodern}
\fi
+
% hyper links (hyperref is loaded at the end of the preamble to pass options required by loaded packages such as CJK)
\newcommand*\pdfpagemode{UseNone}% do not show thumbnails or bookmarks on opening (on supporting browsers); set \pdfpagemode to "UseOutlines" to show bookmarks
\RequirePackage{url}
@@ -132,7 +121,6 @@
\RequirePackage[unicode]{hyperref}% unicode is required for unicode pdf metadata
\hypersetup{
breaklinks,
- baseurl = http://,
pdfborder = 0 0 0,
pdfpagemode = \pdfpagemode,
pdfstartpage = 1,
@@ -249,6 +237,10 @@
% where the <city> and <country> arguments can be omitted or provided empty
\NewDocumentCommand{\address}{mG{}G{}}{\def\@addressstreet{#1}\def\@addresscity{#2}\def\@addresscountry{#3}}
+% defines one's birthday (optional)
+% usage: \born{date, place}
+\newcommand*{\born}[1]{\def\@born{#1}}
+
% defines one's email (optional)
% usage: \email{<email adress>}
\newcommand*{\email}[1]{\def\@email{#1}}
@@ -281,19 +273,22 @@
{%
\ifthenelse{\equal{#1}{linkedin}} {\collectionadd[linkedin]{socials} {\protect\httpslink[#3]{www.linkedin.com/in/#3}}} {}%
\ifthenelse{\equal{#1}{xing}} {\collectionadd[xing]{socials} {\protect\httpslink[#3]{www.xing.com/profile/#3}}} {}%
- \ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httpslink[#3]{www.twitter.com/#3}}} {}%
- \ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{www.github.com/#3}}} {}%
- \ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{www.gitlab.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httpslink[#3]{twitter.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httpslink[#3]{github.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{gitlab}} {\collectionadd[gitlab]{socials} {\protect\httpslink[#3]{gitlab.com/#3}}} {}%
\ifthenelse{\equal{#1}{stackoverflow}}{\collectionadd[stackoverflow]{socials}{\protect\httpslink[#3]{stackoverflow.com/users/#3}}} {}%
- \ifthenelse{\equal{#1}{bitbucket}} {\collectionadd[bitbucket]{socials} {\protect\httpslink[#3]{www.bitbucket.org/#3}}} {}%
+ \ifthenelse{\equal{#1}{bitbucket}} {\collectionadd[bitbucket]{socials} {\protect\httpslink[#3]{bitbucket.org/#3}}} {}%
\ifthenelse{\equal{#1}{skype}} {\collectionadd[skype]{socials} {#3}} {}%
\ifthenelse{\equal{#1}{orcid}} {\collectionadd[orcid]{socials} {\protect\httpslink[#3]{orcid.org/#3}}} {}%
\ifthenelse{\equal{#1}{researchgate}} {\collectionadd[researchgate]{socials} {\protect\httpslink[#3]{www.researchgate.net/profile/#3}}} {}%
\ifthenelse{\equal{#1}{researcherid}} {\collectionadd[researcherid]{socials} {\protect\httpslink[#3]{www.researcherid.com/rid/#3}}} {}%
\ifthenelse{\equal{#1}{telegram}} {\collectionadd[telegram]{socials} {\protect\httpslink[#3]{t.me/#3}}} {}%
+ \ifthenelse{\equal{#1}{whatsapp}} {\collectionadd[whatsapp]{socials} {\protect\httpslink[#3]{wa.me/#3}}} {}%
+ \ifthenelse{\equal{#1}{signal}} {\collectionadd[signal]{socials} {#3}} {}%
+ \ifthenelse{\equal{#1}{matrix}} {\collectionadd[matrix]{socials} {\httpslink[#3]{matrix.to/\#/#3}}} {}%
\ifthenelse{\equal{#1}{googlescholar}}{\collectionadd[googlescholar]{socials}{\protect\httpslink[#3]{scholar.google.com/citations?user=#3}}} {}% {}%
}
- {\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}
+ {\collectionadd[#1]{socials}{\protect\httpslink[#3]{#2}}}}%
% defines additional personal information (optional)
% usage: \extrainfo{<text>}
@@ -323,6 +318,7 @@
% other symbols
\newcommand*{\listitemsymbol} {\labelitemi~}
\newcommand*{\addresssymbol} {}
+\newcommand*{\bornsymbol} {}
\newcommand*{\mobilephonesymbol} {}
\newcommand*{\fixedphonesymbol} {}
\newcommand*{\faxphonesymbol} {}
@@ -338,9 +334,12 @@
\newcommand*{\skypesocialsymbol} {}
\newcommand*{\orcidsocialsymbol} {}
\newcommand*{\researchgatesocialsymbol} {}
-\newcommand*{\researchidsocialsymbol} {}
+\newcommand*{\researcheridsocialsymbol} {}
\newcommand*{\googlescholarsocialsymbol}{}
\newcommand*{\telegramsocialsymbol} {}
+\newcommand*{\whatsappsocialsymbol} {}
+\newcommand*{\matrixsocialsymbol} {}
+\newcommand*{\signalsocialsymbol} {}
% other
%------
@@ -379,7 +378,7 @@
% usage: \moderncvfoot[<optional foot option>]{<foot variant number>}
\newcommand*{\moderncvfoot}[2][]{%
\@loadmoderncvpackage[#1]{foot}{#2}}
-
+
% loads a color scheme
% usage: \moderncvcolor{<color scheme name>}
\newcommand*{\moderncvcolor}[1]{%
@@ -551,8 +550,8 @@
\newcommand*{\emaillink}[2][]{%
\ifthenelse{\equal{#1}{}}%
{\href{mailto:#2}{#2}}%
-
{\href{mailto:#2}{\detokenize{#1}}}}
+
% makes a tel hyperlink
% usage: \tellink[optional text]{link}
\newcommand*{\tellink}[2][]{%
diff --git a/macros/latex/contrib/moderncv/moderncvbodyi.sty b/macros/latex/contrib/moderncv/moderncvbodyi.sty
index b30af90b5f..d45364133a 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyi.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyi.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyi}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 1]
+\ProvidesPackage{moderncvbodyi}[2021-07-28 v2.2.0 modern curriculum vitae and letter body variant: 1]
%-------------------------------------------------------------------------------
@@ -113,7 +113,7 @@
\ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
\ifthenelse{\equal{#5}{}}{}{, #5}%
\ifthenelse{\equal{#6}{}}{}{, #6}%
- .\strut%
+ \strut%
\ifx&#7&%
\else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
diff --git a/macros/latex/contrib/moderncv/moderncvbodyiii.sty b/macros/latex/contrib/moderncv/moderncvbodyiii.sty
index 85fff25478..53a61a716f 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyiii.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyiii.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiii}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 3]
+\ProvidesPackage{moderncvbodyiii}[2021-07-28 v2.2.0 modern curriculum vitae and letter body variant: 3]
% rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
\@initializeif{\if@fullrules}\@fullrulesfalse
diff --git a/macros/latex/contrib/moderncv/moderncvbodyiv.sty b/macros/latex/contrib/moderncv/moderncvbodyiv.sty
index 54f47517ff..c00896d6a5 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyiv.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyiv.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyiv}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 4]
+\ProvidesPackage{moderncvbodyiv}[2021-07-28 v2.2.0 modern curriculum vitae and letter body variant: 4]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvbodyv.sty b/macros/latex/contrib/moderncv/moderncvbodyv.sty
index 81c9db5340..ffeaf8f1d9 100644
--- a/macros/latex/contrib/moderncv/moderncvbodyv.sty
+++ b/macros/latex/contrib/moderncv/moderncvbodyv.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvbodyv}[2021/01/21 v2.1.0 modern curriculum vitae and letter body variant: 5]
+\ProvidesPackage{moderncvbodyv}[2021-07-28 v2.2.0 modern curriculum vitae and letter body variant: 5]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcollection.sty b/macros/latex/contrib/moderncv/moderncvcollection.sty
index 73db08ed29..aec3beae81 100644
--- a/macros/latex/contrib/moderncv/moderncvcollection.sty
+++ b/macros/latex/contrib/moderncv/moderncvcollection.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcollection}[2021/01/21 v2.1.0 moderncv collections]
+\ProvidesPackage{moderncvcollection}[2021-07-28 v2.2.0 moderncv collections]
%-------------------------------------------------------------------------------
@@ -27,42 +27,48 @@
% creates a new collection
% usage: \collectionnew{<collection name>}
-\newcommand*{\collectionnew}[1]{%
- \newcounter{collection@#1@count}}
+\NewDocumentCommand\collectionnew{m}{%
+ \newcounter{collection@#1@count}%
+}%
% adds an item to a collection
% usage: \collectionadd[<optional key>]{<collection name>}{<item to add>}
-\newcommand*{\collectionadd}[3][]{%
+\NewDocumentCommand\collectionadd{ O{} m m }{%
\expandafter\def\csname collection@#2@item\roman{collection@#2@count}\endcsname{#3}%
- \if\relax\noexpand#1\relax% if #1 is empty
- \else\expandafter\def\csname collection@#2@key\roman{collection@#2@count}\endcsname{#1}\fi%
- \stepcounter{collection@#2@count}}
-
+ \def\optional@FirstArg{#1}%
+ \ifdefempty{\optional@FirstArg}{%
+ \relax% if #1 is empty
+ }{%
+ \expandafter\def\csname collection@#2@key\roman{collection@#2@count}\endcsname{#1}%
+ }%
+ \stepcounter{collection@#2@count}%
+}%
% returns the number of items in a collection
% usage: \collectioncount{<collection name>}
-\newcommand*{\collectioncount}[1]{%
- \value{collection@#1@count}}
-
+\NewDocumentCommand\collectioncount{m}{%
+ \value{collection@#1@count}%
+}%
% gets an item from a collection
% usage: \collectiongetitem{<collection name>}{<element id>}
% where <element id> is an integer between 0 and (collectioncount-1)
-\newcommand*{\collectiongetitem}[2]{%
- \csname collection@#1@item\romannumeral #2\endcsname}
+\NewDocumentCommand\collectiongetitem{m m}{%
+ \csname collection@#1@item\romannumeral #2\endcsname%
+}%
% gets a key from a collection
% usage: \collectiongetkey{<collection name>}{<element id>}
% where <element id> is an integer between 0 and (collectioncount-1)
-\newcommand*{\collectiongetkey}[2]{%
- \csname collection@#1@key\romannumeral #2\endcsname}
-
+\NewDocumentCommand\collectiongetkey{m m}{%
+ \csname collection@#1@key\romannumeral #2\endcsname%
+}%
% loops through a collection and perform the given operation on every element
% usage: \collectionloop{<collection name>}{<operation sequence>}
% where <operation sequence> is the code sequence to be evaluated for each collection item,
% code which can refer to \collectionloopid, \collectionloopkey, \collectionloopitem and
% \collectionloopbreak
\newcounter{collection@iterator}
-\newcommand*{\collectionloopbreak}{\let\iterate\relax}
-\newcommand*{\collectionloop}[2]{%
+\NewDocumentCommand\collectionloopbreak{}{\let\iterate\relax}
+\NewDocumentCommand\collectionloop{m m}{%
\setcounter{collection@iterator}{0}%
\loop\ifnum\value{collection@iterator}<\value{collection@#1@count}%
\def\collectionloopid{\arabic{collection@iterator}}%
@@ -70,14 +76,15 @@
\def\collectionloopkey{\collectiongetkey{#1}{\collectionloopid}}%
#2%
\stepcounter{collection@iterator}%
- \repeat}
+ \repeat%
+}
% loops through a collection and finds the (first) element matching the given key
% usage: \collectionfindbykey{<collection name>}{key>}
-\newcommand*{\collectionfindbykey}[2]{%
+\NewDocumentCommand\collectionfindbykey{m m}{%
\collectionloop{#1}{%
- \ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}}
-
+ \ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}%
+}%
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvcolorblack.sty b/macros/latex/contrib/moderncv/moderncvcolorblack.sty
index 9382609003..96bf928896 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorblack.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorblack.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblack}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: black]
+\ProvidesPackage{moderncvcolorblack}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: black]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorblue.sty b/macros/latex/contrib/moderncv/moderncvcolorblue.sty
index 75a994867b..09d1770ffa 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorblue.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorblue.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorblue}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: blue]
+\ProvidesPackage{moderncvcolorblue}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: blue]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty b/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
index a1c833141c..a27690ea1f 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorburgundy}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: burgundy]
+\ProvidesPackage{moderncvcolorburgundy}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: burgundy]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorgreen.sty b/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
index 5f7deaa7ac..0f4de1fabc 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgreen}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: green]
+\ProvidesPackage{moderncvcolorgreen}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: green]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorgrey.sty b/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
index 988d596902..46e9bed487 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorgrey}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: grey]
+\ProvidesPackage{moderncvcolorgrey}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: grey]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolororange.sty b/macros/latex/contrib/moderncv/moderncvcolororange.sty
index 357cc96d1b..6a63e65eb8 100644
--- a/macros/latex/contrib/moderncv/moderncvcolororange.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolororange.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolororange}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: orange]
+\ProvidesPackage{moderncvcolororange}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: orange]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorpurple.sty b/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
index 7603043045..c1c44e195a 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorpurple}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: purple]
+\ProvidesPackage{moderncvcolorpurple}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: purple]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcolorred.sty b/macros/latex/contrib/moderncv/moderncvcolorred.sty
index 1716781272..e9a689bb1c 100644
--- a/macros/latex/contrib/moderncv/moderncvcolorred.sty
+++ b/macros/latex/contrib/moderncv/moderncvcolorred.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcolorred}[2021/01/21 v2.1.0 modern curriculum vitae and letter color scheme: red]
+\ProvidesPackage{moderncvcolorred}[2021-07-28 v2.2.0 modern curriculum vitae and letter color scheme: red]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvcompatibility.sty b/macros/latex/contrib/moderncv/moderncvcompatibility.sty
index 2a5f15c445..e2a29aaadc 100644
--- a/macros/latex/contrib/moderncv/moderncvcompatibility.sty
+++ b/macros/latex/contrib/moderncv/moderncvcompatibility.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvcompatibility}[2021/01/21 v2.1.0 modern curriculum vitae and letter compatibility patches]
+\ProvidesPackage{moderncvcompatibility}[2021-07-28 v2.2.0 modern curriculum vitae and letter compatibility patches]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvdebugtools.sty b/macros/latex/contrib/moderncv/moderncvdebugtools.sty
index 3e8f81b86a..a19a1928ac 100644
--- a/macros/latex/contrib/moderncv/moderncvdebugtools.sty
+++ b/macros/latex/contrib/moderncv/moderncvdebugtools.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvdebugtools}[2021/01/21 v2.1.0 modern curriculum vitae and letter debug tools]
+\ProvidesPackage{moderncvdebugtools}[2021-07-28 v2.2.0 modern curriculum vitae and letter debug tools]
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvfooti.sty b/macros/latex/contrib/moderncv/moderncvfooti.sty
index 751216c092..b2e8657d99 100644
--- a/macros/latex/contrib/moderncv/moderncvfooti.sty
+++ b/macros/latex/contrib/moderncv/moderncvfooti.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvfooti}[2021/01/21 v2.1.0 modern curriculum vitae and letter footer variant: 1]
+\ProvidesPackage{moderncvfooti}[2021-07-28 v2.2.0 modern curriculum vitae and letter footer variant: 1]
%-------------------------------------------------------------------------------
@@ -85,6 +85,7 @@
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
\flushfoot\@firstfootelementtrue\\}%
+ \ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
@@ -116,6 +117,7 @@
\ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
\flushfoot\@firstfootelementtrue\\}%
+ \ifthenelse{\isundefined{\@born}}{}{\addtofoot{\bornsymbol\@born}\flushfoot\@firstfootelementtrue\\}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadi.sty b/macros/latex/contrib/moderncv/moderncvheadi.sty
index ff447025d7..c7e4af54cb 100644
--- a/macros/latex/contrib/moderncv/moderncvheadi.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadi.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadi}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 1]
+\ProvidesPackage{moderncvheadi}[2021-07-28 v2.2.0 modern curriculum vitae and letter header variant: 1]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -78,6 +78,7 @@
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol\@born}%
\phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
\ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httpslink{\@homepage}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadii.sty b/macros/latex/contrib/moderncv/moderncvheadii.sty
index ecfaf13347..dccd2fc97b 100644
--- a/macros/latex/contrib/moderncv/moderncvheadii.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadii.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadii}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 2]
+\ProvidesPackage{moderncvheadii}[2021-07-28 v2.2.0 modern curriculum vitae and letter header variant: 2]
% details options: "details" or "nodetails" (default)
\@initializeif{\if@details}\@detailsfalse
@@ -140,6 +140,7 @@
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
+ \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadiii.sty b/macros/latex/contrib/moderncv/moderncvheadiii.sty
index d851785326..c13f1bfce4 100644
--- a/macros/latex/contrib/moderncv/moderncvheadiii.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadiii.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiii}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 3]
+\ProvidesPackage{moderncvheadiii}[2021-07-28 v2.2.0 modern curriculum vitae and letter header variant: 3]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -90,7 +90,8 @@
\ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
- \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
+ \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\}%
+ \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadiv.sty b/macros/latex/contrib/moderncv/moderncvheadiv.sty
index 2f9b8e0587..d8cf4f5b26 100644
--- a/macros/latex/contrib/moderncv/moderncvheadiv.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadiv.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadiv}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 4]
+\ProvidesPackage{moderncvheadiv}[2021-07-28 v2.2.0 modern curriculum vitae and letter header variant: 4]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -107,6 +107,7 @@
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \ifthenelse{\isundefined{\@born}}{}{\makenewline\hbox to 1.0em{\bornsymbol}~\@born}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
diff --git a/macros/latex/contrib/moderncv/moderncvheadv.sty b/macros/latex/contrib/moderncv/moderncvheadv.sty
index 2f8478596b..1bed0962c9 100644
--- a/macros/latex/contrib/moderncv/moderncvheadv.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadv.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadv}[2021/01/21 v2.1.0 modern curriculum vitae and letter header variant: 5]
+\ProvidesPackage{moderncvheadv}[2021-07-28 v2.2.0 modern curriculum vitae and letter header variant: 5]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -79,6 +79,7 @@
\ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
\ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \ifthenelse{\isundefined{\@born}}{}{\makenewline\bornsymbol~\@born}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}%
\ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}%
@@ -91,11 +92,16 @@
\newlength{\makecvheadpictureboxskip}%
\setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}%
\namestyle{\@firstname\ \@lastname}%
- \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}\\[2.5em]%
- % optional quote
- \ifthenelse{\isundefined{\@quote}}%
- {}%
- {\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ \ifthenelse{\equal{\@title}{}}{
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {\\[1.25em]\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}
+ }{
+ \\[1.25em]\titlestyle{\@title}\\[2.5em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}}}%
\par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
% underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv
diff --git a/macros/latex/contrib/moderncv/moderncvheadvi.sty b/macros/latex/contrib/moderncv/moderncvheadvi.sty
index e6478795d8..0734552487 100644
--- a/macros/latex/contrib/moderncv/moderncvheadvi.sty
+++ b/macros/latex/contrib/moderncv/moderncvheadvi.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvheadvi}[2021/01/21 v2.1.0 modern curriculum vitae and letter header: 6]
+\ProvidesPackage{moderncvheadvi}[2021-07-28 v2.2.0 modern curriculum vitae and letter header: 6]
% details options: "details" (default) or "nodetails"
\@initializeif{\if@details}\@detailsfalse
@@ -112,6 +112,7 @@
\ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
\ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
\flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
+ \ifthenelse{\isundefined{\@born}}{}{\addtomakeheaddetails{\bornsymbol\@born}}%
\collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
\addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
\ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
diff --git a/macros/latex/contrib/moderncv/moderncviconsawesome.sty b/macros/latex/contrib/moderncv/moderncviconsawesome.sty
index f821130dd6..4c833d32d6 100644
--- a/macros/latex/contrib/moderncv/moderncviconsawesome.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsawesome.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsawesome}[2021/01/21 v2.1.0 modern curriculum vitae and letter icons: awesome]
+\ProvidesPackage{moderncviconsawesome}[2021-07-28 v2.2.0 modern curriculum vitae and letter icons: awesome]
%-------------------------------------------------------------------------------
% required packages
@@ -29,6 +29,7 @@
%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls
+
\renewcommand*{\addresssymbol} {}
\renewcommand*{\mobilephonesymbol} {{\small\faMobile}~}
\renewcommand*{\fixedphonesymbol} {{\small\faPhone}~}
@@ -45,9 +46,14 @@
\renewcommand*{\skypesocialsymbol} {{\small\faSkype}~}
\renewcommand*{\orcidsocialsymbol} {{\small\aiOrcid}~}
\renewcommand*{\researchgatesocialsymbol} {{\small\aiResearchGate}~}
-\renewcommand*{\researchidsocialsymbol} {{\small\aiResearcherID}~}
+\renewcommand*{\researcheridsocialsymbol} {{\small\aiResearcherID}~} % alternative: \aiResearcherIDSquare
\renewcommand*{\telegramsocialsymbol} {{\small\faTelegram}~}
\renewcommand*{\googlescholarsocialsymbol}{{\small\aiGoogleScholar}~}
+\renewcommand*{\telegramsocialsymbol} {{\small\faTelegram}~}
+\renewcommand*{\whatsappsocialsymbol} {{\small\faWhatsapp}~}
+\renewcommand*{\signalsocialsymbol} {}
+\renewcommand*{\matrixsocialsymbol} {}
+\renewcommand*{\bornsymbol} {{\small\faAsterisk}~}
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncviconsletters.sty b/macros/latex/contrib/moderncv/moderncviconsletters.sty
index 79bb73f03a..20c74f655c 100644
--- a/macros/latex/contrib/moderncv/moderncviconsletters.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsletters.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsletters}[2021/01/21 v2.1.0 modern curriculum vitae and letter icons: letters]
+\ProvidesPackage{moderncviconsletters}[2021-07-28 v2.2.0 modern curriculum vitae and letter icons: letters]
%-------------------------------------------------------------------------------
@@ -50,9 +50,13 @@
\renewcommand*{\skypesocialsymbol} {\textbf{sk}~}
\renewcommand*{\orcidsocialsymbol} {\textbf{orcid}~}
\renewcommand*{\researchgatesocialsymbol} {\textbf{rg}~}
-\renewcommand*{\researchidsocialsymbol} {\textbf{ri}~}
+\renewcommand*{\researcheridsocialsymbol} {\textbf{ri}~}
\renewcommand*{\telegramsocialsymbol} {\textbf{tg}~}
+\renewcommand*{\whatsappsocialsymbol} {\textbf{wa}~}
+\renewcommand*{\signalsocialsymbol} {\textbf{si}~}
+\renewcommand*{\matrixsocialsymbol} {\textbf{ma}~}
\renewcommand*{\googlescholarsocialsymbol}{\textbf{gs}~}
+\renewcommand*{\bornsymbol} {\textbf{B}~}
\renewcommand*{\listitemsymbol} {\labelitemi~}
diff --git a/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty b/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
index 43b4602c57..34962fab46 100644
--- a/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
+++ b/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncviconsmarvosym}[2021/01/21 v2.1.0 modern curriculum vitae and letter icons: marvosym]
+\ProvidesPackage{moderncviconsmarvosym}[2021-07-28 v2.2.0 modern curriculum vitae and letter icons: marvosym]
%-------------------------------------------------------------------------------
@@ -227,9 +227,12 @@
\renewcommand*{\stackoverflowsocialsymbol}{}
\renewcommand*{\googlescholarsocialsymbol}{}
\renewcommand*{\telegramsocialsymbol}{}
+\renewcommand*{\whatsappsocialsymbol}{}
+\renewcommand*{\signalsocialsymbol}{}
+\renewcommand*{\matrixsocialsymbol}{}
\renewcommand*{\orcidsocialsymbol}{}
\renewcommand*{\researchgatesocialsymbol}{}
-\renewcommand*{\researchidsocialsymbol}{}
+\renewcommand*{\researcheridsocialsymbol}{}
\renewcommand*{\bitbucketsocialsymbol}{}
\renewcommand*{\skypesocialsymbol} {%
\protect\raisebox{-0.15em}{%
@@ -238,7 +241,7 @@
\protect\path[fill=color2,even odd rule]
(487.6550,288.9690) .. controls (489.0610,278.5690) and (489.8700,267.9960) ..
(489.8700,257.2330) .. controls (489.8700,128.0770) and (384.5990,23.3610) ..
- (254.7670,23.3610) .. controls (241.8630,23.3610) and (229.2120,24.4210) ..
+ (254.7670,23.3610) .. controls (241.8630,23.3610) and (229.2120,24.4210) ..
(216.9010,26.4410) .. controls (194.8280,12.0570) and (168.5590,3.6740) ..
(140.2880,3.6740) .. controls (62.7660,3.6740) and (0.0000,66.4820) ..
(0.0000,143.9800) .. controls (0.0000,172.1780) and (8.2990,198.3740) ..
@@ -264,6 +267,7 @@
\protect\end{scope}%
\protect\end{tikzpicture}}%
~}
+ \renewcommand*{\bornsymbol}{}
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvskillmatrix.sty b/macros/latex/contrib/moderncv/moderncvskillmatrix.sty
index d339f35473..479edeecb1 100644
--- a/macros/latex/contrib/moderncv/moderncvskillmatrix.sty
+++ b/macros/latex/contrib/moderncv/moderncvskillmatrix.sty
@@ -203,7 +203,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvskillmatrix}[2021/01/21 v2.1.0 modern curriculum vitae and letter skill matrix]
+\ProvidesPackage{moderncvskillmatrix}[2021-07-28 v2.2.0 modern curriculum vitae and letter skill matrix]
% The definitions need to be adjusted depending on which moderncvbody<i-v>.sty style is usde.
% body type options: "moderncvbodyi" (default), "moderncvbodyii", "moderncvbodyiii", "moderncvbodyiv" or "moderncvbodyv"
diff --git a/macros/latex/contrib/moderncv/moderncvstylebanking.sty b/macros/latex/contrib/moderncv/moderncvstylebanking.sty
index e9ced7fba1..2cfc75e98a 100644
--- a/macros/latex/contrib/moderncv/moderncvstylebanking.sty
+++ b/macros/latex/contrib/moderncv/moderncvstylebanking.sty
@@ -10,7 +10,7 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylebanking}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: banking]
+\ProvidesPackage{moderncvstylebanking}[2021-07-28 v2.2.0 modern curriculum vitae and letter style scheme: banking]
% body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
\@initializecommand{\moderncvstylebodyoptions}{}
@@ -24,8 +24,13 @@
\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}}
\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}}
+% toggle use of symbol fonts.
+\@initializeif{\if@symbols}\@symbolsfalse
+\DeclareOption{symbols} {\@symbolstrue}
+\DeclareOption{nosymbols} {\@symbolsfalse}
+
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{mixedrules,left}
+\ExecuteOptions{mixedrules,left,symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
@@ -49,14 +54,18 @@
%\fi
% symbols
-\RequirePackage{ifxetex}
-\ifxetexorluatex
- \moderncvicons{awesome}
+\if@symbols
+ \ifxetexorluatex
+ \moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
+ \else
+ \moderncvicons{marvosym} % use marvosym symbols pdflatex is used
+ \fi
\else
- \moderncvicons{marvosym}
+ \moderncvicons{letters} % do not use symbols, use letters
\fi
+
%-------------------------------------------------------------------------------
% header, body & footer
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/moderncvstylecasual.sty b/macros/latex/contrib/moderncv/moderncvstylecasual.sty
index a3eed14091..f5918309f5 100644
--- a/macros/latex/contrib/moderncv/moderncvstylecasual.sty
+++ b/macros/latex/contrib/moderncv/moderncvstylecasual.sty
@@ -10,15 +10,20 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylecasual}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: casual]
+\ProvidesPackage{moderncvstylecasual}[2021-07-28 v2.2.0 modern curriculum vitae and letter style scheme: casual]
% head section alignment options: "left" (default) or "right"
\@initializecommand{\moderncvstyleheadoptions}{}
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+% toggle use of symbol fonts.
+\@initializeif{\if@symbols}\@symbolsfalse
+\DeclareOption{symbols} {\@symbolstrue}
+\DeclareOption{nosymbols} {\@symbolsfalse}
+
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{right}
+\ExecuteOptions{right,symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -30,17 +35,20 @@
% \setsansfont{Latin Modern Sans}
% \setmathfont{Latin Modern Math}
%\else
- \IfFileExists{lmodern.sty}%
- {\RequirePackage{lmodern}}%
- {}
+% \IfFileExists{lmodern.sty}%
+% {\RequirePackage{lmodern}}%
+% {}
%\fi
% symbols
-\RequirePackage{ifxetex}
-\ifxetexorluatex
- \moderncvicons{awesome}
+\if@symbols
+ \ifxetexorluatex
+ \moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
+ \else
+ \moderncvicons{marvosym} % use marvosym symbols pdflatex is used
+ \fi
\else
- \moderncvicons{marvosym}
+ \moderncvicons{letters} % do not use symbols, use letters
\fi
diff --git a/macros/latex/contrib/moderncv/moderncvstyleclassic.sty b/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
index 2f94813368..fe4a511eec 100644
--- a/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
+++ b/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
@@ -10,15 +10,20 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleclassic}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: classic]
+\ProvidesPackage{moderncvstyleclassic}[2021-07-28 v2.2.0 modern curriculum vitae and letter style scheme: classic]
% head section alignment options: "left" (default) or "right"
\@initializecommand{\moderncvstyleheadoptions}{}
\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+% toggle use of symbol fonts.
+\@initializeif{\if@symbols}\@symbolsfalse
+\DeclareOption{symbols} {\@symbolstrue}
+\DeclareOption{nosymbols} {\@symbolsfalse}
+
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{left}
+\ExecuteOptions{left,symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -30,17 +35,20 @@
% \setsansfont{Latin Modern Sans}
% \setmathfont{Latin Modern Math}
%\else
- \IfFileExists{lmodern.sty}%
- {\RequirePackage{lmodern}}%
- {}
+% \IfFileExists{lmodern.sty}%
+% {\RequirePackage{lmodern}}%
+% {}
%\fi
% symbols
-\RequirePackage{ifxetex}
-\ifxetexorluatex
- \moderncvicons{awesome}
+\if@symbols
+ \ifxetexorluatex
+ \moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
+ \else
+ \moderncvicons{marvosym} % use marvosym symbols pdflatex is used
+ \fi
\else
- \moderncvicons{marvosym}
+ \moderncvicons{letters} % do not use symbols, use letters
\fi
diff --git a/macros/latex/contrib/moderncv/moderncvstyleempty.sty b/macros/latex/contrib/moderncv/moderncvstyleempty.sty
index cadc9307c0..f41e0680b6 100644
--- a/macros/latex/contrib/moderncv/moderncvstyleempty.sty
+++ b/macros/latex/contrib/moderncv/moderncvstyleempty.sty
@@ -10,22 +10,42 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleempty}[2021/01/21 v2.1.0 modern curriculum vitae scheme: empty]
-
+\ProvidesPackage{moderncvstyleempty}[2021-07-28 v2.2.0 modern curriculum vitae scheme: empty]
%-------------------------------------------------------------------------------
% required packages
%-------------------------------------------------------------------------------
-
%-------------------------------------------------------------------------------
% package options
%-------------------------------------------------------------------------------
+% toggle use of symbol fonts.
+\@initializeif{\if@symbols}\@symbolsfalse
+\DeclareOption{symbols} {\@symbolstrue}
+\DeclareOption{nosymbols} {\@symbolsfalse}
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{symbols}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
% style definition
%-------------------------------------------------------------------------------
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% symbols
+\if@symbols
+ \ifxetexorluatex
+ \moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
+ \else
+ \moderncvicons{marvosym} % use marvosym symbols pdflatex is used
+ \fi
+\else
+ \moderncvicons{letters} % do not use symbols, use letters
+\fi
+
% see moderncv.cls for command declarations that needs to be implemented, e.g. \maketitle, \section, \subsections, \cvline, etc
\endinput
diff --git a/macros/latex/contrib/moderncv/moderncvstylefancy.sty b/macros/latex/contrib/moderncv/moderncvstylefancy.sty
index 940f943d52..5756eec86b 100644
--- a/macros/latex/contrib/moderncv/moderncvstylefancy.sty
+++ b/macros/latex/contrib/moderncv/moderncvstylefancy.sty
@@ -10,10 +10,15 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstylefancy}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: fancy]
+\ProvidesPackage{moderncvstylefancy}[2021-07-28 v2.2.0 modern curriculum vitae and letter style scheme: fancy]
+
+% toggle use of symbol fonts.
+\@initializeif{\if@symbols}\@symbolsfalse
+\DeclareOption{symbols} {\@symbolstrue}
+\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{}
+\ExecuteOptions{symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
%-------------------------------------------------------------------------------
@@ -30,12 +35,16 @@
{}
%\fi
+
% symbols
-\RequirePackage{ifxetex}
-\ifxetexorluatex
- \moderncvicons{awesome}
+\if@symbols
+ \ifxetexorluatex
+ \moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
+ \else
+ \moderncvicons{marvosym} % use marvosym symbols pdflatex is used
+ \fi
\else
- \moderncvicons{marvosym}
+ \moderncvicons{letters} % do not use symbols, use letters
\fi
diff --git a/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty b/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
index 13e270c85e..6a2921e681 100644
--- a/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
+++ b/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
@@ -10,13 +10,17 @@
% identification
%-------------------------------------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{moderncvstyleoldstyle}[2021/01/21 v2.1.0 modern curriculum vitae and letter style scheme: oldstyle]
+\ProvidesPackage{moderncvstyleoldstyle}[2021-07-28 v2.2.0 modern curriculum vitae and letter style scheme: oldstyle]
+
+% toggle use of symbol fonts.
+\@initializeif{\if@symbols}\@symbolsfalse
+\DeclareOption{symbols} {\@symbolstrue}
+\DeclareOption{nosymbols} {\@symbolsfalse}
\DeclareOption*{}% avoid choking on unknown options
-\ExecuteOptions{}
+\ExecuteOptions{symbols}
\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
-
%-------------------------------------------------------------------------------
% fonts & icons
%-------------------------------------------------------------------------------
@@ -35,7 +39,15 @@
%\fi
% symbols
-\moderncvicons{letters}
+\if@symbols
+ \ifxetexorluatex
+ \moderncvicons{awesome} % use font-awesome symbols if lualatex or xelatex is used
+ \else
+ \moderncvicons{marvosym} % use marvosym symbols pdflatex is used
+ \fi
+\else
+ \moderncvicons{letters} % do not use symbols, use letters
+\fi
%-------------------------------------------------------------------------------
diff --git a/macros/latex/contrib/moderncv/template.tex b/macros/latex/contrib/moderncv/template.tex
index 77ea54ad98..1083fc8758 100644
--- a/macros/latex/contrib/moderncv/template.tex
+++ b/macros/latex/contrib/moderncv/template.tex
@@ -20,13 +20,14 @@
% adjust the page margins
\usepackage[scale=0.75]{geometry}
+\setlength{\footskip}{122.40004pt} % depending on the amount of information in the footer, you need to change this value. comment this line out and set it to the size given in the warning
%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
%\setlength{\makecvheadnamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
-
% personal data
\name{John}{Doe}
-\title{Resumé title} % optional, remove / comment the line if not wanted
+\title{Résumé title} % optional, remove / comment the line if not wanted
+\born{4 July 1776} % optional, remove / comment the line if not wanted
\address{street and number}{postcode city}{country}% optional, remove / comment the line if not wanted; the "postcode city" and "country" arguments can be omitted or provided empty
\phone[mobile]{+1~(234)~567~890} % optional, remove / comment the line if not wanted; the optional "type" of the phone can be "mobile" (default), "fixed" or "fax"
\phone[fixed]{+2~(345)~678~901}
@@ -36,7 +37,7 @@
% Social icons
\social[linkedin]{john.doe} % optional, remove / comment the line if not wanted
-\social[xing]{john\_doe} % optional, remove / comment the line if not wanted
+\social[xing]{john_doe} % optional, remove / comment the line if not wanted
\social[twitter]{jdoe} % optional, remove / comment the line if not wanted
\social[github]{jdoe} % optional, remove / comment the line if not wanted
\social[gitlab]{jdoe} % optional, remove / comment the line if not wanted
@@ -47,7 +48,10 @@
\social[researchgate]{jdoe} % optional, remove / comment the line if not wanted
\social[researcherid]{jdoe} % optional, remove / comment the line if not wanted
\social[telegram]{jdoe} % optional, remove / comment the line if not wanted
-\social[googlescholar]{googlescholarid} % optional, remove / comment the line if not wanted
+\social[whatsapp]{12345678901} % optional, remove / comment the line if not wanted
+\social[signal]{12345678901} % optional, remove / comment the line if not wanted
+\social[matrix]{@johndoe:matrix.org} % optional, remove / comment the line if not wanted
+\social[googlescholar]{googlescholarid} % optional, remove / comment the line if not wanted
\extrainfo{additional information} % optional, remove / comment the line if not wanted
@@ -101,7 +105,7 @@ Detailed achievements:
\item Achievement 3
\item Achievement 4
\end{itemize}}
-\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2\newline{}}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2\newline{}Description line 3}
\subsection{Miscellaneous}
\cventry{year--year}{Job title}{Employer}{City}{}{Description}
diff --git a/macros/latex/contrib/palette/README.md b/macros/latex/contrib/palette/README.md
index 9e74362159..ad51848050 100644
--- a/macros/latex/contrib/palette/README.md
+++ b/macros/latex/contrib/palette/README.md
@@ -1,4 +1,4 @@
-# The LaTeX package palette - version 1.0.0 (2021/07/26)
+# The LaTeX package palette - version 1.0.0 (2021/07/27)
**palette** provides the ability to create custom color palettes and symbol palettes ("symbol suites"), and swap one palette in for another easily. It also allows the user to create a variable that represents the selected palette, and provides checks in case the variable represents a palette that does not exist.
diff --git a/macros/latex/contrib/palette/palette.dtx b/macros/latex/contrib/palette/palette.dtx
index 7697b75f6c..b66fc4875e 100644
--- a/macros/latex/contrib/palette/palette.dtx
+++ b/macros/latex/contrib/palette/palette.dtx
@@ -17,7 +17,7 @@
\iffalse
%</internal>
%<*readme>
-# The LaTeX package palette - version 1.0.0 (2021/07/26)
+# The LaTeX package palette - version 1.0.0 (2021/07/27)
**palette** provides the ability to create custom color palettes and symbol palettes ("symbol suites"), and swap one palette in for another easily. It also allows the user to create a variable that represents the selected palette, and provides checks in case the variable represents a palette that does not exist.
@@ -73,14 +73,14 @@ To produce the documentation, run palette.dtx through pdflatex.
This package consists of the file palette.dtx,
and the generated files colorpalette.sty,
- symbolsuite.sty,
+ symbolpalette.sty,
palette.pdf.
\endpostamble
\usedir{tex/latex/palette}
\generate{
\file{colorpalette.sty}{\from{\jobname.dtx}{color}}
- \file{symbolsuite.sty}{\from{\jobname.dtx}{symbol}}
+ \file{symbolpalette.sty}{\from{\jobname.dtx}{symbol}}
}
\obeyspaces
@@ -90,7 +90,7 @@ This package consists of the file palette.dtx,
\Msg{* files into a directory searched by TeX: *}
\Msg{* *}
\Msg{* colorpalette.sty *}
-\Msg{* symbolsuite.sty *}
+\Msg{* symbolpalette.sty *}
\Msg{* *}
\Msg{* To produce the documentation, run the file *}
\Msg{* palette.dtx through LaTeX. *}
@@ -124,14 +124,13 @@ This package consists of the file palette.dtx,
%<color|symbol>\NeedsTeXFormat{LaTeX2e}
%<color>\ProvidesPackage{colorpalette}
%<symbol>\ProvidesPackage{symbolsuite}
-%<color|symbol>[2021/07/26 v1.0.0 Create palettes for colors and symbols]
+%<color|symbol>[2021/07/27 v1.0.0 Create palettes for colors and symbols]
%<color>\RequirePackage{xcolor}
%<*color|symbol>
-\RequirePackage{ifallfalse}
\RequirePackage{macrolist}
%</color|symbol>
%<*driver>
-\ProvidesFile{\jobname.dtx}[2021/07/26 v1.0.0 Create palettes for colors and symbols]
+\ProvidesFile{\jobname.dtx}[2021/07/27 v1.0.0 Create palettes for colors and symbols]
\documentclass{ltxdoc}
\EnableCrossrefs
@@ -148,7 +147,7 @@ This package consists of the file palette.dtx,
%
% \GetFileInfo{\jobname.dtx}
%
-% \changes{v1.0.0}{2021/07/26}{Initial version}
+% \changes{v1.0.0}{2021/07/27}{Initial version}
%
% \title{\textsf{palette} -- Create palettes for colors and symbols}
% \author{Dennis Chen \\ proofprogram@gmail.com}
@@ -157,7 +156,7 @@ This package consists of the file palette.dtx,
% \maketitle
%
% \begin{abstract}
-% The \textsf{palette} package provides \textsf{colorpalette.sty} and \textsf{symbolsuite.sty}, which can be used to create and manage palettes of colors and symbols, respectively.
+% The \textsf{palette} package provides \textsf{colorpalette.sty} and \textsf{symbolpalette.sty}, which can be used to create and manage palettes of colors and symbols, respectively.
% \end{abstract}
%
% \section{Overview}
@@ -294,7 +293,9 @@ This package consists of the file palette.dtx,
%<color>\newcommand\colorpalette@error@color[2]{\PackageError{colorpalette}{The color `#2' passed in is not a defined color of theme `#1'}{}}
% \fi
%
-% \section{symbolsuite.sty}
+% \section{symbolpalette.sty}
+%
+% Despite the name \textsf{symbolpalette} (which is used to identify it as one of the files of the package \textsf{palette}), the main keyword is a \emph{suite}. This is because the keyword \emph{palette} is already used for \textsf{colorpalette}.
%
% This package is nearly analogous to \textsf{colorpalette}. A \emph{suite} is analogous to a \emph{palette}, and a \emph{symbol} is analogous to a \emph{color}. \emph{Themes} are used in both packages.
%
diff --git a/macros/latex/contrib/palette/palette.pdf b/macros/latex/contrib/palette/palette.pdf
index 31227e386e..12a95fc0b7 100644
--- a/macros/latex/contrib/palette/palette.pdf
+++ b/macros/latex/contrib/palette/palette.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 0c0c7545fa..2c92c252dd 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,11 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.23]
+
+### Fixed
+- Load order of `xparse` (issue #518)
+
## [v3.0.22]
### Changed
@@ -1449,7 +1454,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.22...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.23...HEAD
+[v3.0.23]: https://github.com/josephwright/siunitx/compare/v3.0.22...v3.0.23
[v3.0.22]: https://github.com/josephwright/siunitx/compare/v3.0.21...v3.0.22
[v3.0.21]: https://github.com/josephwright/siunitx/compare/v3.0.20...v3.0.21
[v3.0.20]: https://github.com/josephwright/siunitx/compare/v3.0.19...v3.0.20
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 4327acc11e..7a4b9ba709 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 73f54d71eb..9a53dd6c88 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2021-07-22} {3.0.22}
+\ProvidesExplPackage {siunitx} {2021-07-26} {3.0.23}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.ins b/macros/latex/contrib/siunitx/siunitx.ins
index 32ef6f900a..e6d4dae7f6 100644
--- a/macros/latex/contrib/siunitx/siunitx.ins
+++ b/macros/latex/contrib/siunitx/siunitx.ins
@@ -96,8 +96,8 @@ This work consists of the files siunitx.dtx,
\from{siunitx-command.dtx} {package}
\from{siunitx-emulation.dtx} {package,options}
\from{siunitx.dtx} {package,options}
- \from{siunitx-emulation.dtx} {package,interfaces}
\from{siunitx.dtx} {package,interfaces}
+ \from{siunitx-emulation.dtx} {package,interfaces}
}%
}
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 0d5c442a74..0bca76872a 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex
index c37e3682e0..735ab2d0d8 100644
--- a/macros/latex/contrib/siunitx/siunitx.tex
+++ b/macros/latex/contrib/siunitx/siunitx.tex
@@ -1191,7 +1191,7 @@ example all sanserif math.
\DescribeOption{text-family-to-math}
\DescribeOption{text-series-to-math}
-The options \opt{text-family-to-math} and \opt{text-family-to-math} can be
+The options \opt{text-family-to-math} and \opt{text-series-to-math} can be
used to match (as far as possible) math mode output to the surrounding text.
These options work by detecting the current text settings and making the
appropriate choice in math mode.
diff --git a/macros/latex/contrib/spbmark/spbmark.pdf b/macros/latex/contrib/spbmark/spbmark.pdf
index b26a2bb325..f1e0305048 100644
--- a/macros/latex/contrib/spbmark/spbmark.pdf
+++ b/macros/latex/contrib/spbmark/spbmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/spbmark.sty b/macros/latex/contrib/spbmark/spbmark.sty
index 7df09aaeec..3a35bcd11f 100644
--- a/macros/latex/contrib/spbmark/spbmark.sty
+++ b/macros/latex/contrib/spbmark/spbmark.sty
@@ -7,9 +7,9 @@
% conditions of the CC-BY 4.0 License.
% The latest version of this license is in
% https://creativecommons.org/licenses/by/4.0/legalcode
-\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\NeedsTeXFormat{LaTeX2e}[2018/12/31]
\RequirePackage{xparse,l3keys2e}
-\ProvidesExplPackage{spbmark}{2021/07/26}{1.06}
+\ProvidesExplPackage{spbmark}{2021/07/28}{1.08}
{Customize superscripts and subscripts}
\cs_new_protected:Npn \spb_define:n { \keys_define:nn { spbmark } }
@@ -55,12 +55,16 @@
\tl_set:Nn \l__spb_boxb_wd_tl { \box_wd:N \l_tmpb_box }
\tl_set:Nn \l__spb_box_max_wd_tl
{ \dim_max:nn { \l__spb_boxa_wd_tl } { \l__spb_boxb_wd_tl } }
-\cs_new:Npn \spb_tmp_boxa_use_vmove:n #1
+\providecommand{\hbox_overlap_center:n}[1]
+ { \hbox_to_zero:n { \hss #1\hss } }
+\cs_new:Npn \spb_boxa_move_up:n #1
{ \box_move_up:nn {#1} { \box_use:N \l_tmpa_box } }
-\cs_new:Npn \spb_hbox_overlap_position:n #1
+\cs_new:Npn \spb_boxb_move_down:n #1
+ { \box_move_down:nn {#1} { \box_use:N \l_tmpb_box } }
+\cs_new:Npn \spb_hbox_overlap_vshift:n #1#2
{
- \use:c { hbox_overlap_#1:n } { \box_use:N \l_tmpa_box }
- \use:c { hbox_overlap_#1:n } { \box_use:N \l_tmpb_box }
+ \use:c { hbox_overlap_#2:n } { \spb_boxa_move_up:n {#1} }
+ \use:c { hbox_overlap_#2:n } { \spb_boxb_move_down:n {#1} }
}
\cs_new:Npn \spb_math_print_store:nnn #1#2#3
{
@@ -128,23 +132,23 @@
{ \spb_math_print_store:nnn {##4} {#1} {##5} }
{ \spb_text_print_store:nnn {##4} {#1} {##5} }
}
- \hbox_set:Nn \l_tmpb_box
+ \hbox_set:Nn \l_tmpa_box
{
\dim_compare:nNnTF {##6} < { 0pt }
{
\hbox_overlap_left:n
{
\hbox_to_wd:nn { \l__spb_boxa_wd_tl - ##6 }
- { \spb_tmp_boxa_use_vmove:n {##2}\hss }
+ { \spb_boxa_move_up:n {##2}\hss }
}
}
{
\hbox_to_wd:nn { \l__spb_boxa_wd_tl + ##6 }
- { \hss\spb_tmp_boxa_use_vmove:n {##2} }
+ { \hss\spb_boxa_move_up:n {##2} }
}
}
\spb_box_ht_dp_assign:nn ##3
- \box_use:N \l_tmpb_box
+ \box_use:N \l_tmpa_box
}
}
\NewDocumentCommand{\supersub}
@@ -163,10 +167,6 @@
{ \spb_math_print_store:nnnn {#4} {#5} {#8} {#6} }
{ \spb_text_print_store:nnnn {#4} {#5} {#8} {#6} }
}
- \hbox_set:Nn \l_tmpa_box
- { \box_move_up:nn {#2} { \box_use:N \l_tmpa_box } }
- \hbox_set:Nn \l_tmpb_box
- { \box_move_down:nn {#2} { \box_use:N \l_tmpb_box } }
\str_case:onF {#3}
{
{ l } { \use_i:nnn }
@@ -182,14 +182,17 @@
{
\hbox_overlap_left:n
{
- \spb_hbox_overlap_position:n { right }
+ \spb_hbox_overlap_vshift:n {#2} { right }
\skip_horizontal:n { -#7 }
}
}
{
- \skip_horizontal:n {#7}
- \spb_hbox_overlap_position:n { right }
- \skip_horizontal:n { \l__spb_box_max_wd_tl }
+ \hbox:n
+ {
+ \skip_horizontal:n {#7}
+ \spb_hbox_overlap_vshift:n {#2} { right }
+ \skip_horizontal:n { \l__spb_box_max_wd_tl }
+ }
}
}
{
@@ -197,14 +200,17 @@
{
\hbox_overlap_left:n
{
- \spb_hbox_overlap_position:n { center }
+ \spb_hbox_overlap_vshift:n {#2} { center }
\skip_horizontal:n { \l__spb_box_max_wd_tl/2 - #7 }
}
}
{
- \skip_horizontal:n { \l__spb_box_max_wd_tl/2 + #7 }
- \spb_hbox_overlap_position:n { center }
- \skip_horizontal:n { \l__spb_box_max_wd_tl/2 }
+ \hbox:n
+ {
+ \skip_horizontal:n { \l__spb_box_max_wd_tl/2 + #7 }
+ \spb_hbox_overlap_vshift:n {#2} { center }
+ \skip_horizontal:n { \l__spb_box_max_wd_tl/2 }
+ }
}
}
{
@@ -212,13 +218,16 @@
{
\hbox_overlap_left:n
{
- \spb_hbox_overlap_position:n { left }
+ \spb_hbox_overlap_vshift:n {#2} { left }
\skip_horizontal:n { -#7 }
}
}
{
- \skip_horizontal:n { \l__spb_box_max_wd_tl + #7 }
- \spb_hbox_overlap_position:n { left }
+ \hbox:n
+ {
+ \skip_horizontal:n { \l__spb_box_max_wd_tl + #7 }
+ \spb_hbox_overlap_vshift:n {#2} { left }
+ }
}
}
}
diff --git a/macros/latex/contrib/spbmark/spbmark.tex b/macros/latex/contrib/spbmark/spbmark.tex
index 1198c98708..52d32744ce 100644
--- a/macros/latex/contrib/spbmark/spbmark.tex
+++ b/macros/latex/contrib/spbmark/spbmark.tex
@@ -6,8 +6,8 @@
{
package = spbmark,
title = the spbmark package,
- version = v1.06,
- date = 2021/07/26,
+ version = v1.08,
+ date = 2021/07/28,
authors = Qu Yi,
info = Customize superscript and subscript,
email = quee123@foxmail.com,
@@ -23,6 +23,26 @@
pre-output = {\parindent = 0em}
}
+\makeatletter
+\newcommand{\splitmeta}[2]
+ {%
+ \ensuremath{\langle}%
+ \textcolor{meta}{\argumentformat #1}%
+ \ensuremath{\rangle,\langle}%
+ \textcolor{meta}{\argumentformat #2}%
+ \ensuremath{\rangle}%
+ }
+\newcommand{\newsplitarg}[4][\splitmeta]
+ {
+ \newcommand{#2}[2]
+ {\code{\textcolor{argument}{#3\textnormal{#1{##1}{##2}}#4}}}
+ }
+\newcommand{\kvsplit}[3]
+ {\item\code{\option{#1}\cnltx@isvalue\splitmarg{#2}{#3}}}
+\newsplitarg{\splitoarg}{[}{]}
+\newsplitarg{\splitmarg}{\{}{\}}
+\makeatother
+
\begin{document}
\section{Macro package options}
@@ -37,19 +57,17 @@
\section{User commands}
There are currently three commands to set superscript and subscript. Their format can be set temporarily using the optional parameters of the command, or set globally using a key-value list, see section \ref{sec:global control interface}.
\begin{commands}
- \command{super}[\sarg\oarg{vshift}\oarg{height,depth}\darg{code}\marg{content}\oarg{hshift}]
- This is a superscript output command.
- \command{sub}[\sarg\oarg{vshift}\oarg{height,depth}\darg{code}\marg{content}\oarg{hshift}]
- This is a subscript output command.
+ \command{super}[\sarg\oarg{vshift}\splitoarg{height}{depth}\darg{code}\marg{content}\oarg{hshift}]
+ This is a superscript output command. If \meta{vshift} or \meta{hshift} is a positive value, the superscript moves up or to the right, if it's negative, the superscript moves down or to the left.
+ \command{sub}[\sarg\oarg{vshift}\splitoarg{height}{depth}\darg{code}\marg{content}\oarg{hshift}]
+ This is a subscript output command. If \meta{vshift} or \meta{hshift} is a positive value, the subscript moves down or to the right, if it's negative, the subscript moves up or to the left.
\command{supersub}[\sarg\oarg{vsep}\oarg{align}\darg{sup code}\marg{sup cont}\marg{sub cont}\oarg{hshift}\darg{sub code}]
- This is a command that outputs both superscript and subscript at the same time.
+ This is a command that outputs both superscript and subscript at the same time. The \meta{vsep} represents the vertical spacing between superscript and subscript, same as option \option{supersubsep}. The parameters of \meta{align} are the same as the \option{supersubalign}.
\end{commands}
These commands can match the corresponding pattern depending on whether they are currently in text mode or mathematical mode, or they can use an asterisk variant to force the mathematical pattern.
-The \meta{vshift} and \meta{hshift} represent respectively vertical and horizontal offsets of superscript or subscript, their default value is \code{0pt}. If it is positive, move up or right, or if it is negative, move left or down. The parameters of \meta{script align} are the same as the \option{supersubalign}.
-
-The optional parameter \meta{height,depth} generally does not need to be used. The \meta{height} and \meta{depth} are separated by commas. Only the front part indicates the height of the superscript or subscript, and only the back part indicates the depth.
+The optional parameter \splitmeta{height}{depth} generally does not need to be used. The \meta{height} and \meta{depth} are separated by commas. Only the front part indicates the \meta{height} of the superscript or subscript, and only the back part indicates the \meta{depth}.
The \meta{code} is used to format superscript and subscript, and can insert commands such as fonts or colors. The last command in the code can take an argument, which is either a superscript or a subscript.
@@ -92,7 +110,7 @@ The following list of keys control the format of superscript and subscript. They
\begin{options}
\keyval{supersub-hshift}{fixed length}\Default{0pt}
Extra vertical shift of the superscript and the subscript.
- \keyval{supersub-format}{super code,sub code}\Default{0pt}
+ \kvsplit{supersub-format}{super code}{sub code}\Default{0pt}
Control the format of superscript or subscript. The first part is in superscript format, and the latter part is in subscript format. The two are separated by commas, or only the first part exists.
\keyval{supersubsep}{rubber length}\Default{0.3ex}
The distance between superscript and subscript, its default value is \code{0.3ex}.
@@ -120,7 +138,7 @@ It can also be used with the \pkg*{siunitx} package to output superscript and su
\pkg*{spbmark} also patches the footer markers for standard document class and \cls*{KOMA-Script}. You can format the footer markers by redefining the \cs{fnmarkfont} command. Note that extra horizontal shift does not work with footnote markers.
\section{Known issues}
-At present, the vertical and horizontal offsets are effective for the unit commands in the \pkg*{siunitx} macro package. However, due to the special mechanism that the decimal point is not recognized correctly because it is converted to a space in the \cs*{unit} command, it is recommended to use \code{pt} as the unit of offset.
+At present, the vertical and horizontal offsets are effective for the unit commands in the \pkg*{siunitx} macro package. However, due to the special mechanism that the decimal point is not recognized correctly because it's converted to a space in the \cs*{unit} command, it's recommended to use \code{pt} as the unit of offset.
\nocite{*}