summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-07-03 03:00:50 +0000
committerNorbert Preining <norbert@preining.info>2021-07-03 03:00:50 +0000
commit03fa062b03ce2bb5385f8f30888f94d441fa5cb4 (patch)
tree530eb375fdfffeaee8890906d3f42f70eab4753e /macros/latex
parentc4d400d058136a9045857b99d816595e7a655125 (diff)
CTAN sync 202107030300
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/bjfuthesis/README.md2
-rw-r--r--macros/latex/contrib/bjfuthesis/bjfuthesis.cls2
-rw-r--r--macros/latex/contrib/bjfuthesis/example/thesis.lyx2
-rw-r--r--macros/latex/contrib/bjfuthesis/example/thesis.pdfbin5192032 -> 5192031 bytes
-rw-r--r--macros/latex/contrib/bjfuthesis/example/thesis.tex2
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx111
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin554175 -> 556751 bytes
-rw-r--r--macros/latex/contrib/ifallfalse/README.md37
-rw-r--r--macros/latex/contrib/ifallfalse/ifallfalse.dtx143
-rw-r--r--macros/latex/contrib/ifallfalse/ifallfalse.ins45
-rw-r--r--macros/latex/contrib/ifallfalse/ifallfalse.pdfbin0 -> 163190 bytes
-rw-r--r--macros/latex/contrib/semantex/semantex.pdfbin384079 -> 384087 bytes
-rw-r--r--macros/latex/contrib/semantex/semantex.sty26
-rw-r--r--macros/latex/contrib/semantex/semantex.tex2
-rw-r--r--macros/latex/contrib/semantex/stripsemantex.sty2
15 files changed, 304 insertions, 70 deletions
diff --git a/macros/latex/contrib/bjfuthesis/README.md b/macros/latex/contrib/bjfuthesis/README.md
index 7f8ce30d44..657d5bd880 100644
--- a/macros/latex/contrib/bjfuthesis/README.md
+++ b/macros/latex/contrib/bjfuthesis/README.md
@@ -1,7 +1,7 @@
# 北京林业大学 (BJFU) 毕业论文模板 (LaTeX)
Copyright (C) 2021 Liu Changxin
-Version 1.2.0 (2021-06-21)
+Version 1.2.1 (2021-07-01)
## Abstract
This is a class file for producing dissertations and theses according to the Beijing Forestry University (BJFU) Guidelines for Undergraduate Theses and Dissertations.
diff --git a/macros/latex/contrib/bjfuthesis/bjfuthesis.cls b/macros/latex/contrib/bjfuthesis/bjfuthesis.cls
index 86b1ac4ca9..d9b081d376 100644
--- a/macros/latex/contrib/bjfuthesis/bjfuthesis.cls
+++ b/macros/latex/contrib/bjfuthesis/bjfuthesis.cls
@@ -23,7 +23,7 @@
\def\keywords@label@zh{关键词:}
\def\keywords@label@en{Keywords: }
\def\chartnote@label{注:}
-\ProvidesClass{bjfuthesis}[2021/06/21 A thesis class for Beijing Forestry University]
+\ProvidesClass{bjfuthesis}[2021/07/01 A thesis class for Beijing Forestry University]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexbook}}
\ProcessOptions*
\LoadClass[a4paper,oneside,fontset=none]{ctexbook}
diff --git a/macros/latex/contrib/bjfuthesis/example/thesis.lyx b/macros/latex/contrib/bjfuthesis/example/thesis.lyx
index f9e1c29eb7..9c1ba84d64 100644
--- a/macros/latex/contrib/bjfuthesis/example/thesis.lyx
+++ b/macros/latex/contrib/bjfuthesis/example/thesis.lyx
@@ -334,7 +334,7 @@ status collapsed
\end_inset
-Knowledge graph, recommender system, Ripple Network, user preferences, movie
+knowledge graph, recommender system, ripple network, user preferences, movie
store
\begin_inset ERT
status collapsed
diff --git a/macros/latex/contrib/bjfuthesis/example/thesis.pdf b/macros/latex/contrib/bjfuthesis/example/thesis.pdf
index 4cf4a4be59..ab18c71cd8 100644
--- a/macros/latex/contrib/bjfuthesis/example/thesis.pdf
+++ b/macros/latex/contrib/bjfuthesis/example/thesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/bjfuthesis/example/thesis.tex b/macros/latex/contrib/bjfuthesis/example/thesis.tex
index ca60a755e1..6cc0b28e89 100644
--- a/macros/latex/contrib/bjfuthesis/example/thesis.tex
+++ b/macros/latex/contrib/bjfuthesis/example/thesis.tex
@@ -19,7 +19,7 @@
This paper implements a recommendation algorithm, ``Ripple Network", based on knowledge graph. The core of the Ripple Network algorithm is to use the idea that the ripples produced by raindrops in real life continue to spread on the water surface to stimulate the spread of user preferences. For each user, Ripple Network uses its past preference as a seed set in the knowledge graph, and then continuously expands the user's preferences along the relationship path in the knowledge graph, and then discovers his hierarchical potential interests concerning a certain candidate item. Multiple ``ripples'' overlap to form the user preference distribution in the knowledge graph. Compared with previous model results of CKE, DKN, PER, etc., the experimental results of this algorithm show better performance. Using this algorithm, this paper designs and implements a recommendation system based on the movie knowledge graph. The system includes administrator users and general users. The administrator can add, edit and delete movies and users, and general users can browse, collect and purchase films. The system can provide users with an efficient movie recommendation function, which is convenient for users to choose movies that match their preferences.
\end{abstract}
-\keywordsen{Knowledge graph, recommender system, Ripple Network, user preferences, movie store}
+\keywordsen{knowledge graph, recommender system, ripple network, user preferences, movie store}
\tableofcontents
\mainmatter
\chapter{绪论}
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index a8f24a2dc6..8d93f7f566 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -28,7 +28,7 @@
%
% \title{\sffamily easybook 文档类手册}
% \author{瞿毅}
-% \date{2021/07/01\hskip\ccwd\relax v1.26o\thanks{\url{https://gitee.com/texl3/easybook}}}
+% \date{2021/07/02\hskip\ccwd\relax v1.26p\thanks{\url{https://gitee.com/texl3/easybook}}}
%
% \maketitle
% \begin{abstract}
@@ -158,7 +158,7 @@
% floatpage = <true|(false)>
% \end{syntax}
% 开启这个选项后浮动环境 \env{table} 和 \env{figure} 的比例参数会使用默认值,关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。
-% \changes{v1.26o}{2021/06/15}{增加浮动环境比例参数选项 \opt{floatpage}。}
+% \changes{v1.26p}{2021/06/15}{增加浮动环境比例参数选项 \opt{floatpage}。}
% \end{function}
%
% \subsection{article 模式}
@@ -240,7 +240,7 @@
% \tn{EBeforeAddBitoc*}\marg{加入目录英文标题前的代码}
% \end{syntax}
% \tn{appendix} 命令后的章节标题变为附录形式。英文目录中附录标题的格式用可选参数修改,英文附录目录前名字默认为 Appendix\tn{space},后名字默认为空,名字之间用一个半角逗号分开,也可以只有一部分,表示英文附录目录前名字。英文附录目录数字输出命令默认为 \tn{Alph}\{chapter\}。
-% \changes{v1.26o}{2021/06/13}{增加调整英文目录格式的钩子 \tn{EBeforeAddBitoc}。}
+% \changes{v1.26p}{2021/06/13}{增加调整英文目录格式的钩子 \tn{EBeforeAddBitoc}。}
% \end{function}
%
% \tn{EBeforeAddBitoc} 是一个作用于局部范围的英文目录钩子,可以插入标题或目录设置的命令改变英文目录中标题的显示格式,也可以覆盖上述的目录前后名字和编号等设置,带有星号的命令会重置之前的代码,放置在导言区或 \tn{bichapter} 等命令前生效。
@@ -254,8 +254,8 @@
% \ \marg{上标内容}\marg{下标内容}
% \ \oarg{水平偏移}\parg{下标代码}
% \end{syntax}
-% 上标和下标的功能来自 \pkg{spbmark} 宏包,\tn{super}、\tn{sub} 和 \tn{supersub} 三个命令可以用于输出上标和下标。它们根据当前处于文本模式还是数学模式来匹配相应的模式,或者可以使用它们的星号变体命令来强制使用数学模式。也可以使用键值列表对偏移量进行全局设置,详情见小节 \ref{subsec:style}。
-% \changes{v1.26o}{2021/06/28}{增加可以调整相对位置和格式的上标和下标命令 \tn{super}、\tn{sub} 和 \tn{supersub}。}
+% 上标和下标的功能来自 \pkg{spbmark} 宏包,\tn{super}、\tn{sub} 和 \tn{supersub} 三个命令可以用于输出上标和下标。它们根据当前处于文本模式还是数学模式来匹配相应的模式,或者可以使用它们的星号变体命令来强制使用数学模式。也可以使用键值列表对偏移量进行全局设置,详情见小节 \ref{subsubsec:super-sub-script}。
+% \changes{v1.26p}{2021/06/28}{增加可以调整相对位置和格式的上标和下标命令 \tn{super}、\tn{sub} 和 \tn{supersub}。}
% \end{function}
%
% 垂直和水平偏移默认值都是 0 pt,\meta{对齐方式} 的参数与 \opt{supersubalign} 相同。\meta{格式代码} 用于格式化上标和下标,可以插入字体或颜色等命令。代码中的最后一个命令可以接受一个为上标或下标的参数。\tn{textsuperscript} 和 \tn{textsubscript} 命令已被重新定义并且分别等价于 \tn{super} 和 \tn{sub},如果您需要使用它们的原始定义创建新命令,则可以使用 \tn{spb@textsuperscript@save} 和 \tn{spb@textsubscript@save} 命令。
@@ -282,7 +282,7 @@
%
% \subsection{风格}
% \label{subsec:style}
-% \begin{function}[EXP,added = 2021-01-05,updated = 2021-05-19]{color,color-all,multoc,withpart,footwith,rulewidth,uppercase,figure-sep,table-sep,listing-sep,equation-sep,number-sep,figurepath}
+% \begin{function}[EXP,added = 2021-01-05,updated = 2021-05-19]{color,color-all,multoc,withpart,footwith,rulewidth,uppercase,figurepath}
% \begin{syntax}
% color = <(none)|seaside|energy|cyberpunk>
% color-all = <HTML颜色代码>
@@ -291,18 +291,12 @@
% footwith = <part|(chapter)|page>
% rulewidth = <线宽|(0.75pt)>
% uppercase = <(true)|false>
-% figure-sep = <符号|(.)>
-% table-sep = <符号|(.)>
-% listing-sep = <符号|(.)>
-% equation-sep = <符号|(.)>
-% number-sep = <符号|(.)>
% figurepath = \{\{<路径名1>\}\{<路径名2>\}\}
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{style/...}
% \changes{v1.10}{2021/01/08}{更改颜色实现方式与选项名。}
% \changes{v1.23}{2021/02/02}{noto风格的数学字体独立出来,可自定义设置。}
% \changes{v1.23}{2021/02/09}{增加控制页面横线粗细的选项。}
-% \changes{v1.23}{2021/03/15}{增加控制编号连接符的选项。}
% \end{function}
%
% \begin{optdesc}
@@ -320,14 +314,25 @@
% \item[footwith] 使脚注跟随编号的计数器,默认跟随章,当开启新的一章时脚注编号从 1 开始。
% \item[rulewidth] 调整页眉、定理盒子以及代码框线条的粗细。
% \item[uppercase] 使用 \tn{rightmark} 及 \tn{leftmark} 获取标题内容设置页眉页脚时英文是否大小写。
-% \item[figure-sep] 图片标题编号的连接符。
-% \item[table-sep] 表格标题编号的连接符。
-% \item[listing-sep] 代码标题编号的连接符。
-% \item[equation-sep] 公式编号的连接符。
-% \item[number-sep] 统一设置所有编号的连接符。
% \item[figurepath] 设置插入图片的文件夹路径名,可以有多个路径名,但需要包含在括号内作为间隔,即使只有一个路径。
% \end{optdesc}
%
+% \subsubsection{连接符}
+% \begin{function}[EXP,added = 2021-01-05,updated = 2021-07-02]{figure-con,table-con,listing-con,equation-con,number-con}
+% \begin{syntax}
+% figure-con = <图片连接符|(.)>
+% table-con = <表格连接符|(.)>
+% listing-con = <代码连接符|(.)>
+% equation-con = <公式连接符|(.)>
+% number-con = <连接符|(.)>
+% \end{syntax}
+% \ding{229} 以上选项路径为 \opt{style/...} \\
+% 上面几个选项用于设置相应编号的连接符,\opt{number-con} 统一设置所有编号的连接符。
+% \changes{v1.23}{2021/03/15}{增加控制编号连接符的选项。}
+% \end{function}
+%
+% \subsubsection{上标和下标}
+% \label{subsubsec:super-sub-script}
% \begin{function}[EXP,added = 2021-06-26]{super-vshift,super-hshift,sub-vshift,sub-hshift,supersubsep,supersubalign}
% \begin{syntax}
% super-vshift = <刚性长度|(0pt)>
@@ -487,7 +492,7 @@
% \end{syntax}
% \ding{229} 以上选项路径为 \opt{thmset/...}
% \changes{v1.21}{2021/01/12}{增加配置定理环境样式的选项。}
-% \changes{v1.26o}{2021/07/01}{增加配置公式标签括号选项 \opt{brackets}。}
+% \changes{v1.26p}{2021/07/01}{增加配置公式标签括号选项 \opt{brackets}。}
% \end{function}
%
% \begin{optdesc}
@@ -514,7 +519,7 @@
% 文档类已预置 8 个定理环境,环境名及对应的定理标题名见小节 \ref{subsec:theorem},如果需要新的定理标题名或定理样式可使用这两个命令,由 \pkg{thmtools} 提供支持,用法与它的同名命令一致。
% \changes{v1.23}{2021/03/12}{重新定义了新定理环境命令 \tn{newtheorem}。}
% \changes{v1.24}{2021/04/25}{增加定义定理环境命令 \tn{EBNewTheorem}。}
-% \changes{v1.26o}{2021/06/15}{定义新定理环境的命令调整为 \tn{declaretheorem}。}
+% \changes{v1.26p}{2021/06/15}{定义新定理环境的命令调整为 \tn{declaretheorem}。}
% \end{function}
%
% \begin{optdesc}
@@ -620,7 +625,7 @@
% \tn{markrule}\oarg{长度|(\tn{textwidth})}\parg{颜色名}\marg{线宽|(0.75pt)}[<上间距>+<下间距>]
% \end{syntax}
% 命令 \tn{easyhead} 和 \tn{easyfoot} 的使用方法与 \tn{fancyhead} 和 \tn{fancyfoot} 完全相同,它们需要在 \opt{head-foot} 选项中使用,设置的是一个名为 \opt{fancy} 的页面风格。\pkg{fancyhdr} 将页眉页脚分成了左中右和奇数页(odd)、偶数页(even)共12个部分,可选参数中E、O代表偶数、奇数,L、C、R代表左、中、右部分。单面打印时,含有偶数的选项无效。
-% \changes{v1.26o}{2021/06/14}{增加页眉页脚的横线绘制命令 \tn{markrule}。}
+% \changes{v1.26p}{2021/06/14}{增加页眉页脚的横线绘制命令 \tn{markrule}。}
% \end{function}
%
% 命令 \tn{markrule} 用于绘制页眉页脚横线,长度默认为页面文本区的宽度,上下间距为横线与上下方部件的间距,带有长度单位,间距长度之间用 + 号分开,若只有一部分则表示上间距,这个命令也可以在正文中绘制横线。下面举一个设置页眉内容的例子:
@@ -874,7 +879,7 @@
% \subsubsection{段落盒子}
% \begin{function}[added = 2021-01-05,updated = 2021-04-19]{easybox}
% \begin{syntax}
-% \tn{begin}\marg{easybox}*\oarg{颜色名|(DarkCyan)}\parg{段落标题}\oarg{配置选项}
+% \tn{begin}\marg{easybox}*\oarg{颜色名|(Khaki)}\parg{段落标题}\oarg{配置选项}
% \ <盒子内容>
% \tn{end}\marg{easybox}
% \end{syntax}
@@ -891,7 +896,7 @@
%
% \begin{function}[added = 2021-04-19]{ebparbox}
% \begin{syntax}
-% \tn{begin}\marg{ebparbox}*\oarg{颜色名|(Purple)}\parg{段落标题}\oarg{配置选项}
+% \tn{begin}\marg{ebparbox}*\oarg{颜色名|(DarkSlateBlue)}\parg{段落标题}\oarg{配置选项}
% \ <盒子内容>
% \tn{end}\marg{ebparbox}
% \end{syntax}
@@ -947,7 +952,7 @@
% \tn{EBUseCounter*}\oarg{父计数器}\parg{编号|(arabic)}\marg{计数器}\marg{内容}\oarg{分隔符|(.)}\parg{数值}
% \end{syntax}
% \tn{newcounter} 是 \LaTeX 自带的创建计数器命令,\tn{EBUseCounter} 将会以一定的格式使用由它创建的计数器,将会以 \tn{the}\meta{父计数器}\meta{分隔符}\tn{the}\meta{计数器}\meta{内容} 输出当前内容。
-% \changes{v1.26o}{2021/06/30}{增加计数器使用命令 \tn{EBUseCounter}。}
+% \changes{v1.26p}{2021/06/30}{增加计数器使用命令 \tn{EBUseCounter}。}
% \end{function}
%
% 需要注意的是 \tn{EBUseCounter} 仅具有 \textbf{输出功能},并不会改变计数器原有的绑定关系。默认每使用一次命令 \meta{计数器} 的值增加 1,带有星号的命令使 \meta{计数器} 保持当前值,\meta{编号} 为 arabic 和 alpha 等格式,\meta{数值} 可以手动将 \meta{计数器} 设为指定值。
@@ -1134,7 +1139,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/07/01}{1.26o}
+\ProvidesExplClass{easybook}{2021/07/02}{1.26p}
{Typeset Chinese books or notes}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -1382,7 +1387,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{etoolbox}
-\ProvidesExplPackage{easybase}{2021/07/01}{1.26o}
+\ProvidesExplPackage{easybase}{2021/07/02}{1.26p}
{Typeset Chinese books or notes}
\cs_generate_variant:Nn \eb_ctex_define:nn { nx }
@@ -1555,18 +1560,18 @@
footwith .value_required:n = true,
footwith .initial:n = chapter,
- figure-sep .tl_set:N = \l__eb_figure_separator_tl,
- table-sep .tl_set:N = \l__eb_table_separator_tl,
- listing-sep .tl_set:N = \l__eb_lstlisting_separator_tl,
- equation-sep .tl_set:N = \l__eb_equation_separator_tl,
- number-sep .meta:n =
+ figure-con .tl_set:N = \l__eb_figure_connector_tl,
+ table-con .tl_set:N = \l__eb_table_connector_tl,
+ listing-con .tl_set:N = \l__eb_lstlisting_connector_tl,
+ equation-con .tl_set:N = \l__eb_equation_connector_tl,
+ number-con .meta:n =
{
- figure-sep = #1,
- table-sep = #1,
- listing-sep = #1,
- equation-sep = #1
+ figure-con = #1,
+ table-con = #1,
+ listing-con = #1,
+ equation-con = #1
},
- number-sep .initial:n = { . }
+ number-con .initial:n = { . }
}
\eb@package@load
@@ -1856,20 +1861,21 @@
\eb_patch_cmd:nnn { \H@@footnotemark,\@footnotemark }
{ \@makefnmark }
{
- \group_begin:
- \tl_use:N \l__eb_subfont_footnote_tl
- \tl_use:N \l__eb_fnmark_format_tl
- {\hbox:n { \super{\@thefnmark}[0pt] }}
- \group_end:
+ \hbox:n
+ {
+ \tl_use:N \l__eb_subfont_footnote_tl
+ \tl_use:N \l__eb_fnmark_format_tl
+ {\super{\@thefnmark}[0pt]}
+ }
}
\ExplSyntaxOff\char_set_catcode_other:N \@
}
\cs_set:Npn \@makefnmark
{
- \tl_use:N \l__eb_subfont_footnote_tl
- \tl_use:N \l__eb_fnmark_format_tl
+ \hbox:n
{
- \hbox:n
+ \tl_use:N \l__eb_subfont_footnote_tl
+ \tl_use:N \l__eb_fnmark_format_tl
{
\tl_if_eq:NnT \l__eb_fnmark_position_tl { super }
{ \spb@textsuperscript@save }{\@thefnmark}
@@ -2143,7 +2149,7 @@
\int_compare:nNnT { \c@chapter } > { 0 }
{
\thechapter
- \tl_use:c { l__eb_#1_separator_tl }
+ \tl_use:c { l__eb_#1_connector_tl }
}
\eb_arabic:n {#1}
}
@@ -2584,12 +2590,12 @@
\SetEnumitemValue{ref}{enumiii}{\arabic{enumi}.\alph{enumii}.\roman*}
\setlist
{
- labelsep = .75\ccwd,listparindent = 2\ccwd,leftmargin = *,
+ labelsep = 0.75\ccwd,listparindent = 2\ccwd,leftmargin = *,
itemsep = 0.75ex plus .1ex,topsep = 0.75ex plus .1ex,
partopsep = 0ex,parsep = 0ex
}
\newlist{eb@outline@list}{itemize}{1}
-\setlist[eb@outline@list]{label = outline,itemsep = .5ex plus .1ex}
+\setlist[eb@outline@list]{label = outline,itemsep = 0.5ex plus .1ex}
\setlist[itemize,1]{label = bullet}
\setlist[itemize,2]{label = endash}
\setlist[itemize,3]{label = asterisk}
@@ -2775,6 +2781,7 @@
enhanced~jigsaw,pad~at~break* = 3pt,
opacityback = 0,
colframe = ctex@emph,
+ sharpish~corners,
left = 6pt,right = 6pt,top = 8pt,bottom = 8pt,middle= 8pt
},
tc-outline/.style =
@@ -2786,19 +2793,19 @@
fonttitle = \large\sffamily,fontupper = \itshape,
boxed~title~style = {size = normal,opacityframe = 0,boxrule = 0pt},
attach~boxed~title~to~top~center = {yshift = -\tcboxedtitleheight/2},
- arc = 3pt,boxsep = 5pt,
after~skip = 3ex,
- left = 1.5pc,right = 1.5pc,top = 1pc,bottom = 0.5pc
+ sharpish~corners,
+ left = 2pc,right = 2pc,top = 1.5pc,bottom = 1pc
},
tc-exercise/.style =
{
blank,on~line,center,
+ sharpish~corners,
fontupper = \Large\sffamily,
before~skip = 3.75ex,after~skip = 2.5ex
},
breakable,
boxsep = 0pt,
- arc = 0pt,
fonttitle = \sffamily,
boxrule = \l__eb_rule_width_dim
}
@@ -2864,7 +2871,7 @@
\end{enumerate}
\tl_gclear:N \eb@tc@list@prologue
}{}
- \DeclareTColorBox{easybox}{sO{DarkCyan}d()O{}}
+ \DeclareTColorBox{easybox}{sO{Khaki}d()O{}}
{
enhanced~jigsaw,pad~at~break* = 3pt,
IfBooleanTF = {#1}
@@ -2874,13 +2881,14 @@
colback = #2,colbacktitle = #2,
opacityback = 0.12,opacitybacktitle = 0.12,
coltitle = black,colframe = black,
+ sharpish~corners,
left = 6pt,right = 6pt,bottom = 8pt,middle= 8pt,
bottomtitle = 8pt,
beforeafter~skip = 2ex,
halign~upper = left,halign~lower = left,
center~title,#4
}
- \DeclareTColorBox{ebparbox}{sO{Purple}d()O{}}
+ \DeclareTColorBox{ebparbox}{sO{DarkSlateBlue}d()O{}}
{
frame~hidden,
enhanced~jigsaw,pad~at~break* = 3pt,
@@ -2898,6 +2906,7 @@
bottom = 8pt,toptitle = 8pt
},
left = 8pt,right = 8pt,middle= 8pt,
+ sharpish~corners,
bottomtitle = 8pt,
beforeafter~skip = 1.5ex,
colframe = #2,coltitle = #2,#4
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 5463fbf874..43cbc4c930 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/ifallfalse/README.md b/macros/latex/contrib/ifallfalse/README.md
new file mode 100644
index 0000000000..cddfa35cd3
--- /dev/null
+++ b/macros/latex/contrib/ifallfalse/README.md
@@ -0,0 +1,37 @@
+# The LaTeX package ifallfalse - version 1.0.0 (2021/07/01)
+
+> Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+>
+> This file may be distributed and/or modified under
+> the conditions the LaTeX Project Public License (LPPL),
+> either version 1.3 of this license or (at your option)
+> any later version. The latest version of this license
+> can be found 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.
+
+`ifallfalse` provides an environment that can compare a string against a set of another strings, and if it matches none of them, it executes some action.
+
+## Package contents
+
+- `README.md` this file
+- `ifallfalse.pdf` documentation PDF with implementation details
+- `ifallfalse.dtx` contains package and documentation code
+- `ifallfalse.ins` generates .sty from .dtx
+
+## File generation
+
+A working TeX installation is required.
+
+Run
+
+ tex ifallfalse.ins
+
+to generate `ifallfalse.sty`. To use it, you need to put `ifallfalse.sty` into a directory searched by TeX.
+
+Run
+
+ pdflatex ifallfalse.dtx
+
+to generate `ifallfalse.pdf`, which contains the package documentation. \ No newline at end of file
diff --git a/macros/latex/contrib/ifallfalse/ifallfalse.dtx b/macros/latex/contrib/ifallfalse/ifallfalse.dtx
new file mode 100644
index 0000000000..23bbbedd0d
--- /dev/null
+++ b/macros/latex/contrib/ifallfalse/ifallfalse.dtx
@@ -0,0 +1,143 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%
+% This file may be distributed and/or modified under
+% the conditions the LaTeX Project Public License (LPPL),
+% either version 1.3 of this license or (at your option)
+% any later version. The latest version of this license
+% can be found 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.
+% \fi
+%
+% \iffalse
+%<package>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{ifallfalse}[2021/07/01 v1.0.0 Compare string against set of other strings]
+
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{ifallfalse}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{ifallfalse.dtx}
+ \PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \changes{v1.0.0}{2021/07/01}{Initial version}
+%
+% \GetFileInfo{ifallfalse.sty}
+%
+% \title{\textsf{ifallfalse} -- Compare string against set of strings}
+% \author{Dennis Chen \\ proofprogram@gmail.com}
+% \date{\fileversion, v. \filedate\thanks{\url{https://github.com/chennisden/ifallfalse}}}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The \textsf{ifallfalse} package is a package that allows you to check whether a string is contained within another set of strings, and perform an action if it is not.
+% \end{abstract}
+%
+% \section{Usage}
+%
+% The package provides an \textsf{ifallfalse} environment and a macro |\orcheck| to be used inside the \textsf{ifallfalse} environment.
+%
+% \DescribeEnv{ifallfalse}
+% To set up an ifallfalse environment, simply write
+% \begin{verbatim}
+%\begin{ifallfalse}{string}{action}
+%
+%\end{ifallfalse}
+% \end{verbatim}
+% \textsf{string} will be compared to the set of strings (which we will declare via |\orcheck|), and if \textsf{string} does not match the set of strings, \textsf{action} will be executed.
+%
+% \DescribeMacro{\orcheck}
+%
+% To add strings to the set that \textsf{string} will be compared to, we must write |\orcheck{setstring}| inside the corresponding \textsf{ifallfalse} environment. Then, \textsf{action} will not execute if \textsf{string} matches \textsf{setstring} or any arguments of previous |\orcheck| declarations.
+%
+% If no |\orcheck| declarations exist, then \textsf{action} will always be executed.
+%
+% \subsection{Error Checking}
+%
+% The package checks whether the macro |\orcheck| is used inside an \textsf{ifallfalse} environment. If it is not, the package throws an error.
+%
+% \section{Example}
+%
+% Here is a simple example to demonstrate how \textsf{ifallfalse} is used.
+% \begin{verbatim}
+%\documentclass{minimal}
+%
+%\begin{document}
+%
+%\begin{ifallfalse}{purple}{This color is not red, blue, or green!}
+% \orcheck{red}
+% \orcheck{blue}
+% \orcheck{green}
+%\end{ifallfalse}
+%
+%\end{document}
+% \end{verbatim}
+%
+% In this case, because \textsf{purple} does not match \textsf{red}, \textsf{blue}, or \textsf{green}, the action --- which is printing \textsf{This color is not red, blue, or green!} --- will execute at that location inside the document.
+%
+% \section{Implementation}
+%
+% These are the implementation details of package \textsf{ifallfalse}. Because the package is so short, we can explain everything.
+%
+% \begin{environment}{ifallfalse}
+% When setting up ifallfalse, we locally define the |\comparedstring| macro with the first argument that the environment takes in. This is what will be compared against all the strings passed in through the |\orcheck| declarations inside the environment.
+%
+% Then, we define our body of logic (which we will be adding onto through |\orcheck|) to just initially consist of the action we would like to perform if |\comparedstring| matches none of the strings passed in through |\orcheck|.
+% \begin{macrocode}
+\newenvironment{allfalse}[2]
+{
+ \def\comparedstring{#1}
+ \def\logicbody{#2}
+}
+{
+ \logicbody
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\orcheck}
+% We first save \textsf{allfalse} to a macro so we can use |\ifx| to compare the current environment name against it. If we can, then we add some following (somewhat convoluted) code to |\logicbody|. I will explain what each piece of it does, though not in the order the pieces of code appear.
+% \begin{itemize}
+% \item |\ifx\@currenvir\@allfalsename| evaluates to true if the current environment (whose name is saved to the macro |\@currenvir|) matches the name of |\@allfalsename|, or \textsf{allfalse}.
+% \item If it evaluates to \textsf{false}, the package throws an error.
+% \item The line |\pdfstrcmp{\comparedstring}{#1}=0| evaluates to true when put with |\ifnum| if the two arguments passed into |\pdfstrcmp| are equal, because |pdfstrcmp| compares their lexographical order and returns 0 if the two strings are lexographically equivalent.
+% \item Thus, we can treat |\ifnum\pdfstrcmp{\comparedstring}{#1}=0| as an expression that evaluates to true if |\comparedstring| and |#1| match, and false otherwise.
+% \item When all is said and done, the logic reduces to something of the form
+% \begin{verbatim}
+% \if\else
+% \if\else
+% \ldots action
+% \fi\ldots \fi
+% \end{verbatim}
+% Logically, \textsf{action} will only execute if all the conditions are false; in other words, it will only execute if |\comparedstring| does not match any of the strings passed in via |\orcheck|. This is because each |\else| branch must execute.
+% \end{itemize}
+% \begin{macrocode}
+\newcommand*\@allfalsename{allfalse}
+
+\newcommand{\orcheck}[1]{
+ \ifx\@currenvir\@allfalsename
+ \protected@edef\logicbody{
+ \ifnum\pdfstrcmp{\comparedstring}{#1}=0\else\logicbody\fi
+ }
+ \else
+ \PackageError{ifallfalse}{
+ \protect\orcheck\space should be nested within the allfalse environment
+ }{}
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/ifallfalse/ifallfalse.ins b/macros/latex/contrib/ifallfalse/ifallfalse.ins
new file mode 100644
index 0000000000..1da4144b09
--- /dev/null
+++ b/macros/latex/contrib/ifallfalse/ifallfalse.ins
@@ -0,0 +1,45 @@
+%% Copyright (C) 2021 Dennis Chen <proofprogram@gmail.com>
+%%
+%% This work may be distributed and/or modified under
+%% the conditions the LaTeX Project Public License (LPPL),
+%% either version 1.3 of this license or (at your option)
+%% any later version. The latest version of this license
+%% can be found 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.
+
+\input docstrip.tex
+\keepsilent
+
+\usedir{tex/latex/ifallfalse}
+
+\preamble
+This work may be distributed and/or modified under
+the conditions the LaTeX Project Public License (LPPL),
+either version 1.3 of this license or (at your option)
+any later version. The latest version of this license
+can be found 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.
+\endpreamble
+
+\generate{\file{ifallfalse.sty}{\from{ifallfalse.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* files into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* ifallfalse.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation, run the file *}
+\Msg{* ifallfalse.dtx through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/ifallfalse/ifallfalse.pdf b/macros/latex/contrib/ifallfalse/ifallfalse.pdf
new file mode 100644
index 0000000000..6793c7799b
--- /dev/null
+++ b/macros/latex/contrib/ifallfalse/ifallfalse.pdf
Binary files differ
diff --git a/macros/latex/contrib/semantex/semantex.pdf b/macros/latex/contrib/semantex/semantex.pdf
index e902f11178..931f768258 100644
--- a/macros/latex/contrib/semantex/semantex.pdf
+++ b/macros/latex/contrib/semantex/semantex.pdf
Binary files differ
diff --git a/macros/latex/contrib/semantex/semantex.sty b/macros/latex/contrib/semantex/semantex.sty
index 11fd15806b..a0aa239be3 100644
--- a/macros/latex/contrib/semantex/semantex.sty
+++ b/macros/latex/contrib/semantex/semantex.sty
@@ -1,5 +1,5 @@
\RequirePackage{xparse,l3keys2e,leftindex,semtex}
-\ProvidesExplPackage{semantex}{2021/06/30}{0.504}{}
+\ProvidesExplPackage{semantex}{2021/07/02}{0.505}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
@@ -8188,12 +8188,12 @@
{sep~upper~left~-}{sep~upper~left~slot},
{comma~upper~left~slot}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~slot } } },
{comma~upper~left~-}{comma~upper~left~slot},
- {lower~left~dots}{ set~keys~x={ upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
- {upper~left~...}{lower~left~dots},
- {sep~lower~left~dots}{ set~keys~x={ sep~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
- {sep~upper~left~...}{sep~lower~left~dots},
- {comma~lower~left~dots}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } } },
- {comma~upper~left~...}{comma~lower~left~dots},
+ {upper~left~dots}{ set~keys~x={ upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~dots } } },
+ {upper~left~...}{upper~left~dots},
+ {sep~upper~left~dots}{ set~keys~x={ sep~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~dots } } },
+ {sep~upper~left~...}{sep~upper~left~dots},
+ {comma~upper~left~dots}{ set~keys~x={ comma~upper~left=\semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~dots } } },
+ {comma~upper~left~...}{comma~upper~left~dots},
{clear~upper~left}{
execute={
\semantex_data_tl_clear:nn { ##1 } { upper~left }
@@ -8303,15 +8303,15 @@
}
},
},
- {set~lower~left~dots}{
- execute={ \semantex_data_tl_set:nnn { ##1 } { lower~left~dots } { #1 } },
+ {set~upper~left~dots}{
+ execute={ \semantex_data_tl_set:nnn { ##1 } { upper~left~dots } { #1 } },
},
- {lower~left~dots~with~other~sep}{
+ {upper~left~dots~with~other~sep}{
execute={
\semantex_valuekey:nnx { upper~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~dots } }
}
},
},
@@ -8320,7 +8320,7 @@
\semantex_valuekey:nnx { upper~left~with~other~sep }
{
{ \exp_not:n { #1 } }
- { \semantex_data_tl_get_exp_not:nn { ##1 } { lower~left~dots } }
+ { \semantex_data_tl_get_exp_not:nn { ##1 } { upper~left~dots } }
}
},
},
@@ -8357,7 +8357,7 @@
},
},
set~upper~left~sep={ , },
- set~lower~left~dots={ \dots },
+ set~upper~left~dots={ \dots },
set~upper~left~slot={ {-} },
% Lower left indices:
data~provide=lower~left,
diff --git a/macros/latex/contrib/semantex/semantex.tex b/macros/latex/contrib/semantex/semantex.tex
index 0b1ae990dd..70ea73860a 100644
--- a/macros/latex/contrib/semantex/semantex.tex
+++ b/macros/latex/contrib/semantex/semantex.tex
@@ -42,7 +42,7 @@
\usepackage[nameinlink]{cleveref}
-\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.504)}
+\title{Seman\!\TeX: semantic, keyval-based mathematics (v0.505)}
\date{\today}
\author{Sebastian Ørsted (\href{mailto:sorsted@gmail.com}{sorsted@gmail.com})}
diff --git a/macros/latex/contrib/semantex/stripsemantex.sty b/macros/latex/contrib/semantex/stripsemantex.sty
index 7f9f5a13d0..b9565f0a42 100644
--- a/macros/latex/contrib/semantex/stripsemantex.sty
+++ b/macros/latex/contrib/semantex/stripsemantex.sty
@@ -1,5 +1,5 @@
\RequirePackage{xparse}
-\ProvidesExplPackage{stripsemantex}{2021/06/30}{0.504}{}
+\ProvidesExplPackage{stripsemantex}{2021/07/02}{0.505}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %