summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-03-30 03:03:36 +0000
committerNorbert Preining <norbert@preining.info>2024-03-30 03:03:36 +0000
commit16a9aadc4ae32ef5d7f20d62a3606b05e20f3405 (patch)
tree4cdbef1301bfdfe766434e49385bd2d251a7827e /macros
parent23724df30adf3c6356ee7877833b8096987c643f (diff)
CTAN sync 202403300303
Diffstat (limited to 'macros')
-rw-r--r--macros/generic/musixtex/README2
-rw-r--r--macros/generic/musixtex/doc/musixdoc.pdfbin1448431 -> 1448598 bytes
-rw-r--r--macros/generic/musixtex/doc/musixdoc/extensions.tex1
-rw-r--r--macros/generic/musixtex/doc/musixdoc/frontmatter.tex2
-rw-r--r--macros/generic/musixtex/doc/musixdoc/musixdoc.sty2
-rw-r--r--macros/generic/musixtex/tex/musixmtab.tex15
-rw-r--r--macros/generic/musixtex/tex/musixtex.tex12
-rw-r--r--macros/latex/contrib/ducksay/ducksay.dtx94
-rw-r--r--macros/latex/contrib/ducksay/ducksay.pdfbin543677 -> 545970 bytes
-rw-r--r--macros/latex/contrib/microtype/DEPENDS.txt1
-rw-r--r--macros/latex/contrib/microtype/README.md4
-rw-r--r--macros/latex/contrib/microtype/microtype-code.pdfbin2139911 -> 2137618 bytes
-rw-r--r--macros/latex/contrib/microtype/microtype-utf.dtx4
-rw-r--r--macros/latex/contrib/microtype/microtype.dtx184
-rw-r--r--macros/latex/contrib/microtype/microtype.ins2
-rw-r--r--macros/latex/contrib/microtype/microtype.pdfbin670821 -> 670969 bytes
-rw-r--r--macros/latex/contrib/rec-thy/README3
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.pdfbin128602 -> 131568 bytes
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.sty1502
-rw-r--r--macros/latex/contrib/rec-thy/rec-thy.tex360
-rw-r--r--macros/latex/contrib/srdp-mathematik/README.md2
-rw-r--r--macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdfbin180957 -> 175187 bytes
-rw-r--r--macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty12
-rw-r--r--macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex144
-rw-r--r--macros/latex/contrib/thuthesis/CHANGELOG.md29
-rw-r--r--macros/latex/contrib/thuthesis/LICENSE416
-rw-r--r--macros/latex/contrib/thuthesis/Makefile93
-rw-r--r--macros/latex/contrib/thuthesis/README.md89
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix-survey.tex16
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix-translation.tex17
-rw-r--r--macros/latex/contrib/thuthesis/data/appendix.tex5
-rw-r--r--macros/latex/contrib/thuthesis/data/chap03.tex2
-rw-r--r--macros/latex/contrib/thuthesis/latexmkrc19
-rw-r--r--macros/latex/contrib/thuthesis/ref/appendix.bib14
-rw-r--r--macros/latex/contrib/thuthesis/ref/refs.bib3
-rw-r--r--macros/latex/contrib/thuthesis/spine.pdfbin12629 -> 22049 bytes
-rw-r--r--macros/latex/contrib/thuthesis/spine.tex19
-rw-r--r--macros/latex/contrib/thuthesis/thusetup.tex13
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-author-year.bst43
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-bachelor.bst41
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-example.pdfbin462474 -> 408220 bytes
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-example.tex2
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis-numeric.bst41
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.dtx873
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.pdfbin1198841 -> 1188909 bytes
-rw-r--r--macros/latex/required/babel/base/README.md27
-rw-r--r--macros/latex/required/babel/base/babel-code.pdfbin647075 -> 646852 bytes
-rw-r--r--macros/latex/required/babel/base/babel.dtx146
-rw-r--r--macros/latex/required/babel/base/babel.ins2
-rw-r--r--macros/latex/required/babel/base/babel.pdfbin421738 -> 422784 bytes
-rw-r--r--macros/latex/required/babel/base/bbcompat.dtx2
-rw-r--r--macros/luatex/generic/luamplib/NEWS3
-rw-r--r--macros/luatex/generic/luamplib/luamplib.dtx18
-rw-r--r--macros/luatex/generic/luamplib/luamplib.pdfbin158401 -> 158381 bytes
54 files changed, 1740 insertions, 2539 deletions
diff --git a/macros/generic/musixtex/README b/macros/generic/musixtex/README
index 001f12edda..9ec2b02660 100644
--- a/macros/generic/musixtex/README
+++ b/macros/generic/musixtex/README
@@ -1,4 +1,4 @@
-This is MusiXTeX, version 1.37 (2023-10-07).
+This is MusiXTeX, version 1.38 (2024-03-29).
MusiXTeX is a TeX-based system for typesetting music.
The main author was Daniel Taupin, who died in a climbing
diff --git a/macros/generic/musixtex/doc/musixdoc.pdf b/macros/generic/musixtex/doc/musixdoc.pdf
index c01420e9c0..5e3a8cc8ab 100644
--- a/macros/generic/musixtex/doc/musixdoc.pdf
+++ b/macros/generic/musixtex/doc/musixdoc.pdf
Binary files differ
diff --git a/macros/generic/musixtex/doc/musixdoc/extensions.tex b/macros/generic/musixtex/doc/musixdoc/extensions.tex
index c11c389efa..56d1853c31 100644
--- a/macros/generic/musixtex/doc/musixdoc/extensions.tex
+++ b/macros/generic/musixtex/doc/musixdoc/extensions.tex
@@ -2467,6 +2467,7 @@ For example, compare
\hss
\raise20pt\hbox{ and }
\hss
+\input musixvbm
\vectorizedbeamtrue % re-enable vectorized beams
\startextract
\nnotes\ibbl0G1\qb0{GJKLMLMLMLMLMLMK}\tqb0L\en
diff --git a/macros/generic/musixtex/doc/musixdoc/frontmatter.tex b/macros/generic/musixtex/doc/musixdoc/frontmatter.tex
index e62408b2ac..9e7441c4f2 100644
--- a/macros/generic/musixtex/doc/musixdoc/frontmatter.tex
+++ b/macros/generic/musixtex/doc/musixdoc/frontmatter.tex
@@ -1,6 +1,6 @@
\title{\Huge\bfseries\musixtex\\[\bigskipamount]
\LARGE\bfseries Using \TeX{} to write polyphonic\\or
-instrumental music\\\Large\itshape Version 1.37}
+instrumental music\\\Large\itshape Version 1.38}
\author{}
diff --git a/macros/generic/musixtex/doc/musixdoc/musixdoc.sty b/macros/generic/musixtex/doc/musixdoc/musixdoc.sty
index d07d8ddcd4..8bf59cad3b 100644
--- a/macros/generic/musixtex/doc/musixdoc/musixdoc.sty
+++ b/macros/generic/musixtex/doc/musixdoc/musixdoc.sty
@@ -47,7 +47,6 @@
\usepackage{textcomp}
\input musixtex
-\input musixvbm % experimental vectorized beams
\input musixbm
\input musixcho
\input musixdat
@@ -57,6 +56,7 @@
\input musixlit
\input musixltx
\input musixper
+\input musixvbm
%%% \input musixps deferred to Section 10.2
diff --git a/macros/generic/musixtex/tex/musixmtab.tex b/macros/generic/musixtex/tex/musixmtab.tex
index 087395a2a9..0a5d971445 100644
--- a/macros/generic/musixtex/tex/musixmtab.tex
+++ b/macros/generic/musixtex/tex/musixmtab.tex
@@ -24,7 +24,7 @@
% Copyright 2023 Bob Tennent rdtennent@gmail.com
%
-\immediate\write16{musixmtab\space<2023/07/21>}
+\immediate\write16{musixmtab\space<2023/10/07>}
\ifx\undefined\startpiece\errmessage{Input musixtex.tex before musixmtab.tex}\fi
\makeatletter
@@ -109,6 +109,19 @@
\let\n@sym\q@u\y@v\qn@width\writ@note%
}
+% a sixteenth note (with a double flag)
+% argument 1 is the string number
+% argument 2 is the note number
+\def\ucc#1#2{%
+ \zltab{#1}{#2}%
+ \stringraise\nblines%
+ \advance\stringraise by -#1%
+ \multiply\stringraise by 2%
+ \n@i\stringraise%
+ \def\q@u{}\n@vii46\let\st@m\down@flag%
+ \let\n@sym\q@u\y@v\qn@width\writ@note%
+}
+
% a non-spacing stemless quarter or eighth note
% argument 1 is the string number
% argument 2 is the note number
diff --git a/macros/generic/musixtex/tex/musixtex.tex b/macros/generic/musixtex/tex/musixtex.tex
index a46abeec61..41820152f5 100644
--- a/macros/generic/musixtex/tex/musixtex.tex
+++ b/macros/generic/musixtex/tex/musixtex.tex
@@ -25,15 +25,20 @@
\def\mufl@x{0.83}%
\def\mxmajorvernumber{1}
-\def\mxminorvernumber{37}
+\def\mxminorvernumber{38}
\def\mxvernumber{\mxmajorvernumber\mxminorvernumber}% make it possible to compare with \ifnum
\def\mxversuffix{}%
\edef\mxversion{\mxmajorvernumber.\mxminorvernumber\mxversuffix}
-\def\mxdate{2023-10-07}
+\def\mxdate{2024-03-29}
\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}%
\everyjob{\immediate\write16{MusiXTeX(c) \mxversion\space<\mxdate>}}%
+% version 1.38
+%
+% added \lastbarpos\lin@pos into \updat@context
+% (error reported by Wilfried Lingenberg to tex-music mail list)
+%
% version 1.37
%
% added small ss fonts
@@ -2717,7 +2722,8 @@
\let\Writ@newsigns\empty
\def\updat@context{\writ@newclefs
- \T@bil \wbarno@x\Writ@newsigns\Writ@meters\addspace\afterruleskip
+ \T@bil \wbarno@x\Writ@newsigns\Writ@meters\lastbarpos\lin@pos\addspace\afterruleskip
+%%% 1.38: added \lastbarpos\lin@pos
%%% 1.21: added \lastbarno setting
\else\Writ@newsigns\z@suspend\contpiece \fi}
diff --git a/macros/latex/contrib/ducksay/ducksay.dtx b/macros/latex/contrib/ducksay/ducksay.dtx
index 98700c2b74..95ffcdfe1c 100644
--- a/macros/latex/contrib/ducksay/ducksay.dtx
+++ b/macros/latex/contrib/ducksay/ducksay.dtx
@@ -200,10 +200,10 @@ and the derived files ducksay.pdf
%</driver>^^A=<<
%<*pkg>^^A>>=
\NeedsTeXFormat{LaTeX2e}
-\RequirePackage{xparse,l3keys2e}
+\@ifundefined{NewDocumentCommand}{\RequirePackage{xparse}}{}
-\def\ducksay@version{2.6}
-\def\ducksay@date{2022-10-08}
+\def\ducksay@version{2.7}
+\def\ducksay@date{2024-03-29}
\ProvidesExplPackage
{ducksay} {\ducksay@date}
@@ -320,7 +320,7 @@ and the derived files ducksay.pdf
% \sinceversion{2.4}
% The |add-think| key was deprecated in v2.3 and was removed in v2.4 since
% the output symbols of the bubble tail are handled differently and more
-% efficient now.
+% efficiently now.
% \end{itemize}^^A=<<
%
% \subsection{Shared between versions}^^A>>=
@@ -944,9 +944,9 @@ and the derived files ducksay.pdf
% {We rely on you}%
% }%
% }
-% The package depends on the two packages \pkg{xparse} and \pkg{l3keys2e}
-% and all of their dependencies. Version 2 additionally depends on \pkg{array}
-% and \pkg{grabbox}.
+% The package depends on the \LaTeX\ kernel, for older versions of \LaTeX\ the
+% two packages \pkg{xparse} and \pkg{l3keys2e} and all of their dependencies are
+% loaded. Version 2 additionally depends on \pkg{array} and \pkg{grabbox}.
%^^A=<<
%
% \subsection{Available Animals}\label{sec:animals}^^A>>=
@@ -954,11 +954,8 @@ and the derived files ducksay.pdf
% {%
% \tiny
% \hfill
-% \ducksay[platypus,MSG=\footnotesize,msg-align=c]
-% {Quack?}\\
-% \hspace*{1cm}%
-% \ducksay[small-horse,MSG=\footnotesize,msg-align=c,body-mirrored]
-% {Neigh, we're new!}
+% \ducksay[turtle,MSG=\footnotesize,msg-align=c]
+% {Slowly new animals\\are added.}%
% }
% The following animals are provided by this package. I did not create them (but
% altered some), they belong to their original creators.
@@ -984,6 +981,7 @@ and the derived files ducksay.pdf
% ,sodomized^^A
% ,hedgehog^^A
% ,platypus^^A
+% ,turtle^^A
% ,kangaroo^^A
% ,small-horse^^A
% ,dog^^A
@@ -1182,7 +1180,12 @@ and the derived files ducksay.pdf
% \end{macrocode}
%
% \begin{macrocode}
-\ProcessKeysOptions { ducksay }
+\cs_if_exist:NTF \ProcessKeyOptions
+ { \ProcessKeyOptions [ ducksay ] }
+ {
+ \RequirePackage { l3keys2e }
+ \ProcessKeysOptions { ducksay }
+ }
% \end{macrocode}
%
% Undefine the load-time-only keys
@@ -1238,19 +1241,32 @@ and the derived files ducksay.pdf
%
% \begin{macro}[internal]{\ducksay_replace_verb_newline:Nn}^^A>>=
% \begin{macrocode}
-\cs_new_protected:Npx \ducksay_replace_verb_newline:Nn #1 #2
+\IfFormatAtLeastTF{2024-06-01}
{
- \tl_replace_all:Nnn #1 { \char_generate:nn { 13 } { 12 } } { #2 }
+ \cs_new_protected:Npn \ducksay_replace_verb_newline:Nn #1 #2
+ { \tl_replace_all:Nnn #1 \obeyedline {#2} }
+ }
+ {
+ \cs_new_protected:Npx \ducksay_replace_verb_newline:Nn #1 #2
+ { \tl_replace_all:Nnn #1 { \char_generate:nn { 13 } { 12 } } {#2} }
}
% \end{macrocode}
% \end{macro}^^A=<<
%
% \begin{macro}[internal]{\ducksay_replace_verb_newline_newline:Nn}^^A>>=
% \begin{macrocode}
-\cs_new_protected:Npx \ducksay_replace_verb_newline_newline:Nn #1 #2
+\IfFormatAtLeastTF{2024-06-01}
{
- \tl_replace_all:Nnn #1
- { \char_generate:nn { 13 } { 12 } \char_generate:nn { 13 } { 12 } } { #2 }
+ \cs_new_protected:Npn \ducksay_replace_verb_newline_newline:Nn #1 #2
+ { \tl_replace_all:Nnn #1 { \obeyedline \obeyedline } {#2} }
+ }
+ {
+ \cs_new_protected:Npx \ducksay_replace_verb_newline_newline:Nn #1 #2
+ {
+ \tl_replace_all:Nnn #1
+ { \char_generate:nn { 13 } { 12 } \char_generate:nn { 13 } { 12 } }
+ {#2}
+ }
}
% \end{macrocode}
% \end{macro}^^A=<<
@@ -2693,7 +2709,7 @@ and the derived files ducksay.pdf
s
s}%=<<
%^^A head taken from https://www.asciiart.eu/animals/reptiles/snakes
-\AddAnimal[tail-symbol=s,tail-count=3]{snake}
+\AddAnimal[tail-symbol=s,tail-count=3]{snake}% >>=
{ s
s /^\/^\
s _|__| O |
@@ -2704,9 +2720,9 @@ and the derived files ducksay.pdf
/ / _---_ | |
/ / / __ "-_ ," |
| "--" / "-_ "--" ,"
- "-_____-" "-___-"}
+ "-_____-" "-___-"}% =<<
%^^A http://www.ascii-art.de/ascii/c/cat.txt
-\AddAnimal{cat}
+\AddAnimal{cat}% >>=
+ \
\ _ ___ .--.
\`.|\..----...-'` `-._.-' .-'
@@ -2714,15 +2730,15 @@ and the derived files ducksay.pdf
)/' _/ \ `-_, /
`-'" `"\_ ,_.-;_.-\_ ',
_.-'_./ {_.' ; /
- {_.-``-' {_/+
+ {_.-``-' {_/+% =<<
%^^A https://www.asciiart.eu/animals/cats
-\AddAnimal{sleepy-cat}
+\AddAnimal{sleepy-cat}% >>=
{ \
\ |\ _,,,---,,_ _._
/,`.-'`' -. )'._,'.-,)
|,4- ) )-,_. ,\ ( `-.-'
- '---''(_/--' `-'\_)}
-\AddAnimal{schroedinger-dead}
+ '---''(_/--' `-'\_)}% =<<
+\AddAnimal{schroedinger-dead}% >>=
{ \
\ _.--"""--._
| |
@@ -2733,9 +2749,9 @@ and the derived files ducksay.pdf
__|___________|__ _
o . . .
~ . o o
- . ~ .}
+ . ~ .}% =<<
%^^A https://www.asciiart.eu/animals/cats
-\AddAnimal{schroedinger-alive}
+\AddAnimal{schroedinger-alive}% >>=
{ \
\ ,_ _
|\\__,'/
@@ -2746,10 +2762,10 @@ and the derived files ducksay.pdf
| _ \ |
\ \ , / |
|| |-_\__ /
- ((_/`(____,-'}
+ ((_/`(____,-'}% =<<
%^^A provided by Plergux
%^^A (https://chat.stackexchange.com/transcript/message/55986902#55986902)
-\AddAnimal{sheep}
+\AddAnimal{sheep}% >>=
{ \ _,_,_,_,_,
\ .:( ,) ),
(__, (, ),
@@ -2757,21 +2773,31 @@ and the derived files ducksay.pdf
(___(, (, ,)
(, ,) ,)
`-_,---_,-'
- || ||}
+ || ||}% =<<
%^^A based on joe schmuck (http://www.ascii-art.de/ascii/pqr/platypus.txt)
-\AddAnimal[tail-symbol=s]{platypus}
+\AddAnimal[tail-symbol=s]{platypus}% >>=
| s _.-^~~^^`~-,,,~~''```~-''``~'``~,
s ______,' -o :. _ . ; ,'`, `.
( -\.._,.;;'._,( } _`_-_,, `, `,
- ``~~~~~~' ((/'(((____/~~'(,(,___> `~'|
-\AddAnimal[tail-symbol=s]{small-horse}
+ ``~~~~~~' ((/'(((____/~~'(,(,___> `~'|% =<<
+\AddAnimal[tail-symbol=s]{small-horse}% >>=
{ s _,_
s /._ \\
/_/ |_\\ _ __
/ \\ \\
\ _ __ _ /||
| | | | ||
- | | | |}
+ | | | |}% =<<
+%^^A based on art by Joan Stark (jgs)
+%^^A (https://www.asciiart.eu/animals/reptiles/turtles)
+\AddAnimal[tail-symbol=s]{turtle}
+{ s
+ s __
+ /_'\ .,-;-;-,.
+ \ (/_/_|_\_\_\_
+ /\=<_><_><_><_>-'
+ /_/'-\_\====\_\'
+ "" "" ""}
%</animals>
% \end{macrocode}^^A=<<
%^^A%^^A https://www.asciiart.eu/mythology/fairies
diff --git a/macros/latex/contrib/ducksay/ducksay.pdf b/macros/latex/contrib/ducksay/ducksay.pdf
index 6f54d4a73b..a5211c64e5 100644
--- a/macros/latex/contrib/ducksay/ducksay.pdf
+++ b/macros/latex/contrib/ducksay/ducksay.pdf
Binary files differ
diff --git a/macros/latex/contrib/microtype/DEPENDS.txt b/macros/latex/contrib/microtype/DEPENDS.txt
new file mode 100644
index 0000000000..f8372ec7f7
--- /dev/null
+++ b/macros/latex/contrib/microtype/DEPENDS.txt
@@ -0,0 +1 @@
+etoolbox # with etex
diff --git a/macros/latex/contrib/microtype/README.md b/macros/latex/contrib/microtype/README.md
index cc63892a47..7dae3d2776 100644
--- a/macros/latex/contrib/microtype/README.md
+++ b/macros/latex/contrib/microtype/README.md
@@ -4,7 +4,7 @@ The `microtype` package
**Subliminal refinements towards typographical perfection**
- (v3.1a -- 2023/03/13)
+ (v3.1b -- 2024/03/29)
Overview
@@ -82,4 +82,4 @@ provided that: (1) the original copyright statement is not removed, and
(2) the identification string is changed.
------------------------------------------------------
-Copyright (c) 2004--2023 R Schlicht `<w.m.l@gmx.net>`
+Copyright (c) 2004--2024 R Schlicht `<w.m.l@gmx.net>`
diff --git a/macros/latex/contrib/microtype/microtype-code.pdf b/macros/latex/contrib/microtype/microtype-code.pdf
index bba1009e7c..186c876991 100644
--- a/macros/latex/contrib/microtype/microtype-code.pdf
+++ b/macros/latex/contrib/microtype/microtype-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/microtype/microtype-utf.dtx b/macros/latex/contrib/microtype/microtype-utf.dtx
index 02af4db500..cfee09e68d 100644
--- a/macros/latex/contrib/microtype/microtype-utf.dtx
+++ b/macros/latex/contrib/microtype/microtype-utf.dtx
@@ -3,7 +3,7 @@
% ------------------------------------------------------------------------
% The `microtype' package
% Subliminal refinements towards typographical perfection
-% Copyright (c) 2004--2023 R Schlicht <w.m.l@gmx.net>
+% Copyright (c) 2004--2024 R Schlicht <w.m.l@gmx.net>
%
% This work may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.3c of this license or (at
@@ -27,7 +27,7 @@
\ProvidesFile
%</!EBGaramond>
%<*driver>
- {\jobname.dtx}[2023/03/13 v3.1a]
+ {\jobname.dtx}[2024/03/29 v3.1b]
%</driver>
%<CharisSIL> {mt-CharisSIL.cfg}[2017/07/07 v1.1 microtype config. file: Charis SIL (RS)]
%<LatinModernRoman> {mt-LatinModernRoman.cfg}[2021/02/21 v1.1 microtype config. file: Latin Modern Roman (RS)]
diff --git a/macros/latex/contrib/microtype/microtype.dtx b/macros/latex/contrib/microtype/microtype.dtx
index cfa8994833..c14309de32 100644
--- a/macros/latex/contrib/microtype/microtype.dtx
+++ b/macros/latex/contrib/microtype/microtype.dtx
@@ -3,7 +3,7 @@
% ------------------------------------------------------------------------
% The `microtype' package
% Subliminal refinements towards typographical perfection
-% Copyright (c) 2004--2023 R Schlicht <w.m.l@gmx.net>
+% Copyright (c) 2004--2024 R Schlicht <w.m.l@gmx.net>
%
% This work may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.3c of this license or (at
@@ -37,7 +37,7 @@
%<lua-> {microtype-luatex.def}
%<xe-> {microtype-xetex.def}
%<*package|letterspace|m-t|pdf-|lua-|xe-|show>
- [2023/03/13 v3.1a
+ [2024/03/29 v3.1b
%<package> Micro-typographical refinements
%<letterspace> Robust letterspacing
%<show> Visual debugging for the microtype package
@@ -52,8 +52,8 @@
%<luafile>local microtype = microtype
%<luafile>microtype.module = {
%<luafile> name = "microtype",
-%<luafile> version = "3.1a",
-%<luafile> date = "2023/03/13",
+%<luafile> version = "3.1b",
+%<luafile> date = "2024/03/29",
%<luafile> description = "microtype module.",
%<luafile> author = "E. Roux, R. Schlicht and P. Gesang",
%<luafile> copyright = "E. Roux, R. Schlicht and P. Gesang",
@@ -671,7 +671,7 @@
pdfkeywords={TeX, LaTeX, pdfTeX, LuaTeX, XeTeX, typography, micro-typography,
character protrusion, margin kerning, optical alignment, font expansion,
font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures},
- pdfcopyright={\textcopyright\ 2004--2023 R Schlicht\textLF
+ pdfcopyright={\textcopyright\ 2004--2024 R Schlicht\textLF
This work may be distributed and/or modified under the conditions
of the LaTeX Project Public License, either version 1.3c of this
license or (at your option) any later version.\textLF
@@ -917,6 +917,10 @@
%\changes{v2.0}{2006/12/29}{new package \letterspace: a stripped-down version,
% containing the letterspacing commands only}
%\changes{v3.0}{2021/10/31}{move development to \href{\githuburl}{GitHub}}
+%\changes{v3.1b}{2023/09/30}{add \file{DEPENDS.txt}
+% (suggested by \contributor Bruno Victal <mirai\at makinata.eu>)}
+% ^^A private mail, 2023/09/29
+%
%\GeneralChanges{Documentation}
%\changes{v1.9b}{2006/01/13}{activate expansion in the distributed <PDF>}
%\changes{v2.2}{2007/04/01}{logo transparency and amusement}
@@ -962,7 +966,7 @@
% other extensions (see section~\ref{sec:lettersp}\ifcodedoc\space of the User manual\fi).
%
%\bigskip\noindent
-% This package is copyright \textcopyright\ 2004\kern.09em--2023 R Schlicht.
+% This package is copyright \textcopyright\ 2004\kern.09em--2024 R Schlicht.
% It may be distributed and/or modified under the conditions of the
% \IfFileExists{lppl.tex}{\hyperref[LPPL:LPPL]}{\href{https://www.latex-project.org/lppl/}}
% {\LaTeX\ Project Public License},
@@ -3074,7 +3078,7 @@
%\begin{verbatim}[deletekeywords={[1]{patch}}]
%Package microtype Warning: Unable to apply patch `<eqnum>' on input line <29>.
%\end{verbatim}
-%\changes{v3.1}{2021/09/15}{add hint about protrusion patch warnings}
+%\changes{v3.1}{2022/09/15}{add hint about protrusion patch warnings}
% As described in chapter~\ref{sec:pedantic} above, \microtype\ tries to patch a number
% of commands to enable or disable protrusion in certain situations. If you receive a warning
% like the above, you should first make sure (as always) that the package is up to date.
@@ -3365,10 +3369,18 @@
% \contributor Ralf Steinle <rasteinle\at web.de>,
% \contributor Denis Bitouz\'e <@\at @>, ^^A https://tex.stackexchange.com/users/18401/denis-bitouz%c3%a9
% \contributor Christophe Dervieux <@\at @>, ^^A https://github.com/cderv
+% \contributor Scott Kostyshak <@\at @>, ^^A https://github.com/scottkosty
% \contributor Shen Zhou Hong <@\at @>, ^^A https://github.com/ShenZhouHong
-% \contributor David Purton <@\at @> ^^A https://github.com/dcpurton
+% \contributor David Purton <@\at @>, ^^A https://github.com/dcpurton
+% `\contributor rallg <@\at @>', ^^A https://github.com/rallg
+% \contributor Artur A. Marczok <marczok\at t-online.de>,
+% \contributor Uwe Siart <uwe.siart\at tum.de>,
+% `\contributor simon-codes-something <@\at @>', ^^A https://github.com/simon-codes-something
+% `\contributor scholnik <@\at @>', ^^A https://github.com/scholnik
+% \contributor Ulrich Schwarz <@\at @>, ^^A https://tex.stackexchange.com/users/1860/ulrich-schwarz
+% \contributor Bruno Victal <mirai\at makinata.eu>
% and
-% `\contributor rallg <@\at @>'. ^^A https://github.com/rallg
+% \contributor Linas Stonys <lstonys\at vtex.lt>.
%
%\iffalse
%\section{History of micro-typography} ^^A some time ...
@@ -3439,7 +3451,7 @@
% \bibitem[\pdftex\ manual]{pdftexman}
% \thanh, Sebastian Rahtz, Hans Hagen, Hartmut Henkel, Pawe\l\ Jackowski, Martin Schr\"oder, Karl Berry,
% \emph{The \pdftex\ user manual},
-% 1~March 2022.
+% 28~February 2023.
% (\ctanurl{systems/doc/pdftex/manual/pdftex-a.pdf})
%
% \bibitem[Fontname]{fontname}
@@ -3449,7 +3461,7 @@
%
% \bibitem[\LaTeXe\ font selection]{fntguide}
% \LaTeX\ Project Team, \emph{\LaTeXe\ font selection},
-% August 2022.
+% October 2023.
% (\ctanurl{macros/latex/base/fntguide.pdf})
%
% \bibitem[\pkg{fontspec}]{fontspec}
@@ -3461,7 +3473,7 @@
% \bibitem[\pkg{luaotfload}]{luaotfload}
% \LaTeX3 Project, \'Elie Roux, Khaled Hosny, Philipp Gesang, Ulrike Fischer, Marcel Kr\"uger,
% \emph{The \pkg{luaotfload} package},
-% 3~October 2022.
+% 31~August 2023.
% (\ctanpkgurl{luaotfload})
%
% \bibitem[\pkg{pdfcprot}]{pdfcprot}
@@ -3471,7 +3483,7 @@
%
% \bibitem[\pkg{soul}]{soul}
% [Melchior Franz,] Heiko Oberdiek, \emph{The \pkg{soul} package},
-% 18 February 2023.
+% 14 June 2023.
% (\ctanpkgurl{soul}).
%
%\end{thebibliography}
@@ -3509,7 +3521,9 @@
%
%\begin{History}
%
-%\Version{\expandafter\@gobble\fileversion}{\filedate}
+%\VersionDate{\expandafter\@gobble\fileversion}{\filedate}
+%
+%\VersionDate{3.1a}{2023/03/13}
%
%\Version{3.1}{2023/03/06}
% \item New command \cs{DeclareMicrotypeFilePrefix} to change the prefix of the
@@ -3903,10 +3917,10 @@
%\DoNotIndex{\@backslashchar,\@car,\@cclvi,\@changed@cmd,\@classoptionslist,
% \@current@cmd,\@currext,\@currname,\@defaultunits,\@empty,\@@enc@update,
% \@eqnnum,\@expandtwoargs,\@firstofone,\@firstoftwo,\@footnotetext,\@gobble,
-% \@gobbletwo,\@ifclassloaded,\@ifl@t@r,\@ifl@aded,\@ifpackagelater,\@ifpackageloaded,
-% \@ifstar,\@ifundefined,\@item,\@let@token,\@m,\@M,\@makeother,\@minus,\@mpfootnotetext,
-% \@nameuse,\@ne,\@newlistfalse,\@nil,\@nnil,\@onelevel@sanitize,\@onlypreamble,
-% \@pkgextension,\@plus,\@ptionlist,\@removeelement,\@secondoftwo,\@spaces,\@sptoken,
+% \@gobbletwo,\@ifclassloaded,\@ifl@t@r,\@ifl@aded,\@ifnextchar,\@ifpackagelater,
+% \@ifpackageloaded,\@ifstar,\@ifundefined,\@item,\@let@token,\@m,\@M,\@makeother,
+% \@minus,\@mpfootnotetext,\@nameuse,\@ne,\@newlistfalse,\@nil,\@nnil,\@onelevel@sanitize,
+% \@onlypreamble,\@plus,\@ptionlist,\@removeelement,\@secondoftwo,\@spaces,\@sptoken,
% \@tempa,\@tempb,\@tempc,\@tempcnta,\@tempcntb,\@tempdima,\@typeset@protect,
% \@undefined,\@unprocessedoptions,\@unusedoptionlist,\@xobeysp,\check@icr,
% \color@begingroup,\color@endgroup,\g@addto@macro,\hmode@bgroup,\m@ne,\maybe@ic,
@@ -4169,7 +4183,7 @@
% The old command names had one more hunch (|\..MicroType..|).
% Before finally letting them sink into oblivion, raise an error.
%\changes{v1.8}{2005/04/28}{renamed commands from \cmd{\..MicroType..} to \cmd{\..Microtype..}}
-%\changes{v3.0}{2020/04/10}{old command names will raise an error}
+%\changes{v3.0}{2021/04/10}{old command names will raise an error}
% \begin{macrocode}
\def\MT@old@cmd#1#2{%
\newcommand*#1{\MT@error{%
@@ -5460,12 +5474,22 @@ end
%<package>^^Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
%<package>^^Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
-%<*package>
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
%\end{macro}
+%\begin{macro}{\MT@if@expanding@F}
+%\changes{v3.1b}{2023/06/07}{new macro: check whether inside expanding context}
+%\begin{macro}{\MT@if@expanding@F@}
+% The following voodoo is based on a trick by \contributor Ulrich Schwarz <@\at @>.\footnote{Cf. \url{https://tex.stackexchange.com/a/29188/7674}}
+% \begin{macrocode}
+\def\MT@if@expanding@F{\let\MT@if@expanding@F@\MT@if@expanding@F@\@firstofone}
+\def\MT@if@expanding@F@#1#2#3{\relax\relax}
+%<*package>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
%\begin{macro}{\MT@detokenize@n}
%\changes{v1.9d}{2006/03/08}{new macro: use \cmd\detokenize\ if available}
%\begin{macro}{\MT@detokenize@c}
@@ -5675,6 +5699,13 @@ microtype.if_str_eq = if_str_eq
%</luafile>
% \end{macrocode}
%\end{macro}
+% With this, we can now also check whether versions match (using the command from
+% \ref{ssub:def-files}).
+% \begin{macrocode}
+%<lua->\MT@check@MT@version
+%<lua-> {\MT@lua{tex.write(microtype.module['date'] .. ' v' .. microtype.module['version'])}}
+%<lua-> {\MT@MT.lua}
+% \end{macrocode}
%\begin{macro}{\MT@xadd}
%\changes{v1.8}{2005/04/17}{simplified}
% Add item to a list.
@@ -6186,12 +6217,13 @@ microtype.do_font = do_font
%\begin{macro}{\MT@with@babel@and@T}
%\changes{v2.2}{2007/05/25}{also inspect class options}
%\changes{v3.0a}{2021/11/23}{fix grouping}
+%\changes{v3.1b}{2023/03/24}{don't use \cmd\@pkgextension\ (was \cmd\@onlypreamble d in older \LaTeX\ versions)}
% \LaTeX's \cmd\@ifpackagewith\ ignores the class options.
% \begin{macrocode}
\def\MT@with@babel@and@T#1{%
- \MT@ifdefined@n@T{opt@babel.\@pkgextension}{%
+ \MT@ifdefined@n@T{opt@babel.sty}{%
\@expandtwoargs\MT@in@clist{#1}
- {\csname opt@babel.\@pkgextension\endcsname,\@classoptionslist}%
+ {\csname opt@babel.sty\endcsname,\@classoptionslist}%
\ifMT@inlist@\expandafter\@secondoftwo\else\expandafter\@firstofone\fi
}\@gobble
}
@@ -7229,6 +7261,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
% (reported by \contributor Leo <sdl.web\at gmail.com>)}
% ^^A MID: <m0vdk4g8t2.fsf@cam.ac.uk>
%\changes{v2.8}{2020/05/25}{try to fix zero \fontdim6}
+%\changes{v3.1b}{2023/12/04}{compatibility with \luatex\ in <DVI> mode
+% (reported by \contributor Linas Stonys <lstonys\at vtex.lt>)}
+% ^^A private mail, 2023/11/30
%\begin{macro}{\MT@dimen@six}
% If \fontdim6 is zero, character protrusion, spacing, kerning and tracking
% won't work, and we could skip the settings (for example, the \pkg{dsfont}
@@ -7236,16 +7271,17 @@ time will almost certainly lead to undesired results. Have your choice!}%
% and \pkg{newpx}/\pkg{newtx} packages have been fixed in the meantime).
% However, we can fix it ourselves (and since \pdftex\ 1.40.23, this also works
% for \cmd\letterspacefont). ^^A https://mailman.ntg.nl/pipermail/ntg-pdftex/2021-June/004335.html
-% \xetex\ doesn't provide an equivalent to \cmd\pdffontsize, so we use the
-% nominal size instead.
+% \xetex\ (and newer \luatex\ in <DVI> mode) doesn't provide an equivalent to
+% \cmd\pdffontsize, so we use the nominal size instead.
% \begin{macrocode}
%<*pdf-|lua-|xe->
\def\MT@fix@fontdimen@six{%
\ifnum\fontdimen6\MT@font=\z@
\fontdimen6\MT@font=%
%<pdf-> \pdffontsize\MT@font
-%<lua-> \MT@requires@luatex4{\pdffeedback fontsize}{\pdffontsize}\MT@font
-%<xe-> \MT@size pt
+%<lua-> \MT@requires@luatex4{\ifnum\outputmode=\@ne \pdffeedback fontsize\else
+%<lua-|xe-> \MT@size pt%
+%<lua-> \expandafter\@gobble\fi}{\pdffontsize}\MT@font
\MT@info{Fixing zero \@backslashchar fontdimen 6 for font `\MT@@font'\MessageBreak
(new value: \the\fontdimen6\MT@font)}%
%<pdf-> \MT@requires@pdftex8\relax{\MT@glet@nc{\MT@@font-fake6}\@empty}%
@@ -8237,11 +8273,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@toks{}%
\MT@prot@toks{}%
\let\MT@prot@l\MT@prot@l@
+ \let\MT@prot@get@first@group\MT@prot@get@first@group@
\let\MT@maybe@textcmd\@firstofone
\MT@prot@get@firstgroup
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@prot@l}
%\begin{macro}{\MT@prot@l@}
%\changes{v3.0b}{2021/12/05}{make \cmd\long\ again
% (reported by \contributor Akira Yokosawa <@\at @>) \githubissue{3}}
@@ -8254,6 +8292,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
% \end{macrocode}
%\end{macro}
+%\end{macro}
%\begin{macro}{\MT@prot@toks}
%\begin{macro}{\MT@prot@l@tc}
%\changes{v3.1}{2023/03/06}{new macro: for text commands}
@@ -8623,10 +8662,14 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\end{macro}
% \item
%\begin{macro}{\MT@prot@check@F}
-%\changes{v3.1}{2022/03/06}{new macro: for text commands}
-%\changes{v3.1a}{2022/03/12}{fix: execute (and empty) \cs{MT@toks}
-% (reported by \contributor Artur A. Marczok <marczok\at t-online.de>)}
+%\changes{v3.1}{2023/03/06}{new macro: for text commands}
+%\changes{v3.1a}{2023/03/12}{fix: execute (and empty) \cs{MT@toks}
+% (reported by \contributor Artur A. Marczok <marczok\at t-online.de>
+% and \contributor Uwe Siart <uwe.siart\at tum.de>)}
% ^^A private mail, 2023/03/12
+% ^^A private mail, 2023/03/13
+%\changes{v3.1b}{2024/03/29}{fix: failed when group began with another command
+% \githubissue{31}}
% Here we deal with \textbf{F}ont switching commands (\ie, text commands,
% which take an argument).
% We (a) remember the text command, (b) save the full text,
@@ -8640,6 +8683,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
\else
\let\MT@prot@l\MT@prot@l@tc
+ \let\MT@prot@get@first@group\MT@prot@get@first@group@tc
\def\MT@temp*##1##2{%
\let\MT@maybe@textcmd##1%
\the\MT@toks
@@ -8651,6 +8695,36 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
% \end{macrocode}
%\end{macro}
+% \item
+%\begin{macro}{\MT@prot@check@C}
+%\changes{v3.1b}{2023/03/16}{new macro: for text commands with an optional argument
+% (after \contributor scholnik <@\at @> reported
+% that \cmd\MakeUppercase\ and friends support one) \githubissue{29}}
+% Same, but for commands that allow an optional argument (\eg, the \textbf{C}ase
+% changing commands since \LaTeX\ 2022/11/01).
+% \begin{macrocode}
+\def\MT@prot@check@C{%
+ \ifx\MT@prot@l\MT@prot@l@tc
+ \def\MT@temp*{\MT@exp@one@n\MT@prot@l{\the\MT@toks}}%
+ \else
+ \let\MT@prot@l\MT@prot@l@tc
+ \let\MT@prot@get@first@group\MT@prot@get@first@group@tc
+ \def\MT@temp*##1{%
+ \the\MT@toks
+ \MT@toks{}%
+ \@ifnextchar[%
+ {\MT@prot@check@C@##1}%
+ {\MT@prot@check@C@##1[]}%
+ }%
+ \fi
+}
+\def\MT@prot@check@C@#1[#2]#3{%
+ \def\MT@maybe@textcmd{#1[#2]}%
+ \MT@prot@toks{#1[#2]{#3}}%
+ \MT@prot@get@firstgroup@tc#3\MT@nil
+}
+% \end{macrocode}
+%\end{macro}
%\end{itemize}
%\begin{macro}{\MT@prot@check@cmds}
%\changes{v3.0e}{2022/06/09}{new macro: make list of commands extensible}
@@ -8674,7 +8748,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
{T\fontsize}%
{F\textrm}{F\textsf}{F\texttt}{F\textnormal}%
{F\textbf}{F\textmd}{F\textit}{F\textsl}{F\textsc}{F\textup}{F\emph}%
- {F\MakeUppercase}{F\MakeLowercase}%
}
% \end{macrocode}
% \LaTeX\ 2020/02/02 introduced some more text commands
@@ -8689,7 +8762,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
{O\fontseriesforce}{O\fontshapeforce}}}
\relax
\IfFormatAtLeastTF{2022/11/01}
- {\g@addto@macro\MT@prot@check@cmds{{F\MakeTitlecase}}}\relax
+ {\g@addto@macro\MT@prot@check@cmds{{C\MakeUppercase}{C\MakeLowercase}{C\MakeTitlecase}}}
+ {\g@addto@macro\MT@prot@check@cmds{{F\MakeUppercase}{F\MakeLowercase}}}
% \end{macrocode}
% The \cls{ltxdoc} class and the \pkg{doc} package provide some abbreviations.
% Unfortunately, the \cmd\cmd\ command doesn't work.
@@ -8772,10 +8846,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@prot@get@first@group}
+%\begin{macro}{\MT@prot@get@first@group@}
% If next char is |{|, start a group and try again, else continue until
% we find a beginning char.
% \begin{macrocode}
-\def\MT@prot@get@first@group{%
+\def\MT@prot@get@first@group@{%
\MT@prot@ifcat\bgroup{%
\def\MT@temp*{\MT@prot@addgroup}%
}{%
@@ -8785,6 +8860,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
% \end{macrocode}
%\end{macro}
+%\end{macro}
%\begin{macro}{\MT@prot@get@first@group@tc}
% The variant for text commands (in case they start with another group).
% \begin{macrocode}
@@ -11522,7 +11598,7 @@ end
%\end{macro}
%\begin{macro}{\MT@remove@tlig}
% We remove the \cs{remove@tlig} command and only pass on the number.
-%\changes{v2.8c}{2020/03/04}{fix for text commands containing conditionals
+%\changes{v2.8c}{2021/03/04}{fix for text commands containing conditionals
% (reported by \contributor Frank Mittelbach <frank.mittelbach\at latex-project.org>)}
% ^^A private mail, 2021/03/02
% \begin{macrocode}
@@ -11860,6 +11936,16 @@ end
% \begin{macrocode}
\MT@with@package@T{trace}{\g@addto@macro\pickup@font{\conditionally@traceoff}}%
\g@addto@macro\pickup@font{%
+% \end{macrocode}
+%\changes{v3.1b}{2023/06/07}{guard against expanding context}
+% If we're inside an \cmd\edef\ (or \cmd\write~\dots), we don't want to
+% execute our code. This will still leave `|\begingroup \let \relax \relax \endgroup|'
+% in the input stream, which is not nothing but should be harmless enough.
+% \cmd\pickup@font\ should never be executed in these contexts anyway, but obviously
+% this may, under rare circumstances, still happen (\eg, with \pkg{hyperref}).\footnote{
+% Cf. \url{https://tex.stackexchange.com/q/687763/7674}}
+% \begin{macrocode}
+%<package> \MT@if@expanding@F{%
\escapechar\m@ne
%<*package>
%<debug> \global\MT@inannottrue
@@ -11881,7 +11967,7 @@ end
\MT@register@subst@font
\fi
\fi
- \MT@setupfont
+ \MT@setupfont}%
%</package>
%<letterspace> \MT@tracking
\endgroup
@@ -14402,9 +14488,29 @@ end
%\subsubsection{Loading the definition file}\label{ssub:def-files}
%
% Load the engine-specific code (as strewn across this file).
+%\begin{macro}{\MT@get@MT@version}
+%\begin{macro}{\MT@version}
+%\begin{macro}{\MT@check@MT@version}
+%\changes{v3.1b}{2023/03/14}{check if \texttt{.sty} and \texttt{.def} (and \texttt{.lua}) file versions match}
+% We also check whether versions are the same.
% \begin{macrocode}
-\input{microtype-\MT@engine tex.def}
+\def\MT@get@MT@version#1 #2 #3\@nil{#1 #2}
+\edef\MT@version{\expandafter\expandafter\expandafter\MT@get@MT@version
+ \csname ver@\MT@MT.sty\endcsname\@nil}
+\def\MT@check@MT@version#1#2{%
+ \MT@ifstreq\MT@version{#1}{}{%
+ \MT@warning@nl{Mismatching file versions:\MessageBreak
+ \MT@MT.sty provides:\MessageBreak`\MT@version',\MessageBreak
+ whereas #2 provides:\MessageBreak`#1'.\MessageBreak
+ Please fix your installation}}}
+\input{\MT@MT-\MT@engine tex.def}
+\edef\@tempa{\expandafter\expandafter\expandafter\MT@get@MT@version
+ \csname ver@\MT@MT-\MT@engine tex.def\endcsname\@nil}
+\MT@check@MT@version\@tempa{\MT@MT-\MT@engine tex.def}
% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
%
% \subsubsection{Reading the configuration file}
%
@@ -14437,22 +14543,20 @@ end
%\changes{v1.8}{2005/05/15}{new option: \opt{config} to load a different main
% configuration file}
%\begin{macro}{\MT@config@file}
-%\begin{macro}{\MT@get@config}
% However, the \opt{config} option must of course be evaluated beforehand.
% We also have to define a no-op for the regular option processing later.
% \begin{macrocode}
%<*package>
\define@key{MT}{config}[]{\relax}
-\def\MT@get@config#1config=#2,#3\@nil{%
+\def\MT@temp#1config=#2,#3\@nil{%
\MT@ifempty{#2}%
{\def\MT@config@file{\MT@MT.cfg}}%
{\def\MT@config@file{#2.cfg}}%
}
-\expandafter\expandafter\expandafter\MT@get@config
+\expandafter\expandafter\expandafter\MT@temp
\csname opt@\@currname.\@currext\endcsname,config=,\@nil
% \end{macrocode}
%\end{macro}
-%\end{macro}
%\changes{v1.4b}{2004/11/25}{fix: set catcodes before reading global configuration file
% (reported by \contributor Christoph Bier <christoph.bier\at web.de>)}
% ^^A MID: <30k2tqF30v483U1@uni-berlin.de>
@@ -20347,7 +20451,7 @@ This is the current font stretched by 5\%, normal, and shrunk by 5\%:
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \CheckSum{12975}
+% \CheckSum{13078}
%
% \Finale
%
diff --git a/macros/latex/contrib/microtype/microtype.ins b/macros/latex/contrib/microtype/microtype.ins
index ed10e20008..e7de0295d3 100644
--- a/macros/latex/contrib/microtype/microtype.ins
+++ b/macros/latex/contrib/microtype/microtype.ins
@@ -10,7 +10,7 @@
The `microtype' package
Subliminal refinements towards typographical perfection
- Copyright (c) 2004--2023 R Schlicht <w.m.l@gmx.net>
+ Copyright (c) 2004--2024 R Schlicht <w.m.l@gmx.net>
This work may be distributed and/or modified under the conditions of the
LaTeX Project Public License, either version 1.3c of this license or (at
diff --git a/macros/latex/contrib/microtype/microtype.pdf b/macros/latex/contrib/microtype/microtype.pdf
index 51110edd6a..d2447135fe 100644
--- a/macros/latex/contrib/microtype/microtype.pdf
+++ b/macros/latex/contrib/microtype/microtype.pdf
Binary files differ
diff --git a/macros/latex/contrib/rec-thy/README b/macros/latex/contrib/rec-thy/README
index be0217da27..67d71a2585 100644
--- a/macros/latex/contrib/rec-thy/README
+++ b/macros/latex/contrib/rec-thy/README
@@ -43,3 +43,6 @@ v3.7 - Fixed cases enviornment (both prettier and no problem with creating newli
v3.8 - Adjusted \Tdeg to be more beamer friendly and fixed it not to dumbly underline 0^n. Fixed BeamerRequirements to work with differing values of \abovedisplayskip. Removed a few typos in docs for the requirements assistance. Added BeamerRequire and BeamerRequire* that put the requirements in a block and offer overlay specifications.
v3.8.1 Fixed issues displaying the prime for jump operations
v3.8.2 Removed option to put the set at the end of an \REset operation to avoid capturing later paren arguments, e.g. \REset{i}(A) no longer works to avoid confusion with \REset{i}(x).
+v3.8.3 Added bpfuncs. Changed default for code to use double angle brackets. Improved the indentation for the cases enviornment.
+
+03/29/2024 - v 4.0 Major release and refactor with many breaking changes. See the pdf documenatation for details. \ No newline at end of file
diff --git a/macros/latex/contrib/rec-thy/rec-thy.pdf b/macros/latex/contrib/rec-thy/rec-thy.pdf
index b710697678..541d35933f 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.pdf
+++ b/macros/latex/contrib/rec-thy/rec-thy.pdf
Binary files differ
diff --git a/macros/latex/contrib/rec-thy/rec-thy.sty b/macros/latex/contrib/rec-thy/rec-thy.sty
index 2020e4527a..dedde32abf 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.sty
+++ b/macros/latex/contrib/rec-thy/rec-thy.sty
@@ -1,5 +1,8 @@
% \NeedsTeXFormat{LaTeX2e}
% Release Notes see README
+%CHECK DEF OF COMPAT
+% POSSIBLE ALT: \mathrel{\rlap{\ensuremath{\not}}\ensuremath{\mid}}
+
\RequirePackage{expl3}
\RequirePackage{ltxcmds}
\RequirePackage{iftex,ifpdf}
@@ -10,10 +13,11 @@
\RequirePackage{etoolbox}
\RequirePackage{pict2e,picture}
\RequirePackage{xparse}
-\def\recthyVersion{3.8.2}
+% \RequirePackage{amsmath} required below if not already loaded and we aren't using asl.cls
+\def\recthyVersion{4.0}
\ProvidesExplPackage
{rec-thy}
- {2022/07/26}
+ {2024/03/29}
{\recthyVersion}
{Provides commands for writing up recursion theory papers}
@@ -39,15 +43,24 @@
\robustify\(
\robustify\)
-\ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}}%\RequirePackage{mathbbol}}
- \ltx@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
- % \ltx@ifpackageloaded{amssymb}{}{\RequirePackage{amssymb}}
- % \ltx@ifpackageloaded{amsfonts}{}{\RequirePackage{amsfonts}}
+%\RequirePackage{mathbbol}}
+\@ifclassloaded{asl}{
+
+}{
+ \ltx@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
+}
+
+
\AtBeginDocument{
% \@ifundefined{hyperref}{\providecommand{\texorpdfstring}[2]{def} }
- \ltx@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}}
-
+ % \ltx@ifpackageloaded{mathtools}{}{\RequirePackage{mathtools}}
+ \ltx@ifpackageloaded{unicode-math}{
+ \def\@recthy@tpathSYM{\mathbb{f}}
+ \Umathchardef\@recthy@xnot="3 \symoperators "0338
+ }{
+ \ltx@ifpackageloaded{bbm}{\def\@recthy@tpathSYM{\mathbbm{f}}}{\mathbf{f}}
+ }
% Undertilde doesn't exist in texlive so we remove the dependency and define it again.
\ltx@ifpackageloaded{undertilde}{}{
\newlength\knuthian@fdfive
@@ -71,50 +84,24 @@
-% \DeclareMathAlphabet{\mathbrush}{T1}{pbsi}{xl}{n}
-% \newcommand*{\mathbrush}[1]{\mathsfit{#1}}
-% \ifxetex
-% \RequirePackage{xltxtra}
-% \RequirePackage{unicode-math}
-% % \RequirePackage{fontspec,xunicode}
-% % \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} % To support LaTeX quoting style
-% % \input{/Users/TruePath/Library/texmf/tex/headers/appearence.tex}
-% \else
-% % \usepackage[utf8]{inputenc}
-% % \usepackage[T1]{fontenc}
-% % \RequirePackage{euscript}
-% % \newcommand*{\matheu}{\EuScript}
-
-% \ifpdf
-% \RequirePackage{cmap} % you can search in the pdf for umlauts and ligatures
-% \fi
-% \fi
-% \RequirePackage{stmaryrd}
-% \RequirePackage{marvosym}
-
\def\PMG@arginit{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined}
\def\@recthy@family{\@currname.\@currext} %The default family for this package...filename.ext
%Define boolean options true if option passed false otherwise
-\newif\ifrecthy@nohyphenation \recthy@nohyphenationfalse
-\newif\ifrecthy@mrref \recthy@mrreffalse
\newif\ifrecthy@nomath \recthy@nomathfalse
-\newif\ifrecthy@nodelim \recthy@nodelimfalse
-\newif\ifrecthy@nonames
-\recthy@nonamesfalse
-\newif\ifrecthy@nosets
-\recthy@nosetsfalse
-\newif\ifrecthy@noquants\recthy@noquantsfalse
+\newif\ifrecthy@nosymb \recthy@nosymbfalse
+\newif\ifrecthy@nosets \recthy@nosetsfalse
+\newif\ifrecthy@noquants \recthy@noquantsfalse
\newif\ifrecthy@nospaces \recthy@nospacesfalse
\newif\ifrecthy@nostrings \recthy@nostringsfalse
\newif\ifrecthy@notrees \recthy@notreesfalse
\newif\ifrecthy@nopair \recthy@nopairfalse
-\newif\ifrecthy@nonames \recthy@nonamesfalse
\newif\ifrecthy@nosetrels \recthy@nosetrelsfalse
\newif\ifrecthy@noordinalnotations \recthy@noordinalnotationsfalse
\newif\ifrecthy@nosyntax \recthy@nosyntaxfalse
+\newif\ifrecthy@shortsyntax \recthy@shortsyntaxtrue
\newif\ifrecthy@nodegclasses \recthy@nodegclassesfalse
\newif\ifrecthy@noforcing \recthy@noforcingfalse
\newif\ifrecthy@nodegrees \recthy@nodegreesfalse
@@ -125,19 +112,19 @@
\newif\ifrecthy@nopfcases \@ifclassloaded{beamer}{\recthy@nopfcasestrue}{\recthy@nopfcasesfalse}
\newif\ifrecthy@beamersupp \@ifclassloaded{beamer}{\recthy@beamersupptrue}{\recthy@beamersuppfalse}
\newif\ifrecthy@noprioritytrees \recthy@noprioritytreesfalse
-\newif\ifrecthy@nosuppprioritytrees \recthy@nosuppprioritytreestrue
+% \newif\ifrecthy@nosuppprioritytrees \recthy@nosuppprioritytreestrue
\newif\ifrecthy@hyperreqs \recthy@hyperreqstrue
\newif\ifrecthy@nooperators \recthy@nooperatorsfalse
\newif\ifrecthy@fix@typeset \recthy@fix@typesettrue
\newif\ifrecthy@nodoubleangles \recthy@nodoubleanglesfalse
\newif\ifrecthy@stepsenv \recthy@stepsenvfalse
-\newif\ifrecthy@compatThreeSixOrEarlier \recthy@compatThreeSixOrEarlierfalse
+\newif\ifrecthy@shortO \recthy@shortOtrue
+\newif\ifrecthy@midincompat \recthy@midincompattrue
+\newif\ifrecthy@norsfs \recthy@norsfsfalse
+\newif\ifrecthy@nobbm \recthy@nobbmfalse
-\DeclareOptionX{nohyphenation}{\recthy@nohyphenationtrue}
-\DeclareOptionX{mrref}{\recthy@mrreftrue}
\DeclareOptionX{nomath}{\recthy@nomathtrue}
-\DeclareOptionX{nodelim}{\recthy@nodelimtrue}
-\DeclareOptionX{nonames}{\recthy@nonamestrue}
+\DeclareOptionX{nosymb}{\recthy@nosymbtrue}
\DeclareOptionX{nosets}{\recthy@nosetstrue}
\DeclareOptionX{noquants}{\recthy@noquantstrue}
\DeclareOptionX{nospaces}{\recthy@nospacestrue}
@@ -147,7 +134,7 @@
\DeclareOptionX{nosetrels}{\recthy@nosetrelstrue}
\DeclareOptionX{noordinalnotations}{\recthy@noordinalnotationstrue}
\DeclareOptionX{nosyntax}{\recthy@nosyntaxtrue}
-\DeclareOptionX{nodegclasses}{\recthy@nodegclassestrue}
+\DeclareOptionX{noshortsyntax}{\recthy@shortsyntaxfalse}
\DeclareOptionX{noforcing}{\recthy@noforcingtrue}
\DeclareOptionX{nodegrees}{\recthy@nodegreestrue}
\DeclareOptionX{nocomputations}{\recthy@nocomputationstrue}
@@ -161,37 +148,17 @@
\DeclareOptionX{nofixtype}{\recthy@fix@typesetfalse}
\DeclareOptionX{nodoubleangles}{\recthy@nodoubleanglestrue}
\DeclareOptionX{steps}{\recthy@stepsenvtrue}
+\DeclareOptionX{noshortO}{\recthy@shortOfalse}
+\DeclareOptionX{altcompat}{\recthy@midincompattrue}
+\DeclareOptionX{norsfs}{\recthy@norsfstrue}
+\DeclareOptionX{nobbm}{\recthy@nobbmtrue}
-\DeclareOptionX{compat31}{\recthy@compat@threeOne}
-\DeclareOptionX{compat35}{\recthy@compat@threeFive}
-\DeclareOptionX{compat36}{\recthy@compat@threeSix}
-
-\DeclareOptionX{suppPriorityTrees}{
-\ifrecthy@compatThreeSixOrEarlier
- \@packinfo{Enabling depreciated Support Priority Tree functionality. These functions are only accessible in compatibility mode and should not be used in new documents}
- \recthy@nosuppprioritytreesfalse
-\else
- \PackageWarningNoLine{rec-thy}{Suplemental Priority Tree option depreciated. Combine with one of the options compat36,compat32 or compat 31 to access these functions.}
-\fi
-}
-
-\newcommand*{\recthy@rollback@threeTwo}{}
-\newcommand*{\recthy@rollback@threeSix}{}
-\newcommand*{\recthy@rollback@threeSeven}{}
-\newcommand*{\recthy@compat@threeSix}{\recthy@compatThreeSixOrEarliertrue\AtEndOfPackage{\recthy@rollback@threeSeven}}
-\newcommand*{\recthy@compat@threeFive}{\recthy@compatThreeSixOrEarliertrue\recthy@compat@threeSix\AtEndOfPackage{\recthy@rollback@threeSix}}
-\newcommand*{\recthy@compat@threeOne}{\recthy@compatThreeSixOrEarliertrue\recthy@compat@threeFive\AtEndOfPackage{\recthy@rollback@threeTwo}}
-%\DeclareOptionX{nomodule}{\recthy@nomoduletrue}
-
-\DeclareOptionX{degjoin}{\def\Tjoin{\Tdegjoin}}
+% \DeclareOptionX{degjoin}{\def\Tjoin{\Tdegjoin}}
\let\@recthy@modulescr\mathcal
\DeclareOptionX{modulescr}[mathcal]{\letcs{\@recthy@modulescr}{#1}}
-\def\@recthy@ballsymb@default{\mathscr{B}}
-\let\@recthy@ballsymb\@recthy@ballsymb@default
-\DeclareOptionX{ballsymb}[@recthy@ballsymb@default]{\letcs{\@recthy@ballsymb}{#1}}
@@ -207,60 +174,8 @@
-\let\@recthy@reqscr\mathscr
-\DeclareOptionX{reqscr}[mathscr]{\letcs{\@recthy@reqscr}{#1}}
-% \DeclareOptionX{beamerreq}[@recthy@EmptyStr@Default]{\letcs{\@recthy@EmptyStr}{#1}}
-
-
-
-
-
-
-
-
-% \newcommand*{\@recthy@REA}{\ensuremath{\text{REA}}}
-% \WithSuffix\def\@recthy@REA[#1]{#1-\@recthy@REA\relax}
-% \newcommand*{\@recthy@CEA}{\ensuremath{\text{CEA}}}
-% \WithSuffix\def\@recthy@CEA[#1]{#1-\@recthy@CEA\relax}
-
-\DeclareOptionX{reterms}{%
- \let\@recthy@ce=\@recthy@re
- \let\@recthy@computable=\@recthy@recursive
- \let\@recthy@computablyEnumerable=\@recthy@recursivelyEnumerable
- \let\@recthy@ComputablyEnumerable=\@recthy@RecursivelyEnumerable
- } %Make all references to ce change to re
-
- \DeclareOptionX{reaterms}{%
- \let\@recthy@CEA=\@recthy@REA
- }
-
-\DeclareOptionX{ceterms}{%
- \let\@recthy@re=\@recthy@ce
- \let\@recthy@recursive=\@recthy@computable
- \let\@recthy@recursivelyEnumerable=\@recthy@computablyEnumerable
- \let\@recthy@RecursivelyEnumerable=\@recthy@ComputablyEnumerable
- } %Make all references to re change to ce
-
-\DeclareOptionX{ceaterms}{%
- \let\@recthy@REA=\@recthy@CEA
- }
-
-\def\@recthy@setdiffSYMdefault{-}
-\let\@recthy@setdiffSYM=\@recthy@setdiffSYMdefault
-\DeclareOptionX{diffsym}[@recthy@setdiffSYMdefault]{\letcs{\@recthy@setdiffSYM}{#1}}
-% \newcommand*{\@recthy@Cform@default}{\prescript{\mathcal{C}}{}{\Pi}}
-
-
-\newcommand*{\@recthy@CDelta@default}{\prescript{\mathcal{C}}{}{\Delta}}
-\newcommand*{\@recthy@CSigma@default}{\prescript{\mathcal{C}}{}{\Sigma}}
-\newcommand*{\@recthy@CPi@default}{\prescript{\mathcal{C}}{}{\Pi}}
-\let\@recthy@CDelta=\@recthy@CDelta@default
-\let\@recthy@CSigma=\@recthy@CSigma@default
-\let\@recthy@CPi=\@recthy@CPi@default
-\DeclareOptionX{cdeltasym}[@recthy@CDelta@default]{\letcs{\@recthy@CDelta}{#1}}
-\DeclareOptionX{csigmasym}[@recthy@CSigma@default]{\letcs{\@recthy@CSigma}{#1}}
-\DeclareOptionX{cpisym}[@recthy@CPi@default]{\letcs{\@recthy@CPi}{#1}}
-% \DeclareOptionX{cformsym}[@recthy@Cform@default]{\letcs{\@recthy@CPi}{#1}\letcs{\@recthy@CSigma}{#1}\letcs{\@recthy@CDelta}{#1}}
+\def\@recthy@reqscr{\mathscr}
+\DeclareOptionX{reqscr}{\letcs{\@recthy@reqscr}{#1}}
@@ -271,6 +186,11 @@
\let\@recthy@recfnlSYM=\@recthy@recfnlSYM@default
\def\@recthy@useSYM@default{\ltx@ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}}
\let\@recthy@useSYM=\@recthy@useSYM@default
+
+
+
+
+
\DeclareOptionX{recfnlsym}[@recthy@recfnlSYM@default]{\letcs{\@recthy@recfnlSYM}{#1}}
\DeclareOptionX{recfsym}[@recthy@recfSYM@default]{\letcs{\@recthy@recfSYM}{#1}}
\DeclareOptionX{usesym}[@recthy@useSYM@default]{\letcs{\@recthy@useSYM}{#1}}
@@ -278,19 +198,25 @@
\newcommand*{\@recthy@llangle}{\langle\!\langle}
\newcommand*{\@recthy@rrangle}{\rangle\!\rangle}
+
+\let\@recthy@llangle@orig=\llangle
+\let\@recthy@rrangle@orig=\rrangle
+
+
+
\let\@recthy@EmptyStr=\@recthy@EmptyStr@Default
\let\@recthy@concatSYM=\@recthy@concatSYM@Default
\def\@recthy@langle{\langle}
\def\@recthy@rangle{\rangle}
\let\@recthy@lstrdelim=\@recthy@langle
\let\@recthy@rstrdelim=\@recthy@rangle
-\let\@recthy@lcodedelim=\@recthy@langle
-\let\@recthy@rcodedelim=\@recthy@rangle
+\let\@recthy@lcodedelim=\@recthy@llangle
+\let\@recthy@rcodedelim=\@recthy@rrangle
\let\@recthy@lpairdelim=\@recthy@langle
\let\@recthy@rpairdelim=\@recthy@rangle
-\def\@recthy@concatSYM@Default{\widehat{\phantom{X}}}
+\def\@recthy@concatSYM@Default{\widehat{\phantom{x}}}
\def\@recthy@EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
\let\@recthy@concatSYM\@recthy@concatSYM@Default
\let\@recthy@EmptyStr\@recthy@EmptyStr@Default
@@ -307,12 +233,22 @@
-
+ % \AtBeginDocument{\@ifundefined{hyperref}{\newcommand*{\texorpdfstring}[2]{#1}}{}}
% \ProcessOptions*
% \ProcessOptionsX<\@recthy@family>
\ProcessOptionsX
+\ifrecthy@norsfs
+\else
+ \ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{mathrsfs}}
+\fi
+
+\ifrecthy@nobbm
+\else
+ \ltx@ifpackageloaded{unicode-math}{}{\RequirePackage{bbm}}
+\fi
+
%misc tools
\def\@recthy@ignorespacesandallparsafterend{\ifhmode\unskip\fi
@@ -412,37 +348,77 @@
\newcommand*{\@recthy@code}[1]{\mathopen{\@recthy@lcodedelim}#1\mathclose{\@recthy@rcodedelim}}
- \appto{\recthy@rollback@threeSix}{
- \renewcommand*{\@recthy@pair}[2]{\mathopen{\@recthy@llangle} #1, #2 \mathclose{\@recthy@rrangle}}
- \def\@recthy@EmptyStr@Default{\mathopen{\langle}\mathclose{\rangle}}
- % \renewcommand*{\@recthy@str}[1]{\mathopen{\langle}#1\mathclose{\rangle}}
- \renewcommand*{\@recthy@code}[2][]{\mathopen{\@recthy@llangle}#2\mathclose{\@recthy@rrangle}^{#1}}
+ \let\godelpair=\@recthy@pair
+ \ifrecthy@nopair
+ \@packinfo{No redefining pair.}
+ \else
+ \@packinfo{pair=godelpair.}
+ \let\pair=\@recthy@pair
+ \fi
+
+
+ \newcommand{\succprec@recthy}{\mathrel{\mathpalette\succ@prec@recthy{\succ\prec}}}
+ \newcommand{\precsucc@recthy}{\mathrel{\mathpalette\succ@prec@recthy{\prec\succ}}}
+
+ \newcommand{\nsuccprec@recthy}{\ltx@ifpackageloaded{unicode-math}{\succprec@recthy\!\@recthy@xnot}{\not\succprec@recthy}}
+ \newcommand{\nprecsucc@recthy}{\ltx@ifpackageloaded{unicode-math}{\precsucc@recthy\!\@recthy@xnot}{\not\precsucc@recthy}}
+
+ \newcommand{\succ@prec@recthy}[2]{\succ@@prec@recthy#1#2}
+ \newcommand{\succ@@prec@recthy}[3]{%
+ \vcenter{\m@th\offinterlineskip
+ \sbox\z@{$#1#3$}%
+ \hbox{$#1#2$}\kern-0.4\ht\z@\box\z@
+ }%
}
-\NewDocumentCommand{\incompat@recthy}{o}{\mathrel{\mid}\IfValueTF{#1}{_{#1}}{}}
-\NewDocumentCommand{\compat@recthy}{o}{\mathrel{\not\mid}\IfValueTF{#1}{_{#1}}{}}
+
+ \def\defaultincompatsymb@recthy{\mathrel{\mid}}
+ \def\defaulcompatSymb@recthy{\mathrel{\,\not|\,}}
+ \let\ncompatsymb@recthy=\nsuccprec@recthy
+ \ifrecthy@midincompat
+ \@packinfo{Using mid as incompat symbol}
+ \let\compatsymb@recthy=\defaulcompatSymb@recthy
+ \let\incompatsymb@recthy=\defaultincompatsymb@recthy
+ \else
+ \@packinfo{Using precc over succ as compat symbol}
+ \let\compatsymb@recthy=\succprec@recthy
+ \let\incompatsymb@recthy=\nsuccprec@recthy
+ \fi
+
+
+
+
+
+
+\NewDocumentCommand{\incompat@recthy}{o}{\incompatsymb@recthy\IfValueTF{#1}{_{#1}}{}}
+\NewDocumentCommand{\compat@recthy}{o}{{\compatsymb@recthy\IfValueTF{#1}{_{#1}}{}}}
+
\ifrecthy@nostrings
\@packinfo{No strings loading.}
\else
\@packinfo{Strings loading.}
- \appto{\recthy@rollback@threeSix}{\newcommand*{\closedn}[1]{{#1}^\blacktriangledown}}
+ % \appto{\recthy@rollback@threeSix}{\newcommand*{\closedn}[1]{{#1}^\blacktriangledown}}
\let\code=\@recthy@code
\let\str=\@recthy@str
\newcommand*{\EmptyStr}{\@recthy@EmptyStr}
- \newcommand*{\estr}{\EmptyStr}
+ \newcommand*{\estr}{\@recthy@EmptyStr}
\newcommand*{\decode}[2]{\left(#1\right)_{#2}}
- \let\godelpair=\@recthy@pair
- \let\gpair=\@recthy@pair
+ \newcommand*{\godelnum}[1]{\left\ulcorner #1 \right\urcorner}
+ \let\cornerquote=\godelnum
\newcommand*{\concat}{\@recthy@concatSYM}
\WithSuffix\def\concat[#1]{\concat\str{#1}}
\newcommand*{\strpred}[1]{{#1}^{-}}
\providecommand*{\lh}[2][]{\@recthy@abs{#2}_{#1}} %% Gives length of a string
\providecommand*{\incompat}{\incompat@recthy} %incompatible stringes FIX SPACING
- \providecommand*{\incomp}{\incompat@recthy}
+ % \providecommand*{\incomp}{\incompat@recthy}
\providecommand*{\compat}{\compat@recthy}
- \providecommand*{\nincompat}{\compat@recthy}
- \providecommand*{\nincomp}{\compat@recthy}
+ \let\succprec=\succprec@recthy
+ \let\nsuccprec=\nsuccprec@recthy
+ \let\precsucc=\precsucc@recthy
+ \let\nprecsucc=\nprecsucc@recthy
+ % \providecommand*{\nincompat}{\compat@recthy}
+ % \providecommand*{\nincomp}{\compat@recthy}
% \newcommand*{\setcol}[2]{{#1}^{[#2]}}
\ExplSyntaxOn %thx stackexghance
\NewDocumentCommand \setcol {m m}
@@ -467,12 +443,7 @@
}
\ExplSyntaxOff
- \ifrecthy@nopair
- \@packinfo{No redefining pair.}
- \else
- \@packinfo{pair=godelpair.}
- \let\pair=\@recthy@pair
- \fi
+
\fi
\ifrecthy@noprioritytrees
@@ -480,7 +451,7 @@
\else
\@packinfo{Loading Priority Tree Helper.}
\providecommand{\PriorityTree}{\mathbb{T}}
- \providecommand{\tpath}[1][]{\ifthenelse{\isempty{#1}}{\mathbb{f}}{\mathbb{f}_{#1}}}
+ \providecommand{\tpath}[1][]{\ifthenelse{\isempty{#1}}{\@recthy@tpathSYM}{\@recthy@tpathSYM_{#1}}}
\providecommand{\leftof}{\mathbin{<_L}}
\providecommand{\leftofeq}{\mathbin{\leq_L}}
\providecommand{\rightof}{\mathbin{>_L}}
@@ -491,25 +462,10 @@
\providecommand{\nrightofeq}{\mathbin{\ngeq_L}}
\NewDocumentCommand{\PriorityTreeModule}{mO{}m}{\ensuremath{{\@recthy@modulescr{#1}}^{#2}_{#3} }}
\let\module=\PriorityTreeModule
- \providecommand{\ball}[3][]{{\@recthy@ballsymb}^{#1}(#2, #3)}
\fi
-\ifrecthy@nosuppprioritytrees
-\else
- \providecommand*{\Astages}[1]{\mathcal{A}({#1})}
- \providecommand*{\Vstages}[1]{\mathcal{V}(#1)}
- \providecommand{\reqof}[2][]{\mathbb{r}(#2)}
- \let\modof=\reqof
- \providecommand{\ancestor}{\succ}
- \providecommand{\descendant}{\prec}
- \providecommand{\ancestoreq}{\succeq}
- \providecommand{\descendanteq}{\preceq}
- \let\ances=\ancestor
- \let\anceseq=\ancestoreq
- \let\desc=\descendant
- \let\desceq=\descendanteq
-\fi
+
\ifrecthy@nopfcases
@@ -517,55 +473,6 @@
\else
\@packinfo{Loading Proof Cases Helper.}
\RequirePackage{enumitem}
- \appto{\recthy@rollback@threeSeven}{
- \setlist[pfcasesnonum]{
- label={\pmg@casefont{Case}}\protect\thiscase:~,
- align=left,
- labelsep=!,
- itemindent=-1em,
- }
- \setlist[pfcasesnumbered]{
- align=left,
- labelsep=!,
- itemindent=-1em,
- }
- \setlist[pfcasesnumbered,1]{
- label={{\pmg@casefont{Case}}~\arabic*\protect\thiscase:~},
- }
- \setlist[pfcasesnumbered,2]{
- label={{\pmg@casefont{Case}}~\arabic{pfcasesnumberedi}\alph*:\protect\thiscase.~},
- }
- \setlist[pfcasesnumbered,3]{
- label={{\pmg@casefont{Case}}~\arabic{pfcasesnumberedi}\alph{pfcasesnumberedii}.\roman*:\protect\thiscase.~},
- }
- \renewenvironment{pfcases*}{
- \ProvideDocumentCommand{\case}{o}{
- \IfNoValueTF{##1}{
- \def\thiscase{}%
- }{
- \def\thiscase{~##1}%
- }
- \item \ltx@ifpackageloaded{cleveref}{%
- \cref@constructprefix{pfcases}{\cref@result}%
- \protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result]##1}}{} \protected@edef\@currentlabel{##1}%
- }
- \begin{pfcasesnonum}
- }
- {\end{pfcasesnonum}}
- \renewenvironment{pfcases}{
- \ProvideDocumentCommand{\case}{o}{
- \IfNoValueTF{##1}{
- \def\thiscase{}%
- }{
- \def\thiscase{~##1}%
- }
- \item \ltx@ifpackageloaded{cleveref}{%
- \cref@constructprefix{\pfcasecounter@pmg}{\cref@result}
- \protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result] \csname the\pfcasecounter@pmg \endcsname}}{}%
- }
- \begin{pfcasesnumbered}}{\end{pfcasesnumbered}}
- }
-
\ltx@ifpackageloaded{cleveref}{
\crefformat{pfcasesnonumi}{#2case~#1#3}
@@ -580,16 +487,14 @@
\Crefformat{pfcasesnumberedii}{#2Case~#1#3}
\crefformat{pfcasesnumberediii}{#2case~#1#3}
\Crefformat{pfcasesnumberediii}{#2Case~#1#3}
- }{}
+ }{}
+
\newlist{pfcasesnonum}{enumerate}{3}
\setlist[pfcasesnonum]{
label={\pmg@casefont{Case}},
align=left,
- labelsep=0pt,
- itemindent=!,
- leftmargin=2em,
- labelindent=0pt,
- labelwidth=0pt
+ left=0pt .. 1.5em,
+ itemindent=*
}
\setlist[pfcasesnonum,1]{
before=\def\pfcasecounter@pmg{pfcasesnonumi},
@@ -603,12 +508,17 @@
\newlist{pfcasesnumbered}{enumerate}{3}
\setlist[pfcasesnumbered]{
align=left,
- labelsep=0pt,
- itemindent=!,
- leftmargin=2em,
- labelindent=0pt,
- labelwidth=0pt
+ left=0pt .. 1.5em,
+ itemindent=*
}
+ % \setlist[pfcasesnumbered]{
+ % align=left,
+ % labelsep=0pt,
+ % itemindent=!,
+ % leftmargin=2em,
+ % labelindent=0pt,
+ % labelwidth=0pt
+ % }
\setlist[pfcasesnumbered,1]{
before=\def\pfcasecounter@pmg{pfcasesnumberedi},
label={{\pmg@casefont{Case}}~\arabic*},
@@ -635,16 +545,15 @@
\ltx@ifpackageloaded{cleveref}{%
\cref@constructprefix{pfcases}{\cref@result}%
\protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result]##1}}{} \protected@edef\@currentlabel{##1}\ignorespaces}
- \begin{pfcasesnonum}[labelindent=\@recthy@cases@labelindent]\def\@recthy@cases@labelindent{-1em}\ignorespaces}{\end{pfcasesnonum}\ignorespacesafterend}
+ \begin{pfcasesnonum}\def\@recthy@cases@labelindent{1em}\ignorespaces}{\end{pfcasesnonum}\ignorespacesafterend}
\newenvironment{pfcases}{
\ProvideDocumentCommand{\case}{o}{
\IfNoValueTF{##1}{
- \def\thiscase{}%
+ \def\thiscase{}\item\!\!\textbf{:} \allowbreak%\linebreak[1]%
}{
- \def\thiscase{~##1}%
+ \def\thiscase{~##1}\item~##1\textbf{:} \allowbreak%\linebreak[1]%
}
- \item~##1\textbf{:} \linebreak[1]%
\ltx@ifpackageloaded{cleveref}{%
\cref@constructprefix{\pfcasecounter@pmg}{\cref@result}%
\protected@xdef\cref@currentlabel{[\pfcasecounter@pmg][][\cref@result]\csname the\pfcasecounter@pmg \endcsname}}{}\ignorespaces}
@@ -721,8 +630,17 @@
-\newcommand*{\@pmg@saveeqstate}{\let\@origif@fleqn@pmg=\if@fleqn \let\@origiftagsleft@pmg=\iftagsleft@}
-\newcommand*{\@pmg@restoreeqstate}{ \let\if@fleqn=\@origif@fleqn@pmg\let\iftagsleft@=\@origiftagsleft@pmg}
+% \let\recthy@origtagform@=\tagform@
+\newcommand*{\@pmg@saveeqstate}{
+ \let\@origif@fleqn@pmg=\if@fleqn
+ \let\@origiftagsleft@pmg=\iftagsleft@
+ \let\recthy@savedtagform@=\tagform@
+}
+\newcommand*{\@pmg@restoreeqstate}{
+ \let\if@fleqn=\@origif@fleqn@pmg
+ \let\iftagsleft@=\@origiftagsleft@pmg
+ \let\tagform@=\recthy@savedtagform@
+ }
\ifrecthy@noreqhelper
\@packinfo{Not loading requirement assist.}
@@ -739,33 +657,8 @@
\AtBeginDocument{\@ifundefined{hyperref}{}{\let\req=\req@href@star}}
\fi
- \newtagform{colon}{}{:}
- % \@ifclassloaded{beamer}{\def\setmmonefivecm{\@mathmargin{1.5cm}}}{\def\setmmonefivecm{\setlength\@mathmargin{1.5cm}}}%
- \newenvironment{requirement}[1]{
- \@pmg@saveeqstate
- \@fleqntrue
- \setlength\@mathmargin{1.5cm}
- \tagsleft@true
- \usetagform{colon}
- \begin{equation}\tag{#1}
- }{
- \end{equation}
- \@pmg@restoreeqstate
- \usetagform{default}
- % \let\maketag@@@=\maketag@@@orig@pmg
- }
-
- \NewDocumentEnvironment{require}{O{}mO{}m}{
- \begin{requirement}{\req@nohref[#1#3]{#2}{#4}} \label{\detokenize{req:#2@#1#3}}%
- }{
- \end{requirement}%
- }
- \NewDocumentEnvironment{require*}{O{}mO{}m}{
- \begin{requirement}{\req@nohref[#1#3]{#2}{#4}}
- }{
- \end{requirement}%
- }
-
+ % \newtagform{colon}{}{:}
+ \def\recthy@colontagform@#1{\maketag@@@{\ignorespaces#1\unskip:}}
\NewDocumentCommand{\refreq}{O{}mO{}}{\ref{\detokenize{req:#2@#1#3}}}
@@ -777,6 +670,8 @@
\ifrecthy@beamersupp
+
+\AtBeginDocument{
\theoremstyle{plain}
\newtheorem{reqsblock@recthy}{Requirements}
\newtheorem{reqblock@recthy}{Requirement}
@@ -790,62 +685,94 @@
\setbeamercolor{block title}{fg=white,bg=Maroon}%
\setbeamercolor{block body}{fg=black,bg=Maroon!10}\OLDreqblock@recthy
}
+ }
\NewDocumentCommand{\require@beamer}{sO{}mO{}m}{\tag{$\@ifmtarg{#2#4}{\mathscr{#3}_{#5}}{\mathscr{#3}_{#5}^{#2#4}}$} \IfBooleanTF{#1}{}{\label{\detokenize{req:#3@#2#4}}} & }
- \NewDocumentEnvironment{BeamerRequirements}{d<>b}{\IfValueTF{#1}{\begin{reqsblock@recthy}<#1>}{\begin{reqsblock@recthy}}%
+ \NewDocumentEnvironment{requirements}{d<>b}{\IfValueTF{#1}{\begin{reqsblock@recthy}<#1>}{\begin{reqsblock@recthy}}%
\setlength{\abovedisplayskip}{0pt}%
\setlength{\belowdisplayskip}{0pt}%
- % \vspace*{-.5cm}
- \usetagform{colon} %
- \let\myhalign\halign%
- \def\halign{\let\mylb\\ \renewcommand{\\}{& \mylb}\myhalign}%
- \let\require=\require@beamer %
- \begin{flalign*}%
- #2 &
- \end{flalign*}%
+ \begin{requirements*}
+ #2
+ \end{requirements*}
\end{reqsblock@recthy}}{}
- \NewDocumentEnvironment{requirements}{b}{\usetagform{colon} %
+ \NewDocumentEnvironment{requirement}{d<>b}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
+ \setlength{\abovedisplayskip}{0pt}%
+ \setlength{\belowdisplayskip}{0pt}%
+ \begin{requirements*}
+ #2
+ \end{requirements*}
+ \end{reqblock@recthy}}{}
+
+ \NewDocumentEnvironment{requirements*}{b}{\let\tagform@=\recthy@colontagform@
\let\myhalign\halign%
\def\halign{\let\mylb\\ \renewcommand{\\}{& \mylb}\myhalign}%
\let\require=\require@beamer %
\begin{flalign*}%
- #1 &
+ #1
\end{flalign*}}{\ignorespacesafterend}%\@recthy@ignorespacesandallparsafter}
- \NewDocumentEnvironment{BeamerRequire}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
- \setlength{\abovedisplayskip}{0pt}%
- \setlength{\belowdisplayskip}{0pt}%
- \begin{requirement}{\req@nohref[#2#4]{#3}{#5}} \label{\detokenize{req:#3@#2#4}}%
- }{
- \end{requirement}%
- \vspace*{-.3cm}%
- \end{reqblock@recthy}%
- }
- \NewDocumentEnvironment{BeamerRequire*}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
- \setlength{\abovedisplayskip}{0pt}%
- \setlength{\belowdisplayskip}{0pt}%
- \begin{requirement}{\req@nohref[#2#4]{#3}{#5}}
- }{
- \end{requirement}%
- \vspace*{-.3cm}%
- \end{reqblock@recthy}%
- }
+ % \NewDocumentEnvironment{BeamerRequire}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
+ % \setlength{\abovedisplayskip}{0pt}%
+ % \setlength{\belowdisplayskip}{0pt}%
+ % \begin{requirement}{\req@nohref[#2#4]{#3}{#5}} \label{\detokenize{req:#3@#2#4}}%
+ % }{
+ % \end{requirement}%
+ % \vspace*{-.3cm}%
+ % \end{reqblock@recthy}%
+ % }
+ % \NewDocumentEnvironment{BeamerRequire*}{d<>O{}mO{}m}{\IfValueTF{#1}{\begin{reqblock@recthy}<#1>}{\begin{reqblock@recthy}}%
+ % \setlength{\abovedisplayskip}{0pt}%
+ % \setlength{\belowdisplayskip}{0pt}%
+ % \begin{requirement}{\req@nohref[#2#4]{#3}{#5}}
+ % }{
+ % \end{requirement}%
+ % \vspace*{-.3cm}%
+ % \end{reqblock@recthy}%
+ % }
\else
+ \newenvironment{requirement}[1]{
+ \@pmg@saveeqstate
+ \@fleqntrue
+ \setlength\@mathmargin{1.5cm}
+ \tagsleft@true
+ \let\tagform@=\recthy@colontagform@%
+ % \usetagform{colon}
+ \begin{equation}\tag{#1}
+ }{
+ \end{equation}
+ \@pmg@restoreeqstate
+ % \usetagform{default}
+ % \let\maketag@@@=\maketag@@@orig@pmg
+ }
+
+ \NewDocumentEnvironment{require}{O{}mO{}m}{
+ \begin{requirement}{\req@nohref[#1#3]{#2}{#4}} \label{\detokenize{req:#2@#1#3}}%
+ }{
+ \end{requirement}%
+ }
+ \NewDocumentEnvironment{require*}{O{}mO{}m}{
+ \begin{requirement}{\req@nohref[#1#3]{#2}{#4}}
+ }{
+ \end{requirement}%
+ }
+
+
\NewDocumentEnvironment{requirements}{}{%
\@pmg@saveeqstate%
\@fleqntrue%
\setlength\@mathmargin{1.5cm}%
\tagsleft@true%
- \usetagform{colon}%
+ % \usetagform{colon}%
+ \let\tagform@=\recthy@colontagform@%
\let\require=\require@nested%
\gather
}{\endgather%
\@pmg@restoreeqstate%
- \usetagform{default}%
+ % \usetagform{default}%
\ignorespacesafterend}
\fi
@@ -855,62 +782,43 @@
\ifrecthy@nostructresets
- \@packinfo{Not loading r.e. set structs w/ containment.}
+ \@packinfo{Not loading r.e. subset commands}
\else
- \@packinfo{Loading r.e. set structs w/ containment.}
- \let\@orig@setminus=\setminus
+ \@packinfo{Loading r.e. subset commands}
+
+ %%TODO: This stuff should be in a different section
+ % \let\@orig@setminus=\setminus
\newcommand*{\promptdif}{\@orig@setminus_{\downarrow}}
\let\setbefore=\promptdif
\let\promptminus=\promptdif
\let\promptsetminus=\promptdif
-
- \newcommand*{\StrcE}{\ensuremath{\mathscr{E}}}
- \WithSuffix\def\StrcE*{\ensuremath{\mathscr{E}^{*}}}
- \let\strucE\StrcE
- \newcommand*{\StrcL}[1]{\mathscr{L}(#1)}
- \newcommand*{\StrcStarL}[1]{\mathscr{L}^{*}(#1)}
- \WithSuffix\def\StrcL*{\StrcStarL}
\newcommand*{\splitof}{\sqsubset}
\newcommand*{\splitby}{\sqsupset}
- \newcommand*{\StrcR}{\ensuremath{\mathcal{R}}}
- \newcommand*{\StrcD}{\ensuremath{\mathcal{D}}}
+ %%TODO depreciate capital S for commands...and generally remove the R and D stuff
+ \newcommand*{\strcE}{\ensuremath{\mathscr{E}}}
+ \WithSuffix\def\strcE*{\ensuremath{\mathscr{E}^{*}}}
+ % \let\strcE\StrcE
+ \newcommand*{\strcL}[1]{\mathscr{L}(#1)}
+ \newcommand*{\strcStarL}[1]{\mathscr{L}^{*}(#1)}
+ \WithSuffix\def\strcL*{\StrcStarL}
-\fi
+ % \let\strcR=\StrcR
+ % \let\strcD=\StrcD
-\ifrecthy@nohyphenation
- \@packinfo{No hyphenation loading.}
-\else
-\hyphenation{ra-tion-als ra-tion-al Harrington Slaman Cholak Knight Gerdes Lange}
\fi
-\ifrecthy@mrref
- \@packinfo{MRref helper loading}
- \AtBeginDocument{
- \@ifpackageloaded{hyperref}{
- \def\recthy@checkMR MR#1#2#3 #4\relax%
- {\ifx#1M%
- \ifx#2R\recthy@MR{#3}\else\recthy@MR{#1#2#3}\fi
- \else
- \recthy@MR{#1#2#3}%
- \fi}
- \def\MR#1{\recthy@checkMR MR#1 \relax}
- \newcommand{\recthy@MR}[1]{\recthy@MRhref{#1}{MR #1}}
- % % \MRhref is called by the amsart/book/proc definition of \MR.
- \newcommand{\recthy@MRhref}[2]{\href{http://www.ams.org/mathscinet-getitem?mr=#1}{#2}}
- }
- }
-\else
- \@packinfo{MRref helper not loading}
-\fi
+
+
% \newcommand*{\@recthy@abs}[1]{\lvert#1\rvert}
-\DeclarePairedDelimiter\@recthy@abs{\lvert}{\rvert}
+\NewDocumentCommand{\@recthy@abs}{sm}{\IfBooleanT{#1}{\left}\lvert #2 \IfBooleanT{#1}{\right}\rvert}
+% \DeclarePairedDelimiter\@recthy@abs{\lvert}{\rvert}
\newcommand*{\@recthy@ensuretext}[1]{\ensuremath{\text{#1}}}
@@ -928,8 +836,10 @@
\else
\DeclareMathOperator{\Ord}{Ord}
\fi
- \DeclarePairedDelimiter\ceil{\lceil}{\rceil}
- \DeclarePairedDelimiter\floor{\lfloor}{\rfloor}
+ \NewDocumentCommand{\ceil}{sm}{\IfBooleanT{#1}{\left}\lceil #2 \IfBooleanT{#1}{\right}\rceil}
+ % \DeclarePairedDelimiter\ceil{\lceil}{\rceil}
+ % \DeclarePairedDelimiter\floor{\lfloor}{\rfloor}
+ \NewDocumentCommand{\floor}{sm}{\IfBooleanT{#1}{\left}\lfloor #2 \IfBooleanT{#1}{\right}\rfloor}
\recthy@strip{abs}
\ifdefined\dom
@@ -943,15 +853,8 @@
\providecommand*{\restr}[1]{\mathpunct{\restriction_{#1}}}
\providecommand*{\ordpair}[2]{\left( #1, #2 \right) }
%%%%%%%%Function commands
+ \providecommand*{\maps}[2]{\mathop{:}#1\mapsto #2}
- \appto{\recthy@rollback@threeTwo}{
- \providecommand*{\map}[2]{:##1\mapsto ##2}
- \providecommand*{\functo}[3]{##1\map{##2}{##3}}
- \ifdefined\funcomp
- \else
- \let\funcomp=\compfunc
- \fi
- }
\providecommand*{\compfunc}{\mathbin{\circ}}
\ifdefined\compose
@@ -977,6 +880,7 @@
\newcommand{\ParFuncs}[2]{{#2}^{\subset #1}}
\newcommand{\FinParFuncs}[2]{{#2}^{\subset_{< \infty} #1}}
\recthy@strip{ensuretext}
+ \providecommand{\quotient}{\quotient@recthy}
\fi
@@ -986,13 +890,15 @@
\@packinfo{No operators loading.}
\else
\@packinfo{Operators loading.}
- \providecommand*{\meet}{\mathbin{\wedge}}
- \providecommand*{\join}{\mathbin{\vee}}
- \providecommand*{\Meet}{\mathop{\bigwedge}}
- \let\MnJoin=\Join %save MnVersion in case wanted
- \newcommand*{\Join@recthy}{\mathop{\bigvee}}
+ \providecommand*{\Land}{\mathop{\bigwedge}}
+ \providecommand*{\Lor}{\mathop{\bigvee}}
+ \providecommand*{\LLand}{\mathop{\bigwedge\mkern-15mu\bigwedge}}
+ \providecommand*{\LLor}{\mathop{\bigvee\mkern-15mu\bigvee}}
+
+ %save MnVersion in case wanted
+
\AtBeginDocument{
- \let\Join=\Join@recthy
+ \let\Join=\@recthy@Join
}
\ifdefined\xor
\else
@@ -1005,11 +911,16 @@
-\ifrecthy@nodelim
- \@packinfo{No delimiters loading.}
+
+
+\ifrecthy@nosymb
+ \@packinfo{No Special Symbols Loading.}
+ \newcommand*{\ndownarrow}{\mathpunct{\mkern-4mu{\arrownot\mkern 4mu \downarrow}}}
\else
\ltx@ifpackageloaded{MnSymbol}{}{
\DeclareFontFamily{OMX}{MnSymbolE}{}
+ \DeclareFontFamily{U} {MnSymbolB}{}
+ \DeclareSymbolFont{MnSyB} {U} {MnSymbolB}{m}{n}
\DeclareSymbolFont{MnLargeSymbols}{OMX}{MnSymbolE}{m}{n}
\SetSymbolFont{MnLargeSymbols}{bold}{OMX}{MnSymbolE}{b}{n}
\DeclareFontShape{OMX}{MnSymbolE}{m}{n}{
@@ -1030,66 +941,69 @@
<10-12> MnSymbolE-Bold10
<12-> MnSymbolE-Bold12
}{}
+ \DeclareFontShape{U}{MnSymbolB}{m}{n}{
+ <-6> MnSymbolB5
+ <6-7> MnSymbolB6
+ <7-8> MnSymbolB7
+ <8-9> MnSymbolB8
+ <9-10> MnSymbolB9
+ <10-12> MnSymbolB10
+ <12-> MnSymbolB12}{}
+ \DeclareFontShape{U}{MnSymbolB}{b}{n}{
+ <-6> MnSymbolB-Bold5
+ <6-7> MnSymbolB-Bold6
+ <7-8> MnSymbolB-Bold7
+ <8-9> MnSymbolB-Bold8
+ <9-10> MnSymbolB-Bold9
+ <10-12> MnSymbolB-Bold10
+ <12-> MnSymbolB-Bold12}{}
+ \DeclareSymbolFont{MnSyA} {U} {MnSymbolA}{m}{n}
+ \DeclareFontFamily{U} {MnSymbolA}{}
+ \DeclareFontShape{U}{MnSymbolA}{m}{n}{
+ <-6> MnSymbolA5
+ <6-7> MnSymbolA6
+ <7-8> MnSymbolA7
+ <8-9> MnSymbolA8
+ <9-10> MnSymbolA9
+ <10-12> MnSymbolA10
+ <12-> MnSymbolA12}{}
+ \DeclareFontShape{U}{MnSymbolA}{b}{n}{
+ <-6> MnSymbolA-Bold5
+ <6-7> MnSymbolA-Bold6
+ <7-8> MnSymbolA-Bold7
+ <8-9> MnSymbolA-Bold8
+ <9-10> MnSymbolA-Bold9
+ <10-12> MnSymbolA-Bold10
+ <12-> MnSymbolA-Bold12}{}
+
+
\DeclareMathDelimiter{\@recthy@ulcorner}
{\mathopen}{MnLargeSymbols}{'036}{MnLargeSymbols}{'036}
\DeclareMathDelimiter{\@recthy@urcorner}
{\mathclose}{MnLargeSymbols}{'043}{MnLargeSymbols}{'043}
\let\ulcorner=\@recthy@ulcorner
\let\urcorner=\@recthy@urcorner
+ \DeclareMathSymbol{\ndownarrow}{\mathpunct}{MnSyB}{3}
+ \DeclareMathDelimiter{\@recthy@ulcorner}
+ {\mathopen}{MnLargeSymbols}{'036}{MnLargeSymbols}{'036}
+ \DeclareMathDelimiter{\@recthy@urcorner}
+ {\mathclose}{MnLargeSymbols}{'043}{MnLargeSymbols}{'043}
+ \DeclareMathSymbol{\Searrow}{\mathrel}{MnSyA}{15}
+ \DeclareMathSymbol{\nSearrow}{\mathrel}{MnSyB}{15}
}
- \newcommand*{\godelnum}[1]{\left\ulcorner #1 \right\urcorner}
- \let\cornerquote=\godelnum
- \let\gcode=\godelnum
- \let\@recthy@llangle@orig=\llangle
- \let\@recthy@rrangle@orig=\rrangle
- \ifrecthy@nodoubleangles
- \else
- \let\llangle=\@recthy@llangle
- \let\rrangle=\@recthy@rrangle
- \fi
+ \ifrecthy@nodoubleangles
+ \else
+ \let\llangle=\@recthy@llangle
+ \let\rrangle=\@recthy@rrangle
+ \fi
\fi
-\newcommand*{\@recthy@re}{\@recthy@ensuretext{r.e.\ }}
-\newcommand*{\@recthy@ce}{\@recthy@ensuretext{c.e.\ }}
-\newcommand*{\@recthy@RE}{\@recthy@ensuretext{R.E.\ }}
-\newcommand*{\@recthy@CE}{\@recthy@ensuretext{C.E.\ }}
-\newcommand*{\@recthy@Re}{\@recthy@ensuretext{R.e.\ }}
-\newcommand*{\@recthy@Ce}{\@recthy@ensuretext{C.e.\ }}
-\newcommand*{\@recthy@recursive}{\@recthy@ensuretext{recursive}}
-\newcommand*{\@recthy@computable}{\@recthy@ensuretext{computable}}
-\newcommand*{\@recthy@recursivelyEnumerable}{\@recthy@ensuretext{recursively enumerable}}
-\newcommand*{\@recthy@computablyEnumerable}{\@recthy@ensuretext{computably enumerable}}
-\newcommand*{\@recthy@Recursive}{\@recthy@ensuretext{Recursive}}
-\newcommand*{\@recthy@Computable}{\@recthy@ensuretext{Computable}}
-\newcommand*{\@recthy@RecursivelyEnumerable}{\@recthy@ensuretext{Recursively enumerable}}
-\newcommand*{\@recthy@ComputablyEnumerable}{\@recthy@ensuretext{Computably enumerable}}
-\def\@recthy@REA{REA}
-\def\@recthy@CEA{CEA}
-
-\NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{\@recthy@REA}\IfValueTF{#1}{(#1)}{}}}
-\NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{\@recthy@CEA}\IfValueTF{#1}{(#1)}{}}}
-
-
-\ifrecthy@nonames
- \@packinfo{No names loading.}
-\else
- \@packinfo{Names loading.}
- \recthy@strip{re}
- \recthy@strip{ce}
- \recthy@strip{RE}
- \recthy@strip{CE}
- \recthy@strip{Re}
- \recthy@strip{Ce}
- \recthy@strip{recursive}
- \recthy@strip{computable}
- \recthy@strip{recursivelyEnumerable}
- \recthy@strip{computablyEnumerable}
- \recthy@strip{Recursive}
- \recthy@strip{Computable}
- \recthy@strip{RecursivelyEnumerable}
- \recthy@strip{ComputablyEnumerable}
-\fi
+
+
+\NewDocumentCommand{\REA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{REA}\IfValueTF{#1}{(#1)}{}}}
+\NewDocumentCommand{\CEA}{d()o}{\ensuremath{\IfValueTF{#2}{#2 \@recthy@mhyphen}{}\text{CEA}\IfValueTF{#1}{(#1)}{}}}
+
@@ -1118,7 +1032,7 @@
\newcommand*{\@recthy@setovercmp}[1]{\overline{#1}}
\newcommand*{\@recthy@setsimcmp}[1]{\backsim #1}
\let\@recthy@setcmp=\@recthy@setovercmp
-\newcommand*{\@recthy@setdiff}{\mathbin{\@recthy@setdiffSYM}}
+
@@ -1146,7 +1060,6 @@
\recthy@strip{setcmp}
% \recthy@strip{setovercmp}
% \recthy@strip{setminuscmp}
- \recthy@strip{setdiff}
\let\crossOrig=\cross
\def\cross{}
\renewcommand*{\cross}{\mathbin{\times}}
@@ -1154,14 +1067,6 @@
\def\Cross{}
\renewcommand*{\Cross}{\mathop{\Pi}}
\providecommand*{\symdiff}{\mathbin{\Delta}}
- % \ifdefined\interior
- % \else
- % \DeclareMathOperator{\interior}{int}
- % \fi
- % \ifdefined\closure
- % \else
- % \DeclareMathOperator{\clos}{cl}
- % \fi
\fi
@@ -1226,16 +1131,11 @@
- \providecommand*{\True}{\top}
- \providecommand*{\False}{\bot}
+ % \providecommand*{\True}{\top}
+ % \providecommand*{\False}{\bot}
- \providecommand*{\Land}{\mathop{\bigwedge}}
- \providecommand*{\Lor}{\mathop{\bigvee}}
- \providecommand*{\LLand}{\mathop{\bigwedge\mkern-15mu\bigwedge}}
- \providecommand*{\LLor}{\mathop{\bigvee\mkern-15mu\bigvee}}
-
- \providecommand*{\liff}{\ensuremath{\leftrightarrow}}
- \providecommand*{\limplies}{\ensuremath{\rightarrow}}
+ % \providecommand*{\liff}{\ensuremath{\leftrightarrow}}
+ % \providecommand*{\limplies}{\ensuremath{\rightarrow}}
\fi
@@ -1248,387 +1148,31 @@
\@packinfo{No syntax loading.}
\else
\@packinfo{syntax loading.}
- \recthy@strip{CDelta}
- \recthy@strip{CSigma}
- \recthy@strip{CPi}
- \newcommand*{\deltan}[1]{\Delta_{#1}}
- \WithSuffix\def\deltan[#1]#2{\Delta^{#1}_{#2}}
- % \WithSuffix\def\deltan(#1)#2{\deltan{#2}\!\left(#1\right)}
- \newcommand*{\deltaZeroN}[1]{\Delta^{0}_{#1}}
- \WithSuffix\def\deltaZeroN[#1]#2{\Delta^{0,#1}_{#2}}
- % \WithSuffix\def\deltaZeroN(#1)#2{\deltaZeroN{#2}\!\left(#1\right)}
- \newcommand*{\deltaZeroTwo}{\deltaZeroN{2}}
- \WithSuffix\def\deltaZeroTwo[#1]{\deltaZeroN[#1]{2}}
- % \WithSuffix\def\deltaZeroTwo(#1){\deltaZeroN[#1]{2}}
- \newcommand*{\deltaZeroThree}{\deltaZeroN{3}}
- \WithSuffix\def\deltaZeroThree[#1]{\deltaZeroN[#1]{3}}
- % \WithSuffix\def\deltaZeroThree(#1){\deltaZeroN[#1]{3}}
- \newcommand*{\deltaZeroOne}{\deltaZeroN{1}}
- \WithSuffix\def\deltaZeroOne[#1]{\deltaZeroN[#1]{1}}
- % \WithSuffix\def\deltaZeroOne(#1){\deltaZeroN[#1]{1}}
- \newcommand*{\deltaZeroZero}{\deltaZeroN{0}}
- \WithSuffix\def\deltaZeroZero[#1]{\deltaZeroN[#1]{0}}
- % \WithSuffix\def\deltaZeroZero(#1){\deltaZeroN[#1]{0}}
-
-
- \newcommand*{\deltaOneN}[1]{\deltan{#1}^1}
- \WithSuffix\def\deltaOneN[#1]#2{\Delta^{1,#1}_{#2}}
- % \WithSuffix\def\deltaOneN(#1)#2{\deltaOneN{#2}\!\left(#1\right)}
- \newcommand*{\deltaOneOne}{\deltaOneN{1}}
- \WithSuffix\def\deltaOneOne[#1]{\deltaOneN[#1]{1}}
- % \WithSuffix\def\deltaOneOne(#1){\deltaOneN[#1]{1}}
- \newcommand*{\deltaOneTwo}{\deltaOneN{2}}
- \WithSuffix\def\deltaOneTwo[#1]{\deltaOneN[#1]{2}}
- % \WithSuffix\def\deltaOneTwo(#1){\deltaOneN[#1]{2}}
- \newcommand*{\deltaOneThree}{\deltaOneN{3}}
- \WithSuffix\def\deltaOneThree[#1]{\deltaOneN[#1]{3}}
- % \WithSuffix\def\deltaOneThree(#1){\deltaOneN[#1]{3}}
-
-
-
- \newcommand*{\sigman}[1]{\Sigma_{#1}}
- \WithSuffix\def\sigman[#1]#2{\Sigma^{#1}_{#2}}
- % \WithSuffix\def\sigman(#1)#2{\sigman{#2}\!\left(#1\right)}
- \newcommand*{\sigmaZeroN}[1]{\Sigma^{0}_{#1}}
- \WithSuffix\def\sigmaZeroN[#1]#2{\Sigma^{0,#1}_{#2}}
- % \WithSuffix\def\sigmaZeroN(#1)#2{\sigmaZeroN{#2}\!\left(#1\right)}
- \newcommand*{\sigmaZeroOne}{\sigmaZeroN{1}}
- \WithSuffix\def\sigmaZeroOne[#1]{\sigmaZeroN[#1]{1}}
- % \WithSuffix\def\sigmaZeroOne(#1){\sigmaZeroN[#1]{1}}
- \newcommand*{\sigmaZeroTwo}{\sigmaZeroN{2}}
- \WithSuffix\def\sigmaZeroTwo[#1]{\sigmaZeroN[#1]{2}}
- % \WithSuffix\def\sigmaZeroTwo(#1){\sigmaZeroN[#1]{2}}
- \newcommand*{\sigmaZeroThree}{\sigmaZeroN{3}}
- \WithSuffix\def\sigmaZeroThree[#1]{\sigmaZeroN[#1]{3}}
- % \WithSuffix\def\sigmaZeroThree(#1){\sigmaZeroN[#1]{3}}
-
-
-
- \newcommand*{\sigmaOneN}[1]{\Sigma^1_{#1}}
- \WithSuffix\def\sigmaOneN[#1]#2{\Sigma^{1,#1}_{#2}}
- % \WithSuffix\def\sigmaOneN(#1)#2{\sigmaOneN{#2}\!\left(#1\right)}
- \newcommand*{\sigmaOneOne}{\sigmaOneN{1}}
- \WithSuffix\def\sigmaOneOne[#1]{\sigmaOneN[#1]{1}}
- % \WithSuffix\def\sigmaOneOne(#1){\sigmaOneN[#1]{1}}
- \newcommand*{\sigmaOneTwo}{\sigmaOneN{2}}
- \WithSuffix\def\sigmaOneTwo[#1]{\sigmaOneN[#1]{2}}
- % \WithSuffix\def\sigmaOneTwo(#1){\sigmaOneN[#1]{2}}
- \newcommand*{\sigmaOneThree}{\sigmaOneN{3}}
- \WithSuffix\def\sigmaOneThree[#1]{\sigmaOneN[#1]{3}}
- % \WithSuffix\def\sigmaOneThree(#1){\sigmaOneN[#1]{3}}
-
-
-
- \newcommand*{\pin}[1]{\Pi_{#1}}
- \WithSuffix\def\pin[#1]#2{\Pi^{#1}_{#2}}
- % \WithSuffix\def\pin(#1)#2{\pin{#2}\!\left(#1\right)}
- \newcommand*{\piZeroN}[1]{\Pi^0_{#1}}
- \WithSuffix\def\piZeroN[#1]#2{\Pi^{0,#1}_{#2}}
- % \WithSuffix\def\piZeroN(#1)#2{\piZeroN{#2}\left(#1\right)}
- \newcommand*{\piZeroOne}{\piZeroN{1}}
- \WithSuffix\def\piZeroOne[#1]{\piZeroN[#1]{1}}
- % \WithSuffix\def\piZeroOne(#1){\piZeroN[#1]{1}}
- \newcommand*{\piZeroTwo}{\piZeroN{2}}
- \WithSuffix\def\piZeroTwo[#1]{\piZeroN[#1]{2}}
- % \WithSuffix\def\piZeroTwo(#1){\piZeroN[#1]{2}}
- \newcommand*{\piZeroThree}{\piZeroN{3}}
- \WithSuffix\def\piZeroThree[#1]{\piZeroN[#1]{3}}
- % \WithSuffix\def\piZeroThree(#1){\piZeroN[#1]{3}}
-
- \newcommand*{\piOneN}[1]{\Pi^1_{#1}}
- \WithSuffix\def\piOneN[#1]#2{\Pi^{1,#1}_{#2}}
- % \WithSuffix\def\piOneN(#1)#2{\piOneN{#2}\!\left(#1\right)}
- \newcommand*{\piOneOne}{\piOneN{1}}
- \WithSuffix\def\piOneOne[#1]{\piOneN[#1]{1}}
- % \WithSuffix\def\piOneOne(#1){\piOneN[#1]{1}}
- \newcommand*{\piOneTwo}{\piOneN{2}}
- \WithSuffix\def\piOneTwo[#1]{\piOneN[#1]{2}}
- % \WithSuffix\def\piOneTwo(#1){\piOneN[#1]{2}}
- \newcommand*{\piOneThree}{\piOneN{3}}
- \WithSuffix\def\piOneThree[#1]{\piOneN[#1]{3}}
- % \WithSuffix\def\piOneThree(#1){\piOneN[#1]{3}}
-
-
-
- %%%ABREVIATIONS
- \newcommand*{\deltaz}{\deltaN{0}}
- \newcommand*{\deltazn}{\deltaZeroN}
- \newcommand*{\deltazii}{\deltaZeroTwo}
- \newcommand*{\deltazi}{\deltaZeroOne}
- \newcommand*{\deltazz}{\deltaZeroZero}
- \newcommand*{\deltaziii}{\deltaZeroThree}
- \newcommand*{\deltaIn}{\deltaOneN}
- \newcommand*{\deltaIi}{\deltaOneOne}
- \newcommand*{\deltaoneone}{\deltaOneOne}
- \newcommand*{\deltaIii}{\deltaOneTwo}
- \newcommand*{\deltaIiii}{\deltaOneThree}
- \newcommand*{\sigmazn}{\sigmaZeroN}
- \newcommand*{\sigmazi}{\sigmaZeroOne}
- \newcommand*{\sigmazii}{\sigmaZeroTwo}
- \newcommand*{\sigmaziii}{\sigmaZeroThree}
- \newcommand*{\sigmaIn}{\sigmaOneN}
- \newcommand*{\sigmaIi}{\sigmaOneOne}
- \newcommand*{\sigmaIii}{\sigmaOneTwo}
- \newcommand*{\sigmaIiii}{\sigmaOneThree}
- \newcommand*{\pizn}{\piZeroN}
- \newcommand*{\pizi}{\piZeroOne}
- \newcommand*{\pizii}{\piZeroTwo}
- \newcommand*{\piziii}{\piZeroThree}
- \newcommand*{\piIn}{\piOneN}
- \newcommand*{\piIi}{\piOneOne}
- \newcommand*{\piIii}{\piOneTwo}
- \newcommand*{\piIiii}{\piOneThree}
-
- %%%%%%%%%%%%%
- % \newcommand*{\sigmapizn}[1]{\sigmazn{#1} \union \pizn{#1}}
- % \WithSuffix\def\sigmapizn[#1]#2{\sigmazn[#1]{#2} \union \pizn[#1]{#2}}
- % \WithSuffix\def\sigmapizn(#1)#2{\sigmazn[#1]{#2} \union \pizn[#1]{#2}}
- % \let\pisigmazn=\sigmapizn
- %%%%%%%%%%%%%%
-
- %%%%%%%%
- % Logics
- %\newcommand*{\equiv}
- \newcommand*{\logic}[2]{\mathcal{L}_{#1,#2}}
- % \newcommand*{\logicwiw}{\logic{\omega_{1}}{\omega}}
- % \newcommand*{\Clogic}[2]{\mathcal{CL}_{#1,#2}}
- % \newcommand*{\FOlogic}{\logic{\omega}{\omega}}
- % \NewDocumentCommand{\hyplogic}{o}{\Clogic{\omega_{1}}{\omega}\ifthenelse{\isempty{#1}}{}{\left(#1\right)} }
-
-
-
- %May never use...specific notation for computable formulas...supplanted by \( \sigmazn{\alpha} \) notation.
- %%%%%%%%%%%
-
-
-
-
-
- \newcommand*{\Cdeltan}[1]{\CDelta_{#1}}
- \WithSuffix\def\Cdeltan[#1]#2{\Cdeltan{#2}^{#1}}
- \newcommand*{\Cpin}[1]{\CPi_{#1}}
- \WithSuffix\def\Cpin[#1]#2{\Cpin{#2}^{#1}}
- \newcommand*{\Csigman}[1]{\CSigma_{#1}}
- \WithSuffix\def\Csigman[#1]#2{\CSigma_{#2}^{#1}}
-
- \newcommand*{\CdeltaZeroN}[1]{\Cdeltan[0]{#1}}
- \newcommand*{\CdeltaZeroTwo}{\CdeltaZeroN{2}}
- \newcommand*{\CdeltaZeroThree}{\CdeltaZeroN{3}}
- \newcommand*{\CdeltaZeroOne}{\CdeltaZeroN{1}}
- \newcommand*{\CdeltaZeroZero}{\CdeltaZeroN{0}}
- \newcommand*{\CdeltaOneN}[1]{\Cdeltan[1]{#1}}
- \newcommand*{\CdeltaOneOne}{\CdeltaOneN{1}}
- \newcommand*{\CdeltaOneTwo}{\CdeltaOneN{2}}
- \newcommand*{\CdeltaOneThree}{\CdeltaOneN{3}}
- \newcommand*{\CpiZeroN}[1]{\Cpin[0]{#1}}
- \newcommand*{\CpiOneN}[1]{\Cpin[1]{#1}}
- \newcommand*{\CpiOneOne}{\CpiOneN{1}}
- \newcommand*{\CpiOneThree}{\CpiOneN{3}}
- \newcommand*{\CpiOneTwo}{\CpiOneN{2}}
- \newcommand*{\CpiZeroOne}{\CpiZeroN{1}}
- \newcommand*{\CpiZeroThree}{\CpiZeroN{3}}
- \newcommand*{\CpiZeroTwo}{\CpiZeroN{2}}
- \newcommand*{\CsigmaOneN}[1]{\Csigman[1]{#1}}
- \newcommand*{\CsigmaOneOne}{\CsigmaOneN{1}}
- \newcommand*{\CsigmaOneThree}{\CsigmaOneN{3}}
- \newcommand*{\CsigmaOneTwo}{\CsigmaOneN{2}}
- \newcommand*{\CsigmaZeroN}[1]{\Csigman[0]{#1}}
- \newcommand*{\CsigmaZeroOne}{\CsigmaZeroN{1}}
- \newcommand*{\CsigmaZeroThree}{\CsigmaZeroN{3}}
- \newcommand*{\CsigmaZeroTwo}{\CsigmaZeroN{2}}
-
-
- \WithSuffix\def\CsigmaOneN[#1]#2{\Csigma[1,#1]{#2}}
- \WithSuffix\def\CsigmaOneOne[#1]{\CsigmaOneN[#1]{1}}
- \WithSuffix\def\CsigmaOneThree[#1]{\CsigmaOneN[#1]{3}}
- \WithSuffix\def\CsigmaOneTwo[#1]{\CsigmaOneN[#1]{2}}
- \WithSuffix\def\CsigmaZeroN[#1]#2{\Csigma[0,#1]{#2}}
- \WithSuffix\def\CsigmaZeroOne[#1]{\CsigmaZeroN[#1]{1}}
- \WithSuffix\def\CsigmaZeroThree[#1]{\CsigmaZeroN[#1]{3}}
- \WithSuffix\def\CsigmaZeroTwo[#1]{\CsigmaZeroN[#1]{2}}
- \WithSuffix\def\CpiOneN[#1]#2{\Cpi[1,#1]{#2}}
- \WithSuffix\def\CpiOneOne[#1]{\CpiOneN[#1]{1}}
- \WithSuffix\def\CpiOneThree[#1]{\CpiOneN[#1]{3}}
- \WithSuffix\def\CpiOneTwo[#1]{\CpiOneN[#1]{2}}
- \WithSuffix\def\CpiZeroN[#1]#2{\Cpi[0,#1]{#2}}
- \WithSuffix\def\CpiZeroOne[#1]{\CpiZeroN[#1]{1}}
- \WithSuffix\def\CpiZeroThree[#1]{\CpiZeroN[#1]{3}}
- \WithSuffix\def\CpiZeroTwo[#1]{\CpiZeroN[#1]{2}}
- \WithSuffix\def\CdeltaOneN[#1]#2{\Cdelta[1,#1]{#2}}
- \WithSuffix\def\CdeltaOneOne[#1]{\CdeltaOneN[#1]{1}}
- \WithSuffix\def\CdeltaOneTwo[#1]{\CdeltaOneN[#1]{2}}
- \WithSuffix\def\CdeltaOneThree[#1]{\CdeltaOneN[#1]{3}}
- \WithSuffix\def\CdeltaZeroZero[#1]{\CdeltaZeroN[#1]{0}}
- \WithSuffix\def\CdeltaZeroN[#1]#2{\Cdelta[0,#1]{#2}}
- \WithSuffix\def\CdeltaZeroTwo[#1]{\CdeltaZeroN[#1]{2}}
- \WithSuffix\def\CdeltaZeroThree[#1]{\CdeltaZeroN[#1]{3}}
- \WithSuffix\def\CdeltaZeroOne[#1]{\CdeltaZeroN[#1]{1}}
-
-
- %%%ABREVIATIONS
- \newcommand*{\Cdeltaz}{\CdeltaN{0}}
- \newcommand*{\Cdeltazn}{\CdeltaZeroN}
- \newcommand*{\Cdeltazii}{\CdeltaZeroTwo}
- \newcommand*{\Cdeltazi}{\CdeltaZeroOne}
- \newcommand*{\Cdeltazz}{\CdeltaZeroZero}
- \newcommand*{\Cdeltaziii}{\CdeltaZeroThree}
- \newcommand*{\CdeltaIn}{\CdeltaOneN}
- \newcommand*{\CdeltaIi}{\CdeltaOneOne}
- \newcommand*{\Cdeltaoneone}{\CdeltaOneOne}
- \newcommand*{\CdeltaIii}{\CdeltaOneTwo}
- \newcommand*{\CdeltaIiii}{\CdeltaOneThree}
- \newcommand*{\Csigmazn}{\CsigmaZeroN}
- \newcommand*{\Csigmazi}{\CsigmaZeroOne}
- \newcommand*{\Csigmazii}{\CsigmaZeroTwo}
- \newcommand*{\Csigmaziii}{\CsigmaZeroThree}
- \newcommand*{\CsigmaIn}{\CsigmaOneN}
- \newcommand*{\CsigmaIi}{\CsigmaOneOne}
- \newcommand*{\CsigmaIii}{\CsigmaOneTwo}
- \newcommand*{\CsigmaIiii}{\CsigmaOneThree}
- \newcommand*{\Cpizn}{\CpiZeroN}
- \newcommand*{\Cpizi}{\CpiZeroOne}
- \newcommand*{\Cpizii}{\CpiZeroTwo}
- \newcommand*{\Cpiziii}{\CpiZeroThree}
- \newcommand*{\CpiIn}{\CpiOneN}
- \newcommand*{\CpiIi}{\CpiOneOne}
- \newcommand*{\CpiIii}{\CpiOneTwo}
- \newcommand*{\CpiIiii}{\CpiOneThree}
-
-%%%BOLDFACE
-
- \newcommand*{\Deltan}[1]{\utilde{\symbf{\Delta}}_{#1}}
- \WithSuffix\def\Deltan[#1]#2{\utilde{\symbf{\Delta}}^{#1}_{#2}}
- % \WithSuffix\def\Deltan(#1)#2{\deltan{#2}\!\left(#1\right)}
- \newcommand*{\DeltaZeroN}[1]{\utilde{\symbf{\Delta}}^{0}_{#1}}
- \WithSuffix\def\DeltaZeroN[#1]#2{\utilde{\symbf{\Delta}}^{0,#1}_{#2}}
- % \WithSuffix\def\DeltaZeroN(#1)#2{\DeltaZeroN{#2}\!\left(#1\right)}
- \newcommand*{\DeltaZeroTwo}{\DeltaZeroN{2}}
- \WithSuffix\def\DeltaZeroTwo[#1]{\DeltaZeroN[#1]{2}}
- % \WithSuffix\def\DeltaZeroTwo(#1){\DeltaZeroN[#1]{2}}
- \newcommand*{\DeltaZeroThree}{\DeltaZeroN{3}}
- \WithSuffix\def\DeltaZeroThree[#1]{\DeltaZeroN[#1]{3}}
- % \WithSuffix\def\DeltaZeroThree(#1){\DeltaZeroN[#1]{3}}
- \newcommand*{\DeltaZeroOne}{\DeltaZeroN{1}}
- \WithSuffix\def\DeltaZeroOne[#1]{\DeltaZeroN[#1]{1}}
- % \WithSuffix\def\DeltaZeroOne(#1){\DeltaZeroN[#1]{1}}
- \newcommand*{\DeltaZeroZero}{\DeltaZeroN{0}}
- \WithSuffix\def\DeltaZeroZero[#1]{\DeltaZeroN[#1]{0}}
- % \WithSuffix\def\DeltaZeroZero(#1){\DeltaZeroN[#1]{0}}
-
-
- \newcommand*{\DeltaOneN}[1]{\Deltan{#1}^1}
- \WithSuffix\def\DeltaOneN[#1]#2{\utilde{\symbf{\Delta}}^{1,#1}_{#2}}
- % \WithSuffix\def\DeltaOneN(#1)#2{\DeltaOneN{#2}\!\left(#1\right)}
- \newcommand*{\DeltaOneOne}{\DeltaOneN{1}}
- \WithSuffix\def\DeltaOneOne[#1]{\DeltaOneN[#1]{1}}
- % \WithSuffix\def\DeltaOneOne(#1){\DeltaOneN[#1]{1}}
- \newcommand*{\DeltaOneTwo}{\DeltaOneN{2}}
- \WithSuffix\def\DeltaOneTwo[#1]{\DeltaOneN[#1]{2}}
- % \WithSuffix\def\DeltaOneTwo(#1){\DeltaOneN[#1]{2}}
- \newcommand*{\DeltaOneThree}{\DeltaOneN{3}}
- \WithSuffix\def\DeltaOneThree[#1]{\DeltaOneN[#1]{3}}
- % \WithSuffix\def\DeltaOneThree(#1){\DeltaOneN[#1]{3}}
-
-
-
- \newcommand*{\Sigman}[1]{\utilde{\symbf{\Sigma}}_{#1}}
- \WithSuffix\def\Sigman[#1]#2{\utilde{\symbf{\Sigma}}^{#1}_{#2}}
- % \WithSuffix\def\Sigman(#1)#2{\sigman{#2}\!\left(#1\right)}
- \newcommand*{\SigmaZeroN}[1]{\utilde{\symbf{\Sigma}}^{0}_{#1}}
- \WithSuffix\def\SigmaZeroN[#1]#2{\utilde{\symbf{\Sigma}}^{0,#1}_{#2}}
- % \WithSuffix\def\SigmaZeroN(#1)#2{\SigmaZeroN{#2}\!\left(#1\right)}
- \newcommand*{\SigmaZeroOne}{\SigmaZeroN{1}}
- \WithSuffix\def\SigmaZeroOne[#1]{\SigmaZeroN[#1]{1}}
- % \WithSuffix\def\SigmaZeroOne(#1){\SigmaZeroN[#1]{1}}
- \newcommand*{\SigmaZeroTwo}{\SigmaZeroN{2}}
- \WithSuffix\def\SigmaZeroTwo[#1]{\SigmaZeroN[#1]{2}}
- % \WithSuffix\def\SigmaZeroTwo(#1){\SigmaZeroN[#1]{2}}
- \newcommand*{\SigmaZeroThree}{\SigmaZeroN{3}}
- \WithSuffix\def\SigmaZeroThree[#1]{\SigmaZeroN[#1]{3}}
- % \WithSuffix\def\SigmaZeroThree(#1){\SigmaZeroN[#1]{3}}
-
-
-
- \newcommand*{\SigmaOneN}[1]{\utilde{\symbf{\Sigma}}^1_{#1}}
- \WithSuffix\def\SigmaOneN[#1]#2{\utilde{\symbf{\Sigma}}^{1,#1}_{#2}}
- % \WithSuffix\def\SigmaOneN(#1)#2{\SigmaOneN{#2}\!\left(#1\right)}
- \newcommand*{\SigmaOneOne}{\SigmaOneN{1}}
- \WithSuffix\def\SigmaOneOne[#1]{\SigmaOneN[#1]{1}}
- % \WithSuffix\def\SigmaOneOne(#1){\SigmaOneN[#1]{1}}
- \newcommand*{\SigmaOneTwo}{\SigmaOneN{2}}
- \WithSuffix\def\SigmaOneTwo[#1]{\SigmaOneN[#1]{2}}
- % \WithSuffix\def\SigmaOneTwo(#1){\SigmaOneN[#1]{2}}
- \newcommand*{\SigmaOneThree}{\SigmaOneN{3}}
- \WithSuffix\def\SigmaOneThree[#1]{\SigmaOneN[#1]{3}}
- % \WithSuffix\def\SigmaOneThree(#1){\SigmaOneN[#1]{3}}
-
-
-
- \newcommand*{\Pin}[1]{\utilde{\symbf{\Pi}}_{#1}}
- \WithSuffix\def\Pin[#1]#2{\utilde{\symbf{\Pi}}^{#1}_{#2}}
- % \WithSuffix\def\Pin(#1)#2{\pin{#2}\!\left(#1\right)}
- \newcommand*{\PiZeroN}[1]{\utilde{\symbf{\Pi}}^0_{#1}}
- \WithSuffix\def\PiZeroN[#1]#2{\utilde{\symbf{\Pi}}^{0,#1}_{#2}}
- % \WithSuffix\def\PiZeroN(#1)#2{\PiZeroN{#2}\left(#1\right)}
- \newcommand*{\PiZeroOne}{\PiZeroN{1}}
- \WithSuffix\def\PiZeroOne[#1]{\PiZeroN[#1]{1}}
- % \WithSuffix\def\PiZeroOne(#1){\PiZeroN[#1]{1}}
- \newcommand*{\PiZeroTwo}{\PiZeroN{2}}
- \WithSuffix\def\PiZeroTwo[#1]{\PiZeroN[#1]{2}}
- % \WithSuffix\def\PiZeroTwo(#1){\PiZeroN[#1]{2}}
- \newcommand*{\PiZeroThree}{\PiZeroN{3}}
- \WithSuffix\def\PiZeroThree[#1]{\PiZeroN[#1]{3}}
- % \WithSuffix\def\PiZeroThree(#1){\PiZeroN[#1]{3}}
-
- \newcommand*{\PiOneN}[1]{\utilde{\symbf{\Pi}}^1_{#1}}
- \WithSuffix\def\PiOneN[#1]#2{\utilde{\symbf{\Pi}}^{1,#1}_{#2}}
- % \WithSuffix\def\PiOneN(#1)#2{\PiOneN{#2}\!\left(#1\right)}
- \newcommand*{\PiOneOne}{\PiOneN{1}}
- \WithSuffix\def\PiOneOne[#1]{\PiOneN[#1]{1}}
- % \WithSuffix\def\PiOneOne(#1){\PiOneN[#1]{1}}
- \newcommand*{\PiOneTwo}{\PiOneN{2}}
- \WithSuffix\def\PiOneTwo[#1]{\PiOneN[#1]{2}}
- % \WithSuffix\def\PiOneTwo(#1){\PiOneN[#1]{2}}
- \newcommand*{\PiOneThree}{\PiOneN{3}}
- \WithSuffix\def\PiOneThree[#1]{\PiOneN[#1]{3}}
- % \WithSuffix\def\PiOneThree(#1){\PiOneN[#1]{3}}
-
-
-
- %%%ABREVIATIONS
- \newcommand*{\Deltaz}{\deltaN{0}}
- \newcommand*{\Deltazn}{\DeltaZeroN}
- \newcommand*{\Deltazii}{\DeltaZeroTwo}
- \newcommand*{\Deltazi}{\DeltaZeroOne}
- \newcommand*{\Deltazz}{\DeltaZeroZero}
- \newcommand*{\Deltaziii}{\DeltaZeroThree}
- \newcommand*{\DeltaIn}{\DeltaOneN}
- \newcommand*{\DeltaIi}{\DeltaOneOne}
- \newcommand*{\Deltaoneone}{\DeltaOneOne}
- \newcommand*{\DeltaIii}{\DeltaOneTwo}
- \newcommand*{\DeltaIiii}{\DeltaOneThree}
- \newcommand*{\Sigmazn}{\SigmaZeroN}
- \newcommand*{\Sigmazi}{\SigmaZeroOne}
- \newcommand*{\Sigmazii}{\SigmaZeroTwo}
- \newcommand*{\Sigmaziii}{\SigmaZeroThree}
- \newcommand*{\SigmaIn}{\SigmaOneN}
- \newcommand*{\SigmaIi}{\SigmaOneOne}
- \newcommand*{\SigmaIii}{\SigmaOneTwo}
- \newcommand*{\SigmaIiii}{\SigmaOneThree}
- \newcommand*{\Pizn}{\PiZeroN}
- \newcommand*{\Pizi}{\PiZeroOne}
- \newcommand*{\Pizii}{\PiZeroTwo}
- \newcommand*{\Piziii}{\PiZeroThree}
- \newcommand*{\PiIn}{\PiOneN}
- \newcommand*{\PiIi}{\PiOneOne}
- \newcommand*{\PiIii}{\PiOneTwo}
- \newcommand*{\PiIiii}{\PiOneThree}
-
-
-
-
+ \NewDocumentCommand{\DeltaN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Delta}}{\Delta}}\IfValueT{#2}{^{#2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+ \NewDocumentCommand{\PiN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Pi}}{\Pi}}\IfValueT{#2}{^{#2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+ \NewDocumentCommand{\SigmaN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Sigma}}{\Sigma}}\IfValueT{#2}{^{#2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+
+ \NewDocumentCommand{\DeltaZeroN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Delta}}{\Delta}}^{0\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+ \NewDocumentCommand{\PiZeroN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Pi}}{\Pi}}^{0\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+ \NewDocumentCommand{\SigmaZeroN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Sigma}}{\Sigma}}^{0\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+
+ \NewDocumentCommand{\DeltaOneN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Delta}}{\Delta}}^{1\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+ \NewDocumentCommand{\PiOneN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Pi}}{\Pi}}^{1\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+ \NewDocumentCommand{\SigmaOneN}{sod()m}{{\IfBooleanTF{#1}{\symbf{\Sigma}}{\Sigma}}^{1\IfValueT{#2}{, #2}}_{#4}\IfValueT{#3}{\!\left(#3\right)}}
+
+
+ \ifrecthy@shortsyntax
+ \@packinfo{No syntax abbreviations loading.}
+ \let\pizn=\PiZeroN
+ \let\deltazn=\DeltaZeroN
+ \let\sigmazn=\SigmaOneN
+ \let\piin=\PiOneN
+ \let\deltain=\DeltaOneN
+ \let\sigmain=\SigmaOneN
+ \fi
+ \newcommand*{\logic}[2]{\mathcal{L}_{#1,#2}}
\fi
@@ -1641,6 +1185,8 @@
\@packinfo{Spaces loading.}
\providecommand*{\bstrs}{2^{<\omega}}
+ \NewDocumentCommand{\cbstrs}{}{{2^{< \omega}}^{< \omega}}
+ \newcommand{\bpfuncs}{{\lbrace 0,1, \diverge \rbrace}^{< \omega}}
\providecommand*{\wstrs}{\omega^{<\omega}}
\providecommand*{\cantor}{2^{\omega}}
@@ -1654,6 +1200,31 @@
+ \newcommand\quotient@recthy[2]{
+ \mathchoice
+ {% \displaystyle
+ \text{\raise1ex\hbox{$#1$}\Big/\lower1ex\hbox{$#2$}}%
+ }
+ {% \textstyle
+ #1\,/\,#2
+ }
+ {% \scriptstyle
+ #1\,/\,#2
+ }
+ {% \scriptscriptstyle
+ #1\,/\,#2
+ }
+ }
+ \DeclareRobustCommand{\unlhdneq@recthy}{\mathrel{\text{$\m@th\@unlhdneq@recthy$}}}
+ \newcommand{\@unlhdneq@recthy}{%
+ \ooalign{$\lneq$\cr\raise.22ex\hbox{$\lhd$}\cr}%
+ }
+ \DeclareRobustCommand{\unrhdneq@recthy}{\mathrel{\text{$\m@th\@unrhdneq@recthy$}}}
+ \newcommand{\@unrhdneq@recthy}{%
+ \ooalign{$\gneq$\cr\raise.22ex\hbox{$\rhd$}\cr}%
+ }
+ % \newcommand*{\unlhdneq@recthy}{%
+ % \mathrel{\ooalign{$\lneq$\cr\raise.22ex\hbox{$\lhd$}\cr}}}
\ifrecthy@notrees
@@ -1663,6 +1234,10 @@
\newcommand*{\CBderiv}[2][1]{#2^{\langle#1\rangle}}
\newcommand*{\pruneTree}[1]{\CBderiv[\infty]{#1}}
\newcommand*{\hgt}[1]{\lVert #1 \rVert}
+ \let\TreeMod=\quotient@recthy
+ \newcommand*{\TreeMul}{\mathbin{\ast}}
+ \newcommand*{\TreeExt}{\mathrel{\triangleleft}}
+ \newcommand*{\TreeExtNeq}{\mathrel{\unlhdneq@recthy}}
\fi
@@ -1749,6 +1324,8 @@
%%% ORdinal notations
% constructive/recursive ordinals
+% \DeclarePairedDelimiter\@recthy@Vert{\lVert}{\rVert}
+
\ifrecthy@noordinalnotations
\@packinfo{No ordinal notations loading.}
\else
@@ -1756,22 +1333,11 @@
\providecommand*{\wck}{\ensuremath{\omega^{\mathrm{CK}}_1}}
% \newcommand*{\ordtype}[1]{\ensuremath{\@recthy@abs{#1}_{\kleeneO}}}
- \newcommand*{\ordzero}{\ensuremath{0}}
+ % \newcommand*{\ordzero}{\ensuremath{0}}
\def\kleeneOSYM{\mathcal{O}}
- \NewDocumentCommand{\kleeneO}{sD(){}oD(){}}{{
- \kleeneOSYM^{#2#4}_{%
- \IfNoValueTF{#1}{%
- \IfNoValueTF{#3}{}{%
- \abs{#3}}%
- }%
- {%
- 1%
- \IfNoValueTF{#3}{}{%
- , \abs{#3}
- }%
- }%
- }%
- }}
+ \NewDocumentCommand{\kleeneO}{st+t-D(){}o}{\IfBooleanTF{#2}{\vphantom{\kleeneOSYM}^{+}{\kleeneOSYM}}{\IfBooleanTF{#3}{\overrightarrow{\kleeneOSYM}}{\kleeneOSYM}}^{#4}_{\IfBooleanTF{#1}{1\IfValueTF{#5}{,\, #5}{}}{\IfValueTF{#5}{#5}{}}}}
+ \newcommand*{\Ouniq}{\kleeneO*}
+
% \newcommand*{\kleeneO}{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined\@kleeneObody}
% \newcommand*{\@kleeneObody}{\kleeneOSYM\ifdefined\@PMG@parenarg
% ^{\@PMG@parenarg}%
@@ -1786,32 +1352,69 @@
% \newcommand*{\kleeneObelow}[2][]{\kleeneOSYM_{<#2\ifthenelse{\isempty{#1}}{}{, #1}}}
% \let\kleeneOless\kleeneObelow
- \newcommand*{\kleeneOuniq}{\kleeneO*}
- \let\ordNotations=\kleeneO
- \let\uniqOrdNotations=\kleeneOuniq
- \newcommand*{\kleeneNum}[1]{{#1}_{\kleeneO}}
- \newcommand*{\kleeneZero}{\kleeneNum{0}}
- \newcommand*{\kleeneOne}{\kleeneNum{1}}
- \NewDocumentCommand{\kleeneless}{o}{<_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \let\kleenel=\kleeneless
- \NewDocumentCommand{\kleeneleq}{o}{\leq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \NewDocumentCommand{\kleenenless}{o}{\nless_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \let\kleenenl=\kleenenless
- \NewDocumentCommand{\kleenenleq}{o}{\nleq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \NewDocumentCommand{\kleenegtr}{o}{>_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \let\kleeneg=\kleenegtr
- \NewDocumentCommand{\kleenegeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \NewDocumentCommand{\kleenengtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \let\kleeneng=\kleenengtr
- \NewDocumentCommand{\kleenengeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
- \newcommand*{\kleenePlus}{\mathbin{+_{\kleeneO}}}
- \newcommand*{\kleeneMul}{\cdot_{\kleeneO}}
- \newcommand*{\kleenehgt}[1]{\lVert #1\rVert_{\kleeneO}}
- \let\kleeneHgt=\kleenehgt
+
+
+ % \NewDocumentCommand{\Obelow}{sm}{\IfNoValueTF{#1}{\kleeneO[#1]}{\kleeneO*[#1]}}
+ % \NewDocumentCommand{\ObelowOrd}{sm}{\IfNoValueTF{#1}{\kleeneO[\abs{#1}]}{\kleeneO*[\abs{#1}]}}
+ % \let\uniqOrdNotations=\kleeneOuniq
+ % \newcommand*{\kleeneNum}[1]{{#1}_{\kleeneOSYM}}
+ \NewDocumentCommand{\Oless}{o}{<_{\kleeneOSYM\IfNoValueTF{#1}{}{, #1}}}
+ % \let\kleenel=\kleeneless
+ \NewDocumentCommand{\Oleq}{o}{\leq_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}}
+ \NewDocumentCommand{\Onless}{o}{\nless_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}}
+ % \let\kleenenl=\kleenenless
+ \NewDocumentCommand{\Onleq}{o}{\nleq_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}}
+ \NewDocumentCommand{\Ogtr}{o}{>_{\kleeneOSYM\IfNoValueTF{#1}{}{,#1}}}
+ % \let\kleeneg=\kleenegtr
+ \NewDocumentCommand{\Ogeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ \NewDocumentCommand{\Ongtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % \let\kleeneng=\kleenengtr
+ \NewDocumentCommand{\Ongeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ \newcommand*{\Oadd}{\mathbin{+_{\kleeneOSYM}}}
+ \newcommand*{\Omul}{\times_{\kleeneOSYM}}
+ \NewDocumentCommand{\Ohgt}{sm}{\IfBooleanT{#1}{\left}\lVert #2 \IfBooleanT{#1}{\right}\rVert_{\kleeneOSYM}}
+ % \newcommand*{\Ohgt}[1]{\lVert #1\rVert_{\kleeneOSYM}}
+ \let\Oabs=\Ohgt
% \let\hgtO=\kleenehgt
- \newcommand*{\kleenelim}[2]{{#1}_{[#2]}}
- \newcommand*{\kleenepred}[1]{{#1}^{-}}
-
+ \newcommand*{\Olim}[2]{{#1}_{[#2]}}
+ \newcommand*{\Opred}[1]{{#1}^{-}}
+ \NewDocumentCommand{\Ofunc}{mod()}{{\left\{ #1 \right\}}^{\kleeneOSYM}\IfValueTF{#2}{_{#2}}{}\IfValueTF{#3}{\left(#3\right)}{}}
+
+ % \ifrecthy@shortO
+ % \@packinfo{Short O enabled (disable if you define O to be a macro elsewhere).}
+ % \let\Oless=\kleeneless
+ % % \NewDocumentCommand{\Oless}{o}{<_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % \newcommand*{\Ouniq}{\kleeneO*}
+ % % \let\kleenel=\kleeneless
+ % \let\Oleq=\kleeneleq
+ % \let\Onless=\kleenenless
+ % \let\Onleq=\kleenenleq
+ % \let\Ogtr=\kleenegtr
+
+
+ % % \NewDocumentCommand{\Oleq}{o}{\leq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % % \NewDocumentCommand{\Onless}{o}{\nless_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % % \let\Onl=\kleenenless
+ % % \NewDocumentCommand{\Onleq}{o}{\nleq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % \NewDocumentCommand{\Ogtr}{o}{>_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % % \let\Og=\kleenegtr
+ % \NewDocumentCommand{\Ogeq}{o}{\geq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % \NewDocumentCommand{\Ongtr}{o}{\ngtr_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % \let\Ongeq=\kleenengeq
+ % \NewDocumentCommand{\Ongeq}{o}{\ngeq_{\kleeneO\IfNoValueTF{#1}{}{,#1}}}
+ % \newcommand*{\OPlus}{\mathbin{+_{\kleeneO}}}
+ % % \newcommand*{\kleeneMul}{\cdot_{\kleeneO}}
+ % \newcommand*{\Oabs}[1]{\lvert #1\rvert_{\kleeneOSYM}}
+ % % \let\Oabs=\Ohgt
+ % % \let\kleeneHgt=\kleenehgt
+ % % \let\hgtO=\kleenehgt
+
+ % % \newcommand*{\Ofunc}[2]{\lbracket{#1}\rbracket^{\kleeneOSYM}\left(#2\right)}}
+ % % \newcommand*{\kleenepred}[1]{{#1}^{-}}
+ % % \newcomand*{\limOrd}
+ % % \DeclareMathOperator{\limO}
+ % \else
+ % \fi
\fi
@@ -1830,16 +1433,21 @@
\@packinfo{No forcing loading.}
\else
\@packinfo{forcing loading.}
- \providecommand*{\forces}{\def\@PMG@frcparenarg{}\def\@PMG@frcbraketarg{}\def\@PMG@curfrcsym{\Vdash}\@forcesBody}
+ \def\@PMG@curfrcsym{\Vdash}
+ \providecommand*{\forces}{\def\@PMG@frcparenarg{}\def\@PMG@frcbraketarg{}\@forcesBody}
\newcommand*{\@forcesBody}{\mathrel{{\@PMG@curfrcsym}^{\@PMG@frcparenarg}_{\@PMG@frcbraketarg}}}
\WithSuffix\def\@forcesBody(#1){\def\@PMG@frcparenarg{#1}\@forcesBody}
\WithSuffix\def\@forcesBody[#1]{\def\@PMG@frcbraketarg{#1}\@forcesBody}
\WithSuffix\def\@forcesBody*{\let\@PMG@curfrcsym=\@PMG@VdashStar\@forcesBody}
+ % \newcommand*{\wforces}[]{\forces(w)[#1]}
+ \NewDocumentCommand{\wforces}{d()O{}}{{\forces(w\IfValueT{#1}{, #1})[#2]}}
+ % \newcommand*{\wforces}[1][]{\forces(w)[#1]}
+ % \newcommand*{\wforces}[1][]{\mathrel{{\@PMG@curfrcsym}^{w}_{#1}}}
% \long\def\forces@[#1][#2]{\Vdash^{#2}_{#1}}
% \newcommand{\forces}{\optparams{\forces@}{[][]}%
% }
- \providecommand*{\frc}{\forces}
+ % \providecommand*{\frc}{\forces}
\fi
@@ -1848,17 +1456,13 @@
%%%ABREVIATIONS
-%Degree Classes
-\ifrecthy@nodegclasses
- \@packinfo{No degree classes loading.}
-\else
- \@packinfo{Degree classes loading.}
- \newcommand*{\Tdegrees}{\ensuremath{\mathscr{D}}}
- \newcommand*{\REdegrees}{\ensuremath{\mathscr{R}}}
- \newcommand{\Low}[1][]{\ensuremath{ \text{Low}^{#1} }}
- \newcommand{\LowN}[2][]{\ensuremath{ \text{Low}^{#1}_{#2} }}
- \newcommand{\lowN}[2][]{\ensuremath{ \mathcal{L}^{#1}_{#2} }}
-\fi
+% %Degree Classes
+% \ifrecthy@nodegclasses
+% \@packinfo{No degree classes loading.}
+% \else
+% \@packinfo{Degree classes loading.}
+
+% \fi
@@ -1874,73 +1478,19 @@
%\newcommand*{\brecf}[3][]{\brecfSYM^{#1}_{#2}\ifthenelse{\isempty{#3}}{}{\left(#3\right)}}
%\recfnl[d]{i}{Y}{x} gives i-th d-recursive functional operating on set Y and integer x
- \NewDocumentCommand{\recfnl@improved}{oD(){}m!G{#2}!g!d()}{{
+ \NewDocumentCommand{\recfnl}{oD(){}m!G{#2}!g!d()}{{
\def\temp@pmg@arg{}
\IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp@pmg@arg{; #5}}}{\IfValueTF{#6}{\ifthenelse{\isempty{#6}}{}{\def\temp@pmg@arg{; #6}}}}
\@recthy@recfnlSYM_{#3\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#4}}{}{\!\left(#4\temp@pmg@arg \right)}
}}
- \NewDocumentCommand{\recfnl@threeSix}{omm!g!d()}{{
- \def\temp@pmg@arg{}
- \IfValueTF{#4}{\ifthenelse{\isempty{#4}}{}{\def\temp@pmg@arg{; #4}}}{\IfValueTF{#5}{\ifthenelse{\isempty{#5}}{}{\def\temp@pmg@arg{; #5}}}}
- \@recthy@recfnlSYM_{#2\IfValueT{#1}{, #1}}\ifthenelse{\isempty{#3}}{}{\!\left(#3\temp@pmg@arg \right)}
- }}
- \newcommand*{\recfnl@threeFive}[4][]{\@recthy@recfnlSYM_{#2\ifthenelse{\isempty{#1}}{}{,{#1}} }%
- \ifthenelse{\isempty{#4}}%
- {\ifthenelse{\isempty{#3}}%
- {}% No args then print no parents
- {(#3)}
- }%If no oracle we just refer to the functional without any arguments
- {\ifthenelse{\isempty{#3}}{(#4)}{(#3;#4)}%
- }}
- \let\recfnl=\recfnl@improved
- \appto{\recthy@rollback@threeSix}{
- \let\recfnl=\recfnl@threeFive
- }
- \appto{\recthy@rollback@threeSeven}{
- \let\recfnl=\recfnl@threeSix
- }
+
+
\NewDocumentCommand{\recf}{od()md()}{
\@recthy@recfSYM_{#3\IfNoValueTF{#1}{}{\ifthenelse{\isempty{#3}}{}{, }{#1}}}\IfNoValueTF{#2}{}{^{#2}}\IfNoValueTF{#4}{}{(#4)}
}
- % \newcommand*{\thetafnl}[4][]{\Theta_{#2\ifthenelse{\isempty{#1}}{}{,#1} }%
- % \ifthenelse{\isempty{#4}}%
- % {\ifthenelse{\isempty{#3}}%
- % {}% No args then print no parents
- % {(#3)}
- % }%If no oracle we just refer to the functional without any arguments
- % {\ifthenelse{\isempty{#3}}{(#4)}{(#3;#4)}%
- % }}
-
- % \newcommand*{\psifnl}[4][]{\Psi_{#2\ifthenelse{\isempty{#1}}{}{,#1} }%
- % \ifthenelse{\isempty{#4}}%
- % {\ifthenelse{\isempty{#3}}%
- % {}% No args then print no parents
- % {(#3)}
- % }%If no oracle we just refer to the functional without any arguments
- % {\ifthenelse{\isempty{#3}}{(#4)}{(#3;#4)}%
- % }}
-
- % \newcommand*{\phifnl}[4][]{\Phi_{#2\ifthenelse{\isempty{#1}}{}{,#1} }%
- % \ifthenelse{\isempty{#4}}%
- % {\ifthenelse{\isempty{#3}}%
- % {}% No args then print no parents
- % {(#3)}
- % }%If no oracle we just refer to the functional without any arguments
- % {\ifthenelse{\isempty{#3}}{(#4)}{(#3;#4)}%
- % }}
-
- % \newcommand*{\upsilonfnl}[4][]{\Upsilon_{#2\ifthenelse{\isempty{#1}}{}{,#1} }%
- % \ifthenelse{\isempty{#4}}%
- % {\ifthenelse{\isempty{#3}}%
- % {}% No args then print no parents
- % {(#3)}
- % }%If no oracle we just refer to the functional without any arguments
- % {\ifthenelse{\isempty{#3}}{(#4)}{(#3;#4)}%
- % }}
-
\newcommand*{\cequiv}{\mathrel{\simeq}}
\newcommand*{\ncequiv}{\mathrel{\not\simeq}}
@@ -1948,7 +1498,7 @@
\let\converge=\conv
%\newcommand*{\convs}[1]{\ensuremath{\conv_{#1}}}
% \NewDocumentCommand{\nconv}{o}{\mathpunct{\mkern-4mu{\arrownot\mkern 4mu \downarrow}_{#1}}}
- \NewDocumentCommand{\nconv}{O{}}{\mathpunct{\mkern-4mu{\smallsetminus\mkern 4mu \downarrow}_{#1}}}
+ \NewDocumentCommand{\nconv}{O{}}{\mathpunct{\ndownarrow_{#1}}}
\newcommand*{\diverge}{\mathpunct{\uparrow}}
\newcommand*{\use}[1]{\mathop{\@recthy@useSYM}\left[#1\right]}
% \newcommand*{\use}[1]{\ltx@ifpackageloaded{unicode-math}{\symbffrak{u}}{\mathfrak{u}}\left(#1\right)}
@@ -1956,17 +1506,7 @@
% W_{#2\IfNoValueTF{#1}{}{, #1}}\IfNoValueTF{#3}{}{^{#3}}
% }
\NewDocumentCommand{\REset}{D(){}oD(){#1}mO{#2}}{{W_{#4\IfValueTF{#5}{, #5}{}}^{#3}}}
- % \newcommand*{\REset}{\let\@PMG@parenarg\@PMG@undefined\let\@PMG@braketarg\@PMG@undefined\@REsetbody}
- % \newcommand*{\@REsetbody}[1]{W\ifdefined\@PMG@parenarg
- % ^{\@PMG@parenarg}%
- % \fi%
- % \ifdefined\@PMG@braketarg
- % _{#1, {\@PMG@braketarg}}%
- % \else
- % _{#1}
- % \fi}
- % \WithSuffix\def\@REsetbody(#1){\def\@PMG@parenarg{#1}\@REsetbody}
- % \WithSuffix\def\@REsetbody[#1]{\def\@PMG@braketarg{#1}\@REsetbody}
+
\NewDocumentCommand{\Hop}{oD(){}mD(){}}{\mathcal{H}_{#3\IfValueTF{#1}{, #1}{}}\left(\ifthenelse{\isempty{#2#4}}{\eset}{#2#4} \right)}
\NewDocumentCommand{\REAop}{st+d()od()mm}{%
{\IfBooleanTF{#1}%
@@ -1981,48 +1521,54 @@
\newcommand*{\entersat}[1]{\mathbin{\searrow_{#1}}}
-
- % \appto{\recthy@rollback@threeSeven}{
- % \NewDocumentCommand{\oneREAop}{st+d()od()m}{{\IfBooleanTF{#1}{\mathcal{J}}{\widehat{\mathcal{J}}}}^{\IfBooleanTF{#1}{\vphantom{x}^\dagger}{}}_{#6\IfValueTF{#4}{, #4}{}} \IfValueTF{#3}{\left(#3\right)}{\IfValueTF{#5}{\left(#5\right)}{}}}
- % \let\iREAop=\oneREAop
- % }
-
- % % \newcommand*{\alphaREAop}[2][]{\mathcal{J}^{#2}_{#1}}
- % \appto{\recthy@rollback@threeTwo}{
- % \let\reaop=\REAop
- % \let\alphaREAop=\REAop
- % \let\aREAop=\alphaREAop
- % }
-
-
-
-
- % \newcommand*{\oneREAop}[1]{J_{#1}}
- % \let\iREAop=\oneREAop
- % \WithSuffix\def\reaop*#1{\oneREAop{#1}}
- %converges
-
\fi
-
+\newcommand*{\@recthy@join}{\mathbin{\vee}}
+\newcommand*{\@recthy@meet}{\mathbin{\wedge}}
+\newcommand*{\@recthy@Meet}{\mathop{\bigwedge}}
+\newcommand*{\@recthy@Join}{\mathop{\bigvee}}
\ifrecthy@nodegrees
\@packinfo{No degrees loading.}
\else
-
+ \DeclareMathOperator{\@recthy@HYP}{HYP}
+ \NewDocumentCommand{\HYP}{o}{\@recthy@HYP\IfValueTF{#1}{\left(#1\right)}{}}
+ \let\hyp=\HYP
+ \newcommand*{\@recthy@TSYM}{\symbf{T}}
+ \newcommand*{\@recthy@ASYM}{\symbf{a}}
+ \newcommand*{\Tdegrees}{\ensuremath{\mathscr{D}}}
+ \let\strcD=\Tdegrees
+ \newcommand*{\Tdegreesjump}{\ensuremath{\mathscr{D}'}}
+ % \WithSuffix\def\Tdegrees'\Tdegreesjump
+ % \WithSuffix\def\Tdegrees(#1){\Tdegrees\left(#1\right)}
+ % \WithSuffix\def\Tdegreesjump(#1){\Tdegreesjump\left(#1\right)}
+ \newcommand*{\REdegrees}{\ensuremath{\mathscr{R}}}
+ \let\strcR=\REdegrees
+ % \WithSuffix\def\REdegrees(#1){\REdegrees\left(#1\right)}
+
+ \newcommand*{\Adegrees}{\ensuremath{\mathscr{D}_{\@recthy@ASYM}}}
+ \let\strcDa=\Adegrees
+ % \WithSuffix\def\Adegrees(#1){\Adegrees\left(#1\right)}
+ \newcommand*{\Adegreesjump}{\ensuremath{\mathscr{D}'_\@recthy@ASYM}}
+ % \WithSuffix\def\Adegrees'\Adegreesjump
+ % \WithSuffix\def\Adegreesjump(#1){\Adegreesjump\left(#1\right)}
+ \newcommand*{\AREAdegrees}{\ensuremath{\mathscr{R}_\@recthy@ASYM}}
+ \let\strcRa=\AREAdegrees
+ % \WithSuffix\def\AREdegrees(#1){\AREdegrees\left(#1\right)}
+ \newcommand{\Low}[1][]{\ensuremath{ \text{Low}^{#1} }}
+ \newcommand{\LowN}[2][]{\ensuremath{ \text{Low}^{#1}_{#2} }}
+ \newcommand{\lowN}[2][]{\ensuremath{ \mathcal{L}^{#1}_{#2} }}
%%%%%%Turing Degrees
\def\firsttokof@pmg#1{\first@pmg@rdmxs(#1)}
\def\first@pmg@rdmxs(#1#2){#1}
- \providecommand*{\Tdegvar}[1]{\symbf{#1}}
- \providecommand*{\Tdegof}[1]{\utilde{#1}}
+ \let\Tdegvar=\symbf
+ % \providecommand*{\Tdegvar}[1]{\symbf{#1}}
+ % \providecommand*{\Tdegof}[1]{\utilde{#1}}
\protected\def\Tdeg#1{\ifthenelse{
% \equal{\detokenize{\Tzero}}{\futurelet\next@pmg\discard#1\@nil\expandafter\detokenize{\next@pmg}}
- \equal{\detokenize{\Tzero}}{\detokenize{#1}} \OR
- \equal{\detokenize{\Tzeroj}}{\detokenize{#1}} \OR
- \equal{\detokenize{\Tzerojj}}{\detokenize{#1}} \OR
- \equal{\detokenize{\Tzerojjj}}{\detokenize{#1}} \OR
+ \equal{\detokenize{\Tzero}}{\detokenize{#1}} \OR
\equal{\detokenize{\zeroj}}{\detokenize{#1}} \OR
\equal{\detokenize{\zerojj}}{\detokenize{#1}} \OR
\equal{\detokenize{\zerojjj}}{\detokenize{#1}} \OR
@@ -2030,6 +1576,7 @@
}{#1}{\Tdegvar{#1}}}
+ % \let\Adef=\Tdeg
\providecommand*{\Tjump}[1]{{#1}'}
\let\jump=\Tjump
\providecommand*{\jumpn}[2]{{#1}^{(#2)}}
@@ -2040,16 +1587,15 @@
\providecommand*{\Tzero}{{\Tzerosym}}
\providecommand*{\zeron}[1]{{\Tzerosym}^{(#1)}}
\providecommand*{\zeroj}{\jump{{\Tzerosym}}}
- \let\Tzeroj=\zeroj
\providecommand*{\zerojj}{\jjump{\Tzerosym}}
\providecommand*{\zerojjj}{\jjjump{\Tzerosym}}
- \let\Tzerojj=\zerojj
- \let\Tzerojjj=\zerojjj
+ % \let\Tzerojj=\zerojj
+ % \let\Tzerojjj=\zerojjj
%%Misc Recursion theory stuff
%turing equivalent
- \newcommand*{\@recthy@TSYM}{\symbf{T}}
- \providecommand*{\Tequiv}{\mathrel{\equiv_{\@recthy@TSYM}}}
+
+ \providecommand*{\Tequiv}{\mathrel{\equiv_{\@recthy@TSYM}}} %DEPRECIATED
\providecommand*{\Teq}{\Tequiv}
\providecommand*{\nTequiv}{\mathrel{\ncong_{\@recthy@TSYM}}}
\providecommand*{\nTeq}{\nTequiv}
@@ -2062,20 +1608,36 @@
\providecommand*{\nTleq}{\nleq_{\@recthy@TSYM}}
\providecommand*{\nTgeq}{\ngeq_{\@recthy@TSYM}}
- \providecommand*{\Tdegjoin}{\mathbin{\vee_{\@recthy@TSYM}}}
- \providecommand*{\Tdegmeet}{\mathbin{\wedge_{\@recthy@TSYM}}}
- \providecommand*{\Tmeet}{\Tdegmeet}
- \providecommand*{\Tsetjoin}{\mathbin{\oplus}}
- \providecommand*{\TsetJoin}{\mathop{\bigoplus}}
- \providecommand*{\Tplus}{\Tsetjoin}
- \providecommand*{\TPlus}{\TsetJoin}
- \providecommand*{\Tjoin}{\Tsetjoin}
- \providecommand*{\TJoin}{\TsetJoin}
+ \providecommand*{\Aeq}{\mathrel{\equiv_{\@recthy@ASYM}}}
+ \providecommand*{\nAeq}{\mathrel{\ncong_{\@recthy@ASYM}}}
+ \providecommand*{\Alneq}{\lneq_{\@recthy@ASYM}}
+ \providecommand*{\Aleq}{\leq_{\@recthy@ASYM}}
+ \providecommand*{\Agneq}{\gneq_{\@recthy@ASYM}}
+ \providecommand*{\Ageq}{\geq_{\@recthy@ASYM}}
+ \providecommand*{\Agtr}{>_{\@recthy@ASYM}}
+ \providecommand*{\Aless}{<_{\@recthy@ASYM}}
+ \providecommand*{\nAleq}{\nleq_{\@recthy@ASYM}}
+ \providecommand*{\nAgeq}{\ngeq_{\@recthy@ASYM}}
+
+ % \providecommand*{\Tdegjoin}{\mathbin{\vee}}
+ % \providecommand*{\Tdegmeet}{\mathbin{\wedge}}
+ \let\MnJoin=\Join
+ \let\meet=\@recthy@meet
+ \let\join=\@recthy@join
+ \let\Join=\@recthy@Join
+ \let\Meet=\@recthy@Meet
+ % \let\Tjoin=\degjoin
+ % \let\Tjoin=\degJoin
+ % \let\Tmeet=\degmeet
+ % \let\TMeet=\degMeet
+ \providecommand*{\Tplus}{\mathbin{\oplus}}
+ \providecommand*{\TPlus}{\mathop{\bigoplus}}
+ \let\Oplus=\TPlus
\providecommand*{\Tincompat}{\incompat@recthy[\@recthy@TSYM]}
- \providecommand*{\Tincomp}{\Tincompat}
+ % \providecommand*{\Tincomp}{\Tincompat}
\providecommand*{\Tcompat}{\compat@recthy[\@recthy@TSYM]}
\providecommand*{\nTincompat}{\Tcompat}
- \providecommand*{\nTincomp}{\Tcompat}
+ % \providecommand*{\nTincomp}{\Tcompat}
@@ -2094,8 +1656,19 @@
- \newcommand*{\@recthy@ASYM}{\symbf{a}}
- \providecommand*{\Adegvar}[1]{\symbf{#1}_{\@recthy@ASYM}}
+
+ % \providecommand*{\Adegvar}[1]{\symbf{#1}_{\@recthy@ASYM}}
+ % \protected\def\Adeg#1{\ifthenelse{
+
+ % \equal{\detokenize{\Azero}}{\detokenize{#1}} \OR
+ % \equal{\detokenize{\Azeroj}}{\detokenize{#1}} \OR
+ % \equal{\detokenize{\Azerojj}}{\detokenize{#1}} \OR
+ % \equal{\detokenize{\Azerojjj}}{\detokenize{#1}} \OR
+ % \equal{\detokenize{\zeroj}}{\detokenize{#1}} \OR
+ % \equal{\detokenize{\zerojj}}{\detokenize{#1}} \OR
+ % \equal{\detokenize{\zerojjj}}{\detokenize{#1}} \OR
+ % \equal{\string \Azeron }{\expandafter\string \first@pmg@rdmxs(#1)}
+ % }{#1}{\Adegvar{#1}}}
\providecommand*{\Aequiv}{\mathrel{\equiv_{\@recthy@ASYM}}}
\providecommand*{\Aeq}{\Aequiv}
\providecommand*{\nAequiv}{\mathrel{\ncong_{\@recthy@ASYM}}}
@@ -2114,9 +1687,14 @@
\newcommand*{\Azerosym}{\symbf{0}_{\@recthy@ASYM}}
\providecommand*{\Azero}{{\Azerosym}}
\providecommand*{\Azeron}[1]{{\Azerosym}^{(#1)}}
- \providecommand*{\Azeroj}{\jump{{\Azerosym}}}
+ \providecommand*{\Azeroj}{\jump{\Azerosym}}
\providecommand*{\Azerojj}{\jjump{\Azerosym}}
\providecommand*{\Azerojjj}{\jjjump{\Azerosym}}
+ \providecommand*{\Azeron}[1]{{\Azerosym}^{(#1)}}
+ \providecommand*{\Aincompat}{\incompat@recthy[\@recthy@ASYM]}
+ % \providecommand*{\Tincomp}{\Tincompat}
+ \providecommand*{\Acompat}{\compat@recthy[\@recthy@ASYM]}
+ \providecommand*{\nAincompat}{\Tcompat}
\fi
diff --git a/macros/latex/contrib/rec-thy/rec-thy.tex b/macros/latex/contrib/rec-thy/rec-thy.tex
index c3fe39ddd3..52f52cb86e 100644
--- a/macros/latex/contrib/rec-thy/rec-thy.tex
+++ b/macros/latex/contrib/rec-thy/rec-thy.tex
@@ -1,25 +1,34 @@
\documentclass[leqno,11pt]{amsart}
\usepackage{zwgetfdate}
-\usepackage{amsmath}
-% \RequirePackage{amsmath}
-\usepackage[disallowspaces,fixamsmath]{mathtools}
-\usepackage{amssymb}
-\usepackage{amsthm}
+\usepackage{amsmath,amssymb,amsthm,iftex}
+% \usepackage[disallowspaces,fixamsmath]{mathtools}
% \usepackage{amsfonts}
% \DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
% \DeclareMathAlphabet{\mathbrush}{T1}{pbsi}{xl}{n}
% \usepackage{mathspec}
\usepackage{comment}
-\usepackage{unicode-math}
-\unimathsetup{math-style=TeX,bold-style=TeX,nabla=upright,partial=italic}
+
+\ifpdftex
+\else %using lualatex/xelatex
+ \usepackage{unicode-math}
+ \usepackage{fontspec}
\setmainfont{XITS}
\setmathfont{XITS Math}
\setmathfont{XITS Math}[range={\mathscr,\mathbfscr}]
- \setmathfont{XITS Math}[range={\mathcal,\mathbfcal},StylisticSet=1]
+ \setmathfont{XITS Math}[range={\mathcal,\mathbfcal},StylisticSet=1] %% creating different styles for mathscr/mathcal using XITS
+\fi
+
+% \usepackage{unicode-math}
+% \unimathsetup{math-style=TeX,bold-style=TeX,nabla=upright,partial=italic}
+% \setmainfont{XITS}
+% \setmathfont{XITS Math}
+% \setmathfont{XITS Math}[range={\mathscr,\mathbfscr}]
+% \setmathfont{XITS Math}[range={\mathcal,\mathbfcal},StylisticSet=1]
+
-\usepackage{hyperxmp}
\usepackage[unicode,psdextra,pdfusetitle]{hyperref}
+\usepackage{hyperxmp}
\hypersetup{%
%pdfauthor={Peter M. Gerdes},
pdfsubject={LaTeX Package for Typesetting Computability Theory},
@@ -30,20 +39,15 @@
linkcolor=magenta,
pdfborder={0 0 0},
breaklinks=true,
- pdfdisplaydoctitle=true,
- pdfcontactaddress={107 Ardsley Drive},
- pdfcontactcity={Syracuse, NY},
- pdfcontactpostcode={13214},
- pdfcontactcountry={United States},
- pdfcontactphone={256-333-0128},
- pdfcontactemail={gerdes@invariant.org},
- pdfcontacturl={http://invariant.org},
- pdflang={en},
+ pdfcontactemail={gerdes@invariant.org},
+ pdfcontacturl={http://invariant.org},
+ pdflang={en},
% pdfauthortitle={Technical Assistant, Level III},
% pdfdate={\today},
- pdfcopyright={Copyright (C) \today, Peter M. Gerdes},
- baseurl={http://invariant.org}
+ pdfcopyright={Copyright (C) \today, Peter M. Gerdes},
+ baseurl={http://invariant.org}
}
+
\usepackage{cleveref}
\usepackage{listings}
\usepackage{multirow}
@@ -97,7 +101,7 @@
\begin{abstract}
-\noindent The rec-thy package is designed to help mathematicians publishing papers in the area of recursion theory (aka Computability Theory) easily use standard notation. This includes easy commands to denote Turing reductions, Turing functionals, \ce sets, stagewise computations, forcing and syntactic classes.
+\noindent The rec-thy package is designed to help mathematicians publishing papers in the area of recursion theory (aka Computability Theory) easily use standard notation. This includes easy commands to denote Turing reductions, Turing functionals, r.e. sets, stagewise computations, forcing and syntactic classes.
\end{abstract}
@@ -122,38 +126,39 @@ Significant use is made in this package of optional arguments delimited either b
\section{Alternate Symbols}
While the symbols used by default in the package are suggested for adoption to achieve greater consistency users may wish to specify their own symbols and options have been provided to enable this. The following parameters may be specified.
+\makeatletter
+\let\useSYMdefault=\@recthy@useSYM@default
+\makeatother
+
\begin{itemize}
\item[modulescr] Sets the script used to typeset the \verb=\module= command. Default is mathcal.
\item[reqscr] Sets the script used to typeset requirements. Default is mathscr.
\item[pfcasefont] Sets the script used to typeset Case in the cases helper.
\item[emptystr] Sets the empty string symbol. Default is \( \str{} \)
\item[concatsym] Sets the concat symbol. Default is \( \concat \)
- \item[cdeltasym] Sets the symbol used to denote computably \( \Delta \) formulas. Default is \( \prescript{\mathcal{C}}{}{\Delta} \).
- \item[cpisym] Same for \( \Pi \) formulas. Default is \( \prescript{\mathcal{C}}{}{\Pi} \).
- \item[csigmasym] Same for \( \Sigma \) formulas. Default is \( \prescript{\mathcal{C}}{}{\Sigma} \).
\item[recfnlsym] Sets the symbol used for recursive functionals. Default is \( \Phi \).
\item[recfsym] Sets the symbol used for recursive functions. Default is \( \phi \).
- \item[usesym] Sets the symbol used for the use operator. Default is \( \symbffrak{u} \) where this is printed using \verb=\symbfrak= if unicode-math is loaded and with \verb=\mathfrak= otherwise.
- \item[ballsymb] Sets the symbol used for the ball command. Default is \( \mathscr{B} \).
+ \item[usesym] Sets the symbol used for the use operator. Default is \( \useSYMdefault \) where this is printed using \verb=\symbfrak= if unicode-math is loaded and with \verb=\mathfrak= otherwise.
\item[lstrdelim,rstrdelim] Left and right delimiters for \verb=\str=
\item[lcodedelim,rcodedelim] Left and right delimiters for \verb=\code=
\item[lpairdelim,rpairlim,pairsup] Left and right delimiters for \verb=\pair= and superscript.
+ \item[altcompat] Uses the \verb=\succprec= and \verb=\nsuccprec= commands for \verb=\compat= and \verb=\incompat= respectively.
\end{itemize}
-As an example of how to use these commands consider the following code changing the ball symbol to \( \mathbf{B} \).
+% As an example of how to use these commands consider the following code changing the ball symbol to \( \mathbf{B} \).
-\begin{verbatim}
-\def\myballsymb{\mathbf{B}}
+% \begin{verbatim}
+% \def\myballsymb{\mathbf{B}}
-\usepackage[suppPriorityTrees, ballsymb=myballsymb]{rec-thy}
-\end{verbatim}
+% \usepackage[suppPriorityTrees, ballsymb=myballsymb]{rec-thy}
+% \end{verbatim}
\section{Commands}
A few general conventions are usually followed in the commands. Whenever an operator can be used as a binary operator (as in \( X \union Y \)) and as an operation on some collection \( \Union_{i \in \omega} X_i \) the binary operator will begin with a lowercase letter \verb=\union= and the operation on the collection will begin with a capital letter \verb=\Union=. If the first letter is already capitalized then the second letter is used instead.
-Objects that have a natural stagewise approximation generally admit an optional argument in brackets to specify a stage. For instance \( \verb=\REset[s]{e}= \) yields \( \REset[s]{e} \). An optional argument in parenthesis is used for relativization. For instance \( \verb=\REset(X){e}= \) produces \( \REset(X){e} \). A notable exception to this rule are the formula classes where square brackets are used to indicate an oracle to be placed in the superscript, e.g., \( \verb=\pizn[X]{2}= \) yields \( \pizn[X]{2} \), so as not to generate confusion with the alternative notion \( \pizn{2}(X) \). Also a lowercase first letter in a formula class indicates the lightface version while a capital first letter indicates the boldface version.
+Objects that have a natural stagewise approximation generally admit an optional argument in brackets to specify a stage. For instance \( \verb=\REset[s]{e}= \) yields \( \REset[s]{e} \). An optional argument in parenthesis is used for relativization. For instance \( \verb=\REset(X){e}= \) produces \( \REset(X){e} \). For the formula classes square brackets are used to indicate an oracle to be placed in the superscript, e.g., \( \verb=\pizn[X]{2}= \) yields \( \pizn[X]{2} \) while parenthesis place the value in parenthesises after the symbol as in \( \pizn(X){2} \). To give boldcase versions of formulas classes a star should be used immediately following the command as in \( \pizn*(X){2} \).
Unless indicated otherwise all macros are to be used inside math mode. Indented commands indicate an alias for the command on the line above.
@@ -167,9 +172,9 @@ Note the commands in this section double as suggestions for standardized notatio
\verb=\tpath= & \( \tpath \) & Truepath. \\ \midrule
\verb=\tpath[s]= & \( \tpath[s] \) & Approximate Truepath. \\ \midrule
\verb=\xi \leftof \eta = & \( \xi \leftof \eta \) & The left of relation for priority tree arguments \\ \midrule
- \verb=\module{R}[X]{i,j}= & \module{R}{i,j} & Module in tree construction (superscript optional arg) \\ \midrule
- \verb=\ball[X]{y}{s}= & \( \ball[X]{y}{s} \) & Location of ball \( y\) (headed to \( X \)) at \( s \)\\ \midrule
- \verb=\ball{y}{s}= & \( \ball{y}{s} \) & Location of ball \( y\) at \( s \)\\ \bottomrule
+ \verb=\module{R}[X]{i,j}= & \module{R}[X]{i,j} & Module in tree construction (superscript optional arg) \\ \midrule
+ % \verb=\ball[X]{y}{s}= & \( \ball[X]{y}{s} \) & Location of ball \( y\) (headed to \( X \)) at \( s \)\\ \midrule
+ % \verb=\ball{y}{s}= & \( \ball{y}{s} \) & Location of ball \( y\) at \( s \)\\ \bottomrule
\end{xtabular} \\
@@ -218,9 +223,7 @@ To disable these commands pass the option \verb=nocomputations=. \\ To specify
% \verb=\iREAop{e}(\eset)= & \multirow{2}{*}{\( \iREAop{e}(\eset) \)} &\multirow{2}{*}{1-REA operator} \\
% \tab \verb=\oneREAop{e}(\eset)= & & \\ \midrule
% \verb=\alphaREAop{\alpha}(\eset)= & \multirow{2}{*}{\( \alphaREAop{\alpha}(\eset) \)} &\multirow{2}{*}{\( \alpha \)-REA operator} \\[6pt]
- \verb=\REAop{e}{\alpha}= & \( \REAop{e}{\alpha} \) & \\[6pt]
- % \verb=\alphaREAop[f]{\alpha}(\eset)= & \multirow{2}{*}{\( \alphaREAop[f]{\alpha}(\eset) \)} & \multirow{2}{*}{with particular witness to uniformity}\\[6pt]
- \tab \verb=\reaop[f]{\alpha}(\eset)= & & \\
+ \verb=\REAop{e}{\alpha}= & \( \REAop{e}{\alpha} \) & \\
\bottomrule
\end{xtabular} \\
@@ -230,7 +233,15 @@ To disable these commands pass the option \verb=nodegrees=. \\
\begin{xtabular}{l | l | l}\toprule
- \verb=\Tdeg{d}= & \( \Tdeg{d} \) & Turing degree \\ \midrule
+ \verb=\Tdegrees= & \multirow{2}{*}{\( \Tdegrees \)} & The structure of \( \powset{\omega} \) under \( \Tleq \) \\
+ \tab \verb=\strcD= & & alternate command \\ \midrule
+ \verb=\REdegrees= & \multirow{2}{*}{\( \REdegrees \)} & The structure of r.e sets under \( \Tleq \) \\
+ \tab \verb=\strcR= & & alternate command \\ \midrule
+ \verb=\Adegrees= & \multirow{2}{*}{\( \Adegrees \)} & The structure of \( \powset{\omega} \) under \( \Aleq \) \\
+ \tab \verb=\strcDa= & & alternate command \\ \midrule
+ \verb=\AREAdegrees= & \multirow{2}{*}{FOO} & The structure of the \( \REA[\omega] \) sets under \( \Aleq \) \\
+ \tab \verb=\strcRa= & & alternate command \\ \midrule
+ \verb=\Tdeg{d}= & \( \Tdeg{d} \) & indicated that the variable/entity is a Turing degree\\ \midrule
\verb=\Tjump{X}= & \multirow{2}{*}{\( \Tjump{X} \)} & \multirow{2}{*}{Turing jump} \\
\tab \verb=\jump{X}= & & \\ \midrule
\verb=\jjump{X}= & \( \jjump{X} \) & \\ \midrule
@@ -240,30 +251,27 @@ To disable these commands pass the option \verb=nodegrees=. \\
\verb=\zerojj= & \( \zerojj \) & \\ \midrule
\verb=\zerojjj= & \( \zerojjj \) & \\ \midrule
\verb=\zeron{n}= & \( \zeron{n} \) & \\ \midrule
- \verb=X \Tequiv Y= & \multirow{2}{*}{\( X \Tequiv Y \)} & \multirow{2}{*}{Turing equivalence}\\
- \tab \verb=X \Teq Y= & & \\ \midrule
- \verb=X \nTequiv Y= & \multirow{2}{*}{\( X \nTequiv Y \)} & \multirow{2}{*}{Turing inequivalence} \\
- \tab \verb=X \nTeq Y= & & \\ \midrule
- \verb=X \Tlneq Y= & \( X \Tlneq Y \) & \\ \midrule
- \verb=X \Tleq Y= & \( X \Tleq Y \) & \\ \midrule
- \verb=X \Tgneq Y= & \( X \Tgneq Y \) & \\ \midrule
- \verb=X \Tgeq Y= & \( X \Tgeq Y \) & \\ \midrule
- \verb=X \Tgtr Y= & \( X \Tgtr Y \) & \\ \midrule
- \verb=X \Tless Y= & \( X \Tless Y \) & \\ \midrule
- \verb=X \nTleq Y= & \( X \nTleq Y \) & \\ \midrule
- \verb=X \nTgeq Y= & \( X \nTgeq Y \) & \\ \midrule
- \verb=X \Tincompat Y= & \multirow{2}{*}{\( X \Tincompat Y \)} & Turing incompatibility \\
- \tab \verb=X \Tincomp Y= & & \\ \midrule
- \verb=X \Tcompat Y= & \multirow{3}{*}{\( X \Tcompat Y \)} & \\
- \tab \verb=X \nTincomp Y= & & \\
- \tab \verb=X \nTincompat Y= & & \\ \midrule
- \verb=\Tdeg{d} \Tdegjoin \Tdeg{d'}= & \( \Tdeg{d} \Tdegjoin \Tdeg{d'} \) & Join of degrees\\ \midrule
- \verb=\Tdeg{d} \Tdegmeet \Tdeg{d'}= & \multirow{2}{*}{\( \Tdeg{d} \Tdegmeet \Tdeg{d'} \)} & \multirow{2}{*}{Meet of degrees (when defined)} \\
- \tab \verb=\Tdeg{d} \Tmeet \Tdeg{d'}= & & \\ \midrule
- \verb=X \Tplus Y= & \multirow{2}{*}{\( X \Tplus Y \)} & \multirow{4}{*}{Effective join of sets} \\
- \tab \verb=X \Tjoin Y= & & \\
- \verb=\TPlus_{i \in \omega} X_i= & \multirow{2}{*}{\( \TPlus_{i \in \omega} X_i \)} & \\
- \tab \verb=\TJoin_{i \in \omega} X_i= & & \\ \midrule
+ \verb=X \Teq Y= & \( X \Teq Y \) & Turing equivalence \\ \midrule
+ \verb=X \nTeq Y= & \( X \nTeq Y \) & Turing inequivalence \\ \midrule
+ \verb=X \Tlneq Y= & \( X \Tlneq Y \) & \\ \midrule
+ \verb=X \Tleq Y= & \( X \Tleq Y \) & \\ \midrule
+ \verb=X \Tgneq Y= & \( X \Tgneq Y \) & \\ \midrule
+ \verb=X \Tgeq Y= & \( X \Tgeq Y \) & \\ \midrule
+ \verb=X \Tgtr Y= & \( X \Tgtr Y \) & \\ \midrule
+ \verb=X \Tless Y= & \( X \Tless Y \) & \\ \midrule
+ \verb=X \nTleq Y= & \( X \nTleq Y \) & \\ \midrule
+ \verb=X \nTgeq Y= & \( X \nTgeq Y \) & \\ \midrule
+ \verb=X \Tincompat Y= & \( X \Tincompat Y \) & Turing incompatibility \\ \midrule
+ \verb=X \Tcompat Y= & \( X \Tcompat Y \) & Turing compatibility \\ \midrule
+ \verb=\Tdeg{d} \join \Tdeg{d'}= & \( \Tdeg{d} \join \Tdeg{d'} \) & \multirow{2}{*}{Join of degrees} \\
+ \tab \verb=\Join_{i \in \omega} \Tdeg{d_i}= & \( \Join_{i \in \omega} \Tdeg{d_i} \) & \\ \midrule
+ \verb=\Tdeg{d} \meet \Tdeg{d'}= & \( \Tdeg{d} \meet \Tdeg{d'} \) & \multirow{2}{*}{Meet of degrees (when defined)} \\
+ \tab \verb=\Meet_{i \in \omega} \Tdeg{d_i}= & \( \Meet_{i \in \omega} \Tdeg{d_i} \) & \\
+ \midrule
+ \verb=X \Tplus Y= & \( X \Tplus Y \) & Effective join of sets (alias for \verb=\oplus=) \\ \midrule
+ \verb=\TPlus_{i \in \omega} X_i= & \multirow{2}{*}{\( \TPlus_{i \in \omega} X_i \)} & Effective join of sets \\
+ \tab \verb=\Oplus_{i \in \omega} X_i= & & alternative name \\ \midrule
+
% \verb=\ttSYM= & \( \ttSYM \) & \\ \midrule
\verb=X \ttlneq Y= & \( X \ttlneq Y \) & Truth table reducibilities \\ \midrule
\verb=X \ttleq Y= & \( X \ttleq Y \) & \\ \midrule
@@ -272,7 +280,26 @@ To disable these commands pass the option \verb=nodegrees=. \\
\verb=X \ttgtr Y= & \( X \ttgtr Y \) & \\ \midrule
\verb=X \ttless Y= & \( X \ttless Y \) & \\ \midrule
\verb=X \ttnleq Y= & \( X \ttnleq Y \) & \\ \midrule
- \verb=X \ttngeq Y= & \( X \ttngeq Y \) & \\
+ \verb=X \ttngeq Y= & \( X \ttngeq Y \) & \\ \midrule
+
+ \verb=\Azero= & \( \Azero \) & Arithmetic degree \\ \midrule
+ \verb=\Azeroj= & \( \Azeroj \) & \\ \midrule
+ \verb=\Azerojj= & \( \Azerojj \) & \\ \midrule
+ \verb=\Azerojjj= & \( \Azerojjj \) & \\ \midrule
+ \verb=\Azeron{n}= & \( \Azeron{n} \) & \\ \midrule
+ \verb=X \Aeq Y= & \( X \Aeq Y \) & Arithmetic equivalence \\ \midrule
+ \verb=X \nAeq Y= & \( X \nAeq Y \) & Arithmetic inequivalence \\ \midrule
+ \verb=X \Alneq Y= & \( X \Alneq Y \) & \\ \midrule
+ \verb=X \Aleq Y= & \( X \Aleq Y \) & \\ \midrule
+ \verb=X \Agneq Y= & \( X \Agneq Y \) & \\ \midrule
+ \verb=X \Ageq Y= & \( X \Ageq Y \) & \\ \midrule
+ \verb=X \Agtr Y= & \( X \Agtr Y \) & \\ \midrule
+ \verb=X \Aless Y= & \( X \Aless Y \) & \\ \midrule
+ \verb=X \nAleq Y= & \( X \nAleq Y \) & \\ \midrule
+ \verb=X \nAgeq Y= & \( X \nAgeq Y \) & \\ \midrule
+ \verb=X \Aincompat Y= & \( X \Aincompat Y \) & Turing incompatibility \\ \midrule
+ \verb=X \Acompat Y= & \( X \Acompat Y \) & Turing compatibility \\ \midrule
+
\bottomrule
\end{xtabular} \\
\makeatletter
@@ -281,10 +308,10 @@ To disable these commands pass the option \verb=noreqhelper=. To disable the hyp
Math mode is not required for \verb=\req{R}{e}=
\begin{tabular}{l | l | l}\toprule
-\verb=\req{R}{e}= & \( \req{R}{e} \) & \multirow{3}{*}{Requirement } \\ \midrule
-\verb=\req{R}[\nu]{e}= & \req{R}[\nu]{e} & \\ \midrule
-\verb=\req*{R}{e}= & \req{R}{e} & \multirow{3}{*}{Requirement without hyperlinks} \\ \midrule
-\verb=\req*{R}[\nu]{e}= & \req{R}[\nu]{e} & \\ \midrule
+\verb=\req{R}{e}= & \( \req{R}{e} \) & \multirow{2}{*}{Requirement } \\
+\verb=\req{R}[\nu]{e}= & \req{R}[\nu]{e} & \\ \midrule
+\verb=\req*{R}{e}= & \req*{R}{e} & \multirow{2}{*}{Requirement without hyperlinks} \\
+\verb=\req*{R}[\nu]{e}= & \req*{R}[\nu]{e} & \\ \midrule
\bottomrule
\end{tabular} \\
@@ -360,7 +387,8 @@ To disable these commands pass the option \verb=nomath=. \\
\verb=\ParFuncs{X}{Y}= & \( \ParFuncs{X}{Y} \) & set of partial functions from \( X \) to \( Y \). \\ \midrule
\verb=\FinParFuncs{X}{Y}= & \( \FinParFuncs{X}{Y} \) & set of finite partial functions from \( X \) to \( Y \). \\ \midrule
\verb=\( \ensuretext{blah} \)= & \multirow{2}{*}{\( \ensuretext{blah} \)}& \multirow{2}{*}{Types argument in text mode} \\
- \tab \verb=\ensuretext{blah}= & & \\
+ \tab \verb=\ensuretext{blah}= & & \\ \midrule
+ \verb=\quotient{X}{Y}= & \( \quotient{X}{Y} \) & \\
\bottomrule
\end{tabular} \\
\newpage
@@ -373,7 +401,12 @@ Misc operators used in logic and computability. To disable these commands pass
\verb=\Meet_{i\in \omega} x_i= & \( \Meet_{i\in \omega} x_i \) & \\ \midrule
\verb=x \join y= & \(x \join y \) & \multirow{2}{*}{Join operation} \\[6pt]
\verb=\Join_{i\in \omega} x_i= & \( \Join_{i\in \omega} x_i \) & \\ \midrule
- \verb=x \xor y= & \( x \xor y \) & \\ \bottomrule
+ \verb=x \xor y= & \( x \xor y \) & \\ \midrule
+ \verb=\Land \phi_i= & \( \Land \phi_i \) & Operator form of and\\ \midrule
+ \verb=\Lor \phi_i= & \( \Lor \phi_i \) & Operator form of or\\ \midrule
+ \verb=\LLand \phi_i= & \( \LLand \phi_i \) & Infinitary conjunction\\ \midrule
+ \verb=\LLor \phi_i= & \( \LLor \phi_i \) & Infinitary disjunction\\
+ \bottomrule
\end{tabular} \\
\subsection{Set Notation}
@@ -399,44 +432,28 @@ Note that \verb=\Cross= and \verb=\cross= overwrite the existing commands saving
\verb=\eset= & \( \eset \) & Emptyset abbreviation\\ \midrule
\verb=x \nin A= & \( x \nin A \) & not an element\\ \midrule
\verb=\setcmp{X}= & \( \setcmp{X} \) & Set compliment\\\midrule
- \verb=X \setdiff Y= & \( X \setdiff Y \) & Set difference \\ \midrule
+ % \verb=X \setdiff Y= & \( X \setdiff Y \) & Set difference \\ \midrule
\verb=X \symdiff Y= & \( X \symdiff Y \) & Symmetric difference \\ \bottomrule
% \verb=\interior X= & \( \interior X \) & Interior \\ \midrule
% \verb=\closure X= & \( \clos X \) & Closure \\ \midrule
\bottomrule
\end{tabular} \\
-\subsection{Delimiters}
-To disable these commands pass the option \verb=nodelim=. To prevent only redefinition of \verb=\llangle= and \verb=\rrangle= (e.g. to use the XITS unusual default) pass the option \verb=nodoubleangles=.\\
+\subsection{Improved Symbols and MnSymbol Imports}
+Unless the option \verb=nosymb= is passed a number of symbols are (re)defined for better typesetting. To prevent only redefinition of \verb=\llangle= and \verb=\rrangle= (e.g. to use the XITS unusual default) pass the option \verb=nodoubleangles=. A couple new symbols which can't be easily created without the MnSymbol font are also defined and are listed below.
\begin{tabular}{l | l | l}\toprule
- \verb=\gcode{\phi}= & \multirow{3}{*}{\( \gcode{\phi} \)} & \multirow{3}{*}{Godel Code/Corner Quotes}\\
- \tab \verb=\godelnum{\phi}= & &\\
- \tab \verb=\cornerquote{\phi}= & &\\ \midrule
- \verb=\llangle x,y,z \rrangle= & \( \llangle x,y,z \rrangle \) & Properly spaced double angle brackets\\
+ % \verb=\godelnum{\phi}= & & \multirow{2}{*}{Godel Code/Corner Quotes}\\
+ % \tab \verb=\cornerquote{\phi}= & &\\ \midrule
+ \verb=\Searrow= & \( \Searrow \) & double searrow \\ \midrule
+ \verb=\nSearrow= & \( \nSearrow \) & negated double searrow \\
+ % \verb=\llangle x,y,z \rrangle= & \( \llangle x,y,z \rrangle \) & Properly spaced double angle brackets\\
\bottomrule
\end{tabular}
-\subsection{Recursive vs. Computable}
-To disable these commands pass the option \verb=nonames=. To use recursive, r.e. and recursively enumerable everywhere pass the option \verb=re=. To use computable, c.e. and computably enumerable everywhere pass the option \verb=ce=. To force REA and CEA use the options \verb=rea= and \verb=cea=. If none of these options are passed the macros will expand as below. All macros in this section work in both text and math modes.\\
-
-\begin{tabular}{l | l }\toprule
-\verb=\re= & \re \\ \midrule
-\verb=\ce= & \ce \\ \midrule
-\verb=\REA= & \REA \\ \midrule
-\verb=\CEA= & \CEA \\ \midrule
-\verb=\recursive= & \recursive \\ \midrule
-\verb=\computable= & \computable \\ \midrule
-\verb=\recursivelyEnumerable= & \recursivelyEnumerable \\ \midrule
-\verb=\computablyEnumerable= & \computablyEnumerable \\ \midrule
-\verb=\Recursive= & \Recursive \\ \midrule
-\verb=\Computable= & \Computable \\ \midrule
-\verb=\RecursivelyEnumerable= & \RecursivelyEnumerable \\ \midrule
-\verb=\ComputablyEnumerable= & \ComputablyEnumerable \\ \midrule
- \bottomrule
-\end{tabular}
-\subsection{Quantifiers \& Connectives}
+
+\subsection{Quantifiers}
To disable these commands pass the option \verb=noquants=. The commands \verb=\exists= and \verb=\forall= are standard but the package extends them.\\
\begin{tabular}{l | l | l}\toprule
@@ -458,50 +475,59 @@ To disable these commands pass the option \verb=noquants=. The commands \verb=\e
\tab \verb=\forallae= & & \\[6pt]
\verb=\forall*[x < y]= & \( \forall*[x < y ] \) & \\[6pt]
\verb=\forall*(x < y)= & \( \forall*(x < y ) \) & \\ \midrule
- \verb=\True= & \( \True \) & \\ \midrule
- \verb=\False= & \( \False \) & \\ \midrule
- \verb=\Land \phi_i= & \( \Land \phi_i \) & Operator form of and\\ \midrule
- \verb=\Lor \phi_i= & \( \Lor \phi_i \) & Operator form of or\\ \midrule
- \verb=\LLand \phi_i= & \( \LLand \phi_i \) & Infinitary conjunction\\ \midrule
- \verb=\LLor \phi_i= & \( \LLor \phi_i \) & Infinitary disjunction\\
+ % \verb=\True= & \( \True \) & \\ \midrule
+ % \verb=\False= & \( \False \) & \\ \midrule
+
\bottomrule
\end{tabular}
+
\subsection{Spaces}
To disable these commands pass the option \verb=nospaces=.\\
\begin{tabular}{l | l | l}\toprule
\verb=\bstrs= & \( \bstrs \) & Finite binary strings \\ \midrule
+ \verb=\cbstrs= & \( \cbstrs \) & Finite sequence of binary strings (regarded as columnise specification) \\ \midrule
\verb=\wstrs= & \( \wstrs \) & Finite sequences of integers \\ \midrule
\verb=\cantor= & \( \cantor \) & Cantor space \\ \midrule
\verb=\baire= & \( \baire \) & Baire space \\[6pt]
- \verb=\Baire= & \( \Baire \) & Alternate baire space \\
+ \verb=\Baire= & \( \Baire \) & Alternate baire space \\ \midrule
+ \verb=\bpfuncs= & \( \bpfuncs \) & Finite binary partial functions \\
\bottomrule
\end{tabular}
\subsection{Strings}
To disable these commands pass the option \verb=nostrings=.\\
-To specify an alternative symbol for the empty string pass \verb!emptystr=macroname!. For instance, to use \( \lambda \) as the empty string pass \verb!emptystr=lambda!. Similarly, to specify an alternate value for the conatination symbol pass \verb!concatsym=macroname!, e.g., if you specify \verb!\def\plus{+}! and then pass \verb!concatsym=plus! the concatenation symbol would be changed to \( + \).
+To specify an alternative symbol for the empty string pass \verb!emptystr=macroname!. For instance, to use \( \lambda \) as the empty string pass \verb!emptystr=lambda!. Similarly, to specify an alternate value for the concatenation symbol pass \verb!concatsym=macroname!, e.g., if you specify \verb!\def\plus{+}! and then pass \verb!concatsym=plus! the concatenation symbol would be changed to \( + \).
+
+To use \verb=\succprec= and \verb=\nsuccprec= for \verb=\compat= and \verb=\incompat= pass the option \verb=altcompat=
+
+
\begin{tabular}{l | l | l}\toprule
\verb=\str{1,0,1}= & \( \str{1,0,1} \) & \multirow{2}{*}{Strings/Codes for strings} \\
\tab \verb=\code{5,8,13}= & \( \code{5,8,13} \) & \\ \midrule
\verb=\EmptyStr= & \( \EmptyStr \) & \multirow{2}{*}{Empty string} \\[6pt]
\tab \verb=\estr= & \( \estr \) & \\ \midrule
+ \verb=\godelnum{\phi}= & & \multirow{2}{*}{Godel Code/Corner Quotes}\\
+ \tab \verb=\cornerquote{\phi}= & &\\ \midrule
\verb=\decode{\sigma}{3}= & \( \decode{\sigma}{3} \) & Alternate notation for \( \sigma(3) \) \\ \midrule
\verb=\sigma\concat\tau= & \( \sigma\concat\tau \) & \multirow{2}{*}{Concatenation} \\[6pt]
\verb=\sigma\concat[0]= & \( \sigma\concat[0] \) & \\ \midrule
\verb=\strpred{\sigma}= & \( \strpred{\sigma} \) & The immediate predecessor of \( \sigma \) \\ \midrule
\verb=\lh{\sigma}= & \( \lh{\sigma} \) & Length of \( \sigma \) \\ \midrule
- \verb=\sigma \incompat \tau= & \( \sigma \incompat \tau \) & \multirow{2}{*}{Incompatible strings} \\
- \tab \verb=\sigma \incomp \tau= & \( \sigma \incomp \tau \) & \\ \midrule
+ \verb=\sigma \incompat \tau= & \( \sigma \incompat \tau \) & Incompatible strings \\
\verb=\sigma \compat \tau= & \( \sigma \compat \tau \) & Compatible strings \\ \midrule
+ \verb=\sigma \nsuccprec \tau= & \( \sigma \nsuccprec \tau \) & Alternate incompatible strings \\
+ \verb=\sigma \succprec \tau= & \( \sigma \succprec \tau \) & Alternate compatible strings \\ \midrule
+
\verb=\pair{x}{y}= & \( \pair{x}{y} \) & Code for the pair \( (x,y) \) \\ \midrule
\verb=\setcol{X}{n}= & \( \setcol{X}{n} \) & \( \set{y}{\pair{n}{y} \in X} \) \\ \midrule
\verb=\setcol{X}{\leq n}= & \( \setcol{X}{\leq n} \) & \( \set{ \pair{x}{y}}{\pair{x}{y} \in X \land x \leq n} \) \\
\bottomrule
\end{tabular}
+
\subsection{Subfunctions}
To disable these commands pass the option \verb=nosubfuns=.\\
@@ -526,7 +552,9 @@ To disable these commands pass the option \verb=notrees=.\\
\verb=\CBderiv{T}= & \( \CBderiv{T} \) & \multirow{2}{*}{Cantor-Bendixson Derivative} \\[6pt]
\verb=\CBderiv[\alpha]{T}= & \( \CBderiv[\alpha]{T} \) & \\ \midrule
\verb=\pruneTree{T}= & \( \pruneTree{T} \) & \( \set{\sigma \in T}{\exists(g)(g \in [T] \land \sigma \subset g)} \) \\ \midrule
- \verb=\hgt{T}= & \( \hgt{T} \) & \\
+ \verb=\hgt{T}= & \( \hgt{T} \) & Tree Height \\ \midrule
+ \verb=\TreeMod{T}{\sigma}= & \( \TreeMod{T}{\sigma} \) & \( \set{\tau}{\sigma\concat\tau \in T} \) \\ \midrule
+ \verb=\sigma \TreeMul T= & \( \sigma \TreeMul T \) & \( \set{\sigma\concat\tau}{\tau \in T} \) \\
\bottomrule
\end{tabular}
@@ -551,30 +579,34 @@ To disable these commands pass the option \verb=nosetrels=.\\ Note that many of
\end{tabular}
\subsection{Ordinal Notations}
-To disable these commands pass the option \verb=noordinalnotations=.\\
+To disable these commands pass the option \verb=noordinalnotations=. Note the name for addition is \verb=\Oadd= rather than \verb=\Oplus= to avoid a collusion with existing commands.
\begin{tabular}{l | l | l}\toprule
\verb=\wck= & \( \wck \) & First non-computable ordinal \\ \midrule
- \verb=\ordzero= & \( \ordzero \) & Notation for ordinal \( 0 \)\\ \midrule
- \verb=\abs{\alpha}= & \( \abs{\alpha} \) & Ordinal \( \alpha \) denotes \\ \midrule
- \verb=\kleeneO= & \multirow{2}{*}{\( \kleeneO \)} & \multirow{2}{*}{Set of ordinal notations} \\[6pt]
-\tab \verb=\ordNotations= & & \\[6pt]
- \verb=\kleeneO*= & \multirow{3}{*}{\( \kleeneO* \)} & \multirow{3}{*}{Unique set of ordinal notations} \\[6pt]
-\tab \verb=\uniqOrdNotations= & & \\[6pt]
-\tab \verb=\kleeneOuniq= & & \\[6pt]
- \verb=\kleeneO(X)= & \( \kleeneO(X) \) & Relativized ordinal notations \\[6pt]
- \verb=\kleeneO[\alpha]= & \( \kleeneO[\alpha] \) & Ordinal notations for ordinals \( < \abs{\alpha} \) \\[6pt]
- \verb=\kleeneO*(X)[\alpha]= & \( \kleeneO*(X)[\alpha] \) & \\ \midrule
- \verb=\alpha \kleeneless \beta= & \( \alpha \kleeneless \beta \) & Ordering on notations \\ \midrule
- \verb=\alpha \kleenel \beta= & \( \alpha \kleenel \beta \) & \\ \midrule
- \verb=\alpha \kleeneleq \beta= & \( \alpha \kleeneleq \beta \) & \\ \midrule
- \verb=\alpha \kleenegtr \beta= & \( \alpha \kleenegtr \beta \) & \\ \midrule
- \verb=\alpha \kleenegeq \beta= & \( \alpha \kleenegeq \beta \) & \\ \midrule
- \verb=\alpha \kleenePlus \beta= & \( \alpha \kleenePlus \beta \) & Effective addition of notations \\ \midrule
- \verb=\alpha \kleeneMul \beta= & \( \alpha \kleeneMul \beta \) & Effective multiplication of notations \\ \midrule
- \verb=\kleenelim{\lambda}{n}= & \( \kleenelim{\lambda}{n} \) & The \( n \)-th element in effective limit defining notation \( \lambda \)\\ \midrule
- \verb=\kleenepred{\alpha}= & \( \kleenepred{\alpha} \) & Predecessor of \( \alpha \) if defined \\ \midrule
- \verb=\kleenehgt{R}= & \( \kleenehgt{R} \) & Height of computable relation \( R \) \\
+ % \verb=\ordzero= & \( \ordzero \) & Notation for ordinal \( 0 \)\\ \midrule
+ \verb=\Oabs{\alpha}= & \multirow{2}{*}{\( \Oabs{\alpha} \)} & The height of the notation or well-ordering \( \alpha \) (i.e. ordinal it denotes) \\
+ \tab \verb=\Ohgt{\alpha}= & & Alternative command \\ \midrule
+ \verb=\kleeneO= & \( \kleeneO \) & Set of ordinal notations \\
+ \tab \verb=\kleeneO-= & \( \kleeneO- \) & Set of limit notations \\
+ \tab \verb=\kleeneO+= & \( \kleeneO+ \) & Set of successor notations \\
+ \tab \verb=\kleeneO*= or \verb=\Ouniq= & \( \kleeneO* \) & Canonical unique set of ordinal notations \\
+ % \tab \verb=\Ouniq= & & Alternate command \\
+ \tab \verb=\kleeneO(X)= & \( \kleeneO(X) \) & Relativized ordinal notations \\
+ \tab \verb=\kleeneO[\alpha]= & \( \kleeneO[\alpha] \) & Ordinal notations for ordinals \( < \abs{\alpha} \)\\
+ \tab \verb=\kleeneO*(X)[\alpha]= & \( \kleeneO*(X)[\alpha] \) & Multiple options work together \\ \midrule
+ \verb=\alpha \Oless \beta= & \( \alpha \Oless \beta \) & less than on the ordering on notations \\
+ \tab \verb=\alpha \Oleq \beta= & \( \alpha \Oleq \beta \) & \\ \midrule
+ \tab \verb=\alpha \Ogtr \beta= & \( \alpha \Ogtr \beta \) & \\
+ \tab \verb=\alpha \Ogeq \beta= & \( \alpha \Ogeq \beta \) & \\
+ \tab \verb=\alpha \Onless \beta= & \( \alpha \Onless \beta \) & less than on the ordering on notations \\
+ \tab \verb=\alpha \Onleq \beta= & \( \alpha \Onleq \beta \) & \\ \midrule
+ \tab \verb=\alpha \Ongtr \beta= & \( \alpha \Ongtr \beta \) & \\
+ \tab \verb=\alpha \Ongeq \beta= & \( \alpha \Ongeq \beta \) & \\\midrule
+ \verb=\alpha \Oadd \beta= & \( \alpha \Oadd \beta \) & Effective addition of notations \\ \midrule
+ \verb=\alpha \Omul \beta= & \( \alpha \Omul \beta \) & Effective multiplication of notations \\ \midrule
+ \verb=\Olim{\lambda}{n}= & \( \Olim{\lambda}{n} \) & The \( n \)-th element in effective limit defining notation \( \lambda \)\\ \midrule
+ \verb=\Opred{\alpha}= & \( \Opred{\alpha} \) & Predecessor of \( \alpha \) if defined \\ \midrule
+ \verb=\Ofunc{\gamma}(m)= & \( \Ofunc{\gamma}(m) \) & The \( m \)-th element in the effectively given limit defining the limit notation \( \gamma \) \\
% \tab \verb=\hgtO{R}= & & \\
\bottomrule
\end{tabular}
@@ -583,44 +615,43 @@ To disable these commands pass the option \verb=noordinalnotations=.\\
To disable these commands pass the option \verb=noforcing=.\\
\begin{tabular}{l | l | l}\toprule
- \verb=\sigma \forces \phi= & \multirow{2}{*}{\( \sigma \forces \phi \)} & \multirow{2}{*}{\( \sigma \) forces \( \phi \)}\\
- \tab \verb=\sigma \frc \phi= & & \\
- \verb=\sigma \forces(X) \phi= & \( \sigma \forces(X)[T] \phi \) & \( \phi \) is formula relative to \( X \) \\
- \verb=\sigma \forces[T] \phi= & \( \sigma \forces(X)[T] \phi \) & Local forcing on \( T \)\\
- \verb=\sigma \forces* \phi= & \( \sigma \forces* \phi \) & Strong forcing \\
+ \verb=\sigma \forces \phi= & \( \sigma \forces \phi \) & \( \sigma \) forces \( \phi \) \\ \midrule
+ \verb=\sigma \forces(X) \phi= & \( \sigma \forces(X)[T] \phi \) & \( \phi \) is formula relative to \( X \) \\ \midrule
+ \verb=\sigma \forces(X)[T] \phi= & \( \sigma \forces(X)[T] \phi \) & Local forcing on \( T \) relative to \( X \) \\ \midrule
+ \verb=\sigma \forces* \phi= & \( \sigma \forces* \phi \) & Strong forcing \\ \midrule
+ \verb=\sigma \wforces \phi= & \( \sigma \wforces \phi \) & weak forcing (takes optional paren and bracket arguments as above) \\
\bottomrule
\end{tabular}
\subsection{Syntax}
-To disable these commands pass the option \verb=nosyntax=.\\ All syntax classes can be relativized with an optional argument in square brackets even when not listed below. Only the \( \Delta \) formula classes are listed below since the syntax is identical for \( \Sigma \) and \( \Pi \). Capitalizing the first letter gives the boldface version in all cases (except the computable infinitary formulas as this doesn't make sense). Not all formulas/abbreviations are demonstrated below given the huge number but the enough are included to make it clear what command is required to generate the desired formula class, e.g., substituting pi for delta does what you think it does.
+To disable these commands pass the option \verb=nosyntax=.\\ All syntax classes can be relativized with an optional argument in square brackets even when not listed below. Only the \( \Delta \) formula classes are listed below since the syntax is identical for \( \Sigma \) and \( \Pi \). Adding a star after the command produces the boldface version. Do to the common usage of the zero and one versions of the formulas an abbreviation is provided unless the option \verb=noshortsyntax= is passed.
-To change the syntax for the computable infinitary formulas you can pass the options \verb!cdeltasym=macroname!, \verb!csigmasym=macroname! and \verb!cpisym=macroname! where macroname is the name (without the leading \verb=\=) of the macro giving the desired symbol to use for the relevant class.
\begin{xtabular}{l | l | l}\toprule
- \verb=\Cdeltan[X]{\alpha}= & \( \Cdeltan[X]{2} \) & The computable \( \delta^{X}_\alpha \) formulas \\ \midrule
- \verb=\deltan{2}= & \( \deltan{2} \) & \\ \midrule
- \verb=\deltan[X]{2}= & \( \deltan[X]{2} \) & \\ \midrule
- \verb=\deltaZeroN[X]{2}= & \multirow{2}{*}{\( \deltaZeroN[X]{2} \)} & \\
- \tab \verb=\deltazn[X]{2}= & & \\ \midrule
- \verb=\deltaZeroOne[X]= & \multirow{2}{*}{\( \deltaZeroOne[X] \)} & \\
- \tab \verb=\deltazi[X]= & & \\ \midrule
- \verb=\sigmaZeroTwo[X]= & \multirow{2}{*}{\( \deltaZeroTwo[X] \)} & \\
- \tab \verb=\sigmazii[X]= & & \\ \midrule
- \verb=\deltaZeroThree[X]= & \multirow{2}{*}{\( \deltaZeroThree[X]\)} & \\
- \tab \verb=\deltaziii[X]= & & \\ \midrule
- \verb=\deltaOneN[X]{2}= & \multirow{2}{*}{\( \deltaOneN[X]{2} \)} & \\
- \tab \verb=\deltaIn[X]{2}= & & \\ \midrule
- \verb=\deltaOneOne[X]= & \multirow{2}{*}{\( \deltaOneOne[X] \)} & \\
- \tab \verb=\deltaIi[X]= & & \\ \midrule
- \verb=\deltaOneTwo[X]= & \multirow{2}{*}{\( \deltaOneTwo[X] \)} & \\
- \tab \verb=\deltaIii[X]= & & \\ \midrule
- \verb=\deltaOneThree[X]= & \multirow{2}{*}{\( \deltaOneThree[X] \)} & \\
- \tab \verb=\deltaIiii[X]= & & \\ \midrule
- \verb=\pizi= & \( \pizi \) & \\ \midrule
- \verb=\pizn[X]{n}= & \( \pizn[X]{n} \) & \\ \midrule
- \verb=\Deltan{2}= & \( \Deltan{2} \) & \\ \midrule
- \verb=\DeltaOneN[X]{n}= & \( \DeltaOneN[X]{n} \) & \\ \midrule
-
+ \verb=\DeltaN{2}= & \( \DeltaN{2} \) & \\
+ \tab \verb=\DeltaN(X){2}= & \( \DeltaN(X){2} \) & \\
+ \tab \verb=\DeltaN[X]{2}= & \( \DeltaN[X]{2} \) & \\
+ \tab \verb=\DeltaN[X]{2}= & \( \DeltaN*[X]{2} \) & boldface \\ \midrule
+ % \verb=\PiN{2}= & \( \PiN{2} \) & \\
+ % \tab \verb=\PiN(X){2}= & \( \PiN(X){2} \) & \\
+ % \tab \verb=\PiN[X]{2}= & \( \PiN[X]{2} \) & \\
+ % \tab \verb=\PiN[X]{2}= & \( \PiN*[X]{2} \) & For boldface \\ \midrule
+ % \verb=\SigmaN{2}= & \( \SigmaN{2} \) & \\
+ % \tab \verb=\SigmaN(X){2}= & \( \SigmaN(X){2} \) & \\
+ % \tab \verb=\SigmaN[X]{2}= & \( \SigmaN[X]{2} \) & \\
+ % \tab \verb=\SigmaN[X]{2}= & \( \SigmaN*[X]{2} \) & For boldface \\ \midrule
+ \verb=\DeltaZeroN{2}= & \( \DeltaZeroN{2} \) & \\
+ \tab \verb=\DeltaZeroN(X){2}= & \( \DeltaZeroN(X){2} \) & \\
+ \tab \verb=\DeltaZeroN[X]{2}= & \( \DeltaZeroN[X]{2} \) & \\
+ \tab \verb=\DeltaZeroN[X]{2}= & \( \DeltaZeroN*[X]{2} \) & boldface \\
+ \tab \verb=\deltazn(X){2}= & \( \deltazn(X){2} \) & Abbreviated form \\ \midrule
+ \verb=\DeltaOneN{2}= & \( \DeltaOneN{2} \) & \\
+ \tab \verb=\DeltaOneN(X){2}= & \( \DeltaOneN(X){2} \) & \\
+ \tab \verb=\DeltaOneN[X]{2}= & \( \DeltaOneN[X]{2} \) & \\
+ \tab \verb=\DeltaOneN[X]{2}= & \( \DeltaOneN*[X]{2} \) & boldface \\
+ \tab \verb=\deltain(X){2}= & \( \deltain(X){2} \) & Abbreviated form \\ \midrule
+
+
\verb=\logic{\omega_1}{\omega}= & \( \logic{\omega_1}{\omega} \) & Indicates the kind of infinitary logic\\
\bottomrule
\end{xtabular}
@@ -770,10 +801,10 @@ This yields the following output:
\end{steps}
+\section{Font Notes}
-\subsection{MRref}
+The package is designed to work with both XITS fonts using unicode-math under lualatex and xelatex as well as standard fonts under pdflatex. The package will assume that XITS or a font with similar features is loaded if the unicode-math package is loaded. To properly represent symbols the package needs access to different mathcal and mathscr fonts. By default, if unicode-math isn't loaded the package will load mathrsfs. To disable this behavior pass the option \verb=norsfs=. Furthermore, it also needs access to a blackboard bold that works for lowercase symbols. This isn't an issue using XITS but if unicode-math isn't loaded the package will load the mathbbm package to define certain symbols. This behavior can be overridden by passing the option \verb=nobbm= and the package will do the best it can.
-Finally to enable the mrref helper macros pass the option \verb=mrref=.\\ These macros normalize the formating of mathscinet references for supported bibliography styles and ensure the MR numbers link to the mathscinet page of the article.
\section{Release Notes}
@@ -781,6 +812,11 @@ Finally to enable the mrref helper macros pass the option \verb=mrref=.\\ These
% TESTING: \verb=\fpmapsto=, \verb=\fpmapsfrom=, \verb=\ParFuncs{Y}{X}= and \verb=\FinParFuncs{Y}{X}=
\begin{itemize}
+ \item[4.0] Stripped out non-working compatibility code and removed previously depreciated features. Removed mref helper. Removed the ball command. Removed undocumented hyphenation. Removed the recursive/computably terminology commands. Removed lots of unnecessary syntax commands and reworked the code to be simpler. Added option not to load rsfs. Added the commands \verb=\succprec=, \verb=\precsucc=, \verb=\csuccprec=, \verb=\cprecsucc= for stacked succ/prec symbols and added the option altcompat to use these instead of the standard mid and not mid compatibility symbols. Added the \verb=\Searrow= symbol from MnSymbol and changed option from nodelim to nosymb.
+ %TODO handle the double definition of the degree structures stuff and add strcE/strcL doc
+ Changed commands for \verb=\StrcR= and \verb=\StrcD= to be \verb=\strcR= and \verb=\strcD= for consistency and added \verb=\strcRa= and \verb=\strcDa= as synonyms for \verb=\Adegrees= and \verb=\AREAdegrees=. Added \verb=\Adegrees= and \verb=\AREAdegrees= and the relations for arithmetic degrees. Merged the degree symbols into the degrees option and depreciated some alternate spellings. Added \verb=\TreeMul=, \verb=\TreeMod=, \verb=\TreeExt=, \verb=\wforces=, \verb=\HYP=, depreciated the computable classes of sentences and simplified the standard ones. Fixed \verb=\nconv= to be the symbol from MnSymbol if the nosymb option isn't passed, fixed \verb=\concat= to not be so far above the line. Adjusted spacing for \verb=\compat=, added abbreviations. Complete renaming and of the commands for ordinal notations and extra options to indicate limit, successor and unique sets of notations. Added \verb=\Ofunc= as the effective limit for a notation. Fixed errors in the pfcases environment and eliminated some old compatibility code that wasn't being used by anyone. Added \verb=\maps= helper for normal math stuff. Fixed BeamerRequirements. Added the \verb=\bpfuncs= command and \verb=\cbstrs=. Removed dependency on mathtools for compatibility with asl.cls
+
+ Adjusted a number of other command names/conventions and deleted redundant commands. Large scale simplification and deduplication. Made substantial changes to documentation to reflect this.
\item[3.8.2] Removed option to put the set at the end of an \verb=\REset= operation to avoid capturing later parenthesized arguments, e.g. \verb=\REset{i}(A)= no longer works to avoid confusion with \verb=\REset{i}(x)=. Fixed failed pdf doc update.
\item[3.8.1] Fixed issues displaying the prime for jump operations.
\item[3.8] Adjusted \verb=\Tdeg= to be more beamer friendly and fixed it not to dumbly underline \verb=0^n=. Fixed BeamerRequirements to work with differing values of \verb=\abovedisplayskip=. Removed a few typos in docs for the requirements assistance. Added BeamerRequire and BeamerRequire* that put the requirements in a block and offer overlay specifications.
@@ -792,7 +828,7 @@ Finally to enable the mrref helper macros pass the option \verb=mrref=.\\ These
\item[3.3] - Fixed/added tweak to overline so it looks correct. Also added real symbols so that \verb=\subfunneq= and \verb=\supfunneq= can be defined appropriately. Added \verb=\floor= and \verb=\ceil=. Note these aren't yet shown off in package doc. Fixed incorrect use of tiny in math mode.
\item[3.2] - Removed \verb=\reaop=, \verb=\alphaREAop=, \verb=\aREAop= in favor of using the single form \verb=\REAop=. Removed \verb=\functo=, \verb=\map= and \verb=funcomp=, \verb=\hgtO= as useless synonyms and removed \verb=\KleeneOBelow= and \verb=KleeneOLess= as beyond what the package should define. Added package option compat31 to ensure package compatibility with version 3.1. An optional parentheses delimited argument specifying the base has been added to \verb=\REAop=. Both \verb=\REAop= and the pair \verb=\REA=/\verb=\CEA= have been updated to ignore order of optional arguments. The square brackets used to delimit the argument to the use command are now auto-sized. Added \verb=\pmapsto=, \verb=\pmapsfrom=, \verb=\kleeneZero=, \verb=\kleeneNum=, \verb=\entersat=. Also Misc typesetting fixes.
\item[3.1] 02/26/2019 - Fixed \verb=\wck= to be \( \wck \), i.e., have capitalized roman CK.
- \item[3.01] 02/17/2019 - Fixed \verb=\RE= \verb=\CE= \verb=\Re= and \verb=\Ce= for the various capitalized versions. Fixed weird bug with \verb=\recfnl= no longer working based on let. Removed \verb=\interior= and \\verb=\closure= as not really appropriate commands for the package and having bugs. Also fixed package to have correct version.
+ \item[3.01] 02/17/2019 - Fixed \verb=\RE= \verb=\CE= \verb=\Re= and \verb=\Ce= for the various capitalized versions. Fixed weird bug with \verb=\recfnl= no longer working based on let. Removed \verb=\interior= and \verb=\closure= as not really appropriate commands for the package and having bugs. Also fixed package to have correct version.
\item[3.0] 02/16/2019 - Added requirements environment for multiple requirements. Changed the \verb=\req= and \verb=\require= commands to take their optional argument after the first mandatory arguments as well as before. Added the commands \verb=\module= and \verb=\modof= and \verb=\xor=. Improved the corner quotes. Added \verb=\leftofeq=, \verb=\rightof=, \verb=\rightofeq=. Added \verb=\RE=, \verb=\CE=, \verb=\Ce=, \verb=\Re= and \verb=\Tincompat=, \verb=\Tincomp=, \verb=\Tcompat=. Changed the way strings are symbolized and coded. Fixed suffix commands to work with unicode-math. Also added \verb=\require*= inside \verb=\requirements=. Added \verb=\nleftofeq=, \verb=\nrightof=, \verb=\nrightofeq=, \verb=\nleftof=. The commands \verb=\ancestor=, \verb=\descendant= etc... \verb=\reqof=, \verb=\Astages= and \verb=\Vstages=now require the option suppPriorityTrees be passed to the class to use and should be viewed as depreciated. Fixed the options system so different symbols can be correctly passed to the class. Changed the way \verb=\recf= works to comply with the usual syntax.
\item[2.4.3] 11/29/2018 - Rendered compatible with beamer by removing enumitem requirement if beamer is loaded.
\item[2.4.2] 11/29/2018 - Fixed horrible bugs introduced in last version and fixed many symbols to work even in pdflatex mode. Also have everything compiling again.
diff --git a/macros/latex/contrib/srdp-mathematik/README.md b/macros/latex/contrib/srdp-mathematik/README.md
index 61b8d24ffb..33f315b9de 100644
--- a/macros/latex/contrib/srdp-mathematik/README.md
+++ b/macros/latex/contrib/srdp-mathematik/README.md
@@ -1,4 +1,4 @@
-# srdp-mathematik.sty v1.12.2
+# srdp-mathematik.sty v1.13.0
This package provides basic commands for the defined formats of the Austrian sRDP in mathematics.
Furthermore, it includes ways to implement answers in the tex file, which can be voluntarily displayed in the pdf file and
diff --git a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf
index 7c2376886d..cc8c4308d5 100644
--- a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf
+++ b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.pdf
Binary files differ
diff --git a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty
index 88479c2d26..5612d145c3 100644
--- a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty
+++ b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.sty
@@ -10,12 +10,11 @@
%
\NeedsTeXFormat{LaTeX2e}[1996/12/26]
-\ProvidesPackage{srdp-mathematik}[2024/01/03 v1.12.2 Standard-Schularbeitsformate]
+\ProvidesPackage{srdp-mathematik}[2024/03/29 v1.13.0 Standard-Schularbeitsformate]
\usepackage{color}
\usepackage{xcolor}
-\usepackage{xfp}
\usepackage{float}
\usepackage{multicol}
\usepackage{multirow}
@@ -46,6 +45,9 @@
\usepackage{ziffer}
\usepackage{eso-pic}
\usepackage{esvect}
+\usepackage{phaistos}
+\usepackage{substitutefont}
+\substitutefont{LPH}{\familydefault}{cmr}
\renewcommand{\vec}[1]{\vv{#1}}
\usepackage{graphicx}
\usepackage{setspace}
@@ -327,7 +329,7 @@
\newcommand{\ASubitem}[1]{\Subitem{\fbox{A} #1}}
\NewEnviron{aufgabenstellung}[1]{\let\itemalt\item
\renewcommand*{\item}{\setcounter{subitemcounter}{0}\itemalt}
-\subsubsection{Aufgabenstellung:}%
+\subsubsection*{Aufgabenstellung:}%
\begin{enumerate}[a),leftmargin=0pt]
\item {\BODY}
\end{enumerate}%
@@ -642,7 +644,9 @@ Beurteilung: \rule{10.5cm}{0.4pt}
\newcounter{antworta}\newcounter{antwortb}\newcounter{antwortc}\newcounter{antwortd}\newcounter{antworte}\newcounter{antwortf}\newcounter{antwortg}\newcounter{antworth}\newcounter{antworti}
\pgfmathsetseed{\theZufall}
-\newcommand{\Gruppe}{\theZufall}
+
+\newcommand{\Gruppe}{\@Alph{\inteval{\theZufall+1}}}
+\newcommand{\hiddengroup}[0]{\flushright\foreach\i in {0,...,\theZufall}{.}\flushleft}
%
%%%%%%% ZUORDNUNGSAUFGABE
diff --git a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex
index 2f69b9a6df..210b9b4ae2 100644
--- a/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex
+++ b/macros/latex/contrib/srdp-mathematik/srdp-mathematik.tex
@@ -55,7 +55,7 @@ hidelinks
\vfill
-\Huge The \textit{srdp-mathematik} package v1.12.2\\[1cm]
+\Huge The \textit{srdp-mathematik} package v1.13.0\\[1cm]
Documentation \\ [1cm]
@@ -1142,7 +1142,7 @@ Innerhalb dieser Umgebung können dann mithilfe von \texttt{\textbackslash item}
\subsection{\texttt{\textbackslash begin\{loesung\} \ldots\ \textbackslash end\{loesung\}}}
-Mithilfe der \texttt{loesung}-Umgebung kann die Lösungserwartung sowie der Lösungsschlüssel eingegeben werden. Analog zur Aufgabenstellung können \texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}} verwendet werden. Die Eingabe innerhalb der \texttt{loesung}-Umgebung werden nur dann angezeigt, wenn die Lösungsanzeige aktiviert wurde. Die Nummerierung der Subitems kann man mit folgender Eingabe zurücksetzen: \texttt{\textbackslash setcounter{subitemcounter}{0}}.\leer
+Mithilfe der \texttt{loesung}-Umgebung kann die Lösungserwartung sowie der Lösungsschlüssel eingegeben werden. Analog zur Aufgabenstellung können \texttt{\textbackslash item} und \texttt{\textbackslash Subitem\{\}} verwendet werden. Die Eingabe innerhalb der \texttt{loesung}-Umgebung werden nur dann angezeigt, wenn die Lösungsanzeige aktiviert wurde. Die Nummerierung der Subitems kann man mit folgender Eingabe zurücksetzen: \texttt{\textbackslash setcounter\{subitemcounter\}\{0\}}.\leer
Eine vollständige Typ-2-Aufgabe könnte also wie folgt aussehen:
@@ -1211,76 +1211,76 @@ Hier steht der einleitende Text der Typ-2-Aufgabe.
\end{langesbeispiel}
\addtocontents{toc}{\setcounter{tocdepth}{1}}
-
-
-\section{Einfügen von GeoGebra-Grafiken}
-
-Folgende Schritte müssen befolgt werden, um Geogebra-Grafiken in \LaTeX-Dokumente einfügen zu können.
-\leer
-
-\begin{enumerate}
- \item Grafik in Geogebra zeichnen
- \item Datei $\rightarrow$ Export $\rightarrow$ Grafik-Ansicht als PSTricks\ldots
- \item Parameter einstellen
- \item \fbox{Erzeuge PSTricks} drücken
- \item Gesamten Text, der zwischen \verb|\begin{document}| und \verb|\end{document}| steht, kopieren.
-
- \item Im \LaTeX-Dokument dort einfügen, wo die Grafik integriert werden soll. (Dies ist auch innerhalb von den unterschiedlichen Formaten (wie \verb|\zuordnen| oder \verb|\multiplechoice| möglich)
-
- \item Die Größe der Grafik kann mithilfe des folgenden Befehls angepasst werden:
-
- \begin{verbatim}
- \resizebox{0.5\linewidth}{!}{Hier wird der Text von Geogebra eingefügt}
- \end{verbatim}
-
- Der Faktor 0.5 gibt die Größe der Grafik an. Mit dem Wert 0.5 wird die Größe der Grafik somit halbiert.
-
-\end{enumerate}
-
-\meinlr{
-\centering
-\newrgbcolor{zzttqq}{0.6 0.2 0}
-\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
-\begin{pspicture*}(-0.72,-0.8)(4.45,3.74)
-\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74)
-\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04)
-\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67)
-\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04)
-\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88)
-\begin{scriptsize}
-\psdots[dotstyle=*,linecolor=blue](1.29,2.88)
-\rput[bl](1.37,3){\blue{$A$}}
-\psdots[dotstyle=*,linecolor=blue](0.56,0.67)
-\rput[bl](0.63,0.79){\blue{$B$}}
-\psdots[dotstyle=*,linecolor=blue](3.62,1.04)
-\rput[bl](3.7,1.16){\blue{$C$}}
-\end{scriptsize}
-\end{pspicture*}
-}
-{\centering
-\resizebox{0.5\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0}
-\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
-\begin{pspicture*}(-0.72,-0.8)(4.45,3.74)
-\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74)
-\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04)
-\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67)
-\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04)
-\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88)
-\begin{scriptsize}
-\psdots[dotstyle=*,linecolor=blue](1.29,2.88)
-\rput[bl](1.37,3){\blue{$A$}}
-\psdots[dotstyle=*,linecolor=blue](0.56,0.67)
-\rput[bl](0.63,0.79){\blue{$B$}}
-\psdots[dotstyle=*,linecolor=blue](3.62,1.04)
-\rput[bl](3.7,1.16){\blue{$C$}}
-\end{scriptsize}
-\end{pspicture*}}
-}
-\leer
-
-
-\centering Kopie des PSTricks-Exports von Geogebra \\
- (Originalgröße und mit \verb|\resizebox{0.5\linewidth}{!}{|\ldots\})
+%
+%
+%\section{Einfügen von GeoGebra-Grafiken}
+%
+%Folgende Schritte müssen befolgt werden, um Geogebra-Grafiken in \LaTeX-Dokumente einfügen zu können.
+%\leer
+%
+%\begin{enumerate}
+% \item Grafik in Geogebra zeichnen
+% \item Datei $\rightarrow$ Export $\rightarrow$ Grafik-Ansicht als PSTricks\ldots
+% \item Parameter einstellen
+% \item \fbox{Erzeuge PSTricks} drücken
+% \item Gesamten Text, der zwischen \verb|\begin{document}| und \verb|\end{document}| steht, kopieren.
+%
+% \item Im \LaTeX-Dokument dort einfügen, wo die Grafik integriert werden soll. (Dies ist auch innerhalb von den unterschiedlichen Formaten (wie \verb|\zuordnen| oder \verb|\multiplechoice| möglich)
+%
+% \item Die Größe der Grafik kann mithilfe des folgenden Befehls angepasst werden:
+%
+% \begin{verbatim}
+% \resizebox{0.5\linewidth}{!}{Hier wird der Text von Geogebra eingefügt}
+% \end{verbatim}
+%
+% Der Faktor 0.5 gibt die Größe der Grafik an. Mit dem Wert 0.5 wird die Größe der Grafik somit halbiert.
+%
+%\end{enumerate}
+%
+%\meinlr{
+%\centering
+%\newrgbcolor{zzttqq}{0.6 0.2 0}
+%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
+%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74)
+%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74)
+%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04)
+%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67)
+%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04)
+%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88)
+%\begin{scriptsize}
+%\psdots[dotstyle=*,linecolor=blue](1.29,2.88)
+%\rput[bl](1.37,3){\blue{$A$}}
+%\psdots[dotstyle=*,linecolor=blue](0.56,0.67)
+%\rput[bl](0.63,0.79){\blue{$B$}}
+%\psdots[dotstyle=*,linecolor=blue](3.62,1.04)
+%\rput[bl](3.7,1.16){\blue{$C$}}
+%\end{scriptsize}
+%\end{pspicture*}
+%}
+%{\centering
+%\resizebox{0.5\linewidth}{!}{\newrgbcolor{zzttqq}{0.6 0.2 0}
+%\psset{xunit=1.0cm,yunit=1.0cm,algebraic=true,dotstyle=o,dotsize=3pt 0,linewidth=0.8pt,arrowsize=3pt 2,arrowinset=0.25}
+%\begin{pspicture*}(-0.72,-0.8)(4.45,3.74)
+%\psaxes[labelFontSize=\scriptstyle,xAxis=true,yAxis=true,Dx=1,Dy=1,ticksize=-2pt 0,subticks=2]{->}(0,0)(-0.72,-0.8)(4.45,3.74)
+%\pspolygon[linecolor=zzttqq,fillcolor=zzttqq,fillstyle=solid,opacity=0.1](1.29,2.88)(0.56,0.67)(3.62,1.04)
+%\psline[linecolor=zzttqq](1.29,2.88)(0.56,0.67)
+%\psline[linecolor=zzttqq](0.56,0.67)(3.62,1.04)
+%\psline[linecolor=zzttqq](3.62,1.04)(1.29,2.88)
+%\begin{scriptsize}
+%\psdots[dotstyle=*,linecolor=blue](1.29,2.88)
+%\rput[bl](1.37,3){\blue{$A$}}
+%\psdots[dotstyle=*,linecolor=blue](0.56,0.67)
+%\rput[bl](0.63,0.79){\blue{$B$}}
+%\psdots[dotstyle=*,linecolor=blue](3.62,1.04)
+%\rput[bl](3.7,1.16){\blue{$C$}}
+%\end{scriptsize}
+%\end{pspicture*}}
+%}
+%\leer
+%
+%
+%\centering Kopie des PSTricks-Exports von Geogebra \\
+% (Originalgröße und mit \verb|\resizebox{0.5\linewidth}{!}{|\ldots\})
diff --git a/macros/latex/contrib/thuthesis/CHANGELOG.md b/macros/latex/contrib/thuthesis/CHANGELOG.md
index 8989e48b9f..9864c944bc 100644
--- a/macros/latex/contrib/thuthesis/CHANGELOG.md
+++ b/macros/latex/contrib/thuthesis/CHANGELOG.md
@@ -6,6 +6,32 @@
## [Unreleased]
+## [v7.5.0] - 2024-03-29
+
+### Added
+
+- 本科生的附录(调研阅读报告和书面翻译)支持 `biblatex`([#893](https://github.com/tuna/thuthesis/issues/893))。
+- 适配生命科学学院要求的 Cell 参考文献格式([#921](https://github.com/tuna/thuthesis/discussions/921))。
+- 增加 GitHub Actions 配置,自动从 master 分支发布预览版本、自动在多平台进行测试。
+
+### Changed
+
+- 同步《写作指南》对 2023 年 3 月版本的后续修改:
+ - 封面的学科门类的字号改为三号(16bp)([#899](https://github.com/tuna/thuthesis/issues/899))。
+ - 修改研究生目录的章标题段前距离([#926](https://github.com/tuna/thuthesis/issues/926))。
+ - 统一并简化封面的布局([#900](https://github.com/tuna/thuthesis/issues/900))。
+- 不再插入 PDF 版书脊,改为编译生成([#551](https://github.com/tuna/thuthesis/issues/551))。
+- 本科生附录的参考文献编译方式改为 `bibtex thuthesis-appendix-{a,b,c...}`,同研究生一致。
+- 英文封面的导师姓名居中对齐([#883](https://github.com/tuna/thuthesis/issues/883))。
+- 修正 macOS 的 MS Office 字体名([#913](https://github.com/tuna/thuthesis/issues/913))。
+- 自动检测并使用 Windows 字体文件,默认从当前目录查找([#747](https://github.com/tuna/thuthesis/discussions/747))。
+
+### Fixed
+
+- 修正封面的职称字距问题([#879](https://github.com/tuna/thuthesis/discussions/879))。
+- 解决了本科生附录的 `\printbibliography` 报错的问题([#882](https://github.com/tuna/thuthesis/issues/882))。
+- 修复了同时调用 `glossaries` 和 `hyperref` 时的多余空格([#901](https://github.com/tuna/thuthesis/issues/901))。
+
## [v7.4.0] - 2023-05-15
### Added
@@ -951,7 +977,8 @@
-[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.4.0...HEAD
+[Unreleased]: https://github.com/tuna/thuthesis/compare/v7.5.0...HEAD
+[v7.5.0]: https://github.com/tuna/thuthesis/compare/v7.4.0...v7.5.0
[v7.4.0]: https://github.com/tuna/thuthesis/compare/v7.3.2...v7.4.0
[v7.3.2]: https://github.com/tuna/thuthesis/compare/v7.3.1...v7.3.2
[v7.3.1]: https://github.com/tuna/thuthesis/compare/v7.3.0...v7.3.1
diff --git a/macros/latex/contrib/thuthesis/LICENSE b/macros/latex/contrib/thuthesis/LICENSE
deleted file mode 100644
index 2244313901..0000000000
--- a/macros/latex/contrib/thuthesis/LICENSE
+++ /dev/null
@@ -1,416 +0,0 @@
-The LaTeX Project Public License
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-LPPL Version 1.3c 2008-05-04
-
-Copyright 1999 2002-2008 LaTeX3 Project
- Everyone is allowed to distribute verbatim copies of this
- license document, but modification of it is not allowed.
-
-
-PREAMBLE
-========
-
-The LaTeX Project Public License (LPPL) is the primary license under
-which the LaTeX kernel and the base LaTeX packages are distributed.
-
-You may use this license for any work of which you hold the copyright
-and which you wish to distribute. This license may be particularly
-suitable if your work is TeX-related (such as a LaTeX package), but
-it is written in such a way that you can use it even if your work is
-unrelated to TeX.
-
-The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
-below, gives instructions, examples, and recommendations for authors
-who are considering distributing their works under this license.
-
-This license gives conditions under which a work may be distributed
-and modified, as well as conditions under which modified versions of
-that work may be distributed.
-
-We, the LaTeX3 Project, believe that the conditions below give you
-the freedom to make and distribute modified versions of your work
-that conform with whatever technical specifications you wish while
-maintaining the availability, integrity, and reliability of
-that work. If you do not see how to achieve your goal while
-meeting these conditions, then read the document `cfgguide.tex'
-and `modguide.tex' in the base LaTeX distribution for suggestions.
-
-
-DEFINITIONS
-===========
-
-In this license document the following terms are used:
-
- `Work'
- Any work being distributed under this License.
-
- `Derived Work'
- Any work that under any applicable law is derived from the Work.
-
- `Modification'
- Any procedure that produces a Derived Work under any applicable
- law -- for example, the production of a file containing an
- original file associated with the Work or a significant portion of
- such a file, either verbatim or with modifications and/or
- translated into another language.
-
- `Modify'
- To apply any procedure that produces a Derived Work under any
- applicable law.
-
- `Distribution'
- Making copies of the Work available from one person to another, in
- whole or in part. Distribution includes (but is not limited to)
- making any electronic components of the Work accessible by
- file transfer protocols such as FTP or HTTP or by shared file
- systems such as Sun's Network File System (NFS).
-
- `Compiled Work'
- A version of the Work that has been processed into a form where it
- is directly usable on a computer system. This processing may
- include using installation facilities provided by the Work,
- transformations of the Work, copying of components of the Work, or
- other activities. Note that modification of any installation
- facilities provided by the Work constitutes modification of the Work.
-
- `Current Maintainer'
- A person or persons nominated as such within the Work. If there is
- no such explicit nomination then it is the `Copyright Holder' under
- any applicable law.
-
- `Base Interpreter'
- A program or process that is normally needed for running or
- interpreting a part or the whole of the Work.
-
- A Base Interpreter may depend on external components but these
- are not considered part of the Base Interpreter provided that each
- external component clearly identifies itself whenever it is used
- interactively. Unless explicitly specified when applying the
- license to the Work, the only applicable Base Interpreter is a
- `LaTeX-Format' or in the case of files belonging to the
- `LaTeX-format' a program implementing the `TeX language'.
-
-
-
-CONDITIONS ON DISTRIBUTION AND MODIFICATION
-===========================================
-
-1. Activities other than distribution and/or modification of the Work
-are not covered by this license; they are outside its scope. In
-particular, the act of running the Work is not restricted and no
-requirements are made concerning any offers of support for the Work.
-
-2. You may distribute a complete, unmodified copy of the Work as you
-received it. Distribution of only part of the Work is considered
-modification of the Work, and no right to distribute such a Derived
-Work may be assumed under the terms of this clause.
-
-3. You may distribute a Compiled Work that has been generated from a
-complete, unmodified copy of the Work as distributed under Clause 2
-above, as long as that Compiled Work is distributed in such a way that
-the recipients may install the Compiled Work on their system exactly
-as it would have been installed if they generated a Compiled Work
-directly from the Work.
-
-4. If you are the Current Maintainer of the Work, you may, without
-restriction, modify the Work, thus creating a Derived Work. You may
-also distribute the Derived Work without restriction, including
-Compiled Works generated from the Derived Work. Derived Works
-distributed in this manner by the Current Maintainer are considered to
-be updated versions of the Work.
-
-5. If you are not the Current Maintainer of the Work, you may modify
-your copy of the Work, thus creating a Derived Work based on the Work,
-and compile this Derived Work, thus creating a Compiled Work based on
-the Derived Work.
-
-6. If you are not the Current Maintainer of the Work, you may
-distribute a Derived Work provided the following conditions are met
-for every component of the Work unless that component clearly states
-in the copyright notice that it is exempt from that condition. Only
-the Current Maintainer is allowed to add such statements of exemption
-to a component of the Work.
-
- a. If a component of this Derived Work can be a direct replacement
- for a component of the Work when that component is used with the
- Base Interpreter, then, wherever this component of the Work
- identifies itself to the user when used interactively with that
- Base Interpreter, the replacement component of this Derived Work
- clearly and unambiguously identifies itself as a modified version
- of this component to the user when used interactively with that
- Base Interpreter.
-
- b. Every component of the Derived Work contains prominent notices
- detailing the nature of the changes to that component, or a
- prominent reference to another file that is distributed as part
- of the Derived Work and that contains a complete and accurate log
- of the changes.
-
- c. No information in the Derived Work implies that any persons,
- including (but not limited to) the authors of the original version
- of the Work, provide any support, including (but not limited to)
- the reporting and handling of errors, to recipients of the
- Derived Work unless those persons have stated explicitly that
- they do provide such support for the Derived Work.
-
- d. You distribute at least one of the following with the Derived Work:
-
- 1. A complete, unmodified copy of the Work;
- if your distribution of a modified component is made by
- offering access to copy the modified component from a
- designated place, then offering equivalent access to copy
- the Work from the same or some similar place meets this
- condition, even though third parties are not compelled to
- copy the Work along with the modified component;
-
- 2. Information that is sufficient to obtain a complete,
- unmodified copy of the Work.
-
-7. If you are not the Current Maintainer of the Work, you may
-distribute a Compiled Work generated from a Derived Work, as long as
-the Derived Work is distributed to all recipients of the Compiled
-Work, and as long as the conditions of Clause 6, above, are met with
-regard to the Derived Work.
-
-8. The conditions above are not intended to prohibit, and hence do not
-apply to, the modification, by any method, of any component so that it
-becomes identical to an updated version of that component of the Work as
-it is distributed by the Current Maintainer under Clause 4, above.
-
-9. Distribution of the Work or any Derived Work in an alternative
-format, where the Work or that Derived Work (in whole or in part) is
-then produced by applying some process to that format, does not relax or
-nullify any sections of this license as they pertain to the results of
-applying that process.
-
-10. a. A Derived Work may be distributed under a different license
- provided that license itself honors the conditions listed in
- Clause 6 above, in regard to the Work, though it does not have
- to honor the rest of the conditions in this license.
-
- b. If a Derived Work is distributed under a different license, that
- Derived Work must provide sufficient documentation as part of
- itself to allow each recipient of that Derived Work to honor the
- restrictions in Clause 6 above, concerning changes from the Work.
-
-11. This license places no restrictions on works that are unrelated to
-the Work, nor does this license place any restrictions on aggregating
-such works with the Work by any means.
-
-12. Nothing in this license is intended to, or may be used to, prevent
-complete compliance by all parties with all applicable laws.
-
-
-NO WARRANTY
-===========
-
-There is no warranty for the Work. Except when otherwise stated in
-writing, the Copyright Holder provides the Work `as is', without
-warranty of any kind, either expressed or implied, including, but not
-limited to, the implied warranties of merchantability and fitness for a
-particular purpose. The entire risk as to the quality and performance
-of the Work is with you. Should the Work prove defective, you assume
-the cost of all necessary servicing, repair, or correction.
-
-In no event unless required by applicable law or agreed to in writing
-will The Copyright Holder, or any author named in the components of the
-Work, or any other party who may distribute and/or modify the Work as
-permitted above, be liable to you for damages, including any general,
-special, incidental or consequential damages arising out of any use of
-the Work or out of inability to use the Work (including, but not limited
-to, loss of data, data being rendered inaccurate, or losses sustained by
-anyone as a result of any failure of the Work to operate with any other
-programs), even if the Copyright Holder or said author or said other
-party has been advised of the possibility of such damages.
-
-
-MAINTENANCE OF THE WORK
-=======================
-
-The Work has the status `author-maintained' if the Copyright Holder
-explicitly and prominently states near the primary copyright notice in
-the Work that the Work can only be maintained by the Copyright Holder
-or simply that it is `author-maintained'.
-
-The Work has the status `maintained' if there is a Current Maintainer
-who has indicated in the Work that they are willing to receive error
-reports for the Work (for example, by supplying a valid e-mail
-address). It is not required for the Current Maintainer to acknowledge
-or act upon these error reports.
-
-The Work changes from status `maintained' to `unmaintained' if there
-is no Current Maintainer, or the person stated to be Current
-Maintainer of the work cannot be reached through the indicated means
-of communication for a period of six months, and there are no other
-significant signs of active maintenance.
-
-You can become the Current Maintainer of the Work by agreement with
-any existing Current Maintainer to take over this role.
-
-If the Work is unmaintained, you can become the Current Maintainer of
-the Work through the following steps:
-
- 1. Make a reasonable attempt to trace the Current Maintainer (and
- the Copyright Holder, if the two differ) through the means of
- an Internet or similar search.
-
- 2. If this search is successful, then enquire whether the Work
- is still maintained.
-
- a. If it is being maintained, then ask the Current Maintainer
- to update their communication data within one month.
-
- b. If the search is unsuccessful or no action to resume active
- maintenance is taken by the Current Maintainer, then announce
- within the pertinent community your intention to take over
- maintenance. (If the Work is a LaTeX work, this could be
- done, for example, by posting to comp.text.tex.)
-
- 3a. If the Current Maintainer is reachable and agrees to pass
- maintenance of the Work to you, then this takes effect
- immediately upon announcement.
-
- b. If the Current Maintainer is not reachable and the Copyright
- Holder agrees that maintenance of the Work be passed to you,
- then this takes effect immediately upon announcement.
-
- 4. If you make an `intention announcement' as described in 2b. above
- and after three months your intention is challenged neither by
- the Current Maintainer nor by the Copyright Holder nor by other
- people, then you may arrange for the Work to be changed so as
- to name you as the (new) Current Maintainer.
-
- 5. If the previously unreachable Current Maintainer becomes
- reachable once more within three months of a change completed
- under the terms of 3b) or 4), then that Current Maintainer must
- become or remain the Current Maintainer upon request provided
- they then update their communication data within one month.
-
-A change in the Current Maintainer does not, of itself, alter the fact
-that the Work is distributed under the LPPL license.
-
-If you become the Current Maintainer of the Work, you should
-immediately provide, within the Work, a prominent and unambiguous
-statement of your status as Current Maintainer. You should also
-announce your new status to the same pertinent community as
-in 2b) above.
-
-
-WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
-======================================================
-
-This section contains important instructions, examples, and
-recommendations for authors who are considering distributing their
-works under this license. These authors are addressed as `you' in
-this section.
-
-Choosing This License or Another License
-----------------------------------------
-
-If for any part of your work you want or need to use *distribution*
-conditions that differ significantly from those in this license, then
-do not refer to this license anywhere in your work but, instead,
-distribute your work under a different license. You may use the text
-of this license as a model for your own license, but your license
-should not refer to the LPPL or otherwise give the impression that
-your work is distributed under the LPPL.
-
-The document `modguide.tex' in the base LaTeX distribution explains
-the motivation behind the conditions of this license. It explains,
-for example, why distributing LaTeX under the GNU General Public
-License (GPL) was considered inappropriate. Even if your work is
-unrelated to LaTeX, the discussion in `modguide.tex' may still be
-relevant, and authors intending to distribute their works under any
-license are encouraged to read it.
-
-A Recommendation on Modification Without Distribution
------------------------------------------------------
-
-It is wise never to modify a component of the Work, even for your own
-personal use, without also meeting the above conditions for
-distributing the modified component. While you might intend that such
-modifications will never be distributed, often this will happen by
-accident -- you may forget that you have modified that component; or
-it may not occur to you when allowing others to access the modified
-version that you are thus distributing it and violating the conditions
-of this license in ways that could have legal implications and, worse,
-cause problems for the community. It is therefore usually in your
-best interest to keep your copy of the Work identical with the public
-one. Many works provide ways to control the behavior of that work
-without altering any of its licensed components.
-
-How to Use This License
------------------------
-
-To use this license, place in each of the components of your work both
-an explicit copyright notice including your name and the year the work
-was authored and/or last substantially modified. Include also a
-statement that the distribution and/or modification of that
-component is constrained by the conditions in this license.
-
-Here is an example of such a notice and statement:
-
- %% pig.dtx
- %% Copyright 2005 M. Y. Name
- %
- % This work may be distributed and/or modified under the
- % conditions of the LaTeX Project Public License, either version 1.3
- % of this license or (at your option) any later version.
- % The latest version of this license is in
- % http://www.latex-project.org/lppl.txt
- % and version 1.3 or later is part of all distributions of LaTeX
- % version 2005/12/01 or later.
- %
- % This work has the LPPL maintenance status `maintained'.
- %
- % The Current Maintainer of this work is M. Y. Name.
- %
- % This work consists of the files pig.dtx and pig.ins
- % and the derived file pig.sty.
-
-Given such a notice and statement in a file, the conditions
-given in this license document would apply, with the `Work' referring
-to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
-generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
-referring to any `LaTeX-Format', and both `Copyright Holder' and
-`Current Maintainer' referring to the person `M. Y. Name'.
-
-If you do not want the Maintenance section of LPPL to apply to your
-Work, change `maintained' above into `author-maintained'.
-However, we recommend that you use `maintained', as the Maintenance
-section was added in order to ensure that your Work remains useful to
-the community even when you can no longer maintain and support it
-yourself.
-
-Derived Works That Are Not Replacements
----------------------------------------
-
-Several clauses of the LPPL specify means to provide reliability and
-stability for the user community. They therefore concern themselves
-with the case that a Derived Work is intended to be used as a
-(compatible or incompatible) replacement of the original Work. If
-this is not the case (e.g., if a few lines of code are reused for a
-completely different task), then clauses 6b and 6d shall not apply.
-
-
-Important Recommendations
--------------------------
-
- Defining What Constitutes the Work
-
- The LPPL requires that distributions of the Work contain all the
- files of the Work. It is therefore important that you provide a
- way for the licensee to determine which files constitute the Work.
- This could, for example, be achieved by explicitly listing all the
- files of the Work near the copyright notice of each file or by
- using a line such as:
-
- % This work consists of all files listed in manifest.txt.
-
- in that place. In the absence of an unequivocal list it might be
- impossible for the licensee to determine what is considered by you
- to comprise the Work and, in such a case, the licensee would be
- entitled to make reasonable conjectures as to which files comprise
- the Work.
-
diff --git a/macros/latex/contrib/thuthesis/Makefile b/macros/latex/contrib/thuthesis/Makefile
deleted file mode 100644
index 1a7fd81641..0000000000
--- a/macros/latex/contrib/thuthesis/Makefile
+++ /dev/null
@@ -1,93 +0,0 @@
-# Makefile for ThuThesis
-
-PACKAGE = thuthesis
-THESIS = thuthesis-example
-SPINE = spine
-
-SOURCES = $(PACKAGE).ins $(PACKAGE).dtx
-CLSFILE = dtx-style.sty $(PACKAGE).cls
-
-LATEXMK = latexmk
-SHELL := /bin/bash
-NPM ?= npm
-
-# make deletion work on Windows
-ifdef SystemRoot
- RM = del /Q
-else
- RM = rm -f
-endif
-
-.PHONY: all all-dev clean distclean dist thesis viewthesis spine viewspine doc viewdoc cls check save savepdf test FORCE_MAKE
-
-thesis: $(THESIS).pdf
-
-all: thesis spine
-
-all-dev: doc all
-
-cls: $(CLSFILE)
-
-$(CLSFILE): $(SOURCES)
- xetex $(PACKAGE).ins
-
-doc: $(PACKAGE).pdf
-
-spine: $(SPINE).pdf
-
-$(PACKAGE).pdf: cls FORCE_MAKE
- $(LATEXMK) $(PACKAGE).dtx
-
-$(THESIS).pdf: cls FORCE_MAKE
- $(LATEXMK) $(THESIS)
-
-$(SPINE).pdf: cls FORCE_MAKE
- $(LATEXMK) $(SPINE)
-
-viewdoc: doc
- $(LATEXMK) -pv $(PACKAGE).dtx
-
-viewthesis: thesis
- $(LATEXMK) -pv $(THESIS)
-
-viewspine: spine
- $(LATEXMK) -pv $(SPINE)
-
-save:
-ifeq ($(target),)
- bash testfiles/save.sh
-else
- bash testfiles/save.sh $(target)
-endif
-
-test:
-ifeq ($(target),)
- l3build check
-else
- bash testfiles/test.sh $(target)
-endif
-
-clean:
- $(LATEXMK) -c $(PACKAGE).dtx $(THESIS) $(SPINE)
- -@$(RM) -rf *~ main-survey.* main-translation.* _markdown_thuthesis* thuthesis.markdown.*
-
-cleanall: clean
- -@$(RM) $(PACKAGE).pdf $(THESIS).pdf $(SPINE).pdf
-
-distclean: cleanall
- -@$(RM) $(CLSFILE)
- -@$(RM) -r dist
-
-check: FORCE_MAKE
-ifeq ($(version),)
- @echo "Error: version missing: \"make [check|dist] version=X.Y.Z\""; exit 1
-else
- @[[ $(shell grep -E -c '$(version) Tsinghua University Thesis Template|\\def\\version\{$(version)\}' thuthesis.dtx) -eq 3 ]] || (echo "update version with \'l3build tag\" before release"; exit 1)
- @[[ $(shell grep -E -c '"version": "$(version)"' package.json) -eq 1 ]] || (echo "update version with \'l3build tag\" before release"; exit 1)
-endif
-
-dist: check all-dev
- # use l3build for CTAN release (zip with .tds.zip)
- l3build ctan --config build-ctan
- # use gulp for GitHub release (zip with generated file)
- $(NPM) run build -- --version=$(version)
diff --git a/macros/latex/contrib/thuthesis/README.md b/macros/latex/contrib/thuthesis/README.md
index 653ebffd56..d760190121 100644
--- a/macros/latex/contrib/thuthesis/README.md
+++ b/macros/latex/contrib/thuthesis/README.md
@@ -21,12 +21,12 @@ Scroll down for the English version of README.
推荐下载**发布版**模板,里面包括具体使用说明以及示例文档:
-* 模板使用说明(thuthesis.pdf)
-* 示例文档(thuthesis-example.pdf)
+* 模板使用说明(`thuthesis.pdf`)
+* 示例文档(`thuthesis-example.pdf`)
-开发版中不提供预生成的 `cls` 文件和文档,仅包含源码。其仅供开发者与需要尚未发布的功能的有经验的 TeX 用户使用,不提供任何保证。
+在开始书写前,建议将 `thuthesis-example.tex` 复制或重命名为其他有意义的名称。
-下载途径:
+### 下载途径
* 发布版:
* 仅下载:
@@ -35,17 +35,22 @@ Scroll down for the English version of README.
* [TUNA 镜像站](https://mirrors.tuna.tsinghua.edu.cn/github-release/tuna/thuthesis/):GitHub Releases 的镜像。
* 在线编辑:
* [TeXPage 模板](https://www.texpage.com/template/72b580ca-51fa-4ecc-82b3-0509bc1d6a07)(提供 Windows 中文字体)
- * [Overleaf 模板](https://www.overleaf.com/latex/templates/thuthesis-tsinghua-university-thesis-latex-template/wddqnwbyhtnk)
+ * [Overleaf 模板](https://www.overleaf.com/latex/templates/thuthesis-tsinghua-university-thesis-latex-template/cfwgcxtvkbsx)
* 开发版:[GitHub](https://github.com/tuna/thuthesis)
-**任何在其他途径分发的 ThuThesis(包含其变体或衍生物)均不是官方版本,请谨慎使用。**
+### 注意事项
+
+* GitHub 仓库的开发版仅供开发者与需要尚未发布的功能的有经验的 TeX 用户使用,不提供任何保证。
+* **任何在其他途径分发的 ThuThesis(包含其变体或衍生物)均不是官方版本,请谨慎使用。**
## 更新日志
每个版本的详细更新日志,请见 [CHANGELOG.md](CHANGELOG.md)。使用文档中也包含了这一内容。
## 升级
+
### 自动更新
+
通过 TeX 发行版工具(如 `tlmgr`)自动从 [CTAN](https://www.ctan.org/pkg/thuthesis) 更新。
### 手动更新
@@ -56,34 +61,30 @@ Scroll down for the English version of README.
#### 开发版
-从 GitHub clone 项目源码或者下载源码 zip 包,执行命令(Windows 用户在文件夹空白处按 `Shift + 鼠标右键`,点击“在此处打开命令行窗口”):
-
-```shell
-xetex thuthesis.ins
-```
+有两种获得开发版编译结果的方式:
-即可得到 `thuthesis.cls` 等模板文件。
+1. 从 GitHub 上对应 commit 的名为 `Test` 的 workflow 中下载 `thuthesis-snapshot-release` 并解压,其中的 `dist` 文件夹包含了编译后的开发版代码。
+2. 从 GitHub clone 项目源码或者下载源码 zip 包,执行 `xetex thuthesis.ins`。
## 提问
+
按推荐顺序排序:
-* 先到 [FAQ](https://github.com/tuna/thuthesis/wiki/FAQ) 看看常见问题
-* 在 [GitHub Discussions](https://github.com/tuna/thuthesis/discussions) 搜索已有讨论,如果没有则提出新问题
-* 如果认为模板存在问题,可在 Issues 中提出
+* 先到 [FAQ](https://github.com/tuna/thuthesis/wiki/FAQ) 看看常见问题;
+* 在 [GitHub Discussions](https://github.com/tuna/thuthesis/discussions) 搜索已有讨论,如果没有则提出新问题;
+* 如果认为模板存在问题,可在 Issues 中使用相应的模板提出。
## Makefile的用法
```shell
-make [{all|thesis|spine|doc|clean|cleanall|distclean}]
+make [{thesis|doc|clean|cleanall|distclean}]
```
### 目标
-* `make thesis` 生成论文 thuthesis-example.pdf;
-* `make spine` 生成书脊 spine.pdf;
-* `make doc` 生成模板使用说明书 thuthesis.pdf;
-* `make all` 生成论文和书脊,相当于 `make thesis && make spine`;
-* `make clean` 删除示例文件的中间文件(不含 thuthesis-example.pdf);
-* `make cleanall` 删除示例文件的中间文件和 thuthesis-example.pdf;
+* `make thesis` 生成论文 `thuthesis-example.pdf`;
+* `make doc` 生成模板使用说明书 `thuthesis.pdf`;
+* `make clean` 删除示例文件的中间文件(不含 `thuthesis-example.pdf`);
+* `make cleanall` 删除示例文件的中间文件和 `thuthesis-example.pdf`;
* `make distclean` 删除示例文件和模板的所有中间文件和 PDF。
---
@@ -100,11 +101,14 @@ Any use of ThuThesis in violation of [The LaTeX project public license v1.3c](ht
## Downloads
-**Published versions** are recommended. Specific usage documentation and examples can be found in the archive. At present, these documents are <b>only available in Chinese</b>:
-* Template usage documentation (thuthesis.pdf)
-* Template example (thuthesis-example.pdf)
+**Published versions** are recommended. Specific usage documentation and examples can be found in the archive. At present, these documents are **only available in Chinese**:
+
+* Template usage documentation (`thuthesis.pdf`)
+* Template example (`thuthesis-example.pdf`)
-Developer versions contain only source code but no pre-compiled `cls` file and documentations. They are only for the usage of developers and experienced TeX users in need of unpublished features. No warranties are provided.
+Before you start writing, it is recommended to copy or rename `thuthesis-example.tex` to another meaningful name.
+
+### Download Methods
* Published versions:
* Download only:
@@ -113,17 +117,22 @@ Developer versions contain only source code but no pre-compiled `cls` file and d
* [TUNA Mirrors](https://mirrors.tuna.tsinghua.edu.cn/github-release/tuna/thuthesis/): mirror of GitHub Releases
* Online editor:
* [TeXPage template](https://www.texpage.com/template/72b580ca-51fa-4ecc-82b3-0509bc1d6a07) (providing Chinese fonts of Windows)
- * [Overleaf template](https://www.overleaf.com/latex/templates/thuthesis-tsinghua-university-thesis-latex-template/wddqnwbyhtnk)
+ * [Overleaf template](https://www.overleaf.com/latex/templates/thuthesis-tsinghua-university-thesis-latex-template/cfwgcxtvkbsx)
* Developer versions: [GitHub](https://github.com/tuna/thuthesis)
-**ThuThesis (including its variants / derivatives) distributed in any other way is NOT an official version. Use at your own risk.**
+### Notes
+
+* The development version in the GitHub repository is intended for developers and experienced TeX users who require unreleased features, and no guarantees are provided.
+* **ThuThesis (including its variants / derivatives) distributed in any other way is NOT an official version. Use at your own risk.**
## Changelog
See [CHANGELOG.md](CHANGELOG.md) for detailed changes in each release. They are also included in the usage documentation.
## Updates
+
### Automatic
+
Get the most up-to-date published version with your TeX distribution from [CTAN](https://www.ctan.org/pkg/thuthesis).
### Manual
@@ -132,34 +141,30 @@ Get the most up-to-date published version with your TeX distribution from [CTAN]
Download the published zip files, extract `thuthesis.cls` and other files (if needed) and override the existing ones in your thesis.
-#### Developer versions
+#### Development versions
-Download the source code package and unzip to the root directory of your thesis (or clone this project), then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here" from the popup menu):
+There are two ways to obtain the compiled development version:
-```shell
-xetex thuthesis.ins
-```
-
-You'll get `thuthesis.cls` along with other template files.
+1. Download the `thuthesis-snapshot-release` from the `Test` workflow of the corresponding commit on GitHub and extract it. The `dist` folder contains the compiled template of development version.
+2. Clone the project source code from GitHub or download the source code tarball, and run `xetex thuthesis.ins`.
## Reporting Issues
+
Please follow the procedure below:
-* Check the [FAQ](https://github.com/tuna/thuthesis/wiki/FAQ)
-* Search [GitHub Discussions](https://github.com/tuna/thuthesis/discussions) and create if not existed
-* Create an issue if you believe there is a bug
+* Check the [FAQ](https://github.com/tuna/thuthesis/wiki/FAQ).
+* Search [GitHub Discussions](https://github.com/tuna/thuthesis/discussions) and create if not existed.
+* Create an issue (with specified template) if you believe there is a bug.
## Makefile Usage
```shell
-make [{all|thesis|spine|doc|clean|cleanall|distclean}]
+make [{all|thesis|doc|clean|cleanall|distclean}]
```
### Targets
-* `make thesis` generate thesis thuthesis-example.pdf;
-* `make spine` generate book spine for printing spine.pdf;
+* `make thesis` generate thesis `thuthesis-example.pdf`;
* `make doc` generate template documentation thuthesis.pdf;
-* `make all` generate thesis and spine, same as `make thesis && make spine`;
* `make clean` delete all examples' files (excluding thuthesis-example.pdf);
* `make cleanall` delete all examples' files and thuthesis-example.pdf;
* `make distclean` delete all examples' and templates' files and PDFs.
diff --git a/macros/latex/contrib/thuthesis/data/appendix-survey.tex b/macros/latex/contrib/thuthesis/data/appendix-survey.tex
index 76fe5b12f5..705964fd60 100644
--- a/macros/latex/contrib/thuthesis/data/appendix-survey.tex
+++ b/macros/latex/contrib/thuthesis/data/appendix-survey.tex
@@ -38,7 +38,7 @@ An example table in appendix (Table~\ref{tab:appendix-survey-table}).
\toprule
File name & Description \\
\midrule
- thuthesis.dtx & The source file including documentaion and comments \\
+ thuthesis.dtx & The source file including documentation and comments \\
thuthesis.cls & The template file \\
thuthesis-*.bst & BibTeX styles \\
thuthesis-*.bbx & BibLaTeX styles for bibliographies \\
@@ -60,13 +60,17 @@ An example equation in appendix (Equation~\eqref{eq:appendix-survey-equation}).
\section{Citations}
-Example citations in appendix.
-\cite{abrahams99tex}
-\cite{salomon1995advanced}
-\cite{abrahams99tex,salomon1995advanced}
+Example\cite{dupont1974bone} citations\cite{merkt1995rotational} in appendix
+\cite{dupont1974bone,merkt1995rotational}.
+% 默认使用正文的参考文献样式;
+% 如果使用 BibTeX,可以切换为其他兼容 natbib 的 BibTeX 样式。
\bibliographystyle{unsrtnat}
-\bibliography{ref/appendix}
+% \bibliographystyle{IEEEtranN}
+
+% 默认使用正文的参考文献 .bib 数据库;
+% 如果使用 BibTeX,可以改为指定数据库,如 \bibliography{ref/refs}。
+\printbibliography
\end{survey}
diff --git a/macros/latex/contrib/thuthesis/data/appendix-translation.tex b/macros/latex/contrib/thuthesis/data/appendix-translation.tex
index 0ca7d15264..b244af4735 100644
--- a/macros/latex/contrib/thuthesis/data/appendix-translation.tex
+++ b/macros/latex/contrib/thuthesis/data/appendix-translation.tex
@@ -59,7 +59,8 @@
\section{文献引用}
-文献引用示例\cite{abrahams99tex}。
+附录\cite{dupont1974bone}中的参考文献引用\cite{merkt1995rotational}示例
+\cite{dupont1974bone,merkt1995rotational}。
\appendix
@@ -70,14 +71,22 @@
% 书面翻译的参考文献
+% 默认使用正文的参考文献样式;
+% 如果使用 BibTeX,可以切换为其他兼容 natbib 的 BibTeX 样式。
\bibliographystyle{unsrtnat}
-\bibliography{ref/appendix}
+% \bibliographystyle{IEEEtranN}
+
+% 默认使用正文的参考文献 .bib 数据库;
+% 如果使用 BibTeX,可以改为指定数据库,如 \bibliography{ref/refs}。
+\printbibliography
% 书面翻译对应的原文索引
\begin{translation-index}
- \nocite{salomon1995advanced}
+ \nocite{mellinger1996laser}
+ \nocite{bixon1996dynamics}
+ \nocite{carlson1981two}
\bibliographystyle{unsrtnat}
- \bibliography{ref/appendix}
+ \printbibliography
\end{translation-index}
\end{translation}
diff --git a/macros/latex/contrib/thuthesis/data/appendix.tex b/macros/latex/contrib/thuthesis/data/appendix.tex
index a955b4e559..24d9485061 100644
--- a/macros/latex/contrib/thuthesis/data/appendix.tex
+++ b/macros/latex/contrib/thuthesis/data/appendix.tex
@@ -52,8 +52,9 @@
\end{equation}
-\section{参考文献}
+\section{文献引用}
-附录中的参考文献示例(\cite{carlson1981two} 和 \cite{carlson1981two,taylor1983scanning,taylor1981study})。
+附录\cite{dupont1974bone}中的参考文献引用\cite{zhengkaiqing1987}示例
+\cite{dupont1974bone,zhengkaiqing1987}。
\printbibliography
diff --git a/macros/latex/contrib/thuthesis/data/chap03.tex b/macros/latex/contrib/thuthesis/data/chap03.tex
index 8cd4344fbb..54c83ed6c5 100644
--- a/macros/latex/contrib/thuthesis/data/chap03.tex
+++ b/macros/latex/contrib/thuthesis/data/chap03.tex
@@ -78,7 +78,7 @@
\section{数学定理}
定理环境的格式可以使用 \pkg{amsthm} 或者 \pkg{ntheorem} 宏包配置。
-用户在导言区载入这两者之一后,模板会自动配置 \env{thoerem}、\env{proof} 等环境。
+用户在导言区载入这两者之一后,模板会自动配置 \env{theorem}、\env{proof} 等环境。
\begin{theorem}[Lindeberg--Lévy 中心极限定理]
设随机变量 $X_1, X_2, \dots, X_n$ 独立同分布, 且具有期望 $\mu$ 和有限的方差 $\sigma^2 \ne 0$,
diff --git a/macros/latex/contrib/thuthesis/latexmkrc b/macros/latex/contrib/thuthesis/latexmkrc
deleted file mode 100644
index 848fd1312f..0000000000
--- a/macros/latex/contrib/thuthesis/latexmkrc
+++ /dev/null
@@ -1,19 +0,0 @@
-# vim: set ft=perl:
-
-$pdf_mode = 5;
-
-$xelatex = "xelatex -shell-escape -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S";
-$lualatex = "lualatex -shell-escape -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1 %O %S";
-$xdvipdfmx = "xdvipdfmx -q -E -o %D %O %S";
-
-$bibtex_use = 1.5;
-
-$clean_ext = "hd loe ptc run.xml synctex.gz thm xdv";
-
-$makeindex = "makeindex -s gind.ist %O -o %D %S";
-
-add_cus_dep('nlo', 'nls', 0, 'nlo2nls');
-sub nlo2nls {
- system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
-}
-push @generated_exts, 'nlo', 'nls';
diff --git a/macros/latex/contrib/thuthesis/ref/appendix.bib b/macros/latex/contrib/thuthesis/ref/appendix.bib
deleted file mode 100644
index 0f9ae22352..0000000000
--- a/macros/latex/contrib/thuthesis/ref/appendix.bib
+++ /dev/null
@@ -1,14 +0,0 @@
-@book{abrahams99tex,
- author = {Paul W. Abrahams and Karl Berry and Kathryn A. Hargreaves},
- title = {{\TeX} for the Impatient},
- publisher = {Addison-Wesley},
- year = 1990,
-}
-
-@book{salomon1995advanced,
- author = {David Salomon},
- title = {The advanced {\TeX}book},
- address = {New York},
- publisher = {Springer},
- year = 1995,
-}
diff --git a/macros/latex/contrib/thuthesis/ref/refs.bib b/macros/latex/contrib/thuthesis/ref/refs.bib
index 6b51f03003..6eb5862de4 100644
--- a/macros/latex/contrib/thuthesis/ref/refs.bib
+++ b/macros/latex/contrib/thuthesis/ref/refs.bib
@@ -44,6 +44,7 @@
title = {一种温热外敷药制备方案},
address = {中国},
number = {88105607.3},
+ year = {1980},
date = {1980-07-26},
key = {jiang1 xi1 zhou1},
}
@@ -298,6 +299,7 @@
author = {傅刚 and 赵承 and 李佳路},
title = {大风沙过后的思考},
journal = {北京青年报},
+ year = {2000},
date = {2000-04-12},
number = {14},
urldate = {2002-03-06},
@@ -318,6 +320,7 @@
@online{oclc2000about,
author = {{Online Computer Library Center, Inc}},
title = {About {OCLC}: History of Cooperation},
+ year = {2000},
urldate = {2000-01-08},
url = {http://www.oclc.org/about/cooperation.en.htm},
}
diff --git a/macros/latex/contrib/thuthesis/spine.pdf b/macros/latex/contrib/thuthesis/spine.pdf
index 7aff0d70d6..99892546a7 100644
--- a/macros/latex/contrib/thuthesis/spine.pdf
+++ b/macros/latex/contrib/thuthesis/spine.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/spine.tex b/macros/latex/contrib/thuthesis/spine.tex
deleted file mode 100644
index 54f4d29842..0000000000
--- a/macros/latex/contrib/thuthesis/spine.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-% !TeX encoding = UTF-8
-% !TeX program = xelatex
-% !TeX spellcheck = en_US
-
-\documentclass[degree=master]{thuthesis}
-
-\input{thusetup.tex}
-
-% \thusetup{
-% spine-font = {\zihao{3}},
-% spine-title = {书脊的标题},
-% spine-author = {书脊的作者姓名},
-% }
-
-\begin{document}
-
-\spine
-
-\end{document}
diff --git a/macros/latex/contrib/thuthesis/thusetup.tex b/macros/latex/contrib/thuthesis/thusetup.tex
index 4eb5ae54b8..16cc0a68ac 100644
--- a/macros/latex/contrib/thuthesis/thusetup.tex
+++ b/macros/latex/contrib/thuthesis/thusetup.tex
@@ -14,6 +14,9 @@
% 选择打印版(print)或用于提交的电子版(electronic),前者会插入空白页以便直接双面打印
%
output = print,
+ % 格式类型
+ % 默认为论文(thesis),也可以设置为开题报告(proposal)
+ % thesis-type = proposal,
%
% 标题
% 可使用“\\”命令手动控制换行
@@ -67,6 +70,11 @@
author = {薛瑞尼},
author* = {Xue Ruini},
%
+ % 学号
+ % 仅当书写开题报告时需要(同时设置 `thesis-type = proposal')
+ %
+ % student-id = {2000310000},
+ %
% 指导教师
% 中文姓名和职称之间以英文逗号“,”分开,下同
%
@@ -154,6 +162,10 @@
% \usepackage{natbib}
% \bibliographystyle{thuthesis-author-year}
+% 生命科学学院要求使用 Cell 参考文献格式(2023 年以前使用 author-date 格式)
+% \usepackage{natbib}
+% \bibliographystyle{cell}
+
% 本科生参考文献的著录格式
% \usepackage[sort]{natbib}
% \bibliographystyle{thuthesis-bachelor}
@@ -161,6 +173,7 @@
% 参考文献使用 BibLaTeX 宏包
% \usepackage[style=thuthesis-numeric]{biblatex}
% \usepackage[style=thuthesis-author-year]{biblatex}
+% \usepackage[style=gb7714-2015]{biblatex}
% \usepackage[style=apa]{biblatex}
% \usepackage[style=mla-new]{biblatex}
% 声明 BibLaTeX 的数据库
diff --git a/macros/latex/contrib/thuthesis/thuthesis-author-year.bst b/macros/latex/contrib/thuthesis/thuthesis-author-year.bst
index fe7e0d20dd..9a46a4e461 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-author-year.bst
+++ b/macros/latex/contrib/thuthesis/thuthesis-author-year.bst
@@ -8,9 +8,9 @@
%% -------------------------------------------------------------------
%% GB/T 7714 BibTeX Style
%% https://github.com/zepinglee/gbt7714-bibtex-style
-%% Version: 2022/03/21 v2.1.4
+%% Version: 2024/03/08 v2.1.6
%% -------------------------------------------------------------------
-%% Copyright (C) 2016--2022 by Zeping Lee <zepinglee AT gmail.com>
+%% Copyright (C) 2016--2024 by Zeping Lee <zepinglee AT gmail.com>
%% -------------------------------------------------------------------
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -39,6 +39,7 @@ INTEGERS {
show.medium.type
short.journal
italic.journal
+ link.journal
bold.journal.volume
show.missing.address.publisher
space.before.pages
@@ -83,6 +84,7 @@ FUNCTION {load.config}
"slash" 'component.part.label :=
#0 'short.journal :=
#0 'italic.journal :=
+ #0 'link.journal :=
#0 'bold.journal.volume :=
#0 'show.missing.address.publisher :=
#1 'space.before.pages :=
@@ -745,7 +747,7 @@ FUNCTION {editor.full}
FUNCTION {make.full.names}
{ type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.full
{ type$ "collection" =
@@ -887,7 +889,7 @@ FUNCTION {format.volume}
{ volume is.number
{ entry.lang lang.zh =
{ "第 " volume * " 卷" * }
- { "volume" volume tie.or.space.connect }
+ { "Vol." volume tie.or.space.connect }
if$
}
{ volume }
@@ -902,7 +904,7 @@ FUNCTION {format.number}
{ number is.number
{ entry.lang lang.zh =
{ "第 " number * " 册" * }
- { "number" number tie.or.space.connect }
+ { "No." number tie.or.space.connect }
if$
}
{ number }
@@ -1067,7 +1069,7 @@ FUNCTION {get.journal.title}
}
FUNCTION {check.arxiv.preprint}
-{ #1 #5 substring$ "l" change.case$ "arxiv" =
+{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" =
{ #1 }
{ #0 }
if$
@@ -1080,6 +1082,10 @@ FUNCTION {format.journal}
'emphasize
'skip$
if$
+ link.journal
+ 'add.link
+ 'skip$
+ if$
}
'skip$
if$
@@ -1976,6 +1982,10 @@ FUNCTION {preprint}
format.urldate "" output.after
output.eprint
output.url
+ show.preprint not eprint empty$ or
+ 'output.doi
+ 'skip$
+ if$
new.block
format.note output
fin.entry
@@ -2040,7 +2050,12 @@ FUNCTION {dataset}
electronic
}
-FUNCTION {inbook} { book }
+FUNCTION {inbook} {
+ booktitle empty$
+ 'book
+ 'incollection
+ if$
+}
FUNCTION {inproceedings}
{ "C" set.entry.mark
@@ -2058,7 +2073,7 @@ FUNCTION {map}
FUNCTION {manual} { monograph }
-FUNCTION {mastersthesis}
+FUNCTION {thesis}
{ "D" set.entry.mark
monograph
}
@@ -2073,7 +2088,9 @@ FUNCTION {online}
electronic
}
-FUNCTION {phdthesis} { mastersthesis }
+FUNCTION {mastersthesis} { thesis }
+
+FUNCTION {phdthesis} { thesis }
FUNCTION {proceedings}
{ "C" set.entry.mark
@@ -2090,11 +2107,13 @@ FUNCTION {standard}
misc
}
-FUNCTION {techreport}
+FUNCTION {report}
{ "R" set.entry.mark
misc
}
+FUNCTION {techreport} { report }
+
FUNCTION {unpublished} { misc }
FUNCTION {default.type} { misc }
@@ -2281,7 +2300,7 @@ FUNCTION {editor.key.organization.label}
FUNCTION {calc.short.authors}
{ "" 'short.label :=
type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.key.label
{ type$ "collection" =
@@ -2483,7 +2502,7 @@ FUNCTION {presort}
" "
*
type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.sort
{ type$ "collection" =
diff --git a/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst b/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
index e7d7b7d85e..67e1f7eeb3 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
+++ b/macros/latex/contrib/thuthesis/thuthesis-bachelor.bst
@@ -8,9 +8,9 @@
%% -------------------------------------------------------------------
%% GB/T 7714 BibTeX Style
%% https://github.com/zepinglee/gbt7714-bibtex-style
-%% Version: 2022/03/21 v2.1.4
+%% Version: 2024/03/08 v2.1.6
%% -------------------------------------------------------------------
-%% Copyright (C) 2016--2022 by Zeping Lee <zepinglee AT gmail.com>
+%% Copyright (C) 2016--2024 by Zeping Lee <zepinglee AT gmail.com>
%% -------------------------------------------------------------------
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -39,6 +39,7 @@ INTEGERS {
show.medium.type
short.journal
italic.journal
+ link.journal
bold.journal.volume
show.missing.address.publisher
space.before.pages
@@ -78,6 +79,7 @@ FUNCTION {load.config}
"slash" 'component.part.label :=
#0 'short.journal :=
#0 'italic.journal :=
+ #0 'link.journal :=
#0 'bold.journal.volume :=
#0 'show.missing.address.publisher :=
#1 'space.before.pages :=
@@ -735,7 +737,7 @@ FUNCTION {editor.full}
FUNCTION {make.full.names}
{ type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.full
{ type$ "collection" =
@@ -877,7 +879,7 @@ FUNCTION {format.volume}
{ volume is.number
{ entry.lang lang.zh =
{ "第 " volume * " 卷" * }
- { "volume" volume tie.or.space.connect }
+ { "Vol." volume tie.or.space.connect }
if$
}
{ volume }
@@ -892,7 +894,7 @@ FUNCTION {format.number}
{ number is.number
{ entry.lang lang.zh =
{ "第 " number * " 册" * }
- { "number" number tie.or.space.connect }
+ { "No." number tie.or.space.connect }
if$
}
{ number }
@@ -1057,7 +1059,7 @@ FUNCTION {get.journal.title}
}
FUNCTION {check.arxiv.preprint}
-{ #1 #5 substring$ "l" change.case$ "arxiv" =
+{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" =
{ #1 }
{ #0 }
if$
@@ -1070,6 +1072,10 @@ FUNCTION {format.journal}
'emphasize
'skip$
if$
+ link.journal
+ 'add.link
+ 'skip$
+ if$
}
'skip$
if$
@@ -1966,6 +1972,10 @@ FUNCTION {preprint}
format.urldate "" output.after
output.eprint
output.url
+ show.preprint not eprint empty$ or
+ 'output.doi
+ 'skip$
+ if$
new.block
format.note output
fin.entry
@@ -2030,7 +2040,12 @@ FUNCTION {dataset}
electronic
}
-FUNCTION {inbook} { book }
+FUNCTION {inbook} {
+ booktitle empty$
+ 'book
+ 'incollection
+ if$
+}
FUNCTION {inproceedings}
{ "C" set.entry.mark
@@ -2048,7 +2063,7 @@ FUNCTION {map}
FUNCTION {manual} { monograph }
-FUNCTION {mastersthesis}
+FUNCTION {thesis}
{ "D" set.entry.mark
monograph
}
@@ -2063,7 +2078,9 @@ FUNCTION {online}
electronic
}
-FUNCTION {phdthesis} { mastersthesis }
+FUNCTION {mastersthesis} { thesis }
+
+FUNCTION {phdthesis} { thesis }
FUNCTION {proceedings}
{ "C" set.entry.mark
@@ -2080,11 +2097,13 @@ FUNCTION {standard}
misc
}
-FUNCTION {techreport}
+FUNCTION {report}
{ "R" set.entry.mark
misc
}
+FUNCTION {techreport} { report }
+
FUNCTION {unpublished} { misc }
FUNCTION {default.type} { misc }
@@ -2271,7 +2290,7 @@ FUNCTION {editor.key.organization.label}
FUNCTION {calc.short.authors}
{ "" 'short.label :=
type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.key.label
{ type$ "collection" =
diff --git a/macros/latex/contrib/thuthesis/thuthesis-example.pdf b/macros/latex/contrib/thuthesis/thuthesis-example.pdf
index 6f37010a21..1a4d6b72b0 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-example.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/thuthesis-example.tex b/macros/latex/contrib/thuthesis/thuthesis-example.tex
index 8c3061a0ed..298c45fde9 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-example.tex
+++ b/macros/latex/contrib/thuthesis/thuthesis-example.tex
@@ -28,6 +28,7 @@
\input{data/committee}
% 使用授权的说明
+% 本科生开题报告不需要
\copyrightpage
% 将签字扫描后授权文件 scan-copyright.pdf 替换原始页面
% \copyrightpage[file=scan-copyright.pdf]
@@ -74,6 +75,7 @@
\input{data/acknowledgements}
% 声明
+% 本科生开题报告不需要
\statement
% 将签字扫描后的声明文件 scan-statement.pdf 替换原始页面
% \statement[file=scan-statement.pdf]
diff --git a/macros/latex/contrib/thuthesis/thuthesis-numeric.bst b/macros/latex/contrib/thuthesis/thuthesis-numeric.bst
index f667907095..b27da61efc 100644
--- a/macros/latex/contrib/thuthesis/thuthesis-numeric.bst
+++ b/macros/latex/contrib/thuthesis/thuthesis-numeric.bst
@@ -8,9 +8,9 @@
%% -------------------------------------------------------------------
%% GB/T 7714 BibTeX Style
%% https://github.com/zepinglee/gbt7714-bibtex-style
-%% Version: 2022/03/21 v2.1.4
+%% Version: 2024/03/08 v2.1.6
%% -------------------------------------------------------------------
-%% Copyright (C) 2016--2022 by Zeping Lee <zepinglee AT gmail.com>
+%% Copyright (C) 2016--2024 by Zeping Lee <zepinglee AT gmail.com>
%% -------------------------------------------------------------------
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -39,6 +39,7 @@ INTEGERS {
show.medium.type
short.journal
italic.journal
+ link.journal
bold.journal.volume
show.missing.address.publisher
space.before.pages
@@ -78,6 +79,7 @@ FUNCTION {load.config}
"slash" 'component.part.label :=
#0 'short.journal :=
#0 'italic.journal :=
+ #0 'link.journal :=
#0 'bold.journal.volume :=
#0 'show.missing.address.publisher :=
#1 'space.before.pages :=
@@ -735,7 +737,7 @@ FUNCTION {editor.full}
FUNCTION {make.full.names}
{ type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.full
{ type$ "collection" =
@@ -877,7 +879,7 @@ FUNCTION {format.volume}
{ volume is.number
{ entry.lang lang.zh =
{ "第 " volume * " 卷" * }
- { "volume" volume tie.or.space.connect }
+ { "Vol." volume tie.or.space.connect }
if$
}
{ volume }
@@ -892,7 +894,7 @@ FUNCTION {format.number}
{ number is.number
{ entry.lang lang.zh =
{ "第 " number * " 册" * }
- { "number" number tie.or.space.connect }
+ { "No." number tie.or.space.connect }
if$
}
{ number }
@@ -1057,7 +1059,7 @@ FUNCTION {get.journal.title}
}
FUNCTION {check.arxiv.preprint}
-{ #1 #5 substring$ "l" change.case$ "arxiv" =
+{ #1 #5 substring$ purify$ "l" change.case$ "arxiv" =
{ #1 }
{ #0 }
if$
@@ -1070,6 +1072,10 @@ FUNCTION {format.journal}
'emphasize
'skip$
if$
+ link.journal
+ 'add.link
+ 'skip$
+ if$
}
'skip$
if$
@@ -1966,6 +1972,10 @@ FUNCTION {preprint}
format.urldate "" output.after
output.eprint
output.url
+ show.preprint not eprint empty$ or
+ 'output.doi
+ 'skip$
+ if$
new.block
format.note output
fin.entry
@@ -2030,7 +2040,12 @@ FUNCTION {dataset}
electronic
}
-FUNCTION {inbook} { book }
+FUNCTION {inbook} {
+ booktitle empty$
+ 'book
+ 'incollection
+ if$
+}
FUNCTION {inproceedings}
{ "C" set.entry.mark
@@ -2048,7 +2063,7 @@ FUNCTION {map}
FUNCTION {manual} { monograph }
-FUNCTION {mastersthesis}
+FUNCTION {thesis}
{ "D" set.entry.mark
monograph
}
@@ -2063,7 +2078,9 @@ FUNCTION {online}
electronic
}
-FUNCTION {phdthesis} { mastersthesis }
+FUNCTION {mastersthesis} { thesis }
+
+FUNCTION {phdthesis} { thesis }
FUNCTION {proceedings}
{ "C" set.entry.mark
@@ -2080,11 +2097,13 @@ FUNCTION {standard}
misc
}
-FUNCTION {techreport}
+FUNCTION {report}
{ "R" set.entry.mark
misc
}
+FUNCTION {techreport} { report }
+
FUNCTION {unpublished} { misc }
FUNCTION {default.type} { misc }
@@ -2271,7 +2290,7 @@ FUNCTION {editor.key.organization.label}
FUNCTION {calc.short.authors}
{ "" 'short.label :=
type$ "book" =
- type$ "inbook" =
+ type$ "inbook" = booktitle empty$ not and
or
'author.editor.key.label
{ type$ "collection" =
diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx
index d88e3d2377..6e25d0cdfb 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.dtx
+++ b/macros/latex/contrib/thuthesis/thuthesis.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2005-2021 by Tsinghua University TUNA Association <tuna@tsinghua.edu.cn>
+% Copyright (C) 2005-2024 by Tsinghua University TUNA Association <tuna@tsinghua.edu.cn>
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -14,7 +14,7 @@
%
% \iffalse
%<*driver>
-\ProvidesFile{thuthesis.dtx}[2023/05/15 7.4.0 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2024/03/29 7.5.0 Tsinghua University Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
@@ -73,7 +73,7 @@
% 容。
% \item 本模板为作者根据
% 清华大学研究生院颁发的《
-% \href{http://yjsy.cic.tsinghua.edu.cn/docinfo/board/boarddetail.jsp?columnId=001050603&parentColumnId=0010506&itemSeq=5365}{%
+% \href{https://info2021.tsinghua.edu.cn/f/info/xxfb_fg/xnzx/template/detail?xxid=fa880bdf60102a29fbe3c31f36b76c7e}{%
% 研究生学位论文写作指南}》(更新到2023年3月版本,限校内网络访问)、
% 英文版《Guide to Thesis Writing for Graduate Students》、
% 清华大学教务处颁发的《
@@ -170,7 +170,6 @@
% thuthesis-*.cbx & BibLaTeX 参考文献引用样式文件\\
% tsinghua-name-bachelor.pdf & 校名 logo,本科生封面使用 \\\midrule
% thuthesis-example.tex & 示例文档主文件\\
-% spine.tex & 书脊示例文档\\
% ref/ & 示例文档参考文献目录\\
% data/ & 示例文档章节具体内容\\
% figures/ & 示例文档图片路径\\
@@ -250,8 +249,8 @@
% \begin{shell}
% $ xelatex thuthesis-example.tex
% $ bibtex thuthesis-example.aux # 生成 bbl 文件
-% $ bibtex thuthesis-example-survey.aux # 本科生的调研报告的参考文献
-% $ bibtex thuthesis-example-translation.aux # 本科生的外文资料翻译的参考文献
+% $ bibtex thuthesis-example-appendix-a.aux # 附录 A 的的参考文献
+% $ bibtex thuthesis-example-appendix-b.aux # 附录 B 的的参考文献……
% $ bibtex thuthesis-example-index.aux # 本科生的书面翻译对应的原文索引
% $ xelatex thuthesis-example.tex # 解决引用
% $ xelatex thuthesis-example.tex # 生成论文 PDF
@@ -259,9 +258,6 @@
% $ xelatex spine.tex # 生成书脊 PDF
% \end{shell}
%
-% 在调用 \XeLaTeX 时,如果设置了 \option{include-spine} 选项,
-% 则需要在文件名前加上 \texttt{-shell-escape} 的命令行选项。
-%
% 下面的命令用来生成用户手册:
% \begin{shell}
% $ xelatex -shell-escape thuthesis.dtx
@@ -345,6 +341,7 @@
% 中易宋体 & 华文宋体 & 思源宋体 & Fandol 宋体 \\
% 中易黑体 & 华文黑体 & 思源黑体 & Fandol 黑体 \\
% 中易仿宋 & 华文仿宋 & Fandol 仿宋 & Fandol 仿宋 \\
+% 中易楷体 & 华文楷体 & Fandol 楷体 & Fandol 楷体 \\
% \bottomrule
% \end{tabular}
% \end{table}
@@ -355,6 +352,20 @@
% 关于字体的配置,
% 详见 \pkg{fontspec}、\pkg{xeCJK}、\pkg{ctex} 等宏包的使用说明和代码。
%
+% \DescribeOption{font}
+% 配置全文使用的西文字体。所有可选项目为 \option{auto}(默认)、\option{times}、\option{termes}、
+% \option{stix}、\option{xits}、\option{libertinus}、\option{newcm}、\option{lm}、
+% \option{newtx}、\option{none}。
+% 通常来说,用户\textbf{不需要}调整此选项。
+%
+% \DescribeOption{cjk-font}
+% 配置全文使用的中文字体。所有可选项为 \option{auto}(默认)、\option{windows}、\option{windows-local}、
+% \option{mac}、\option{mac-word}、\option{noto}、\option{fandol} 和 \option{none}。
+% 通常来说,用户\textbf{不需要}调整此选项,模板会自动通过 \option{fontset} 选项选择合适的字体。
+%
+% \DescribeOption{windows-font-dir}
+% 配置搜索 Windows 字体的路径,仅适用于 Overleaf 等不方便全局安装字体的环境。如果此目录下能找到中易宋体,
+% 则将自动使用这些字体编译。如有可能,始终建议全局安装相应字体,模板能够自动检测。
%
% \subsection{论文设置}
% 论文的设置可以通过统一命令 \cs{thusetup} 设置 \emph{key=value} 形式完成。
@@ -415,7 +426,7 @@
%
% \subsubsection{开题报告}
% \DescribeOption{thesis-type}
-% 模板还支持博士生论文开题报告的格式,可以通过设置 \option{thesis-type=proposal} 得到。
+% 模板还支持本科生、研究生论文开题报告的格式,可以通过设置 \option{thesis-type=proposal} 得到。
%
% 开题报告与学位论文有两点不同:
% \begin{enumerate}
@@ -528,7 +539,7 @@
% \end{latex}
%
% \subsubsection{学号}
-% 学号,仅用于博士生论文开题报告。
+% 学号,仅用于本、研论文开题报告。
% \begin{latex}
% \thusetup{
% student-id = {20000310000},
@@ -554,11 +565,10 @@
% }
% \end{latex}
%
-% \myentry{联合导师}
-% 硕士生、本科生联合指导教师,博士生联合导师。
+% \myentry{联合指导教师}
% \begin{latex}
% \thusetup{
-% co-supervisor = {联合导师姓名, 教授},
+% co-supervisor = {联合指导教师姓名, 教授},
% co-supervisor* = {Professor Join-Supervisor Name},
% }
% \end{latex}
@@ -1234,12 +1244,7 @@
% }
% \end{latex}
% 打开此选项后,书籍会出现在中文封面后面的第一个空白页。如果有英文封面,则在英文封面之前。
-% 如果需要书籍出现在其他位置,请手工使用 \cs{spine} 生成,不要使用此命令。
-%
-% 在使用 Fandol 仿宋时,如果打开 \option{include-spine} 选项,
-% 模板将使用 \cs{write18} 来生成独立的 \file{spine.tex},并调用 \XeLaTeX 进行排版后插入论文中。
-% 在这种情况下,请确保编译时打开了 shell escape 功能,或者在论文目录下放置编译完成的 \file{spine.pdf},
-% 否则编译将因为无法正常生成书脊而失败。
+% 如果需要书籍出现在其他位置,请手工使用 \cs{spine} 生成,不要使用此选项。
%
% \section{致谢}
% \label{sec:thanks}
@@ -1264,7 +1269,7 @@
% \begin{macrocode}
%<cls>\NeedsTeXFormat{LaTeX2e}[2017/04/15]
%<cls>\ProvidesClass{thuthesis}
-%<cls>[2023/05/15 7.4.0 Tsinghua University Thesis Template]
+%<cls>[2024/03/29 7.5.0 Tsinghua University Thesis Template]
% \end{macrocode}
%
% 报错
@@ -1275,6 +1280,9 @@
\newcommand\thu@warning[1]{%
\ClassWarning{thuthesis}{#1}%
}
+\newcommand\thu@debug[1]{%
+ \typeout{Package thuthesis Info: #1}%
+}
\newcommand\thu@patch@error[1]{%
\thu@error{Failed to patch command \protect#1}%
}
@@ -1322,7 +1330,7 @@
%<*cls>
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
-\def\version{7.4.0}
+\def\version{7.5.0}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
@@ -1556,6 +1564,7 @@
choices = {
auto,
windows,
+ windows-local,
mac,
mac-word,
noto,
@@ -1564,6 +1573,10 @@
},
default = auto,
},
+ windows-font-dir = {
+ name = windows@font@dir,
+ default = {.},
+ },
math-font = {
name = math@font,
choices = {
@@ -2245,13 +2258,14 @@
\thusetup{system = windows}
}
}
+ \thu@debug{Detected system: \thu@system}
\fi
% \end{macrocode}
%
% 使用 \pkg{fontspec} 配置字体。
% \begin{macrocode}
-\newcommand\thu@mac@word@font@path{%
- /Applications/Microsoft Word.app/Contents/Resources/DFonts/%
+\newcommand\thu@mac@word@font@dir{%
+ /Applications/Microsoft Word.app/Contents/Resources/DFonts%
}
\ifthu@fontset@auto
\ifthu@system@windows
@@ -2260,21 +2274,26 @@
\IfFontExistsTF{SimSun}{
\thusetup{fontset = windows}
}{
- \IfFileExists{\thu@mac@word@font@path/SimSun.ttf}{
- \thusetup{fontset = windows}
+ \IfFileExists{\thu@windows@font@dir/Simsun.ttc}{
+ \thusetup{fontset = windows, cjk-font = windows-local}
}{
- \ifthu@system@mac
- \thusetup{fontset = mac}
- \else
- \IfFontExistsTF{Noto Serif CJK SC}{
- \thusetup{fontset = ubuntu}
- }{
- \thusetup{fontset = fandol}
- }
- \fi
+ \IfFileExists{\thu@mac@word@font@dir/Simsun.ttc}{
+ \thusetup{fontset = windows, cjk-font = mac-word}
+ }{
+ \ifthu@system@mac
+ \thusetup{fontset = mac}
+ \else
+ \IfFontExistsTF{Noto Serif CJK SC}{
+ \thusetup{fontset = ubuntu}
+ }{
+ \thusetup{fontset = fandol}
+ }
+ \fi
+ }
}
}
\fi
+ \thu@debug{Detected fontset: \thu@fontset}
\fi
% \end{macrocode}
%
@@ -2536,15 +2555,6 @@
%
% \subsubsection{中文字体}
%
-% 去掉“no requested script”警告。
-% \begin{macrocode}
-\ExplSyntaxOn
-\@ifpackageloaded { xeCJK }
- { \msg_redirect_name:nnn { fontspec } { no-script } { info } }
- { }
-\ExplSyntaxOff
-% \end{macrocode}
-%
% \begin{macrocode}
\ifthu@cjk@font@auto
\ifthu@fontset@mac
@@ -2554,10 +2564,14 @@
\IfFontExistsTF{SimSun}{
\thusetup{cjk-font = windows}
}{
- \IfFileExists{\thu@mac@word@font@path/SimSun.ttf}{
- \thusetup{cjk-font = mac-word}
+ \IfFileExists{\thu@windows@font@dir/Simsun.ttc}{
+ \thusetup{cjk-font = windows-local}
}{
- \thu@error{Cannot find "SimSun" font}
+ \IfFileExists{\thu@mac@word@font@dir/Simsun.ttc}{
+ \thusetup{cjk-font = mac-word}
+ }{
+ \thu@error{Cannot find "SimSun" font}
+ }
}
}
\else
@@ -2568,6 +2582,7 @@
\fi
\fi
\fi
+ \thu@debug{Detected CJK font: \thu@cjk@font}
\fi
% \end{macrocode}
%
@@ -2587,35 +2602,86 @@
}
% \end{macrocode}
%
-% macOS 的 Microsoft Word 字体。
-% \begin{macrocode}
-\@namedef{thu@set@cjk@font@mac-word}{%
- \setCJKmainfont{SimSun}[%
- Path = \thu@mac@word@font@path,
- AutoFakeBold = 3,
- ItalicFont = KaiTi,
- ]%
+% 使用本地的 Windows 字体文件。
+%
+% Windows 的中易楷体和仿宋字体文件名分别为 \file{Simkai.ttf} 和
+% \file{Simfang.ttf}(见
+% \url{https://learn.microsoft.com/en-us/typography/fonts/windows_11_font_list}),
+% 而 macOS 版 Word 对应的字体名为 \file{Kaiti.ttf} 和 \file{Fangsong.ttf}。
+% 所以需要进行判断。
+% \begin{macrocode}
+\@namedef{thu@set@cjk@font@windows-local}{%
+ \IfFileExists{\thu@windows@font@dir/Kaiti.ttf}{
+ \setCJKmainfont{SimSun}[%
+ Path = \thu@windows@font@dir/,
+ Extension = .ttc,
+ AutoFakeBold = 3,
+ ItalicFont = Kaiti,
+ ItalicFeatures = {Extension = .ttf},
+ ]%
+ \setCJKmonofont{Fangsong}[
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
+ ]%
+ \setCJKfamilyfont{zhkai}{Kaiti}[
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
+ ]%
+ \setCJKfamilyfont{zhfs}{Fangsong}[
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
+ ]%
+ }{
+ \setCJKmainfont{SimSun}[%
+ Path = \thu@windows@font@dir/,
+ Extension = .ttc,
+ AutoFakeBold = 3,
+ ItalicFont = Simkai,
+ ItalicFeatures = {Extension = .ttf},
+ ]%
+ \setCJKmonofont{Simfang}[
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
+ ]%
+ \setCJKfamilyfont{zhkai}{Simkai}[
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
+ ]%
+ \setCJKfamilyfont{zhfs}{Simfang}[
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
+ ]%
+ }
\setCJKsansfont{SimHei}[%
- Path = \thu@mac@word@font@path,
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
AutoFakeBold = 3,
]%
- \setCJKmonofont{FangSong}[Path=\thu@mac@word@font@path]%
\setCJKfamilyfont{zhsong}{SimSun}[%
- Path = \thu@mac@word@font@path,
+ Path = \thu@windows@font@dir/,
+ Extension = .ttc,
AutoFakeBold = 3,
]%
\setCJKfamilyfont{zhhei}{SimHei}[%
- Path = \thu@mac@word@font@path,
+ Path = \thu@windows@font@dir/,
+ Extension = .ttf,
AutoFakeBold = 3,
]%
- \setCJKfamilyfont{zhkai}{KaiTi}[Path = \thu@mac@word@font@path]%
- \setCJKfamilyfont{zhfs}{FangSong}[Path = \thu@mac@word@font@path]%
+}
+% \end{macrocode}
+%
+% macOS 的 Microsoft Word 字体。
+% \begin{macrocode}
+\@namedef{thu@set@cjk@font@mac-word}{%
+ \let\thu@windows@font@dir\thu@mac@word@font@dir
+ \@nameuse{thu@set@cjk@font@windows-local}%
}
% \end{macrocode}
%
% macOS 的华文字体。
% \begin{macrocode}
\newcommand\thu@set@cjk@font@mac{%
+ \defaultCJKfontfeatures{}%
\setCJKmainfont{Songti SC}[
UprightFont = * Light,
BoldFont = * Bold,
@@ -2652,19 +2718,30 @@
% 注意 Noto CJK 的 regular 字重名字不带“Regular”。
% \begin{macrocode}
\newcommand\thu@set@cjk@font@noto{%
+ \defaultCJKfontfeatures{}%
\setCJKmainfont{Noto Serif CJK SC}[
UprightFont = * Light,
BoldFont = * Bold,
ItalicFont = FandolKai-Regular,
ItalicFeatures = {Extension = .otf},
+ Script = CJK,
+ ]%
+ \setCJKsansfont{Noto Sans CJK SC}[
+ BoldFont = * Medium,
+ Script = CJK,
+ ]%
+ \setCJKmonofont{Noto Sans Mono CJK SC}[
+ Script = CJK,
]%
- \setCJKsansfont{Noto Sans CJK SC}[BoldFont = * Medium]%
- \setCJKmonofont{Noto Sans Mono CJK SC}%
\setCJKfamilyfont{zhsong}{Noto Serif CJK SC}[
UprightFont = * Light,
UprightFont = * Bold,
+ Script = CJK,
+ ]%
+ \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[
+ BoldFont = * Medium,
+ Script = CJK,
]%
- \setCJKfamilyfont{zhhei}{Noto Sans CJK SC}[BoldFont = * Medium]%
\setCJKfamilyfont{zhfs}{FandolFang}[
Extension = .otf,
UprightFont = *-Regular,
@@ -2679,6 +2756,7 @@
% Fandol 字体。
% \begin{macrocode}
\newcommand\thu@set@cjk@font@fandol{%
+ \defaultCJKfontfeatures{}%
\setCJKmainfont{FandolSong}[
Extension = .otf,
UprightFont = *-Regular,
@@ -3510,8 +3588,7 @@
{}{\thu@patch@error{\@getpen}}
% \end{macrocode}
%
-% 下面这组命令使浮动对象的缺省值稍微宽松一点,从而防止幅度对象占据过多的文本页面,
-% 也可以防止在很大空白的浮动页上放置很小的图形。
+% 将浮动参数设为较宽松的值。
% \begin{macrocode}
\renewcommand{\textfraction}{0.15}
\renewcommand{\topfraction}{0.85}
@@ -4019,8 +4096,8 @@
%
% 研究生:
% \begin{enumerate}
-% \item 目录中的章标题行采用黑体小四号字,固定行距 20 磅,段前空 6 磅,
-% 段后 0 磅;其他内容采用宋体小四号字,行距为固定值 20 磅,
+% \item 目录中的章标题行采用黑体小四号字,固定行距 20 磅,段前段后 0 磅;
+% 其他内容采用宋体小四号字,行距为固定值 20 磅,
% 段前、段后均为 0 磅。
% \item 目录中的章标题行居左书写,一级节标题行缩进 1 个汉字符,
% 二级节标题行缩进 2 个汉字符。
@@ -4032,7 +4109,7 @@
\else
\ifthu@main@language@chinese
\titlecontents{chapter}
- [\z@]{\addvspace{6bp}\sffamily}
+ [\z@]{\sffamily}
{\contentspush{\thecontentslabel\quad}}{}
{\rmfamily\thu@leaders\thecontentspage}%
\titlecontents{section}
@@ -4045,7 +4122,7 @@
{\thu@leaders\thecontentspage}%
\else
\titlecontents{chapter}
- [\z@]{\addvspace{6bp}\heiti}
+ [\z@]{\heiti}
{\contentspush{\MakeUppercase{\thecontentslabel}\space}\MakeUppercase}{\MakeUppercase}
{\rmfamily\thu@leaders\thecontentspage}%
\titlecontents{section}
@@ -4343,19 +4420,8 @@
\stepcounter{thu@csl@count}%
}
\newcommand\thu@name@title@format[2]{%
- \ifthu@degree@type@professional
- % 字距 9.8bp,共 16bp * 3 + 9.8bp * 2 = 67.5bp
- \thu@stretch{67.6bp}{#1}%
- \hspace{9.8bp}%
- % 字距 6bp
- \begingroup
- \renewcommand\CJKglue{\hspace{9.8bp}}%
- #2%
- \endgroup
- \else
- \thu@pad{3cm}{\thu@stretch{4em}{#1}}%
- \thu@stretch{3em}{#2}%
- \fi
+ \thu@pad{3cm}{\thu@stretch{4em}{#1}}%
+ \thu@stretch{3em}{#2}%
}
\newcommand\thu@name@title[1]{%
\setcounter{thu@csl@count}{0}%
@@ -4376,7 +4442,7 @@
\thu@pdfbookmark{-1}{\thu@title}%
\thu@titlepage
\ifthu@include@spine@true
- \thu@spine
+ \spine
\fi
\ifthu@degree@graduate
\ifthu@thesis@type@thesis
@@ -4392,44 +4458,27 @@
% \begin{macro}{\thu@titlepage}
% 中文封面(题名页)
%
-% 研究生的中文封面分“学术型”和“专业型”两种 layout,但是“工程硕士”跟“学术型” 的
-% layout 一样,所以按照 \cs{thu@discipline}(工程领域)是否为空来区分“工程硕士”。
% \begin{macrocode}
\newcommand\thu@titlepage{%
\thusetup{language = chinese}%
\ifthu@degree@graduate
+ % 研究生
\ifthu@thesis@type@thesis
- \ifthu@degree@type@academic
- \ifthu@degree@doctor
- \thu@titlepage@doctor@academic
- \else
- \thu@titlepage@master@academic
- \fi
- \else
- \ifthu@degree@doctor
- \thu@titlepage@doctor@professional
- \else
- \ifx\thu@professional@field\@empty
- \ifx\thu@engineering@field\@empty
- \thu@titlepage@master@professional@without@field
- \else
- \thu@titlepage@master@professional@with@field
- \fi
- \else
- \thu@titlepage@master@professional@with@field
- \fi
- \fi
- \fi
+ % 学位论文
+ \thu@titlepage@thesis
\else
\ifthu@thesis@type@proposal
+ % 选题报告
\thu@titlepage@proposal
\fi
\fi
\else
\ifthu@degree@bachelor
+ % 本科生
\thu@titlepage@bachelor
\else
\ifthu@degree@postdoc
+ % 博后
\thu@cover@postdoc
\cleardoublepage
\thu@titlepage@postdoc
@@ -4447,7 +4496,7 @@
% 然而作为事实标准的 Word 模板的页边距是上下 6.0 厘米,左右 4.0 厘米。
% 这里缩小上边距以方便排版保密信息。
% \begin{macrocode}
-\newcommand\thu@titlepage@doctor@academic{%
+\newcommand\thu@titlepage@thesis{%
\newgeometry{
top = 2cm,
bottom = 6cm,
@@ -4475,218 +4524,21 @@
\vskip -9.2pt%
\fi
\vskip 24.1pt%
- \thu@titlepage@degree\par
- \vfill
- \parbox[t][7.25cm][t]{\textwidth}{%
- \fangsong\fontsize{16bp}{31.2bp}\selectfont
- \thu@titlepage@info
- }\par
- \parbox[t][1.03cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
- \endgroup
- \clearpage
- \restoregeometry
-}
-% \end{macrocode}
-%
-% 专业型学位论文中文封面
-% \begin{macrocode}
-\newcommand\thu@titlepage@doctor@professional{%
- \newgeometry{
- top = 2cm,
- bottom = 6cm,
- hmargin = 3.5cm,
- }%
- \thispagestyle{empty}%
- \null\vskip 0.45cm%
- \begingroup
- \centering
- \parbox[t][1.52cm][t]{\textwidth}{%
- \hskip -0.69cm%
- \thu@titlepage@secret
- }\par
- \vskip 1.5cm%
- \begingroup
- % 1.21 倍行距,无网格
- \sffamily\fontsize{26bp}{40.9bp}\selectfont
- \thu@title\par
- \endgroup
- \ifthu@main@language@english
- \vskip 5.4pt%
- \begingroup
- \sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
- \thu@title@en\par
- \endgroup
- \vskip -9.2pt%
- \fi
- \vskip 25.5pt%
- \thu@titlepage@degree
- \vfill
- \parbox[b][5.24cm][b]{\textwidth}{%
- \fangsong\fontsize{16bp}{1cm}\selectfont
- \thu@titlepage@info
- }\par
- \vskip 2.22cm%
- \parbox[t][1.0cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
- \endgroup
- \clearpage
- \restoregeometry
-}
-% \end{macrocode}
-%
-% 学术型硕士
-% \begin{macrocode}
-\newcommand\thu@titlepage@master@academic{%
- \newgeometry{
- top = 2cm,
- bottom = 6cm,
- hmargin = 3.5cm,
- }%
- \thispagestyle{empty}%
- \null\vskip 10bp%
- \begingroup
- \centering
- \parbox[t][55bp][t]{\textwidth}{%
- \hskip -23bp%
- \thu@titlepage@secret
- }\par
- \vskip 34pt%
- \begingroup
- % 1.21 倍行距
- \sffamily\fontsize{26bp}{40.898bp}\selectfont
- \thu@title\par
- \endgroup
- \ifthu@main@language@english
- \vskip 5.4pt%
- \begingroup
- \sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
- \thu@title@en\par
- \endgroup
- \vskip -9.2pt%
- \fi
- \vskip 18pt%
- \thu@titlepage@degree\par
- \vfill
- \parbox[t][7.05cm][t]{\textwidth}{%
- % 表格行高 1cm = 28.35bp
- \fangsong\fontsize{16bp}{28.35bp}\selectfont
- \thu@titlepage@info
- }\par
- \parbox[t][37bp][t]{\textwidth}{\centering\thu@titlepage@date}\par
- \endgroup
- \clearpage
- \restoregeometry
-}
-% \end{macrocode}
-%
-% 专业型硕士
-% \begin{macrocode}
-\newcommand\thu@titlepage@master@professional@without@field{%
- \newgeometry{
- top = 2cm,
- bottom = 6cm,
- hmargin = 3.5cm,
- }%
- \thispagestyle{empty}%
- \null\vskip 15bp%
- \begingroup
- \centering
- \parbox[t][41bp][t]{\textwidth}{%
- \hskip -23bp%
- \thu@titlepage@secret
- }\par
- \vskip 1.5cm%
- \begingroup
- % 1.21 倍行距,无网格
- \sffamily\fontsize{26bp}{40.9bp}\selectfont
- \thu@title\par
- \endgroup
- \ifthu@main@language@english
- \vskip 5.4pt%
- \begingroup
- \sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
- \thu@title@en\par
- \endgroup
- \vskip -9.2pt%
- \fi
- \vskip 25.5pt%
- \thu@titlepage@degree
+ \thu@title@page@degree@category\par
\vfill
- \parbox[b][5.24cm][b]{\textwidth}{%
- \fangsong\fontsize{16bp}{1cm}\selectfont
- \thu@titlepage@info
- }\par
- \vskip 2.22cm%
- \parbox[t][35.5bp][t]{\textwidth}{\centering\thu@titlepage@date}\par
- \endgroup
- \clearpage
- \restoregeometry
-}
-% \end{macrocode}
-%
-% 专业型硕士(有专业领域)
-% \begin{macrocode}
-\newcommand\thu@titlepage@master@professional@with@field{%
- \newgeometry{
- top = 2cm,
- bottom = 6cm,
- hmargin = 3.5cm,
- }%
- \thispagestyle{empty}%
- \null\vskip 10bp%
- \begingroup
- \centering
- \parbox[t][46bp][t]{\textwidth}{%
- \hskip -23bp%
- \thu@titlepage@secret
- }\par
- \vskip 1.5cm%
- \begingroup
- % 1.21 倍行距,无网格
- \sffamily\fontsize{26bp}{40.9bp}\selectfont
- \thu@title\par
- \endgroup
- \ifthu@main@language@english
- \vskip 5.4pt%
- \begingroup
- \sffamily\bfseries\fontsize{20bp}{31.2bp}\selectfont
- \thu@title@en\par
- \endgroup
- \vskip -9.2pt%
- \fi
- \vskip 25.5pt%
- \thu@titlepage@degree
- \vskip 119bp%
- \parbox[b][5.24cm][b]{\textwidth}{%
- \fangsong\fontsize{16bp}{31bp}\selectfont
- \renewcommand\thu@info@item@format[2]{%
- \begingroup
- \renewcommand\CJKglue{\hspace{##1}}%
- ##2%
- \endgroup
- }%
- \renewcommand\thu@name@title@format[2]{%
- % 字距 9bp,共 16bp * 3 + 9bp * 2 = 66bp
- \thu@stretch{66bp}{##1}%
- \hspace{22bp}%
- % 字距 6bp
- \begingroup
- \renewcommand\CJKglue{\hspace{16bp}}%
- ##2%
- \endgroup
- }%
- \thu@titlepage@info@tabular{65bp}{86.5bp}{81bp}{30.5bp}{%
- \thu@info@item{培养单位}{\thu@info@item@format{1bp}}{\thu@department}%
- \thu@info@item{专业领域}{\thu@info@item@format{2bp}}{\thu@professional@field}%
- \thu@info@item{工程领域}{\thu@info@item@format{2bp}}{\thu@engineering@field}%
- \thu@info@item{申请人}{\thu@name@title}{\thu@author}%
- \thu@info@item{学号}{}{\thu@student@id}%
- \thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
- \thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
- \thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
+ \ifthu@degree@type@academic
+ \parbox[t][7.25cm][t]{\textwidth}{%
+ \fangsong\fontsize{16bp}{31.2bp}\selectfont
+ \thu@titlepage@info
}\par
- }\par
- \vfill
- \parbox[t][33.5bp][t]{\textwidth}{\centering\thu@titlepage@date}\par
+ \else
+ \parbox[t][5.25cm][b]{\textwidth}{%
+ \fangsong\fontsize{16bp}{31.2bp}\selectfont
+ \thu@titlepage@info
+ }\par
+ \vskip 62pt%
+ \fi
+ \parbox[t][1.03cm][t]{\textwidth}{\centering\thu@titlepage@date}\par
\endgroup
\clearpage
\restoregeometry
@@ -4713,7 +4565,7 @@
\thu@title\par
}%
\vskip 0.85cm%
- \thu@titlepage@degree
+ \thu@title@page@degree@category
\vfill
\parbox[t][8.5cm][t]{\textwidth}{%
\centering
@@ -4742,6 +4594,7 @@
\thu@option@hook{thesis-type}{\thu@set@student@id}
% \end{macrocode}
%
+% 涉密信息
% \begin{macrocode}
\newcommand\thu@titlepage@secret{%
\sffamily\sanhao
@@ -4753,12 +4606,12 @@
}
% \end{macrocode}
%
-% 申请学位的学科门类: 小二号宋体字,字距延伸 0.5bp,
+% 申请学位的学科门类或专业学位类别: 三号(16bp)宋体字,字距延伸 0.5bp,
% 所以 \cs{CJKglue} 应该设为 1 bp。
% \begin{macrocode}
-\newcommand\thu@titlepage@degree{%
+\newcommand\thu@title@page@degree@category{%
\begingroup
- \xiaoer
+ \fontsize{16bp}{22bp}\selectfont
\ifLuaTeX
\fontspec{\CJK@family}%
\ltjsetparameter{kanjiskip = {1bp}}%
@@ -4790,38 +4643,32 @@
}
% \end{macrocode}
%
-% 作者及导师信息部分使用三号仿宋字
+% 作者及指导教师信息
% \begin{macrocode}
\newcommand\thu@titlepage@info{%
- \ifthu@degree@doctor
- \ifthu@degree@type@academic
- \thu@titlepage@info@doctor@academic
- \else
- \thu@titlepage@info@doctor@professional
- \fi
- \else
+ \thu@titlepage@info@tabular{2.3cm}{2.85cm}{2.75cm}{0.77cm}{%
+ \thu@info@item{培养单位}{}{\thu@department}%
\ifthu@degree@type@academic
- \thu@titlepage@info@master@academic
+ \thu@info@item{学科}{}{\thu@discipline}%
+ \thu@info@item{研究生}{\thu@name@title}{\thu@author}%
\else
- \ifx\thu@professional@field\@empty
- \ifx\thu@engineering@field\@empty
- \thu@titlepage@info@master@professional@without@field
- \else
- \thu@titlepage@info@master@professional@with@field
- \fi
- \else
- \thu@titlepage@info@master@professional@with@field
- \fi
+ \thu@info@item{专业领域}{}{\thu@professional@field}%
+ \thu@info@item{工程领域}{}{\thu@engineering@field}%
+ \thu@info@item{申请人}{\thu@name@title}{\thu@author}%
\fi
- \fi
+ \thu@info@item{学号}{}{\thu@student@id}%
+ \thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
+ \thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
+ \thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
+ }\par
}
% \end{macrocode}
%
% 标题页作者信息表
% \texttt{\#1}: 表格左侧至版心的距离;\\
-% \texttt{\#2}: “培养方案”的边框宽度;\\
-% \texttt{\#3}: “培养方案”的文字宽度;\\
-% \texttt{\#4}: 冒号的边框;\\
+% \texttt{\#2}: “培养单位”的边框宽度;\\
+% \texttt{\#3}: “培养单位”的文字宽度;\\
+% \texttt{\#4}: 冒号的边框;\\
% \texttt{\#5}: 表格内容。
% \begin{macrocode}
\newcommand\thu@titlepage@info@tabular[5]{%
@@ -4838,85 +4685,6 @@
#5%
\end{tabular}%
}
-\newcommand\thu@info@item@format[1]{#1}
-\newcommand\thu@titlepage@info@doctor@academic{%
- \thu@titlepage@info@tabular{2.3cm}{2.85cm}{2.75cm}{0.77cm}{%
- \thu@info@item{培养单位}{}{\thu@department}%
- \thu@info@item{学科}{}{\thu@discipline}%
- \thu@info@item{研究生}{\thu@name@title}{\thu@author}%
- \thu@info@item{学号}{}{\thu@student@id}%
- \thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
- \thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
- \thu@info@item{联合导师}{\thu@name@title}{\thu@co@supervisor}%
- }\par
-}
-\newcommand\thu@titlepage@info@doctor@professional{%
- \thu@titlepage@info@tabular{2.3cm}{3.1cm}{5em}{1.42cm}{%
- \thu@info@item{培养单位}{}{{\thu@department}}%
- \thu@info@item{申请人}{\thu@name@title}{\thu@author}%
- \thu@info@item{学号}{}{\thu@student@id}%
- \thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
- \thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
- \thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
- }\par
-}
-\newcommand\thu@titlepage@info@master@academic{%
- \renewcommand\thu@info@item@format[2]{%
- \begingroup
- \renewcommand\CJKglue{\hspace{##1}}%
- ##2%
- \endgroup
- }
- \renewcommand\thu@name@title@format[2]{%
- % 字距 9.8bp,共 16bp * 3 + 9.8bp * 2 = 67.5bp
- \thu@stretch{67.6bp}{##1}%
- \hspace{9.8bp}%
- % 字距 6bp
- \begingroup
- \renewcommand\CJKglue{\hspace{6bp}}%
- ##2%
- \endgroup
- }%
- \thu@titlepage@info@tabular{58bp}{3.59cm}{5.5em}{0.82cm}{%
- \thu@info@item{培养单位}{\thu@info@item@format{1bp}}{\thu@department}%
- \thu@info@item{学科}{\thu@info@item@format{2bp}}{\thu@discipline}%
- \thu@info@item{研究生}{\thu@name@title}{\thu@author}%
- \thu@info@item{学号}{}{\thu@student@id}%
- \thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
- \thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
- \thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
- }\par
-}
-% 无专业领域
-\newcommand\thu@titlepage@info@master@professional@without@field{%
- \renewcommand\thu@info@item@format[2]{%
- \begingroup
- \renewcommand\CJKglue{\hspace{##1}}%
- ##2%
- \endgroup
- }
- \renewcommand\thu@name@title@format[2]{%
- % 字距 9.8bp,共 16bp * 3 + 9.8bp * 2 = 67.5bp
- \thu@stretch{67.6bp}{##1}%
- \hspace{9.8bp}%
- % 字距 6bp
- \begingroup
- \renewcommand\CJKglue{\hspace{6bp}}%
- ##2%
- \endgroup
- }%
- \thu@titlepage@info@tabular{58bp}{3.28cm}{5em}{1.52cm}{%
- \thu@info@item{培养单位}{\thu@info@item@format{1bp}}{\thu@department}%
- \thu@info@item{申请人}{\thu@name@title}{\thu@author}%
- \thu@info@item{学号}{}{\thu@student@id}%
- \thu@info@item{指导教师}{\thu@name@title}{\thu@supervisor}%
- \thu@info@item{副指导教师}{\thu@name@title}{\thu@associate@supervisor}%
- \thu@info@item{联合指导教师}{\thu@name@title}{\thu@co@supervisor}%
- }\par
-}
-% 有专业领域
-\newcommand\thu@titlepage@info@master@professional@with@field{%
-}
% \end{macrocode}
%
% 论文成文打印的日期,用三号宋体汉字,字距延伸 0.5bp,
@@ -4974,6 +4742,7 @@
{\sffamily\bfseries\thu@author@en\par}%
\vskip 0.18cm%
\parbox[t][3.0cm][t]{\textwidth}{%
+ \centering
\xiaosan[2.1]%
\thu@titlepage@en@supervisor
}\par
@@ -5002,6 +4771,7 @@
\vskip 1.1cm%
\fi
\parbox[t][3.37cm][t]{\textwidth}{%
+ \centering
\xiaosan[1.82]%
\thu@titlepage@en@supervisor
}\par
@@ -5035,7 +4805,6 @@
{\sffamily\bfseries\thu@degree@category@en\par}%
}
\newcommand\thu@titlepage@en@supervisor{%
- \hspace{1.27cm}%
\begin{tabular}{r@{\makebox[20.5bp][l]{\hspace{2bp}:}}l}%
\renewcommand\arraystretch{1}%
\thu@thesis@name@en{} Supervisor & \thu@supervisor@en \\
@@ -5088,7 +4857,11 @@
\centering
\includegraphics{tsinghua-name-bachelor.pdf}%
\vskip 0.94cm%
- {\sffamily\bfseries\xiaochu\ziju{0.5}综合论文训练\par}%
+ \ifthu@thesis@type@proposal
+ {\sffamily\bfseries\xiaochu\ziju{0.5}综合论文训练\\开题报告\par}%
+ \else
+ {\sffamily\bfseries\xiaochu\ziju{0.5}综合论文训练\par}%
+ \fi
\endgroup
\vskip 1.8cm%
\begingroup
@@ -5858,6 +5631,7 @@
% \begin{macrocode}
\@namedef{bibstyle@thuthesis-numeric}{\citestyle{super}}
\@namedef{bibstyle@thuthesis-author-year}{\citestyle{author-year}}
+ \@namedef{bibstyle@cell}{\citestyle{author-year}}
\@namedef{bibstyle@thuthesis-bachelor}{\citestyle{super}}
% \end{macrocode}
%
@@ -6332,60 +6106,142 @@
\newcommand\thu@end@appendix@ref@section{}
% \end{macrocode}
%
-% 如果正文和附录引用了同一文献,\pkg{bibunits} 会给出无意义的警告,这里消除警告。
% \begin{macrocode}
+% \end{macrocode}
+%
+% \pkg{bibunits} 在载入时会保存 \cs{bibliography} 和 \cs{bibliographystyle},
+% 所以在载入宏包前修改定义。
+% \begin{macrocode}
+\AtBeginOfPackageFile*{bibunits}{
+ \def\bibliography#1{%
+ \if@filesw
+ \immediate\write\@auxout{\string\bibdata{\zap@space#1 \@empty}}%
+% \end{macrocode}
+%
+% 正文的 \cs{bibliography} 同时设置附录参考文献的默认 \file{.bib} 数据库。
+% \begin{macrocode}
+ \immediate\write\@auxout{\string\gdef\string\bu@bibdata{#1}}%
+ \fi
+ \@input@{\jobname.bbl}%
+ \gdef\bu@bibdata{#1}%
+ }
+ \def\bibliographystyle#1{%
+ \ifx\@begindocumenthook\@undefined\else
+ \expandafter\AtBeginDocument
+ \fi
+ {\if@filesw
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
+% \end{macrocode}
+%
+% 正文的 \cs{bibliographystyle} 同时设置附录参考文献的默认 \file{.bst} 样式。
+% \begin{macrocode}
+ \immediate\write\@auxout{\string\gdef\string\bu@bibstyle{#1}}%
+ \fi}%
+ \gdef\bu@bibstyle{#1}%
+ }
+}
\AtEndOfPackageFile*{bibunits}{
- \ifthu@degree@graduate
- \newcommand\thu@appendix@bib@num@format[1]{[\@Alph\c@chapter.#1]\hfill}
- \g@addto@macro\appendix{%
- \renewcommand\@bibunitname{\jobname-appendix-\@alph\c@chapter}%
- \bibliographyunit[\chapter]%
+ \def\@startbibunit{%
+ \global\let\@startbibunitorrelax\relax
+ \global\let\@finishbibunit\@finishstartedbibunit
+ \global\advance\@bibunitauxcnt 1
+ \if@filesw
+ {\endlinechar-1
+% \end{macrocode}
+%
+% 使附录 aux 文件的 \cs{gdef}\cs{@localbibstyle} 能够生效。
+% \begin{macrocode}
+ \makeatletter
+ \@input{\@bibunitname.aux}}%
+ \immediate\openout\@bibunitaux\@bibunitname.aux
+ \immediate\write\@bibunitaux{\string\bibstyle{\@localbibstyle}}%
+ \fi
+ }
+ \def\bu@bibliography#1{%
+ \putbib[#1]%
+ }
+ \def\bu@bibliographystyle#1{%
+ \if@filesw
+ \immediate\write\@bibunitaux{\string\gdef\string\@localbibstyle{#1}}%
+ \fi
+ \gdef\@localbibstyle{#1}%
+ }
+ \providecommand\printbibliography{\putbib\relax}%
+ \g@addto@macro\appendix{%
+ \renewcommand\@bibunitname{\jobname-appendix-\@alph\c@chapter}%
+ \bibliographyunit[\chapter]%
+ \renewcommand\bibsection{%
+ \ctexset{section/numbering = false}%
+ \section{\bibname}%
+ \ctexset{section/numbering = true}%
+ }%
+% \end{macrocode}
+%
+% 研究生附录的引用编号加前缀,如附录 A 的引用 [1] 为 [A.1]。
+% \begin{macrocode}
+ \ifthu@degree@graduate
\renewcommand\citenumfont{\@Alph\c@chapter.}%
- \renewcommand\bibsection{%
- \ctexset{section/numbering = false}%
- \section{\bibname}%
- \ctexset{section/numbering = true}%
- }%
\renewcommand\@extra@binfo{@-\@alph\c@chapter}%
\renewcommand\@extra@b@citeb{@-\@alph\c@chapter}%
- \let\bibnumfmt\thu@appendix@bib@num@format
- \let\bibliographystyle\defaultbibliographystyle
- \let\bibliography\thu@appendix@bibliography
- }
- \renewcommand\thu@end@appendix@ref@section{%
- \bibliographyunit\relax
- }
- \providecommand\printbibliography{\putbib\relax}%
- \AtEndDocument{\thu@end@appendix@ref@section}
+ \renewcommand\bibnumfmt[1]{[\@Alph\c@chapter.#1]\hfill}%
+ \fi
+ }
+ \renewcommand\thu@end@appendix@ref@section{%
+ \bibliographyunit\relax
+ }
+ \AtEndDocument{\thu@end@appendix@ref@section}
+ \renewcommand\thu@set@survey@bibheading{%
+ \renewcommand\bibsection{%
+ \par
+ \vskip 20bp%
+ \thu@pdfbookmark{1}{\bibname}%
+ \begingroup
+ \centering
+ \xiaosi[1.667]\bibname\par
+ \endgroup
+ \vskip 6bp%
+ }%
+ }%
% \end{macrocode}
%
% 如果正文和附录引用了同一文献,\pkg{bibunits} 会给出无意义的警告,这里消除警告。
% \begin{macrocode}
- % \let\@xtestdef\@gobbletwo % This doesn't work
- \def\bibunits@rerun@warning{\relax}
- \fi
+ % \let\@xtestdef\@gobbletwo % This doesn't work
+ \def\bibunits@rerun@warning{\relax}
}
\PassOptionsToPackage{defernumbers = true}{biblatex}
\AtEndOfPackageFile*{biblatex}{
- \ifthu@degree@graduate
- \DeclareRefcontext{appendix}{}
- \g@addto@macro\appendix{%
- \pretocmd\chapter{%
- \newrefsection
+ \DeclareRefcontext{appendix}{}
+ \g@addto@macro\appendix{%
+ \pretocmd\chapter{%
+ \newrefsection
+ \ifthu@degree@bachelor\else
\@tempcnta=\c@chapter
\advance\@tempcnta\@ne
\newrefcontext[labelprefix = {\@Alph\@tempcnta.}]{appendix}%
- }{}{\thu@patch@error{\chapter}}%
- \defbibheading{bibliography}[\bibname]{%
- \ctexset{section/numbering = false}%
- \section{#1}%
- \ctexset{section/numbering = true}%
- }%
- }
- % \renewcommand\thu@end@appendix@ref@section{%
- % \endrefsection
- % }
- \fi
+ \fi
+ }{}{\thu@patch@error{\chapter}}%
+ \defbibheading{bibliography}[\bibname]{%
+ \ctexset{section/numbering = false}%
+ \section{#1}%
+ \ctexset{section/numbering = true}%
+ }%
+ }
+ \renewcommand\thu@set@survey@bibheading{%
+ \defbibheading{bibliography}[\bibname]{%
+ \par
+ \vskip 20bp%
+ \thu@pdfbookmark{1}{\bibname}%
+ \begingroup
+ \centering
+ \xiaosi[1.667]##1\par
+ \endgroup
+ \vskip 6bp%
+ }%
+ }%
+ \def\bibliographystyle#1{%
+ \thu@warning{'bibliographystyle' invalid for 'biblatex'.}%
+ }
}
% \end{macrocode}
%
@@ -6424,18 +6280,14 @@
\vskip 20bp%
}%
\let\appendix\thu@appendix@appendix
+ \thu@set@survey@bibheading
\renewcommand\bibname{参考文献}%
- \let\bibsection\thu@appendix@bibsection
- \renewcommand\@bibunitname{\jobname-survey}%
- \let\bibliographystyle\defaultbibliographystyle
- \let\bibliography\thu@appendix@bibliography
- \begin{bibunit}%
\startcontents[survey]%
}{%
\stopcontents[survey]%
- \end{bibunit}%
\thu@reset@main@language % restore language
}
+\newcommand\thu@set@appendix@bib@heading{}
% \end{macrocode}
% \end{environment}
%
@@ -6475,14 +6327,9 @@
\section{\bibname}%
\endgroup
}%
- \renewcommand\@bibunitname{\jobname-translation}%
- \let\bibliographystyle\defaultbibliographystyle
- \let\bibliography\thu@appendix@bibliography
- \begin{bibunit}%
\startcontents[translation]%
}{%
\stopcontents[translation]%
- \end{bibunit}%
\thu@reset@main@language % restore language
}
% \end{macrocode}
@@ -6491,13 +6338,26 @@
% \begin{environment}{translation}
% 书面翻译对应的原文索引,区别于译文的参考文献。
% \begin{macrocode}
-\newenvironment{translation-index}{%
- \begin{bibunit}%
- \renewcommand\@bibunitname{\jobname-index}%
- \renewcommand\bibname{书面翻译对应的原文索引}%
- \let\bibsection\thu@appendix@bibsection
-}{%
- \end{bibunit}%
+\newenvironment{translation-index}{}{}
+\AtEndOfPackageFile*{bibunits}{
+ \renewenvironment{translation-index}{%
+ \begin{bibunit}%
+ \renewcommand\@bibunitname{\jobname-index}%
+ \renewcommand\bibname{书面翻译对应的原文索引}%
+ \thu@set@survey@bibheading
+ }{%
+ \end{bibunit}%
+ }
+}
+\AtEndOfPackageFile*{biblatex}{
+ \renewenvironment{translation-index}{%
+ \endrefsection
+ \begin{refsection}%
+ \renewcommand\bibname{书面翻译对应的原文索引}%
+ \thu@set@survey@bibheading
+ }{%
+ \end{refsection}%
+ }
}
% \end{macrocode}
% \end{environment}
@@ -6543,17 +6403,7 @@
%
% 调研阅读报告的参考文献(或书面翻译对应的外文资料的原文索引)标题用宋体小四号字,段前 20pt,段后 6pt,行距 20pt。
% \begin{macrocode}
-\newcommand\thu@appendix@bibsection{%
- \par
- \vskip 20bp%
- \thu@pdfbookmark{1}{\bibname}%
- \begingroup
- \centering
- \xiaosi[1.667]\bibname\par
- \endgroup
- \vskip 6bp%
-}%
-\newcommand\thu@appendix@bibliography[1]{\putbib[#1]}
+\newcommand\thu@set@survey@bibheading{}
% \end{macrocode}
%
%
@@ -6590,7 +6440,7 @@
\ifthu@degree@graduate
\fontsize{12bp}{16bp}\selectfont
\fi
- },
+ },
align = left,
label = [\arabic*],
resume = achievements,
@@ -6734,7 +6584,7 @@
%
% \subsubsection{\pkg{hyperref} 宏包}
%
-% 使用 \cs{PassOptionsToPackage} 的方式进行配置,允许用户在 \cs{usepackage}
+% 使用 \cs{PassOptionsToPackage} 的方式进行配置,允许用户在 \cs{usepackage}
% 覆盖配置(\href{https://github.com/tuna/thuthesis/issues/863}{tuna/thuthesis\#863})。
%
% \begin{macrocode}
@@ -6762,7 +6612,7 @@
\renewcommand\thu@phantomsection{%
\phantomsection
}
- \pdfstringdefDisableCommands{
+ \pdfstringdefDisableCommands{%
\let\\\relax
\let\quad\relax
\let\qquad\relax
@@ -7081,32 +6931,6 @@
\restoregeometry
}
% \end{macrocode}
-%
-% Fandol 仿宋无法同时用于横排和竖排
-%(\href{https://github.com/tuna/thuthesis/issues/551}{\#551}),
-% 所以只能独立编译 \file{spine.pdf},然后插入封面后。
-% \begin{macrocode}
-\newcommand\thu@input@spine{%
- \IfFileExists{spine.pdf}{}{%
- \immediate\write18{xelatex spine.tex}%
- \IfFileExists{spine.pdf}{}{%
- \thu@error{Cannot find file "spine.pdf". Compile "spine.tex" first, or enable shell escape}%
- }%
- }%
- \includepdf[pages=1]{spine.pdf}%
-}
-\newcommand\thu@spine{%
- \ifthu@cjk@font@fandol
- \thu@input@spine
- \else
- \ifthu@cjk@font@noto
- \thu@input@spine
- \else
- \spine
- \fi
- \fi
-}
-% \end{macrocode}
% \end{macro}
%
%
@@ -7151,12 +6975,7 @@
\RequirePackage{enumitem}
\RequirePackage{etoolbox}
\RequirePackage{metalogo}
-
-% Pretending the `amssymb` has been loaded.
-% This should be removed after `markdown` v2.13.0.
-\expandafter\def\csname ver@amssymb.sty\endcsname{0000/00/00}
\RequirePackage[tightLists=false]{markdown}
-\expandafter\let\csname ver@amssymb.sty\endcsname\relax
\markdownSetup{
renderers = {
diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf
index b1fe7510f5..9f55312fdd 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/README.md b/macros/latex/required/babel/base/README.md
index 1469c5b7f1..aee528f60c 100644
--- a/macros/latex/required/babel/base/README.md
+++ b/macros/latex/required/babel/base/README.md
@@ -1,18 +1,18 @@
-## Babel 24.2
+## Babel 24.3
-2024-02-07
+2024-03-29
-This package manages culturally-determined typographical (and other)
-rules, and hyphenation patterns for a wide range of languages. Many
-language styles work with pdflatex, as well as with xelatex and
-lualatex out of the box. A few even work with plain formats. Included
-is a set of ini files for about 300 languages.
+`babel` is the multilingual framework for localizing documents in
+LaTeX, LuaLaTeX, XeLaTeX. It manages culturally-determined
+typographical (and other) rules for about 170 to 300 languages,
+depending on the engine, with several levels of coverage. A few
+languages even work with Plain formats.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 24.2 are described in:
+Changes in version 24.3 are described in:
-https://latex3.github.io/babel/news/whats-new-in-babel-24.2.html
+https://latex3.github.io/babel/news/whats-new-in-babel-24.3.html
Apart from the manual, you can find information on some aspects of babel at:
@@ -48,9 +48,12 @@ respective authors.
### Summary of latest changes
```
-24.2 2024-02-07
- * Cleaned up some language names.
- * Mosty internal changes and minor fixes.
+24.3 2024-03-29
+ * A silly mistake in the French locales: the interchar
+ 'punctuation.space' was named 'puntuation.space' (xetex)
+ * New setting 'interchar.disable' in \babeladjust (xetex)
+ * Experimental macro '\localebox' (luatex)
+ * Alphabetic counter for Bodo (lua/xe)
```
### Previous changes
diff --git a/macros/latex/required/babel/base/babel-code.pdf b/macros/latex/required/babel/base/babel-code.pdf
index fa0a798307..de968014b2 100644
--- a/macros/latex/required/babel/base/babel-code.pdf
+++ b/macros/latex/required/babel/base/babel-code.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx
index ea14d382bb..11b73fef9b 100644
--- a/macros/latex/required/babel/base/babel.dtx
+++ b/macros/latex/required/babel/base/babel.dtx
@@ -32,7 +32,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2024/02/07 v24.2 The Babel package]
+\ProvidesFile{babel.dtx}[2024/03/29 v24.3 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -748,7 +748,9 @@ for the language chosen:
\selectlanguage{german}
\end{verbatim}
-This command can be used as environment, too.
+This command can be used as environment, too, in case there are
+relatively short texts and you do not want to reset the language with a
+hardcode value.
\begin{note}
For ``historical reasons'', a macro name is converted to a language
@@ -785,15 +787,18 @@ This command can be used as environment, too.
rarely happens, but if it were the case, you must use
|otherlanguage| instead.
\item In addition, this macro inserts a |\write| in vertical mode,
- which may break the vertical spacing in some cases (for example,
- between lists). \New{3.64} The behavior can be adjusted with
- |\babeladjust{select.write=|\m{mode}|}|, where \m{mode} is |shift|
- (which shifts the skips down and adds a |\penalty|); |keep| (the
- default -- with it the |\write| and the skips are kept in the order
- they are written), and |omit| (which may seem a too drastic solution,
- because nothing is written, but more often than not this command is
- applied to more or less shorts texts with no sectioning or similar
- commands and therefore no language synchronization is necessary).
+ which may break the vertical spacing in some cases (for example,
+ between lists or at the beginning of a table cell). \New{3.64} The
+ behavior can be adjusted with
+ |\babeladjust{select.write=|\m{mode}|}|, where \m{mode} is |shift|
+ (which shifts the skips down and adds a |\penalty|); |keep| (the
+ default -- with it the |\write| and the skips are kept in the order
+ they are written), and |omit| (which may seem a too drastic
+ solution, because nothing is written, but more often than not this
+ command is applied to more or less shorts texts with no sectioning
+ or similar commands, and therefore no language synchronization is
+ necessary). In a table cell, a |\leavevmode| just before the
+ selector may be enough.
\end{itemize}
\end{warning}
@@ -851,7 +856,17 @@ is roughly equivalent to:
If you want a change which is really local, you must enclose this
environment with an additional grouping, like braces |{}|.
-Spaces after the environment are ignored.
+Spaces after the environment are ignored.\footnote{Very likely, and
+because of the limitations of many old editors with bidi text, the idea
+was \cs{end}\texttt{\{otherlanguage\}} had to be a line by itself.} If this
+behavior is not desired, you may use the environment
+\texttt{selectlanguage}.
+
+\begin{warning}
+ Being similar to |\selectlanguage|, the warning above about the
+ internal |\write| also applies here. The current mode (vertical or
+ horizonal) is also not changed.
+\end{warning}
\Describe{\begin\menv{otherlanguage*}}%
{\oarg{option-list}\marg{language}\Eenv{otherlanguage*}}
@@ -889,9 +904,10 @@ group.
|\textcolor| and many others). The same applies to environments,
because |arabic| conflicts with |\arabic|. Furthermore, and because of
this overloading, detecting the language of a chunk of text by
- external tools can become unfeasible. Except if there is a reason for
+ external tools can become unfeasible (is |\textga| the locale for the
+ African language Gã or something else?). Except if there is a reason for
this ‘syntactical sugar’, the best option is to stick to the default
- selectors or to define your own alternatives.
+ selectors or even to define your own alternatives.
\end{warning}
\begin{example}
@@ -2258,19 +2274,11 @@ to select fonts in addition to the three basic families.
\babelfont[hindi]{rm}{Shobhika}
\end{verbatim}
This makes sure the OpenType script for Devanagari is |deva| and not
- |dev2|, in case it is not detected correctly. You may also pass some
- options to \textsf{fontspec}: with |silent|, the warnings about
- unavailable scripts or languages are not shown (they are only really
- useful when the document format is being set up).
-\end{note}
-
-\begin{note}
- Directionality is a property affecting margins, indentation, column
- order, etc., not just text. Therefore, it is under the direct control
- of the language, which applies both the script and the direction to
- the text. As a consequence, there is no need to set \texttt{Script}
- when declaring a font with |\babelfont| (nor \texttt{Language}). In
- fact, it is even discouraged.
+ |dev2|, in case it is not detected correctly.
+% You may also pass some
+% options to \textsf{fontspec}: with |silent|, the warnings about
+% unavailable scripts or languages are not shown (they are only really
+% useful when the document format is being set up).
\end{note}
\begin{note}
@@ -2285,6 +2293,15 @@ to select fonts in addition to the three basic families.
\end{note}
\begin{note}
+ Directionality is a property affecting margins, indentation, column
+ order, etc., not just text. Therefore, it is under the direct control
+ of the language, which applies both the script and the direction to
+ the text. As a consequence, there is no need to set \texttt{Script}
+ when declaring a font with |\babelfont| (nor \texttt{Language}). In
+ fact, it is even discouraged.
+\end{note}
+
+\begin{note}
The keys |Language| and |Script| just pass these values to the
\textit{font}, and do \textit{not} set the script for the
\textit{language} (and therefore the writing direction). In other
@@ -3679,6 +3696,11 @@ the ‘provided’ locale. Currently there is a set of rules for French
named |punctuation.space|, which applies proper spacing with characters
\textit{;:!?«»}.
+\begin{note}
+ You can use |transforms| and |interchar| at the same time. Only the
+ relevant key for the current engine is taken into account.
+\end{note}
+
\subsection{Selection based on BCP 47 tags}
\label{bcp47}
@@ -4461,15 +4483,17 @@ autoload.options\\
autoload.bcp47.prefix\\
autoload.bcp47.options\\
prehyphenation.disable\\
+interchar.disable\\
select.write\\
select.encoding\\
\end{multicols}
Most of them are documented elsewhere. With |select.encoding=off|, the
encoding is not set when loading a language on the fly with \pdftex{}
(only |off|). |prehyphenation.disable| is by default |nohyphenation|,
-which means prehyphenation transforms are not applied if the current
+which means \luatex{} prehyphenation transforms are not applied if the current
hyphenation rules are |nohyphenation|; with |off| they are never
-disabled.
+disabled. |interchar.disable| takes the same values, but for the
+\xetex{} interchar mechanism.
For example, you can set |\babeladjust{bidi.text=off}| if you are using
an alternative algorithm or with large sections not requiring it. Use
@@ -5427,8 +5451,8 @@ wouldn’t exist.
% \section{Tools}
%
% \begin{macrocode}
-%<<version=24.2>>
-%<<date=2024/02/07>>
+%<<version=24.3>>
+%<<date=2024/03/29>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6588,7 +6612,8 @@ wouldn’t exist.
\chardef\localeid\bbl@cl{id@}}
% \end{macrocode}
%
-% The unprotected part of |\selectlanguage|.
+% The unprotected part of |\selectlanguage|. In case it is used as
+% environment, declare |\endselectlaguage|, just for safety.
%
% \begin{macrocode}
\expandafter\def\csname selectlanguage \endcsname#1{%
@@ -6596,6 +6621,7 @@ wouldn’t exist.
\bbl@push@language
\aftergroup\bbl@pop@language
\bbl@set@language{#1}}
+\let\endselectlanguage\relax
% \end{macrocode}
%
% \end{macro}
@@ -6814,14 +6840,10 @@ wouldn’t exist.
% \end{macrocode}
%
% \begin{environment}{otherlanguage}
-% The \Lenv{otherlanguage} environment can be used as an
-% alternative to using the |\selectlanguage| declarative
-% command. When you are typesetting a document which mixes
-% left-to-right and right-to-left typesetting you have to use this
-% environment in order to let things work as you expect them to.
-%
-% The |\ignorespaces| command is necessary to hide the environment
-% when it is entered in horizontal mode.
+% The \Lenv{otherlanguage} environment can be used as an alternative to
+% using the |\selectlanguage| declarative command. The |\ignorespaces|
+% command is necessary to hide the environment when it is entered in
+% horizontal mode.
%
% \begin{macrocode}
\long\def\otherlanguage#1{%
@@ -6835,8 +6857,7 @@ wouldn’t exist.
% itself when it is called in horizontal mode.
%
% \begin{macrocode}
-\long\def\endotherlanguage{%
- \global\@ignoretrue\ignorespaces}
+\long\def\endotherlanguage{\@ignoretrue\ignorespaces}
% \end{macrocode}
%
% \end{environment}
@@ -11585,6 +11606,15 @@ wouldn’t exist.
\directlua{ Babel.ignore_pre_char = function(node)
return false
end }}
+\@namedef{bbl@ADJ@interchar.disable@nohyphenation}{%
+ \def\bbl@ignoreinterchar{%
+ \ifnum\language=\l@nohyphenation
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi}}
+\@namedef{bbl@ADJ@interchar.disable@off}{%
+ \let\bbl@ignoreinterchar\@firstofone}
\@namedef{bbl@ADJ@select.write@shift}{%
\let\bbl@restorelastskip\relax
\def\bbl@savelastskip{%
@@ -13598,7 +13628,7 @@ wouldn’t exist.
\let\\\bbl@tempfs@nxx\<__fontspec_warning:nxx>%
\let\<__fontspec_warning:nxx>\\\bbl@fs@warn@nxx
\\\renewfontfamily\\#4%
- [\bbl@cl{lsys},%
+ [\bbl@cl{lsys},% xetex removes unknown features :-(
\ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi
#2]}{#3}% ie \bbl@exp{..}{#3}
\bbl@exp{%
@@ -13878,16 +13908,17 @@ wouldn’t exist.
% ‘disabled’ with |\bbl@ic@<label>@<lang>|.
%
% \begin{macrocode}
+\def\bbl@ignoreinterchar{%
+ \ifnum\language=\l@nohyphenation
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi}
\newcommand\babelinterchar[5][]{%
\let\bbl@kv@label\@empty
\bbl@forkv{#1}{\bbl@csarg\edef{kv@##1}{##2}}%
\@namedef{\zap@space bbl@xeinter@\bbl@kv@label @#3@#4@#2 \@empty}%
- {\ifnum\language=\l@nohyphenation
- \expandafter\@gobble
- \else
- \expandafter\@firstofone
- \fi
- {#5}}%
+ {\bbl@ignoreinterchar{#5}}%
\bbl@csarg\let{ic@\bbl@kv@label @#2}\@firstofone
\bbl@exp{\\\bbl@for\\\bbl@tempa{\zap@space#3 \@empty}}{%
\bbl@exp{\\\bbl@for\\\bbl@tempb{\zap@space#4 \@empty}}{%
@@ -15540,9 +15571,14 @@ end
local d = node.new(node.id'dir')
d.dir = '+TRT'
node.insert_before(head, node.has_glyph(head), d)
+ local inmath = false
for item in node.traverse(head) do
- node.set_attribute(item,
- Babel.attr_dir, token.get_macro('bbl@thedir'))
+ if item.id == 11 then
+ inmath = (item.subtype == 0)
+ elseif not inmath then
+ node.set_attribute(item,
+ Babel.attr_dir, token.get_macro('bbl@thedir'))
+ end
end
end
end
@@ -15554,6 +15590,14 @@ end
\fi
% \end{macrocode}
%
+% Experimental. Tentative name.
+%
+% \begin{macrocode}
+\DeclareRobustCommand\localebox[1]{%
+ {\def\bbl@insidemath{0}%
+ \mbox{\foreignlanguage{\languagename}{#1}}}}
+% \end{macrocode}
+%
% \subsection{Layout}
%
% Unlike \xetex{}, \luatex{} requires only minimal changes for
diff --git a/macros/latex/required/babel/base/babel.ins b/macros/latex/required/babel/base/babel.ins
index 4b857314cb..d498b8ff4f 100644
--- a/macros/latex/required/babel/base/babel.ins
+++ b/macros/latex/required/babel/base/babel.ins
@@ -26,7 +26,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-\def\filedate{2024/02/07}
+\def\filedate{2024/03/29}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/macros/latex/required/babel/base/babel.pdf b/macros/latex/required/babel/base/babel.pdf
index 21d664d5bb..7c263bf3ea 100644
--- a/macros/latex/required/babel/base/babel.pdf
+++ b/macros/latex/required/babel/base/babel.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/bbcompat.dtx b/macros/latex/required/babel/base/bbcompat.dtx
index 8d45882360..9c1856b998 100644
--- a/macros/latex/required/babel/base/bbcompat.dtx
+++ b/macros/latex/required/babel/base/bbcompat.dtx
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2024/02/07 v24.2]
+\ProvidesFile{bbcompat.dtx}[2024/03/29 v24.3]
%</dtx>
%
%% File 'bbcompat.dtx'
diff --git a/macros/luatex/generic/luamplib/NEWS b/macros/luatex/generic/luamplib/NEWS
index 5126585177..2bc44d4d0e 100644
--- a/macros/luatex/generic/luamplib/NEWS
+++ b/macros/luatex/generic/luamplib/NEWS
@@ -1,5 +1,8 @@
History of the luamplib package
+2024/03/29 2.27.1
+ * fix a bug regarding local textext boxes
+
2024/03/23 2.27.0
* when `mplibcodeinherit' is enabled, `mplibglobaltextext' is implicitly
enabled as well.
diff --git a/macros/luatex/generic/luamplib/luamplib.dtx b/macros/luatex/generic/luamplib/luamplib.dtx
index a0fdf46c3f..7c8bdd97f5 100644
--- a/macros/luatex/generic/luamplib/luamplib.dtx
+++ b/macros/luatex/generic/luamplib/luamplib.dtx
@@ -85,7 +85,7 @@ See source file '\inFileName' for licencing and contact information.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luamplib.drv}%
- [2024/03/23 v2.27.0 Interface for using the mplib library]%
+ [2024/03/29 v2.27.1 Interface for using the mplib library]%
\documentclass{ltxdoc}
\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace}
\usepackage[x11names]{xcolor}
@@ -153,7 +153,7 @@ See source file '\inFileName' for licencing and contact information.
% \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\
% Maintainer: LuaLaTeX Maintainers ---
% Support: \email{lualatex-dev@tug.org}}
-% \date{2024/03/23 v2.27.0}
+% \date{2024/03/29 v2.27.1}
%
% \maketitle
%
@@ -455,21 +455,21 @@ See source file '\inFileName' for licencing and contact information.
luatexbase.provides_module {
name = "luamplib",
- version = "2.27.0",
- date = "2024/03/23",
+ version = "2.27.1",
+ date = "2024/03/29",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
local format, abs = string.format, math.abs
local err = function(...)
- return luatexbase.module_error ("luamplib", select("#",...) > 1 and format(...) or ...)
+ return luatexbase.module_error ("luamplib", format(...))
end
local warn = function(...)
- return luatexbase.module_warning("luamplib", select("#",...) > 1 and format(...) or ...)
+ return luatexbase.module_warning("luamplib", format(...))
end
local info = function(...)
- return luatexbase.module_info ("luamplib", select("#",...) > 1 and format(...) or ...)
+ return luatexbase.module_info ("luamplib", format(...))
end
% \end{macrocode}
@@ -1361,7 +1361,7 @@ luamplib.everyendmplib = { [""] = "" }
local function process_mplibcode (data, instance)
instancename = instance
- texboxes.localid = 4096
+ texboxes.locals, texboxes.localid = {}, 4096
% \end{macrocode}
%
@@ -2193,7 +2193,7 @@ luamplib.colorconverter = colorconverter
\else
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2024/03/23 v2.27.0 mplib package for LuaTeX]
+ [2024/03/29 v2.27.1 mplib package for LuaTeX]
\ifx\newluafunction\@undefined
\input ltluatex
\fi
diff --git a/macros/luatex/generic/luamplib/luamplib.pdf b/macros/luatex/generic/luamplib/luamplib.pdf
index 474f90c7ce..652add2db7 100644
--- a/macros/luatex/generic/luamplib/luamplib.pdf
+++ b/macros/luatex/generic/luamplib/luamplib.pdf
Binary files differ