summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/colorist/README.md23
-rw-r--r--macros/latex/contrib/colorist/colorart.cls83
-rw-r--r--macros/latex/contrib/colorist/colorbook.cls83
-rw-r--r--macros/latex/contrib/colorist/colorist-doc.pdfbin45924 -> 81144 bytes
-rw-r--r--macros/latex/contrib/colorist/colorist-doc.tex453
-rw-r--r--macros/latex/contrib/colorist/colorist.sty909
-rw-r--r--macros/latex/contrib/minimalist/README.md25
-rw-r--r--macros/latex/contrib/minimalist/minimalist-doc.pdfbin45936 -> 79955 bytes
-rw-r--r--macros/latex/contrib/minimalist/minimalist-doc.tex434
-rw-r--r--macros/latex/contrib/minimalist/minimalist.sty490
-rw-r--r--macros/latex/contrib/minimalist/minimart.cls89
-rw-r--r--macros/latex/contrib/minimalist/minimbook.cls89
-rw-r--r--macros/latex/contrib/ot-tableau/README11
-rw-r--r--macros/latex/contrib/ot-tableau/ot-tableau.pdfbin84456 -> 65650 bytes
-rw-r--r--macros/latex/contrib/ot-tableau/ot-tableau.sty61
-rw-r--r--macros/latex/contrib/ot-tableau/ot-tableau.tex13
-rw-r--r--macros/latex/contrib/tcolorbox/CHANGES31
-rw-r--r--macros/latex/contrib/tcolorbox/README4
-rw-r--r--macros/latex/contrib/tcolorbox/tcbbreakable.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbexternal.code.tex7
-rw-r--r--macros/latex/contrib/tcolorbox/tcbfitting.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbhooks.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistings.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingscore.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbmagazine.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbminted.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbprocessing.code.tex7
-rw-r--r--macros/latex/contrib/tcolorbox/tcbraster.code.tex22
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskins.code.tex222
-rw-r--r--macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex27
-rw-r--r--macros/latex/contrib/tcolorbox/tcbtheorems.code.tex29
-rw-r--r--macros/latex/contrib/tcolorbox/tcbvignette.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcbxparse.code.tex6
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdfbin273812 -> 273829 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.pdfbin457359 -> 457403 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-example.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdfbin442139 -> 442133 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex5
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex8
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex10
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex36
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex5
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty4
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex1636
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex1985
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex37
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex35
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex2
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.pdfbin7174046 -> 7209084 bytes
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.sty72
-rw-r--r--macros/latex/contrib/tcolorbox/tcolorbox.tex11
-rw-r--r--macros/unicodetex/latex/beaulivre/README.md7
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdfbin166042 -> 300321 bytes
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex506
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdfbin114887 -> 185959 bytes
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex504
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre.cls152
-rw-r--r--macros/unicodetex/latex/einfart/README.md7
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-cn.pdfbin151770 -> 236172 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-cn.tex450
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-en.pdfbin105718 -> 145877 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-en.tex438
-rw-r--r--macros/unicodetex/latex/einfart/einfart.cls156
-rw-r--r--macros/unicodetex/latex/lebhart/README.md7
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdfbin161740 -> 280208 bytes
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex485
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-en.pdfbin114964 -> 168948 bytes
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-en.tex475
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart.cls152
-rw-r--r--macros/unicodetex/latex/simplivre/README.md7
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdfbin158697 -> 283518 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex482
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-en.pdfbin108946 -> 191358 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-en.tex478
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre.cls156
83 files changed, 7408 insertions, 4106 deletions
diff --git a/macros/latex/contrib/colorist/README.md b/macros/latex/contrib/colorist/README.md
index 48f9a8e82f..28ca41cf52 100644
--- a/macros/latex/contrib/colorist/README.md
+++ b/macros/latex/contrib/colorist/README.md
@@ -2,27 +2,28 @@
# `colorist` bundle: write you documents in a colorful way
-This is collection of styles and classes for typesetting articles and books in a
-colorful design. It mainly consists of two parts.
+A collection of styles and classes that helps you typesetting articles and books
+with a colorful design. It mainly consists of two parts.
- Main part:
- - colorist.sty : the main style
- - colorart.cls : class for typesetting articles
- - colorbook.cls : class for typesetting books
+ - `colorist.sty` : the main style
+ - `colorart.cls` : class for typesetting articles
+ - `colorbook.cls` : class for typesetting books
They can be used with any major TeX engine. Currently they have native
- support to English and French typesetting. (I have planed to add more
- language support)
+ support to English, French and German typesetting (more language to be
+ added).
- Derivative part (they have separate pages on CTAN):
- - lebhart.cls : more advanced class for typesetting articles
- - beaulivre.cls : more advanced class for typesetting books
+ - `lebhart.cls` : enhanced version of `colorart`
+ - `beaulivre.cls` : enhanced version of `colorbook`
They are similar to the main classes, but have unicode support, thus can
only be used with either XeLaTeX or LuaLaTeX. Currently they have native
- support to English, French and Chinese typesetting, and also use more
- beautiful fonts. (I have planed to add more language support)
+ support to Chinese (both simplified and traditional), English, French,
+ German, Japanese and Russian typesetting (more language to be added), and
+ also use more beautiful fonts.
# License
diff --git a/macros/latex/contrib/colorist/colorart.cls b/macros/latex/contrib/colorist/colorart.cls
index c40e2c682b..304a002614 100644
--- a/macros/latex/contrib/colorist/colorart.cls
+++ b/macros/latex/contrib/colorist/colorart.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{colorart}
- [2021/03/15 A colorful article style]
+ [2021/05/24 A colorful article style]
\def\colorclass@baseclass{article}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,12 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+
+\newif\if@colorclass@bfivepaper\@colorclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@colorclass@bfivepapertrue}
+\newif\if@colorclass@afourpaper\@colorclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@colorclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\colorclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\colorclass@baseclass}
@@ -37,20 +43,41 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
- % papersize={8in,11in},
+ papersize={8.5in,11in},
+ total={47em,66em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\if@colorclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@colorclass@afourpaper
+\geometry{
a4paper,
total={47em,70em},
hmarginratio=1:1,
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\fi
\RequirePackage{indentfirst}
\if@colorclass@fast
\PassOptionsToPackage{fast}{colorist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
\fi
\RequirePackage{colorist}
@@ -64,6 +91,9 @@
\fi
\RequirePackage{mathpazo}
\RequirePackage{newpxtext}
+\RequirePackage{amssymb}
+
+\def\PJL@font@alreadyset{}
\RequirePackage[verbose=silent]{microtype}
@@ -73,60 +103,15 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
%%================================
\RequirePackage{imakeidx}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@colorclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `colorist/colorart.cls'.
diff --git a/macros/latex/contrib/colorist/colorbook.cls b/macros/latex/contrib/colorist/colorbook.cls
index e620546e5a..da8b6e75b8 100644
--- a/macros/latex/contrib/colorist/colorbook.cls
+++ b/macros/latex/contrib/colorist/colorbook.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{colorbook}
- [2021/03/15 A colorful book style]
+ [2021/05/24 A colorful book style]
\def\colorclass@baseclass{book}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,12 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+
+\newif\if@colorclass@bfivepaper\@colorclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@colorclass@bfivepapertrue}
+\newif\if@colorclass@afourpaper\@colorclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@colorclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\colorclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\colorclass@baseclass}
@@ -37,20 +43,41 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
- % papersize={8in,11in},
+ papersize={8.5in,11in},
+ total={47em,66em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\if@colorclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@colorclass@afourpaper
+\geometry{
a4paper,
total={47em,70em},
hmarginratio=1:1,
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\fi
\RequirePackage{indentfirst}
\if@colorclass@fast
\PassOptionsToPackage{fast}{colorist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
\fi
\RequirePackage{colorist}
@@ -64,6 +91,9 @@
\fi
\RequirePackage{mathpazo}
\RequirePackage{newpxtext}
+\RequirePackage{amssymb}
+
+\def\PJL@font@alreadyset{}
\RequirePackage[verbose=silent]{microtype}
@@ -73,60 +103,15 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
%%================================
\RequirePackage{imakeidx}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@colorclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `colorist/colorbook.cls'.
diff --git a/macros/latex/contrib/colorist/colorist-doc.pdf b/macros/latex/contrib/colorist/colorist-doc.pdf
index 27c3d1b58c..faacf8b77a 100644
--- a/macros/latex/contrib/colorist/colorist-doc.pdf
+++ b/macros/latex/contrib/colorist/colorist-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/colorist/colorist-doc.tex b/macros/latex/contrib/colorist/colorist-doc.tex
index f61a2f99b5..14dc39da0d 100644
--- a/macros/latex/contrib/colorist/colorist-doc.tex
+++ b/macros/latex/contrib/colorist/colorist-doc.tex
@@ -1,22 +1,24 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
-\documentclass{colorart}
+\documentclass[allowbf]{colorart}
%%================================
-%% TeX logo and URL
+%% Import toolkit
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
%%================================
%% For typestting code
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -29,92 +31,203 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,subsection,
+ color,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
-\providecommand{\colorist}{\textsf{colorist}}
-\providecommand{\colorart}{\textsf{colorart}}
-\providecommand{\colorbook}{\textsf{colorbook}}
-\providecommand{\lebhart}{\textsf{lebhart}}
-\providecommand{\beaulivre}{\textsf{beaulivre}}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][Remind]{%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}}
+
+%%================================
+%% Names
+%%================================
+\providecommand{\colorist}{{\normalfont\textsf{colorist}}}
+\providecommand{\colorart}{{\normalfont\textsf{colorart}}}
+\providecommand{\colorbook}{{\normalfont\textsf{colorbook}}}
+\providecommand{\lebhart}{{\normalfont\textsf{lebhart}}}
+\providecommand{\beaulivre}{{\normalfont\textsf{beaulivre}}}
+
%%================================
%% Main text
%%================================
\begin{document}
-\title{\colorist{}, write your articles or books in a colorful way\thanks{Corresponding to: \texttt{\colorist{} 2021/03/15}}}
-\author{Jinwen}
-\date{March 2021, Beijing}
+\title{{\normalfont\textbf{\textsf{colorist}}}, write your articles or books in a colorful way}
+\author{Jinwen XU}
+\thanks{Corresponding to: \texttt{\colorist{} 2021/05/24}}
+\date{May 2021, Beijing}
\maketitle
\begin{abstract}
- The \colorist{} is a series of styles and classes for you to typeset your articles or books in a colorful manner. My original intention in designing this series is to write drafts and notes that look colorful yet not dazzling.
+ \colorist{} is a series of styles and classes for you to typeset your articles or books in a colorful manner. My original intention in designing this series is to write drafts and notes that look colorful yet not dazzling.
- The entire collection includes \verb|colorist.sty|, which is the main style shared by all the following classes; \verb|colorart.cls| for typesetting articles and \verb|colorbook.cls| for typesetting books. They compile with any major \TeX{} engine, with native support to English and French typesetting via \lstinline|\UseLanguage| (see the instruction below for detail).
+ The entire collection includes \verb|colorist.sty|, which is the main style shared by all of the following classes; \verb|colorart.cls| for typesetting articles and \verb|colorbook.cls| for typesetting books. They compile with any major \TeX{} engine, with native support to English, French and German typesetting via \lstinline|\UseLanguage| (see the instruction below for detail).
- You can also found \lebhart{} and \beaulivre{} on CTAN. They are the enhanced version of \colorart{} and \colorbook{} with unicode support. With this, they can access to more beautiful fonts, and also have native support for Chinese typesetting. On the other hand, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX} (not pdf\LaTeX).
+ You can also found \lebhart{} and \beaulivre{} on CTAN. They are the enhanced version of \colorart{} and \colorbook{} with unicode support. With this, they can access to more beautiful fonts, and also have native support for Chinese, Japanese and Russian typesetting. On the other hand, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX} (not pdf\LaTeX).
- This documentation is typeset using \colorart{}. You can think of it as a short introduction and demonstration.
+ This documentation is typeset using \colorart{} (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
\end{abstract}
-\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
- Since the main body of \colorist{} is modified from the \textsf{minimalist} series, some elements have not been completely redesigned yet, especially the TOC, part and chapter style. These will be added gradually in the future versions.
-\end{tcolorbox}
-
\tableofcontents
-\section{How to load it}
+\bigskip\bigskip
+\begin{remind}
+ Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
+\end{remind}
+
+\clearpage
+\section{Initialization}
+
+\subsection{How to load it}
You can directly use \colorart{} or \colorbook{} as your document class. In this way, you can directly begin writing your document, without having to worry about the configurations.
\begin{code}
\documentclass{colorart} (*{\normalfont or}*) \documentclass{colorbook}
\end{code}
-And of course, you can also use the default classes \textsf{article} or \textsf{book}, and load the \colorist{} package. This way, only the basic styles are set, and you can thus use your preferred fonts and page layout. All the features mentioned in this article (except for draft marks) are provided.
+And of course, you can also use the default classes \textsf{article} or \textsf{book}, and load the \colorist{} package. This way, only the basic styles are set, and you can thus use your preferred fonts and page layout. All the features mentioned in this article are provided.
\begin{code}
\usepackage{colorist}
\end{code}
-\subsection{A useful switch: the option \textsf{fast} or \textsf{draft}}
-You can use the option \verb|fast| or \verb|draft| to typeset in a fast but slightly rough manner. The main differences are:
+\subsection{Options}
+
+\colorist{} offers the following options:
+
\begin{itemize}
- \item Do not use hyperref;
- \item Use draft mode for all tcolorboxes.
+ \item \texttt{draft} or \texttt{fast}
+ \begin{itemize}
+ \item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
+ \begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Enable the fast mode of \ProjLib{} toolkit.
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Allow boldface. When this option is enabled, the title, titles of all levels and names of theorem-like environments will be bolded.
+ \end{itemize}
+\end{itemize}
+
+\begin{remind}
+ \begin{itemize}
+ \item During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. At the end, one should remove the ``fast'' option to get the final version. When in \verb|fast| mode, there will be a watermark "DRAFT" to indicate that you are currently in the draft mode.
+ \end{itemize}
+\end{remind}
+
+\bigskip
+Additionally, \colorart{} and \colorbook{} offers the following options:
+\begin{itemize}
+ \item \texttt{a4paper} or \texttt{b5paper}
+ \begin{itemize}
+ \item Optional paper size. The default paper size is 8.5in $\times$ 11in.
+ \end{itemize}
\end{itemize}
-During the writing stage of your document, it is recommended to use the \verb|fast| option to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
\section{Some instructions}
+Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
+
+\subsection{Language configuration}
+
+\colorist{} has multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian. The language can be selected by the following macros:
+
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
+\end{itemize}
+
+\clearpage
+\meta{language name} can be:
+\begin{itemize}
+ \item Simplified Chinese: \texttt{Chinese}, \texttt{chinese}, \texttt{SChinese}, \texttt{schinese}, \texttt{SimplifiedChinese} or \texttt{simplifiedchinese}
+ \item Traditional Chinese: \texttt{TChinese}, \texttt{tchinese}, \texttt{TraditionalChinese} or \texttt{traditionalchinese}
+ \item English: \texttt{English} or \texttt{english}
+ \item French: \texttt{French} or \texttt{french}
+ \item German: \texttt{German}, \texttt{german} or \texttt{ngerman}
+ \item Japanese: \texttt{Japanese} or \texttt{japanese}
+ \item Russian: \texttt{Russian} or \texttt{russian}
+\end{itemize}
+
+\medskip
+In addition, you can also add new settings to selected language:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to all supported languages.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to the selected language \meta{language name}.
+ \end{itemize}
+\end{itemize}
+For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
+
+
\subsection{Theorems and how to reference them}
-Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+Environments such as definitions and theorems have been pre-defined and can be used directly.
+
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The display of these environments will change according to the current language.
+
+\medskip
+When referencing a theorem-like environment, it is recommended to use clever reference \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{remind}[Example]
\begin{code}
\begin{definition}[Strange things] \label{def: strange} ...
\end{code}
+
will produce
\begin{definition}[Strange things]\label{def: strange}
This is the definition of some strange objects.
\end{definition}
-\begin{definition}[Another definition]
- Different definitions are automatically glued together, and there will be no gaps in between.
-\end{definition}
+\lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
-When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+\medskip
+After using \lstinline|\UseLanguage{French}|, a theorem will be displayed as:
+
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorème en français.
+\end{theorem}
+
+By default, when referenced, the name of the theorem always matches the language of the context in which the theorem is located. For example, the definition above is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}. If you want the name of the theorem to match the current context when referencing, you can add \texttt{regionalref} to the global options.
+\end{remind}
-\bigskip
-The following are several other styles of theorem-like environments:
+\clearpage %\bigskip
+The following are the main styles of theorem-like environments:
\begin{theorem}
- Theorem style: theorem, proposition, lemma, corollary
+ Theorem style: theorem, proposition, lemma, corollary, ...
\end{theorem}
\begin{proof}
@@ -130,93 +243,273 @@ The following are several other styles of theorem-like environments:
\end{conjecture}
\begin{example*}
- Example style: example, fact
+ Example style: example, fact, ...
\end{example*}
\begin{problem}
- Problem style
+ Problem style: problem, question, ...
\end{problem}
+\medskip
+For aesthetics, adjacent definitions will be connected together automatically:
+\begin{definition}
+ First definition.
+\end{definition}
+
+\begin{definition}
+ Second definition.
+\end{definition}
+
+\UseLanguage{English}
+
+% \clearpage
\subsection{Define a new theorem-like environment}
-First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+If you need to define a new theorem-like environment, you must first define the name of the environment in the language used: \lstinline|\|\meta{name of environment}\meta{language abbr}, where \meta{language abbr} is the abbreviation of language, which can be:
+% \vspace{-.5\baselineskip}
+\begin{longtable}{ll|ll}
+ \texttt{CN} & Simplified Chinese & \texttt{DE} & German\\
+ \texttt{TC} & Traditional Chinese & \texttt{JP} & Japanese\\
+ \texttt{EN} & English & \texttt{RU} & Russian\\
+ \texttt{FR} & French & &\\
+\end{longtable}
+
+\vspace{-.5\baselineskip}
+\begin{remind}
+ If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
+\end{remind}
+
+And then define this environment in one of following five ways:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define an unnumbered environment \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
+ \item This method is usually useful in the following two situations:
+ \begin{enumerate}
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\medskip
+\begin{remind}
+ It uses \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
+\end{remind}
+
\def\proofideanameEN{Idea}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
-For example,
+\bigskip
+Here is an example. The following code:
\begin{code}
\def\proofideanameEN{Idea}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
\end{code}
-defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context. The effect is as follows:
+
+\begin{proofidea*}
+ The \lstinline|proofidea*| environment.
+\end{proofidea*}
\begin{proofidea}
- ...
+ The \lstinline|proofidea| environment.
\end{proofidea}
+\bigskip
\subsection{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+ \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+ \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{Language configuration}
-You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
+\clearpage
+\subsection{On the title, abstract and keywords}
-For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
+\colorart{} has both the features of standard classes and that of the \AmS{} classes.
-\UseLanguage{French}
-\begin{theorem}[Inutile]\label{thm}
- Un théorème en français. \dnf
+Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
+
+or written in the way of \AmS{} classes:
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
+
+\medskip
+The author information can contain multiple groups, written as:
+
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
+
+Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
+
+
+\section{Known issues}
+
+\begin{itemize}[itemsep=.6em]
+ \item The font settings are still not perfect.
+ \item Since many features are based on the \ProjLib{} toolkit, \colorist{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
+ \item There are still many things that can be optimized in the code.
+\end{itemize}
+
+\clearpage
+\section{Document templates}
+
+\subsection{The standard way}
+
+If you want to write in the standard way, you can refer to the following example:
+
+\begin{code}
+\documentclass{colorart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
+
+\begin{document}
+
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
+
+\maketitle
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
\end{theorem}
-When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}。
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
+
+\end{document}
+\end{code}
+
+If you wish to switch to the standard class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
-\UseLanguage{English}
\clearpage
+\subsection{The \texorpdfstring{\AmS{}}{AMS} way}
-\section{Document templates}
+If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
-\begin{center}
-\begin{minipage}{0.4\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass{lebhartfast}
+\documentclass{colorart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
\maketitle
-%% Texte ici
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\end{center}
-\bigskip
-(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
\end{document}
diff --git a/macros/latex/contrib/colorist/colorist.sty b/macros/latex/contrib/colorist/colorist.sty
index 0aebdb922f..aaf8a32829 100644
--- a/macros/latex/contrib/colorist/colorist.sty
+++ b/macros/latex/contrib/colorist/colorist.sty
@@ -17,22 +17,28 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesPackage{colorist}
- [2021/03/15 A colorful style for articles and books]
-\RequirePackage{etoolbox}
+ [2021/05/24 A colorful style for articles and books]
\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
\SetupKeyvalOptions{%
family = @colorist,
prefix = @colorist@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{polyglossia}
+\DeclareBoolOption[false]{allowbf}
\ProcessKeyvalOptions*\relax
\if@colorist@draft
\@colorist@fasttrue
\fi
+\if@colorist@allowbf
+ \newcommand{\conditionalbfseries}{\bfseries\colorlet{PJLtempcolor}{.}\color{PJLtempcolor!90!paper}}
+\else
+ \newcommand{\conditionalbfseries}{}
+\fi
+
\newif\ifIsBook
\ifdefined\chapter\IsBooktrue\else\IsBookfalse\fi
@@ -40,22 +46,23 @@
%% Title fonts
%%================================
\RequirePackage{anyfontsize}
-\newcommand{\partfont}{\sffamily}
-\newcommand{\chapfont}{\sffamily}
-\newcommand{\secfont}{\sffamily}
-\newcommand{\subsecfont}{}
-\newcommand{\subsubsecfont}{}
+\newcommand{\partfont}{\conditionalbfseries\sffamily}
+\newcommand{\chapfont}{\conditionalbfseries\sffamily}
+\newcommand{\secfont}{\conditionalbfseries\sffamily}
+\newcommand{\subsecfont}{\conditionalbfseries\sffamily}
+\newcommand{\subsubsecfont}{\conditionalbfseries\sffamily}
+
+%%================================
+%% Paper configuration
+%%================================
+\RequirePackage{PJLpaper}
%%================================
%% Color
%%================================
-\RequirePackage{xcolor}
-\definecolor{paper}{RGB}{255,255,255}
-\definecolor{skyblue}{RGB}{60,120,234}
-\definecolor{steelblue}{RGB}{70,130,180}
+\definecolor{maintheme}{RGB}{70,130,180}
\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightorange}{RGB}{255,185,88}
-\definecolor{lightskyblue}{RGB}{35,198,255}
%%================================
%% Footer
@@ -63,6 +70,7 @@
\RequirePackage{geometry}
\RequirePackage{fancyhdr}
\RequirePackage{extramarks}
+\AtEndPreamble{\fancyhfoffset{0pt}}
\fancypagestyle{fancy}{
\fancyhf{}
\if@twoside
@@ -109,8 +117,9 @@
%%================================
%% Line spacing
%%================================
-\RequirePackage{setspace}
-\setstretch{1.07}
+\RequirePackage{PJLlang}
+\PJLsetlinespacing{\setstretch{1.07}}
+\PJLsetCJKlinespacing{\onehalfspacing}
\raggedbottom
%%================================
@@ -120,12 +129,26 @@
\PassOptionsToPackage{normalem}{ulem}
\RequirePackage{ulem}
+\newcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}
+\gappto{\PJLlang@langconfig@common}{%
+\renewcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}%
+}
+\gappto{\PJLlang@langconfig@chinese}{%
+\renewcommand{\partstring}{第~\thepart~部分}%
+}
+\gappto{\PJLlang@langconfig@tchinese}{%
+\renewcommand{\partstring}{第~\thepart~部分}%
+}
+\gappto{\PJLlang@langconfig@japanese}{%
+\renewcommand{\partstring}{第~\thepart~部}%
+}
+
\ifbool{IsBook}{
%% Part
\titleclass{\part}{top} % make part like a chapter
\titleformat{\part}[display]
{\partfont\filleft}
- {\MakeUppercase{\partname~\protect\thepart}}
+ {\partstring}
{1em}
{\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
\titleformat{name=\part,numberless}[display]
@@ -148,28 +171,78 @@
}
%% Chapter
- \titleformat{\chapter}
- {\thispagestyle{fancy}%
- \color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
- {\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
- \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
- \titleformat{name=\chapter,numberless}
- {\thispagestyle{fancy}% \phantomsection\addcontentsline{toc}{chapter}{#1}%
- \color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
- {\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
- \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+ \newlength{\colorist@chapboxwidth}
+
+ \newcommand{\MakeChapBox}[2]{%
+ \settowidth{\colorist@chapboxwidth}{#1}
+ \begin{tcolorbox}[
+ enhanced,
+ skin = bicolor,
+ frame engine = path,
+ sharp corners = all,
+ width = 0.9\textwidth,
+ top = 4mm, bottom = 4mm,
+ sidebyside,
+ frame hidden,
+ boxrule = 0mm,
+ lefthand width = 1.5\colorist@chapboxwidth,
+ colupper = white,
+ colback = maintheme!80!paper,
+ colbacklower = maintheme!20!paper,
+ sidebyside align=center,
+ halign=center]
+ \Huge #1%
+ \tcblower%
+ #2%
+ \end{tcolorbox}%
+ }
+
+ \newcommand{\MakeChapBoxSingle}[1]{%
+ \begin{tcolorbox}[
+ enhanced,
+ width = 0.7\textwidth,
+ sharp corners = all,
+ top = 4mm, bottom = 4mm,
+ frame hidden,
+ boxrule = 0mm,
+ colback = maintheme!20!paper,
+ halign=center]
+ #1
+ \end{tcolorbox}
+ }
+
+ \titleformat{name=\chapter}
+ {\filright\chapfont\huge} % Format
+ {} % Label
+ {0mm} % Sep
+ {\MakeChapBox{\thechapter}{#1}} % Before-code
+ \titlespacing*{name=\chapter}
+ {0em}{*2}{0em} % {left}{before-sep}{after-sep}
+
+ \titleformat{name=\chapter, numberless}
+ {\filcenter\chapfont\huge} % Format
+ {} % Label
+ {0mm} % Sep
+ {\MakeChapBoxSingle{#1}} % Before-code
+ \titlespacing*{name=\chapter, numberless}
+ {0em}{*2}{0em} % {left}{before-sep}{after-sep}
%% Section
\titleformat{\section}
- {\secfont\large\color{steelblue}}
+ {\color{maintheme}\secfont\large}
{\thesection}{.75em}{#1}
- [{\titlerule[.75pt]}]
+ % [{\titlerule[.75pt]}]
+
+ %% Subsection
+ \titleformat{\subsection}
+ {\subsecfont}{\thesubsection}{.75em}
+ {#1}
}{
%% Part
\titleformat{\part}[display]
{%
\partfont\filleft}
- {\MakeUppercase{\partname~\protect\thepart}}
+ {\partstring}
{.3em}
{\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
\titleformat{name=\part,numberless}[display]
@@ -189,24 +262,24 @@
%% Section
\titleformat{\section}
- {\secfont\large\color{steelblue}}
+ {\color{maintheme}\secfont\large}
{\thesection}{.75em}{\scshape #1}
- [{\titlerule[.75pt]}]
-}
+ % [{\titlerule[.75pt]}]
-%% Subsection
-\titleformat{\subsection}
- {\subsecfont}{}{0em}
- {\textsf{\thesubsection}~~\textcolor{gray!55!paper}{$|$}~~#1}
-\titleformat{name=\subsection,numberless}
- {\subsecfont}{}{0em}
- {#1}
+ %% Subsection
+ \titleformat{\subsection}
+ {\subsecfont}{\thesubsection}{.75em}
+ {\scshape #1}
+}
%% Subsubsection
\titleformat{\subsubsection}
- {\subsubsecfont}{\sffamily\thesubsubsection}{.5em}
+ {\color{paper!30!-paper}\subsubsecfont}{\thesubsubsection}{.5em}
{#1}
-\titlespacing{\subsubsection}{0pt}{.8\baselineskip}{.5\baselineskip}
+
+\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
+\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
+\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.2\baselineskip}
%%================================
%% TOC format
@@ -214,7 +287,7 @@
\RequirePackage{titletoc}
\titlecontents{part}
[0em]
- {\addvspace{1.5pc}\filcenter\partfont}
+ {\addvspace{1.5pc}\filcenter\sffamily}
{\thecontentslabel\\\uppercase}
{}
{} % without page number
@@ -222,35 +295,35 @@
\ifbool{IsBook}{
\titlecontents{chapter}
[2em] % i.e., 0em (part) + 2em
- {\addvspace{.5pc}\chapfont}
+ {\addvspace{1pc}\normalfont\color{maintheme}\sffamily\conditionalbfseries}
{\contentslabel{2em}}
{\hspace*{-2em}}
- {\normalfont\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\color{maintheme}\contentspage}
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
- {\secfont}
+ {\addvspace{.3pc}\normalfont\color{maintheme}\sffamily}
{\contentslabel{1.75em}}
{\hspace*{-1.75em}}
- {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\color{maintheme}\contentspage}
\titlecontents{subsection}
[7em] % i.e., 4em (section) + 3em
- {\subsecfont}
+ {\addvspace{.15pc}\normalfont\sffamily}
{\contentslabel{2.75em}}
{\hspace*{-2.75em}}
- {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\color{paper!55!-paper}\contentspage}
}{
\titlecontents{section}
[2em] % i.e., 0em (part) + 2em
- {\secfont}
+ {\addvspace{.3pc}\normalfont\color{maintheme}\sffamily}
{\contentslabel{1.75em}}
{\hspace*{-1.75em}}
- {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\color{maintheme}\contentspage}
\titlecontents{subsection}
[5em] % i.e., 2em (section) + 3em
- {\subsecfont}
+ {\addvspace{.15pc}\normalfont\sffamily}
{\contentslabel{2.75em}}
{\hspace*{-2.75em}}
- {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\color{paper!55!-paper}\contentspage}
}
%%================================
@@ -259,6 +332,8 @@
\RequirePackage{enumitem}
\setlist{noitemsep,leftmargin=2em}
\renewcommand\labelitemi{\color{gray!50}$\bullet$}
+\renewcommand\labelitemii{\color{gray!55}--}
+\renewcommand\labelitemiii{\color{gray!55}\texttt{*}}
%%================================
%% Blank page
@@ -275,6 +350,11 @@
\null\newpage\fi\fi}
%%================================
+%% Draft mark
+%%================================
+\RequirePackage{PJLdraft}
+
+%%================================
%% Icons
%%================================
\RequirePackage{tikz}
@@ -317,7 +397,7 @@
{\normalfont}{}%
{\normalfont}{}%
{0pt}%
- {\thmname{\textsc{#1}}\thmnumber{ #2}\hspace{.4em}%
+ {\conditionalbfseries\thmname{#1}\thmnumber{ #2}\hspace{.4em}%
\textcolor{gray!55!paper}{$|$}\hspace{.4em}%
\color{gray}\thmnote{\ensuremath{(\text{#3})}~~}\pushQED{\qed}}
\def\@endtheorem{\popQED\endtrivlist\@endpefalse }
@@ -328,127 +408,177 @@
\newtheoremstyle{basic}
{0pt}{0pt}{\normalfont}{0pt}
{}{\;}{0.25em}
- {\thmname{#1}~\thmnumber{\textup{#2}}
+ {{\thmname{#1}~\thmnumber{\textup{#2}}}
\thmnote{\normalfont\sffamily\color{black}~(#3)}}
\newtheoremstyle{emphasis}
{0pt}{0pt}{\itshape}{0pt}{}{}{0pt}
- {\thmnote{\normalfont\sffamily\color{black}#3\hspace*{0.25em}}}
+ {\thmnote{\normalfont\sffamily\color{black}#3\hspace*{0.5em}}}
-\if@colorist@fast\else
+\if@colorist@fast
+ \providecommand{\phantomsection}{}
+ \RequirePackage{url}
+ \newcommand{\href}[2]{#2}
+\else
\PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
\RequirePackage{bookmark}
\RequirePackage{hyperref}
\fi
-\RequirePackage{aliascnt}
-\PassOptionsToPackage{nameinlink}{cleveref}
-\RequirePackage{cleveref}
-
-\newcommand\englishABBR{EN}
-\newcommand\frenchABBR{FR}
-\newcommand\chineseABBR{CN}
-
-\RequirePackage{xstring}
-\newcommand\PassFirstToSecond[2]{#2{#1}}%
-\NewDocumentCommand{\CreateTheorem}{sm}{%
- \begingroup
- \protected@edef\temp{#2}%
- \expandafter\IfEndWith\expandafter{\temp}{*}{%
- \expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]%
- \PassFirstToSecond{*}%
- }{%
- \PassFirstToSecond{}%
- }%
- {\expandafter\PassFirstToSecond%
- \expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}%
-}%
-\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>}{%
- \IfBooleanTF{#1}{%
- \IfValueTF{#4}
- {\@firstoftwo}
- {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
- }{%
- \IfValueTF{#4}
- {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
- \@secondoftwo}
- }%
- {%
- \GenericError{}%
- {\string\CreateTheorem\space syntax error\on@line}{%
- You cannot call the starred variant with optional argument,\MessageBreak
- nor call the unstarred variant with several optional arguments.}%
- {}%
- }{%
- \IfBooleanTF{#1}{%
- \newtheorem*{#2EN#3}{\csname#2nameEN\endcsname}
- \newtheorem*{#2FR#3}{\csname#2nameFR\endcsname}
- \newtheorem*{#2CN#3}{\csname#2nameCN\endcsname}
- }{%
- \IfValueTF{#5}{%
- \newcounter{#2#3}[{#5}]%
- \expandafter\renewcommand\expandafter*%
- \csname the#2#3\expandafter\endcsname%
- \expandafter{\csname the#5\endcsname.\arabic{#2#3}}%
- }{%
- \IfValueTF{#4}
- {\newaliascnt{#2#3}{#4}}
- {\newcounter{#2#3}}%
- }%
- %-------------------------------------------------------------------
- \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
- \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
- \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
- %-------------------------------------------------------------------
- }%
- \NewDocumentEnvironment{#2#3}{}
- {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
- {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
- }%
-}%
-\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
- \newaliascnt{#1#2#3}{#1#3}%
- \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
- \aliascntresetthe{#1#2#3}%
- \crefname{#1#2#3}%
- {\csname#1name#2\endcsname}%
- {\csname#1name#2\endcsname}%
-}%
-
-%% English theorems names
-\def\theoremnameEN{\sffamily\color{orange}\textsc{Theorem}}
-\def\lemmanameEN{\sffamily\color{orange}\textsc{Lemma}}
-\def\propositionnameEN{\sffamily\color{orange}\textsc{Proposition}}
-\def\corollarynameEN{\sffamily\color{orange}\textsc{Corollary}}
-\def\factnameEN{\sffamily\color{black}\textsc{Fact}}
-\def\conjecturenameEN{\sffamily\color{purple}\textsc{Conjecture}}
-\def\definitionnameEN{\sffamily\color{forestgreen}\textsc{Definition}}
-\def\examplenameEN{\sffamily\color{black}\textsc{Example}}
-\def\problemnameEN{\sffamily\color{black}\textsc{Problem}}
-\def\remarknameEN{\sffamily\color{black}\textsc{Remark}}
-
-%% French theorems names
-\def\theoremnameFR{\sffamily\color{orange}\textsc{Théorème}}
-\def\lemmanameFR{\sffamily\color{orange}\textsc{Lemme}}
-\def\propositionnameFR{\sffamily\color{orange}\textsc{Proposition}}
-\def\corollarynameFR{\sffamily\color{orange}\textsc{Corollaire}}
-\def\factnameFR{\sffamily\color{black}\textsc{Fait}}
-\def\conjecturenameFR{\sffamily\color{purple}\textsc{Conjecture}}
-\def\definitionnameFR{\sffamily\color{forestgreen}\textsc{Définition}}
-\def\examplenameFR{\sffamily\color{black}\textsc{Exemple}}
-\def\problemnameFR{\sffamily\color{black}\textsc{Problème}}
-\def\remarknameFR{\sffamily\color{black}\textsc{Remarque}}
-
-%% Chinese theorems names
-\def\theoremnameCN{\sffamily\color{orange}定理}
-\def\lemmanameCN{\sffamily\color{orange}引理}
-\def\propositionnameCN{\sffamily\color{orange}命题}
-\def\corollarynameCN{\sffamily\color{orange}推论}
-\def\factnameCN{\sffamily\color{black}事实}
-\def\conjecturenameCN{\sffamily\color{purple}猜想}
-\def\definitionnameCN{\sffamily\color{forestgreen}定义}
-\def\examplenameCN{\sffamily\color{black}例}
-\def\problemnameCN{\sffamily\color{black}问题}
-\def\remarknameCN{\sffamily\color{black}备注}
+
+\RequirePackage[nothms]{PJLthm}
+
+%% Redefine English theorems names
+\def\theoremnameEN{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Theorem}}
+\def\lemmanameEN{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Lemma}}
+\def\propositionnameEN{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Proposition}}
+\def\corollarynameEN{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Corollary}}
+\def\propertynameEN{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Property}}
+\def\factnameEN{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Fact}}
+\def\conjecturenameEN{\normalfont\sffamily\color{purple}\conditionalbfseries\textsc{Conjecture}}
+\def\definitionnameEN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Definition}}
+\def\axiomnameEN{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Axiom}}
+\def\assumptionnameEN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Assumption}}
+\def\conventionnameEN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Convention}}
+\def\hypothesisnameEN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Hypothesis}}
+\def\notationnameEN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Notation}}
+\def\examplenameEN{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Example}}
+\def\problemnameEN{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Problem}}
+\def\questionnameEN{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Question}}
+\def\exercisenameEN{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Exercise}}
+\def\remarknameEN{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Remark}}
+\expandafter\def\csname definition-propositionnameEN\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Definition}-\propositionnameEN}
+\expandafter\def\csname definition-theoremnameEN\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Definition}-\theoremnameEN}
+
+%% Redefine French theorems names
+\def\theoremnameFR{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Théorème}}
+\def\lemmanameFR{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Lemme}}
+\def\propositionnameFR{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Proposition}}
+\def\corollarynameFR{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Corollaire}}
+\def\propertynameFR{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Propriété}}
+\def\factnameFR{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Fait}}
+\def\conjecturenameFR{\normalfont\sffamily\color{purple}\conditionalbfseries\textsc{Conjecture}}
+\def\definitionnameFR{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Définition}}
+\def\axiomnameFR{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Axiome}}
+\def\assumptionnameFR{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Supposition}}
+\def\conventionnameFR{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Convention}}
+\def\hypothesisnameFR{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Hypothèse}}
+\def\notationnameFR{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Notation}}
+\def\examplenameFR{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Exemple}}
+\def\problemnameFR{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Problème}}
+\def\questionnameFR{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Question}}
+\def\exercisenameFR{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Exercice}}
+\def\remarknameFR{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Remarque}}
+\expandafter\def\csname definition-propositionnameFR\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Définition}-\propositionnameFR}
+\expandafter\def\csname definition-theoremnameFR\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Définition}-\theoremnameFR}
+
+%% Redefine German theorems names
+\def\theoremnameDE{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Satz}}
+\def\lemmanameDE{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Lemma}}
+\def\propositionnameDE{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Proposition}}
+\def\corollarynameDE{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Korollar}}
+\def\propertynameDE{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Eigenschaft}}
+\def\factnameDE{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Fakt}}
+\def\conjecturenameDE{\normalfont\sffamily\color{purple}\conditionalbfseries\textsc{Vermutung}}
+\def\definitionnameDE{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Definition}}
+\def\axiomnameDE{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Axiom}}
+\def\assumptionnameDE{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Annahme}}
+\def\conventionnameDE{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Konvention}}
+\def\hypothesisnameDE{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Hypothese}}
+\def\notationnameDE{\normalfont\sffamily\color{forestgreen}\conditionalbfseries\textsc{Notation}}
+\def\examplenameDE{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Beispiel}}
+\def\problemnameDE{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Problem}}
+\def\questionnameDE{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Frage}}
+\def\exercisenameDE{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Übung}}
+\def\remarknameDE{\normalfont\sffamily\color{black}\conditionalbfseries\textsc{Bemerkung}}
+\expandafter\def\csname definition-propositionnameDE\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Definition}-\propositionnameDE}
+\expandafter\def\csname definition-theoremnameDE\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries\textsc{Definition}-\theoremnameDE}
+
+%% Redefine Chinese theorems names
+\def\theoremnameCN{\normalfont\sffamily\color{orange}\conditionalbfseries 定理}
+\def\lemmanameCN{\normalfont\sffamily\color{orange}\conditionalbfseries 引理}
+\def\propositionnameCN{\normalfont\sffamily\color{orange}\conditionalbfseries 命题}
+\def\corollarynameCN{\normalfont\sffamily\color{orange}\conditionalbfseries 推论}
+\def\propertynameCN{\normalfont\sffamily\color{orange}\conditionalbfseries 性质}
+\def\factnameCN{\normalfont\sffamily\color{black}\conditionalbfseries 事实}
+\def\conjecturenameCN{\normalfont\sffamily\color{purple}\conditionalbfseries 猜想}
+\def\definitionnameCN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 定义}
+\def\axiomnameCN{\normalfont\sffamily\color{orange}\conditionalbfseries 公理}
+\def\assumptionnameCN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 假设}
+\def\conventionnameCN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 约定}
+\def\hypothesisnameCN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 假设}
+\def\notationnameCN{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 记号}
+\def\examplenameCN{\normalfont\sffamily\color{black}\conditionalbfseries 例}
+\def\problemnameCN{\normalfont\sffamily\color{black}\conditionalbfseries 问题}
+\def\questionnameCN{\normalfont\sffamily\color{black}\conditionalbfseries 问题}
+\def\exercisenameCN{\normalfont\sffamily\color{black}\conditionalbfseries 练习}
+\def\remarknameCN{\normalfont\sffamily\color{black}\conditionalbfseries 备注}
+\expandafter\def\csname definition-propositionnameCN\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries 定义-\propositionnameCN}
+\expandafter\def\csname definition-theoremnameCN\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries 定义-\theoremnameCN}
+
+\def\theoremnameTC{\normalfont\sffamily\color{orange}\conditionalbfseries 定理}
+\def\lemmanameTC{\normalfont\sffamily\color{orange}\conditionalbfseries 引理}
+\def\propositionnameTC{\normalfont\sffamily\color{orange}\conditionalbfseries 命題}
+\def\corollarynameTC{\normalfont\sffamily\color{orange}\conditionalbfseries 推論}
+\def\propertynameTC{\normalfont\sffamily\color{orange}\conditionalbfseries 性質}
+\def\factnameTC{\normalfont\sffamily\color{black}\conditionalbfseries 事實}
+\def\conjecturenameTC{\normalfont\sffamily\color{purple}\conditionalbfseries 猜想}
+\def\definitionnameTC{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 定義}
+\def\axiomnameTC{\normalfont\sffamily\color{orange}\conditionalbfseries 公理}
+\def\assumptionnameTC{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 假設}
+\def\conventionnameTC{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 約定}
+\def\hypothesisnameTC{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 假設}
+\def\notationnameTC{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 記號}
+\def\examplenameTC{\normalfont\sffamily\color{black}\conditionalbfseries 例}
+\def\problemnameTC{\normalfont\sffamily\color{black}\conditionalbfseries 問題}
+\def\questionnameTC{\normalfont\sffamily\color{black}\conditionalbfseries 問題}
+\def\exercisenameTC{\normalfont\sffamily\color{black}\conditionalbfseries 練習}
+\def\remarknameTC{\normalfont\sffamily\color{black}\conditionalbfseries 備註}
+\expandafter\def\csname definition-propositionnameTC\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries 定義-\propositionnameTC}
+\expandafter\def\csname definition-theoremnameTC\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries 定義-\theoremnameTC}
+
+%% Redefine Japanese theorems names
+\def\theoremnameJP{\normalfont\sffamily\color{orange}\conditionalbfseries 定理}
+\def\lemmanameJP{\normalfont\sffamily\color{orange}\conditionalbfseries 補題}
+\def\propositionnameJP{\normalfont\sffamily\color{orange}\conditionalbfseries 命題}
+\def\corollarynameJP{\normalfont\sffamily\color{orange}\conditionalbfseries 系}
+\def\propertynameJP{\normalfont\sffamily\color{orange}\conditionalbfseries 性質}
+\def\factnameJP{\normalfont\sffamily\color{black}\conditionalbfseries 事実}
+\def\conjecturenameJP{\normalfont\sffamily\color{purple}\conditionalbfseries 予想}
+\def\definitionnameJP{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 定義}
+\def\axiomnameJP{\normalfont\sffamily\color{orange}\conditionalbfseries 公理}
+\def\assumptionnameJP{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 仮定}
+\def\conventionnameJP{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 慣例}
+\def\hypothesisnameJP{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 仮設}
+\def\notationnameJP{\normalfont\sffamily\color{forestgreen}\conditionalbfseries 記法}
+\def\examplenameJP{\normalfont\sffamily\color{black}\conditionalbfseries 例}
+\def\problemnameJP{\normalfont\sffamily\color{black}\conditionalbfseries 問題}
+\def\questionnameJP{\normalfont\sffamily\color{black}\conditionalbfseries 問題}
+\def\exercisenameJP{\normalfont\sffamily\color{black}\conditionalbfseries 練習}
+\def\remarknameJP{\normalfont\sffamily\color{black}\conditionalbfseries 注釈}
+\expandafter\def\csname definition-propositionnameJP\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries 定義-\propositionnameJP}
+\expandafter\def\csname definition-theoremnameJP\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries 定義-\theoremnameJP}
+
+%% Redefine Russian theorems names
+\def\theoremnameRU{\normalfont\sffamily\color{orange}\conditionalbfseries Теорема}
+\def\lemmanameRU{\normalfont\sffamily\color{orange}\conditionalbfseries Лемма}
+\def\propositionnameRU{\normalfont\sffamily\color{orange}\conditionalbfseries Предложение}
+\def\corollarynameRU{\normalfont\sffamily\color{orange}\conditionalbfseries Следствие}
+\def\propertynameRU{\normalfont\sffamily\color{orange}\conditionalbfseries Имущество}
+\def\factnameRU{\normalfont\sffamily\color{black}\conditionalbfseries Факт}
+\def\conjecturenameRU{\normalfont\sffamily\color{purple}\conditionalbfseries Гипотеза}
+\def\definitionnameRU{\normalfont\sffamily\color{forestgreen}\conditionalbfseries Определение}
+\def\axiomnameRU{\normalfont\sffamily\color{orange}\conditionalbfseries Аксиома}
+\def\assumptionnameRU{\normalfont\sffamily\color{forestgreen}\conditionalbfseries Предположение}
+\def\conventionnameRU{\normalfont\sffamily\color{forestgreen}\conditionalbfseries Конвенция}
+\def\hypothesisnameRU{\normalfont\sffamily\color{forestgreen}\conditionalbfseries Гипотеза}
+\def\notationnameRU{\normalfont\sffamily\color{forestgreen}\conditionalbfseries Нотация}
+\def\examplenameRU{\normalfont\sffamily\color{black}\conditionalbfseries Пример}
+\def\problemnameRU{\normalfont\sffamily\color{black}\conditionalbfseries Проблема}
+\def\questionnameRU{\normalfont\sffamily\color{black}\conditionalbfseries Вопрос}
+\def\exercisenameRU{\normalfont\sffamily\color{black}\conditionalbfseries Упражнение}
+\def\remarknameRU{\normalfont\sffamily\color{black}\conditionalbfseries Замечание}
+\expandafter\def\csname definition-propositionnameRU\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries Определение-\propositionnameRU}
+\expandafter\def\csname definition-theoremnameRU\endcsname{\normalfont\sffamily\color{orange}\conditionalbfseries Определение-\theoremnameRU}
%% Theorem environments
\theoremstyle{basic}
@@ -461,29 +591,222 @@
\CreateTheorem{lemma}[theorem]
\CreateTheorem{proposition}[theorem]
\CreateTheorem{corollary}[theorem]
+\CreateTheorem{definition-proposition}[theorem]
+\CreateTheorem{definition-theorem}[theorem]
+\CreateTheorem{property}[theorem]
\CreateTheorem{fact}[theorem]
-\CreateTheorem{conjecture}<highest>
+\CreateTheorem{conjecture}[theorem]
\CreateTheorem*{theorem*}
\CreateTheorem*{lemma*}
\CreateTheorem*{proposition*}
\CreateTheorem*{corollary*}
+\CreateTheorem*{definition-proposition*}
+\CreateTheorem*{definition-theorem*}
+\CreateTheorem*{property*}
\CreateTheorem*{fact*}
\CreateTheorem*{conjecture*}
\CreateTheorem{definition}[theorem]
-\CreateTheorem{example}<highest>
-\CreateTheorem{problem}<highest>
+\CreateTheorem{axiom}[theorem]
+\CreateTheorem{assumption}[theorem]
+\CreateTheorem{convention}[theorem]
+\CreateTheorem{hypothesis}[theorem]
+\CreateTheorem{notation}[theorem]
+\CreateTheorem{example}[theorem]
+\CreateTheorem{problem}[theorem]
+\CreateTheorem{question}[theorem]
+\CreateTheorem{exercise}[theorem]
\CreateTheorem*{definition*}
+\CreateTheorem*{axiom*}
+\CreateTheorem*{assumption*}
+\CreateTheorem*{convention*}
+\CreateTheorem*{hypothesis*}
+\CreateTheorem*{notation*}
\CreateTheorem*{example*}
\CreateTheorem*{problem*}
+\CreateTheorem*{question*}
+\CreateTheorem*{exercise*}
\theoremstyle{emphasis}
\CreateTheorem{remark}<highest>
\CreateTheorem*{remark*}
+\numberwithin{equation}{highest}
+
+%% Cref label format
+\creflabelformat{theoremEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factEN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureEN}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionEN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionEN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionEN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisEN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationEN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleEN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemEN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionEN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseEN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionEN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+\creflabelformat{theoremFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factFR}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureFR}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionFR}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionFR}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionFR}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisFR}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationFR}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleFR}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemFR}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionFR}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseFR}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionFR}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+\creflabelformat{theoremDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factDE}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureDE}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionDE}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionDE}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionDE}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisDE}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationDE}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleDE}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemDE}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionDE}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseDE}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionDE}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+\creflabelformat{theoremCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factCN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureCN}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionCN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionCN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionCN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisCN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationCN}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleCN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemCN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionCN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseCN}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionCN}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+\creflabelformat{theoremTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factTC}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureTC}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionTC}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionTC}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionTC}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisTC}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationTC}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleTC}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemTC}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionTC}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseTC}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionTC}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+\creflabelformat{theoremJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factJP}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureJP}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionJP}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionJP}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionJP}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisJP}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationJP}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleJP}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemJP}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionJP}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseJP}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionJP}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+\creflabelformat{theoremRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{lemmaRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propositionRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{corollaryRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{propertyRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{factRU}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{conjectureRU}{#2{\normalfont\sffamily\color{purple}\conditionalbfseries#1}#3}
+\creflabelformat{definitionRU}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{axiomRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{assumptionRU}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{conventionRU}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{hypothesisRU}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{notationRU}{#2{\normalfont\sffamily\color{forestgreen}\conditionalbfseries#1}#3}
+\creflabelformat{exampleRU}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{problemRU}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{questionRU}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{exerciseRU}{#2{\normalfont\sffamily\color{black}\conditionalbfseries#1}#3}
+\creflabelformat{definition-theoremRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+\creflabelformat{definition-propositionRU}{#2{\normalfont\sffamily\color{orange}\conditionalbfseries#1}#3}
+
+%% Icons on the margin
\RequirePackage{marginnote}
+\RequirePackage{ifoddpage}
\newcommand{\mparadjust}[1]{\renewcommand*{\marginnotevadjust}{#1}}
-\apptocmd{\remark}{\reversemarginpar\mparadjust{-.25em}\marginnote{\ideabulb[0.3]{orange}\hspace*{-.5em}}\normalmarginpar}{}{\FAIL}
-\apptocmd{\conjecture}{\reversemarginpar\mparadjust{-.25em}\marginnote{\questionmark[0.3]{purple}\hspace*{-.5em}}\normalmarginpar}{}{\FAIL}
+\pretocmd{\remark}{%
+ \if@twoside\checkoddpage%
+ \ifoddpage\reversemarginpar\fi%
+ \else%
+ \reversemarginpar%
+ \fi%
+ \mparadjust{-.25em}%
+ \marginnote{\ideabulb[0.3]{orange}%
+ \ifIsBook%
+ \hspace*{-.2em}%
+ \else%
+ \hspace*{-.5em}%
+ \fi%
+ }\normalmarginpar%
+}{}{\FAIL}
+\pretocmd{\conjecture}{%
+ \if@twoside\checkoddpage%
+ \ifoddpage\reversemarginpar\fi%
+ \else%
+ \reversemarginpar%
+ \fi%
+ \mparadjust{-.25em}%
+ \marginnote{\questionmark[0.3]{purple}%
+ \ifIsBook%
+ \hspace*{-.2em}%
+ \else%
+ \hspace*{-.5em}%
+ \fi%
+ }\normalmarginpar%
+}{}{\FAIL}
\RequirePackage{iftex}
\ifXeTeX
@@ -519,15 +842,20 @@
\theoremstyle{simple}% as the default style for user-defined environments
-\let\proof\relax
-\let\endproof\relax
-\def\proofnameCN{\proofname}
-\def\proofnameEN{\proofname}
-\def\proofnameFR{\proofname}
-\CreateTheorem*{proof}
+\renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \normalfont \topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item[\hskip\labelsep
+ \itshape
+ #1\hspace{.4em}%
+ \textcolor{gray!55!paper}{$|$}]\ignorespaces
+}{%
+ \popQED\endtrivlist\@endpefalse
+}
\RequirePackage[many]{tcolorbox}
-\if@colorclass@fast
+\if@colorist@fast
\tcbstartdraftmode
\fi
\tcolorboxenvironment{theorem}
@@ -562,6 +890,38 @@
{enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
left=3.5mm,right=3.5mm,
opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{property}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{property*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{axiom}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{axiom*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{definition-proposition}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{definition-proposition*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{definition-theorem}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
+\tcolorboxenvironment{definition-theorem*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ left=3.5mm,right=3.5mm,
+ opacityframe=0.9,colframe=orange,arc=.7mm}
\tcolorboxenvironment{fact}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
@@ -589,13 +949,53 @@
left=4mm,right=4mm,top=1mm,bottom=1mm,
colback=lightorange!10!paper,boxrule=0pt,frame hidden,
borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{assumption}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{assumption*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{convention}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{convention*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{hypothesis}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{hypothesis*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{notation}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
+\tcolorboxenvironment{notation*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ left=4mm,right=4mm,top=1mm,bottom=1mm,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen},arc=.7mm}
\tcolorboxenvironment{example}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
- boxrule=0pt,frame hidden,arc=.7mm}
+ boxrule=0pt,frame hidden,arc=.7mm,lines before break=3}
\tcolorboxenvironment{example*}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
- boxrule=0pt,frame hidden,arc=.7mm}
+ boxrule=0pt,frame hidden,arc=.7mm,lines before break=3}
\tcolorboxenvironment{problem}
{enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,
@@ -604,6 +1004,13 @@
{enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,
boxrule=0pt,frame hidden,arc=.7mm}
+\tcolorboxenvironment{remark}
+ {enhanced jigsaw,pad at break*=1mm,breakable,oversize,
+ opacityframe=0,opacityback=0,lines before break=3}
+\tcolorboxenvironment{remark*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,oversize,
+ opacityframe=0,opacityback=0,lines before break=3}
+
\ExplSyntaxOn
\NewDocumentCommand \AfterEnvEnd { +m }
{ \colorist_after_env_end:nw {#1} }
@@ -665,88 +1072,63 @@
{\ScanEnv*{definition*}%
{\vspace{-1.05\baselineskip}}%
{}}}}
-
\AddToHook{env/definition/end}{\scandefinitionenv}%
\AddToHook{env/definition*/end}{\scandefinitionenv}%
-%%================================
-%% Language configuration
-%%================================
-\if@colorist@polyglossia
- \RequirePackage{polyglossia}
- \setdefaultlanguage{english}
- \setotherlanguage[frenchpart=false]{french}
-\else
- \PassOptionsToPackage{french,english}{babel}
- \RequirePackage{babel}
- \frenchsetup{PartNameFull=false}
-\fi
-\newcommand{\colorist@langconfig@chinese}{%
- \def\abstractname{摘要}%
- \def\proofname{证明}%
- \def\contentsname{目录}%
- \def\listfigurename{插图}%
- \def\listtablename{表格}%
- \def\figurename{图}%
- \def\tablename{表}%
- \def\indexname{索引}%
- \def\appendixname{附录}%
- \def\bibname{参考文献}%
- \renewcommand{\languagename}{chinese}%
-}
-\newcommand{\colorist@langconfig@english}{%
- \selectlanguage{english}%
-}
-\newcommand{\colorist@langconfig@french}{%
- \selectlanguage{french}%
- \def\frenchpartname{Partie}%
-}
-\newcommand{\UseLanguageCORE}[1]{%
- \ifstrequal{#1}{chinese}{\onehalfspacing\colorist@langconfig@chinese}{}%
- \ifstrequal{#1}{Chinese}{\onehalfspacing\colorist@langconfig@chinese}{}%
- \ifstrequal{#1}{english}{\setstretch{1.07}\colorist@langconfig@english}{}%
- \ifstrequal{#1}{English}{\setstretch{1.07}\colorist@langconfig@english}{}%
- \ifstrequal{#1}{french}{\setstretch{1.07}\colorist@langconfig@french}{}%
- \ifstrequal{#1}{French}{\setstretch{1.07}\colorist@langconfig@french}{}%
-}
-\newcommand{\UseLanguage}[1]{%
- \ifx\@onlypreamble\@notprerr%
- \UseLanguageCORE{#1}%
- \else%
- \AfterEndPreamble{\UseLanguageCORE{#1}}%
- \fi%
-}
-\newcommand{\UseOtherLanguage}[2]{%
-\begingroup%
- \ifstrequal{#1}{chinese}{\colorist@langconfig@chinese}{}%
- \ifstrequal{#1}{Chinese}{\colorist@langconfig@chinese}{}%
- \ifstrequal{#1}{english}{\colorist@langconfig@english}{}%
- \ifstrequal{#1}{English}{\colorist@langconfig@english}{}%
- \ifstrequal{#1}{french}{\colorist@langconfig@french}{}%
- \ifstrequal{#1}{French}{\colorist@langconfig@french}{}%
- #2%
-\endgroup%
-}
+\def\scanassumptionenv{%
+ \AfterEnvEnd{%
+ \ScanEnv*{assumption}%
+ {\vspace{-1.05\baselineskip}}%
+ {\ScanEnv*{assumption*}%
+ {\vspace{-1.05\baselineskip}}%
+ {}}}}
+\AddToHook{env/assumption/end}{\scanassumptionenv}%
+\AddToHook{env/assumption*/end}{\scanassumptionenv}%
-\ifbool{IsBook}{}{
+\def\scanconventionenv{%
+ \AfterEnvEnd{%
+ \ScanEnv*{convention}%
+ {\vspace{-1.05\baselineskip}}%
+ {\ScanEnv*{convention*}%
+ {\vspace{-1.05\baselineskip}}%
+ {}}}}
+\AddToHook{env/convention/end}{\scanconventionenv}%
+\AddToHook{env/convention*/end}{\scanconventionenv}%
+
+\def\scanhypothesisenv{%
+ \AfterEnvEnd{%
+ \ScanEnv*{hypothesis}%
+ {\vspace{-1.05\baselineskip}}%
+ {\ScanEnv*{hypothesis*}%
+ {\vspace{-1.05\baselineskip}}%
+ {}}}}
+\AddToHook{env/hypothesis/end}{\scanhypothesisenv}%
+\AddToHook{env/hypothesis*/end}{\scanhypothesisenv}%
+
+\def\scannotationenv{%
+ \AfterEnvEnd{%
+ \ScanEnv*{notation}%
+ {\vspace{-1.05\baselineskip}}%
+ {\ScanEnv*{notation*}%
+ {\vspace{-1.05\baselineskip}}%
+ {}}}}
+\AddToHook{env/notation/end}{\scannotationenv}%
+\AddToHook{env/notation*/end}{\scannotationenv}%
+
+\ifbool{IsBook}{}{%
%%================================
%% Title block style
%%================================
\renewcommand{\@maketitle}{%
- \noindent%
- {\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}}%
- \vspace{-\parskip}%
- \begin{center}%
- {\large\@title}\\\medskip%
- \color{black!80!paper}%
- {\scshape\@author}\\\smallskip%
- {\@date}%
- \end{center}%
- \vspace{-\parskip}%
- \vspace{-.5\baselineskip}%
- {\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}\par}%
- \medskip%
+\begin{center}%
+ \color{maintheme}%
+ {\Large\sffamily\scshape\conditionalbfseries\@title}\\\bigskip%
+ \color{black!80!paper}%
+ {\scshape\@author}\\\smallskip%
+ {\@date}%
+\end{center}%
+\medskip%
}
\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
@@ -754,10 +1136,31 @@
%% Abstract style
%%================================
\renewenvironment{abstract}
-{\small\centerline{\textsc{\abstractname}\vspace{-0.3\baselineskip}}
+{\small{\centerline{\textsc{\conditionalbfseries\abstractname}}\vspace{-0.3\baselineskip}}
\color{black!80!paper}\begin{quotation}}
{\end{quotation}\medskip}
+%%================================
+%% Keyword
+%%================================
+\def\keywordnameEN{\textsc{Keywords}}
+\def\keywordnameFR{\textsc{Mots clés}}
+\def\keywordnameDE{\textsc{Schlüsselwörter}}
+\def\keywordnameCN{关键词}
+\def\keywordnameTC{關鍵詞}
+\def\keywordnameJP{キーワード}
+\def\keywordnameRU{Ключевые слова}
+
+\newenvironment{keyword}
+{\small{\centerline{{\conditionalbfseries\csname keywordname\csname\languagename ABBR\endcsname\endcsname}}\vspace{-0.3\baselineskip}}
+ \color{black!80!paper}\begin{center}}
+{\end{center}\medskip}
+
+%%================================
+%% Simulate features of amsart
+%%================================
+\RequirePackage{PJLamssim}
+
}
\endinput
diff --git a/macros/latex/contrib/minimalist/README.md b/macros/latex/contrib/minimalist/README.md
index 084e34972f..05a62e0477 100644
--- a/macros/latex/contrib/minimalist/README.md
+++ b/macros/latex/contrib/minimalist/README.md
@@ -2,27 +2,28 @@
# `minimalist` bundle: write you documents in a simple and clear way
-This is collection of styles and classes for typesetting articles and books in a
-simple and clear design. It mainly consists of two parts.
+A collection of styles and classes that helps you typesetting articles and books
+with a simple and clear design. It mainly consists of two parts.
- Main part:
- - minimalist.sty : the main style
- - minimart.cls : class for typesetting articles
- - minimbook.cls : class for typesetting books
+ - `minimalist.sty` : the main style
+ - `minimart.cls` : class for typesetting articles
+ - `minimbook.cls` : class for typesetting books
- They can be used with any LaTeX engine. Currently they have native support
- to English and French typesetting. (I have planed to add more language
- support)
+ They can be used with any major TeX engine. Currently they have native
+ support to English, French and German typesetting (more language to be
+ added).
- Derivative part (they have separate pages on CTAN):
- - einfart.cls : more advanced class for typesetting articles
- - simplivre.cls : more advanced class for typesetting books
+ - `einfart.cls` : more advanced class for typesetting articles
+ - `simplivre.cls` : more advanced class for typesetting books
They are similar to the main classes, but have unicode support, thus can
only be used with either XeLaTeX or LuaLaTeX. Currently they have native
- support to English, French and Chinese typesetting, and also use more
- beautiful fonts. (I have planed to add more language support)
+ support to Chinese (both simplified and traditional), English, French,
+ German, Japanese and Russian typesetting (more language to be added), and
+ also use more beautiful fonts.
# License
diff --git a/macros/latex/contrib/minimalist/minimalist-doc.pdf b/macros/latex/contrib/minimalist/minimalist-doc.pdf
index ac42223ffa..c89d0a2595 100644
--- a/macros/latex/contrib/minimalist/minimalist-doc.pdf
+++ b/macros/latex/contrib/minimalist/minimalist-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/minimalist/minimalist-doc.tex b/macros/latex/contrib/minimalist/minimalist-doc.tex
index c6c5cf1b2f..0b1b537bc8 100644
--- a/macros/latex/contrib/minimalist/minimalist-doc.tex
+++ b/macros/latex/contrib/minimalist/minimalist-doc.tex
@@ -1,24 +1,26 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{minimart}
\linenumbers % Enable line numbers
%%================================
-%% TeX logo and URL
+%% Import toolkit
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
%%================================
%% For typestting code
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -31,9 +33,9 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,subsection,
+ color,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
@@ -42,6 +44,31 @@
}
{\ResumeLineNumbers}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][Remind]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% Names
+%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
\providecommand{\minimbook}{\textsf{minimbook}}
@@ -53,117 +80,306 @@
%%================================
\begin{document}
-\title{\minimalist{}, write your articles or books in a simple and clear way\thanks{Corresponding to: \texttt{\minimalist{} 2021/03/15}}}
-\author{Jinwen}
-\date{March 2021, Beijing}
+\title{\minimalist{}, write your articles or books in a simple and clear way}
+\author{Jinwen XU}
+\thanks{Corresponding to: \texttt{\minimalist{} 2021/05/23}}
+\date{May 2021, Beijing}
\maketitle
\begin{abstract}
- \minimalist{} is series of styles and classes for you to typeset your articles or books in a simple and clear manner. My original intention in designing this series was to write drafts and notes that look simple but not shabby.
+ \minimalist{} is a series of styles and classes for you to typeset your articles or books in a simple and clear manner. My original intention in designing this series was to write drafts and notes that look simple yet not shabby.
- The entire collection includes \verb|minimalist.sty|, which is the main style shared by all the following classes; \verb|minimart.cls| for typesetting articles and \verb|minimbook.cls| for typesetting books. They can be used with all LaTeX engines, with native support to English and French typesetting via \lstinline|\UseLanguage|, see the instruction below for detail.
+ The entire collection includes \verb|minimalist.sty|, which is the main style shared by all of the following classes; \verb|minimart.cls| for typesetting articles and \verb|minimbook.cls| for typesetting books. They compile with any major \TeX{} engine, with native support to English, French and German typesetting via \lstinline|\UseLanguage| (see the instruction below for detail).
- You can also found \einfart{} and \simplivre{} on CTAN. They are the enhanced version of \minimart{} and \minimbook{} with unicode support. With this, they can access to more beautiful fonts, and also have native support for Chinese typesetting. On the other hand, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX} (not pdf\LaTeX).
+ You can also found \einfart{} and \simplivre{} on CTAN. They are the enhanced version of \minimart{} and \minimbook{} with unicode support. With this, they can access to more beautiful fonts, and also have native support for Chinese, Japanese and Russian typesetting. On the other hand, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX} (not pdf\LaTeX).
This documentation is typeset using \minimart{}. You can think of it as a short introduction and demonstration.
\end{abstract}
\tableofcontents
-\section{How to load it}
+
+\bigskip
+\begin{remind}
+ Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
+\end{remind}
+
+\clearpage
+\section{Initialization}
+
+\subsection{How to load it}
You can directly use \minimart{} or \minimbook{} as your document class. In this way, you can directly begin writing your document, without having to worry about the configurations.
\begin{code}
\documentclass{minimart} (*{\normalfont or}*) \documentclass{minimbook}
\end{code}
-And of course, you can also use the default classes \textsf{article} or \textsf{book}, and load the \minimalist{} package. This way, only the basic styles are set, and you can thus use your preferred fonts and page layout. All the features mentioned in this article (except for draft marks) are provided.
+And of course, you can also use the default classes \textsf{article} or \textsf{book}, and load the \minimalist{} package. This way, only the basic styles are set, and you can thus use your preferred fonts and page layout. All the features mentioned in this article are provided.
+
\begin{code}
\usepackage{minimalist}
\end{code}
-\subsection{A useful switch: the option \textsf{fast} or \textsf{draft}}
-You can use the option \verb|fast| or \verb|draft| to typeset in a fast but slightly rough manner. The main differences are:
+\subsection{Options}
+
+\minimalist{} offers the following options:
+
\begin{itemize}
- \item Do not use hyperref;
- \item Do not use tikz (and thus tcolorbox);
+ \item \texttt{draft} or \texttt{fast}
+ \begin{itemize}
+ \item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
+ \begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Enable the fast mode of \ProjLib{} toolkit.
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Allow boldface. When this option is enabled, the title, titles of all levels and names of theorem-like environments will be bolded.
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item Classic mode. When this option is enabled, the style will become more regular: paragraphs are indented, the use of underlines are reduced, heading styles are changed, and the theorem styles will be much closer to common styles.
+ \end{itemize}
\end{itemize}
-During the writing stage of your document, it is recommended to use the \verb|fast| option to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+\begin{remind}
+ \begin{itemize}
+ \item During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. At the end, one should remove the ``fast'' option to get the final version. When in \verb|fast| mode, there will be a watermark "DRAFT" to indicate that you are currently in the draft mode.
+ \item \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
+ \end{itemize}
+\end{remind}
+
+\bigskip
+Additionally, \minimart{} and \minimbook{} offers the following options:
+\begin{itemize}
+ \item \texttt{a4paper} or \texttt{b5paper}
+ \begin{itemize}
+ \item Optional paper size. The default paper size is 7in $\times$ 10in.
+ \end{itemize}
+\end{itemize}
+
+% \section{On the fonts}
+% By default, \minimart{} and \minimbook{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+
+% % \begin{itemize}
+% % \item English main font. \textsf{English sans serif font}.
+% % \item 中文主要字体, \textsf{中文无衬线字体}
+% % \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+% % \end{itemize}
+
+% When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
\section{Some instructions}
-There is no indentation at the beginning of each paragraph, but there will be a half-line space between each two paragraphs. like this ---
+Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
+
+\subsection{Language configuration}
+
+\minimart{} has multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian. The language can be selected by the following macros:
+
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
+\end{itemize}
+
+\meta{language name} can be:
+\begin{itemize}
+ \item Simplified Chinese: \texttt{Chinese}, \texttt{chinese}, \texttt{SChinese}, \texttt{schinese}, \texttt{SimplifiedChinese} or \texttt{simplifiedchinese}
+ \item Traditional Chinese: \texttt{TChinese}, \texttt{tchinese}, \texttt{TraditionalChinese} or \texttt{traditionalchinese}
+ \item English: \texttt{English} or \texttt{english}
+ \item French: \texttt{French} or \texttt{french}
+ \item German: \texttt{German}, \texttt{german} or \texttt{ngerman}
+ \item Japanese: \texttt{Japanese} or \texttt{japanese}
+ \item Russian: \texttt{Russian} or \texttt{russian}
+\end{itemize}
+
+\medskip
+In addition, you can also add new settings to selected language:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to all supported languages.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to the selected language \meta{language name}.
+ \end{itemize}
+\end{itemize}
+For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
-Here is the next paragraph.
\subsection{Theorems and how to reference them}
-Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+Environments such as definitions and theorems have been pre-defined and can be used directly.
+
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The display of these environments will change according to the current language.
+
+When referencing a theorem-like environment, it is recommended to use clever reference \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{remind}[Example]
\begin{code}
\begin{definition}[Strange things] \label{def: strange} ...
\end{code}
+
will produce
\begin{definition}[Strange things]\label{def: strange}
- This is the definition of some strange objects.
+ This is the definition of some strange objects. There is approximately an one-line space before and after the theorem environment, and there will be a symbol to mark the end of the environment.
\end{definition}
-There is approximately an one-line space before and after the theorem environment. There will be a symbol to mark the end of the environment.
+\lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+
+After using \lstinline|\UseLanguage{French}|, a theorem will be displayed as:
+
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorème en français.
+\end{theorem}
+
+By default, when referenced, the name of the theorem always matches the language of the context in which the theorem is located. For example, the definition above is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}. If you want the name of the theorem to match the current context when referencing, you can add \texttt{regionalref} to the global options.
+\end{remind}
+
+\UseLanguage{English}
-When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
\subsection{Define a new theorem-like environment}
-First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+If you need to define a new theorem-like environment, you must first define the name of the environment in the language used: \lstinline|\|\meta{name of environment}\meta{language abbr}, where \meta{language abbr} is the abbreviation of language, which can be:
+% \vspace{-.5\baselineskip}
+\begin{longtable}{ll|ll}
+ \texttt{CN} & Simplified Chinese & \texttt{DE} & German\\
+ \texttt{TC} & Traditional Chinese & \texttt{JP} & Japanese\\
+ \texttt{EN} & English & \texttt{RU} & Russian\\
+ \texttt{FR} & French & &\\
+\end{longtable}
+
+\vspace{-.5\baselineskip}
+\begin{remind}
+ If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
+\end{remind}
+
+And then define this environment in one of following five ways:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define an unnumbered environment \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
+ \item This method is usually useful in the following two situations:
+ \begin{enumerate}
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ It uses \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
+\end{remind}
+
\def\proofideanameEN{Idea}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
+
+\bigskip
+Here is an example. The following code:
-For example,
\begin{code}
\def\proofideanameEN{Idea}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
\end{code}
-defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context. The effect is as follows:
+
+\begin{proofidea*}
+ The \lstinline|proofidea*| environment.
+\end{proofidea*}
\begin{proofidea}
- ...
+ The \lstinline|proofidea| environment.
\end{proofidea}
\subsection{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part (this is a feature provide by the classes, not the \minimalist{} package). For example:
+You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+ \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph|:
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+ \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{Language configuration}
-You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
+\subsection{On the title, abstract and keywords}
-For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
+\minimart{} has both the features of standard classes and that of the \AmS{} classes.
-\UseLanguage{French}
-\begin{theorem}[Inutile]\label{thm}
- Un théorème en français. \dnf
-\end{theorem}
+Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
-When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}.
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
+
+or written in the way of \AmS{} classes:
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
+
+\medskip
+The author information can contain multiple groups, written as:
+
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
+
+Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
-\UseLanguage{English}
\subsection{On the line numbers}
Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
@@ -176,35 +392,117 @@ In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnote
\end{itemize}
This is a disadvantage brought about by the underline decoration of the title.
+
+\section{Known issues}
+
+\begin{itemize}[itemsep=.6em]
+ \item The font settings are still not perfect.
+ \item Since many features are based on the \ProjLib{} toolkit, \minimalist{} (and hence \minimart{} and \minimbook{}) inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
+ \item There are still many things that can be optimized in the code.
+\end{itemize}
+
+\clearpage
\section{Document templates}
-\singlespacing
+\subsection{The standard way}
+
+If you want to write in the standard way, you can refer to the following example:
-\LocallyStopLineNumbers
-\begin{minipage}{0.45\textwidth}
\begin{code}
-\documentclass[fast]{minimart}
+\documentclass{minimart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\ResumeLineNumbers
-\bigskip
-(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+If you wish to switch to the standard class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+
+\clearpage
+\subsection{The \texorpdfstring{\AmS{}}{AMS} way}
+
+If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
+
+\begin{code}
+\documentclass{minimart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
+
+\begin{document}
+
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+
+\maketitle
+
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
+
+\end{document}
+\end{code}
+
+In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
\end{document}
diff --git a/macros/latex/contrib/minimalist/minimalist.sty b/macros/latex/contrib/minimalist/minimalist.sty
index 2648a34701..12a4b33407 100644
--- a/macros/latex/contrib/minimalist/minimalist.sty
+++ b/macros/latex/contrib/minimalist/minimalist.sty
@@ -17,22 +17,29 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesPackage{minimalist}
- [2021/03/15 A simple and clear style for articles and books]
-\RequirePackage{etoolbox}
+ [2021/05/23 A simple and clear style for articles and books]
\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
\SetupKeyvalOptions{%
family = @minimalist,
prefix = @minimalist@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{polyglossia}
+\DeclareBoolOption[false]{allowbf}
+\DeclareBoolOption[false]{classical}
\ProcessKeyvalOptions*\relax
\if@minimalist@draft
\@minimalist@fasttrue
\fi
+\if@minimalist@allowbf
+ \newcommand{\conditionalbfseries}{\bfseries\colorlet{PJLtempcolor}{.}\color{PJLtempcolor!83!paper}}
+\else
+ \newcommand{\conditionalbfseries}{}
+\fi
+
\newif\ifIsBook
\ifdefined\chapter\IsBooktrue\else\IsBookfalse\fi
@@ -40,17 +47,24 @@
%% Title fonts
%%================================
\RequirePackage{anyfontsize}
-\newcommand{\partfont}{\sffamily}
-\newcommand{\chapfont}{\sffamily}
-\newcommand{\secfont}{}
-\newcommand{\subsecfont}{}
-\newcommand{\subsubsecfont}{}
+\if@minimalist@classical
+\newcommand{\partfont}{\conditionalbfseries\sffamily}
+\newcommand{\chapfont}{\conditionalbfseries\sffamily}
+\newcommand{\secfont}{\conditionalbfseries\sffamily}
+\newcommand{\subsecfont}{\conditionalbfseries\sffamily}
+\newcommand{\subsubsecfont}{\conditionalbfseries\sffamily}
+\else
+\newcommand{\partfont}{\conditionalbfseries\sffamily}
+\newcommand{\chapfont}{\conditionalbfseries\sffamily}
+\newcommand{\secfont}{\conditionalbfseries}
+\newcommand{\subsecfont}{\conditionalbfseries}
+\newcommand{\subsubsecfont}{\conditionalbfseries}
+\fi
%%================================
-%% Color
+%% Paper configuration
%%================================
-\RequirePackage{xcolor}
-\definecolor{paper}{RGB}{255,255,255}
+\RequirePackage{PJLpaper}
%%================================
%% Footer
@@ -58,6 +72,7 @@
\RequirePackage{geometry}
\RequirePackage{fancyhdr}
\RequirePackage{extramarks}
+\AtEndPreamble{\fancyhfoffset{0pt}}
\fancypagestyle{fancy}{
\fancyhf{}
\if@twoside
@@ -128,8 +143,7 @@
\renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
\fi
\renewcommand*{\sectionmark}[1]{%
- \markright{\raisebox{.03em}{\footnotesize/}%
- ~\thesection~\raisebox{.03em}{\footnotesize/}~~~#1}}
+ \markright{\sec@decochar~\thesection~\sec@decochar~~~#1}}
}{
\if@twoside
\renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
@@ -137,11 +151,12 @@
\renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
\fi
}
-%%===============================
+%%================================
%% Line spacing
%%================================
-\RequirePackage{setspace}
-\setstretch{1.07}
+\RequirePackage{PJLlang}
+\PJLsetlinespacing{\setstretch{1.07}}
+\PJLsetCJKlinespacing{\onehalfspacing}
\raggedbottom
%%================================
@@ -154,11 +169,12 @@
\RequirePackage{mathtools}
+\ifdefined\linenomathpatch\else
\newcommand*\linenomathpatch[1]{%
\cspreto{#1}{\linenomath}%
\cspreto{#1*}{\linenomath}%
- \cspreto{end#1}{\endlinenomath}%
- \cspreto{end#1*}{\endlinenomath}%
+ \csappto{end#1}{\endlinenomath}%
+ \csappto{end#1*}{\endlinenomath}%
}
\newcommand*\linenomathpatchAMS[1]{%
\cspreto{#1}{\linenomathAMS}%
@@ -179,6 +195,7 @@
\linenomathpatchAMS{align}
\linenomathpatchAMS{alignat}
\linenomathpatchAMS{flalign}
+\fi
\newif\ifLNturnsON
\def\LocallyStopLineNumbers{\LNturnsONfalse%
@@ -196,6 +213,20 @@
\PassOptionsToPackage{normalem}{ulem}
\RequirePackage{ulem}
+\newcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}
+\gappto{\PJLlang@langconfig@common}{%
+\renewcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}%
+}
+\gappto{\PJLlang@langconfig@chinese}{%
+\renewcommand{\partstring}{第~\thepart~部分}%
+}
+\gappto{\PJLlang@langconfig@tchinese}{%
+\renewcommand{\partstring}{第~\thepart~部分}%
+}
+\gappto{\PJLlang@langconfig@japanese}{%
+\renewcommand{\partstring}{第~\thepart~部}%
+}
+
\ifbool{IsBook}{
%% Part
\titleclass{\part}{top} % make part like a chapter
@@ -203,7 +234,7 @@
{\thispagestyle{part}%
\LocallyStopLineNumbers%
\partfont\filleft}
- {\MakeUppercase{\partname~\protect\thepart}}
+ {\partstring}
{1em}
{\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
[\ResumeLineNumbers]
@@ -252,7 +283,7 @@
\titleformat{\part}[display]
{\LocallyStopLineNumbers%
\partfont\filleft}
- {\MakeUppercase{\partname~\protect\thepart}}
+ {\partstring}
{.3em}
{\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
[\ResumeLineNumbers]
@@ -277,15 +308,25 @@
}
%% Section
+\renewcommand\thesection{\arabic{section}}
+\if@minimalist@classical
+\newcommand\sec@decochar{}
+\titleformat{\section}
+ {\LocallyStopLineNumbers%
+ \secfont\centering}
+ {\thesection}{.75em}
+ {#1}
+ [\ResumeLineNumbers]
+\else
\newcommand\seculine{\bgroup\markoverwith{\color{gray!55!paper}%
\rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
-\renewcommand\thesection{\arabic{section}}
+\newcommand\sec@decochar{\raisebox{.03em}{\normalfont\footnotesize/}}
\titleformat{\section}
{\LocallyStopLineNumbers%
\secfont\centering}{}{0em}
- {{\small\textcolor{gray!55!paper}{\raisebox{.03em}{\footnotesize/}}%
- \,\,\textcolor{black!80!paper}{\arabic{section}}%
- \,\,\textcolor{gray!55!paper}{\raisebox{.03em}{\footnotesize/}}}\\
+ {{\small\textcolor{gray!55!paper}{\sec@decochar}%
+ \,\,\textcolor{black!90!paper}{\conditionalbfseries\arabic{section}}%
+ \,\,\textcolor{gray!55!paper}{\sec@decochar}}\\
\seculine{#1}}
[\ResumeLineNumbers]
\titleformat{name=\section,numberless}
@@ -294,12 +335,21 @@
\secfont\centering}{}{0em}
{\seculine{#1}}
[\ResumeLineNumbers]
+\fi
%% Subsection
-\newcommand\subseculine{\bgroup\markoverwith{\color{gray!55!paper}%
- \rule[-1ex]{2pt}{.75pt}}\ULon}
\renewcommand\thesubsection{%
\ifnum\c@section=0\else\arabic{section}.\fi\arabic{subsection}}
+\if@minimalist@classical
+\titleformat{\subsection}
+ {\LocallyStopLineNumbers%
+ \subsecfont}
+ {\thesubsection}{.75em}
+ {#1}
+ [\ResumeLineNumbers]
+\else
+\newcommand\subseculine{\bgroup\markoverwith{\color{gray!55!paper}%
+ \rule[-1ex]{2pt}{.75pt}}\ULon}
\titleformat{\subsection}
{\LocallyStopLineNumbers%
\subsecfont}{}{0em}
@@ -310,22 +360,26 @@
\subsecfont}{}{0em}
{\subseculine{#1}}
[\ResumeLineNumbers]
+\fi
%% Subsubsection
\titleformat{\subsubsection}
{\LocallyStopLineNumbers%
- \subsubsecfont}{\thesubsubsection}{1em}
+ \color{paper!30!-paper}\subsubsecfont}{\thesubsubsection}{1em}
{#1}
[\ResumeLineNumbers]
-\titlespacing{\subsubsection}{0pt}{.8\baselineskip}{.5\baselineskip}
+
+\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
+\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
+\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.2\baselineskip}
%%================================
-%% TOC format
+%% ToC format
%%================================
\RequirePackage{titletoc}
\titlecontents{part}
[0em]
- {\addvspace{1.5pc}\filcenter\partfont}
+ {\addvspace{1.5pc}\filcenter\normalfont}
{\thecontentslabel\\\uppercase}
{}
{} % without page number
@@ -333,32 +387,32 @@
\ifbool{IsBook}{
\titlecontents{chapter}
[2em] % i.e., 0em (part) + 2em
- {\addvspace{.5pc}\chapfont}
+ {\addvspace{.5pc}\normalfont}
{\contentslabel{2em}}
{\hspace*{-2em}}
- {\normalfont\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
- {\secfont}
+ {\normalfont}
{\contentslabel{1.75em}}
{\hspace*{-1.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
\titlecontents{subsection}
[7em] % i.e., 4em (section) + 3em
- {\subsecfont}
+ {\normalfont}
{\contentslabel{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
}{
\titlecontents{section}
[2em] % i.e., 0em (part) + 2em
- {\secfont}
+ {\normalfont}
{\contentslabel{1.75em}}
{\hspace*{-1.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
\titlecontents{subsection}
[5em] % i.e., 2em (section) + 3em
- {\subsecfont}
+ {\normalfont}
{\contentslabel{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
@@ -370,6 +424,8 @@
\RequirePackage{enumitem}
\setlist{noitemsep,leftmargin=2em}
\renewcommand\labelitemi{\color{gray!50}$\bullet$}
+\renewcommand\labelitemii{\color{gray!55}--}
+\renewcommand\labelitemiii{\color{gray!55}\texttt{*}}
%%================================
%% Blank page
@@ -386,136 +442,120 @@
\null\newpage\fi\fi}
%%================================
+%% Draft mark
+%%================================
+\RequirePackage{PJLdraft}
+
+%%================================
%% Theorems
%%================================
\RequirePackage{amsthm}
+\if@minimalist@classical
+ \if@minimalist@allowbf
+ \newtheoremstyle{simple}%
+ {}{}%
+ {\normalfont}{}%
+ {\normalfont}{}%
+ {0pt}%
+ {{\conditionalbfseries\sffamily\thmname{#1}\thmnumber{ #2}}\hspace{.4em}%
+ {\color{gray}\thmnote{\ensuremath{(\text{#3})}~~}}}
+ \else
+ \newcommand\thmuline{\bgroup\markoverwith{\color{gray!55!paper}%
+ \rule[-.6ex]{2pt}{.5pt}}\ULon}
+ \newtheoremstyle{simple}%
+ {}{}%
+ {\normalfont}{}%
+ {\normalfont}{}%
+ {0pt}%
+ {{\sffamily\thmuline{\thmname{\textsc{#1}}\thmnumber{ #2}}}\hspace{.4em}%
+ {\color{gray}\thmnote{\ensuremath{(\text{#3})}~~}}}
+ \fi
+\else
\newtheoremstyle{simple}%
{}{}%
{\normalfont}{}%
{\normalfont}{}%
{0pt}%
- {\thmname{\textsc{#1}}\thmnumber{ #2}\hspace{.4em}%
+ {{\conditionalbfseries\thmname{#1}\thmnumber{ #2}}\hspace{.4em}%
\textcolor{gray!55!paper}{$|$}\hspace{.4em}%
\color{gray}\thmnote{\ensuremath{(\text{#3})}~~}\pushQED{\qed}}
\def\@endtheorem{\popQED\endtrivlist\@endpefalse }
+\fi
\renewcommand{\qedsymbol}{%
\makebox[1em]{\color{gray!55!paper}\rule[-0.1em]{.95em}{.95em}}}
-\if@minimalist@fast\else
+\if@minimalist@fast
+ \providecommand{\phantomsection}{}
+ \RequirePackage{url}
+ \newcommand{\href}[2]{#2}
+\else
\PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
\RequirePackage{bookmark}
\RequirePackage{hyperref}
\fi
-\RequirePackage{aliascnt}
-\PassOptionsToPackage{nameinlink}{cleveref}
-\RequirePackage{cleveref}
-
-\newcommand\englishABBR{EN}
-\newcommand\frenchABBR{FR}
-\newcommand\chineseABBR{CN}
-
-\RequirePackage{xstring}
-\newcommand\PassFirstToSecond[2]{#2{#1}}%
-\NewDocumentCommand{\CreateTheorem}{sm}{%
- \begingroup
- \protected@edef\temp{#2}%
- \expandafter\IfEndWith\expandafter{\temp}{*}{%
- \expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]%
- \PassFirstToSecond{*}%
- }{%
- \PassFirstToSecond{}%
- }%
- {\expandafter\PassFirstToSecond%
- \expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}%
-}%
-\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>}{%
- \IfBooleanTF{#1}{%
- \IfValueTF{#4}
- {\@firstoftwo}
- {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
- }{%
- \IfValueTF{#4}
- {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
- \@secondoftwo}
- }%
- {%
- \GenericError{}%
- {\string\CreateTheorem\space syntax error\on@line}{%
- You cannot call the starred variant with optional argument,\MessageBreak
- nor call the unstarred variant with several optional arguments.}%
- {}%
- }{%
- \IfBooleanTF{#1}{%
- \newtheorem*{#2EN#3}{\csname#2nameEN\endcsname}
- \newtheorem*{#2FR#3}{\csname#2nameFR\endcsname}
- \newtheorem*{#2CN#3}{\csname#2nameCN\endcsname}
- }{%
- \IfValueTF{#5}{%
- \newcounter{#2#3}[{#5}]%
- \expandafter\renewcommand\expandafter*%
- \csname the#2#3\expandafter\endcsname%
- \expandafter{\csname the#5\endcsname.\arabic{#2#3}}%
- }{%
- \IfValueTF{#4}
- {\newaliascnt{#2#3}{#4}}
- {\newcounter{#2#3}}%
- }%
- %-------------------------------------------------------------------
- \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
- \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
- \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
- %-------------------------------------------------------------------
- }%
- \NewDocumentEnvironment{#2#3}{}
- {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
- {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
- }%
-}%
-\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
- \newaliascnt{#1#2#3}{#1#3}%
- \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
- \aliascntresetthe{#1#2#3}%
- \crefname{#1#2#3}%
- {\csname#1name#2\endcsname}%
- {\csname#1name#2\endcsname}%
-}%
-
-%% English theorems names
+
+\RequirePackage[nothms]{PJLthm}
+
+%% Redefine English theorems names
\def\theoremnameEN{\textsc{Theorem}}
\def\lemmanameEN{\textsc{Lemma}}
\def\propositionnameEN{\textsc{Proposition}}
\def\corollarynameEN{\textsc{Corollary}}
+\def\propertynameEN{\textsc{Property}}
\def\factnameEN{\textsc{Fact}}
\def\conjecturenameEN{\textsc{Conjecture}}
\def\definitionnameEN{\textsc{Definition}}
+\def\axiomnameEN{\textsc{Axiom}}
+\def\assumptionnameEN{\textsc{Assumption}}
+\def\conventionnameEN{\textsc{Convention}}
+\def\hypothesisnameEN{\textsc{Hypothesis}}
+\def\notationnameEN{\textsc{Notation}}
\def\examplenameEN{\textsc{Example}}
\def\problemnameEN{\textsc{Problem}}
+\def\questionnameEN{\textsc{Question}}
+\def\exercisenameEN{\textsc{Exercise}}
\def\remarknameEN{\textsc{Remark}}
-%% French theorems names
+%% Redefine French theorems names
\def\theoremnameFR{\textsc{Théorème}}
\def\lemmanameFR{\textsc{Lemme}}
\def\propositionnameFR{\textsc{Proposition}}
\def\corollarynameFR{\textsc{Corollaire}}
+\def\propertynameFR{\textsc{Propriété}}
\def\factnameFR{\textsc{Fait}}
\def\conjecturenameFR{\textsc{Conjecture}}
\def\definitionnameFR{\textsc{Définition}}
+\def\axiomnameFR{\textsc{Axiome}}
+\def\assumptionnameFR{\textsc{Supposition}}
+\def\conventionnameFR{\textsc{Convention}}
+\def\hypothesisnameFR{\textsc{Hypothèse}}
+\def\notationnameFR{\textsc{Notation}}
\def\examplenameFR{\textsc{Exemple}}
\def\problemnameFR{\textsc{Problème}}
+\def\questionnameFR{\textsc{Question}}
+\def\exercisenameFR{\textsc{Exercice}}
\def\remarknameFR{\textsc{Remarque}}
-%% Chinese theorems names
-\def\theoremnameCN{定理}
-\def\lemmanameCN{引理}
-\def\propositionnameCN{命题}
-\def\corollarynameCN{推论}
-\def\factnameCN{事实}
-\def\conjecturenameCN{猜想}
-\def\definitionnameCN{定义}
-\def\examplenameCN{例}
-\def\problemnameCN{问题}
-\def\remarknameCN{备注}
+%% Redefine German theorems names
+\def\theoremnameDE{\textsc{Satz}}
+\def\lemmanameDE{\textsc{Lemma}}
+\def\propositionnameDE{\textsc{Proposition}}
+\def\corollarynameDE{\textsc{Korollar}}
+\def\propertynameDE{\textsc{Eigenschaft}}
+\def\factnameDE{\textsc{Fakt}}
+\def\conjecturenameDE{\textsc{Vermutung}}
+\def\definitionnameDE{\textsc{Definition}}
+\def\axiomnameDE{\textsc{Axiom}}
+\def\assumptionnameDE{\textsc{Annahme}}
+\def\conventionnameDE{\textsc{Konvention}}
+\def\hypothesisnameDE{\textsc{Hypothese}}
+\def\notationnameDE{\textsc{Notation}}
+\def\examplenameDE{\textsc{Beispiel}}
+\def\problemnameDE{\textsc{Problem}}
+\def\questionnameDE{\textsc{Frage}}
+\def\exercisenameDE{\textsc{Übung}}
+\def\remarknameDE{\textsc{Bemerkung}}
%% Theorem environments
\theoremstyle{simple}
@@ -528,113 +568,117 @@
\CreateTheorem{lemma}[theorem]
\CreateTheorem{proposition}[theorem]
\CreateTheorem{corollary}[theorem]
+\CreateTheorem{definition-proposition}[theorem]
+\CreateTheorem{definition-theorem}[theorem]
+\CreateTheorem{property}[theorem]
\CreateTheorem{fact}[theorem]
-\CreateTheorem{conjecture}<highest>
+\CreateTheorem{conjecture}[theorem]
\CreateTheorem*{theorem*}
\CreateTheorem*{lemma*}
\CreateTheorem*{proposition*}
\CreateTheorem*{corollary*}
+\CreateTheorem*{definition-proposition*}
+\CreateTheorem*{definition-theorem*}
+\CreateTheorem*{property*}
\CreateTheorem*{fact*}
\CreateTheorem*{conjecture*}
\CreateTheorem{definition}[theorem]
-\CreateTheorem{example}<highest>
-\CreateTheorem{problem}<highest>
+\CreateTheorem{axiom}[theorem]
+\CreateTheorem{assumption}[theorem]
+\CreateTheorem{convention}[theorem]
+\CreateTheorem{hypothesis}[theorem]
+\CreateTheorem{notation}[theorem]
+\CreateTheorem{example}[theorem]
+\CreateTheorem{problem}[theorem]
+\CreateTheorem{question}[theorem]
+\CreateTheorem{exercise}[theorem]
\CreateTheorem*{definition*}
+\CreateTheorem*{axiom*}
+\CreateTheorem*{assumption*}
+\CreateTheorem*{convention*}
+\CreateTheorem*{hypothesis*}
+\CreateTheorem*{notation*}
\CreateTheorem*{example*}
\CreateTheorem*{problem*}
+\CreateTheorem*{question*}
+\CreateTheorem*{exercise*}
\CreateTheorem{remark}<highest>
\CreateTheorem*{remark*}
-%%================================
-%% Language configuration
-%%================================
-\if@minimalist@polyglossia
- \RequirePackage{polyglossia}
- \setdefaultlanguage{english}
- \setotherlanguage[frenchpart=false]{french}
-\else
- \PassOptionsToPackage{french,english}{babel}
- \RequirePackage{babel}
- \frenchsetup{PartNameFull=false}
-\fi
-\newcommand{\minimalist@langconfig@chinese}{%
- \def\abstractname{摘要}%
- \def\proofname{证明}%
- \def\contentsname{目录}%
- \def\listfigurename{插图}%
- \def\listtablename{表格}%
- \def\figurename{图}%
- \def\tablename{表}%
- \def\indexname{索引}%
- \def\appendixname{附录}%
- \def\bibname{参考文献}%
- \renewcommand{\languagename}{chinese}%
-}
-\newcommand{\minimalist@langconfig@english}{%
- \selectlanguage{english}%
-}
-\newcommand{\minimalist@langconfig@french}{%
- \selectlanguage{french}%
- \def\frenchpartname{Partie}%
-}
-\newcommand{\UseLanguageCORE}[1]{%
- \ifstrequal{#1}{chinese}{\onehalfspacing\minimalist@langconfig@chinese}{}%
- \ifstrequal{#1}{Chinese}{\onehalfspacing\minimalist@langconfig@chinese}{}%
- \ifstrequal{#1}{english}{\setstretch{1.07}\minimalist@langconfig@english}{}%
- \ifstrequal{#1}{English}{\setstretch{1.07}\minimalist@langconfig@english}{}%
- \ifstrequal{#1}{french}{\setstretch{1.07}\minimalist@langconfig@french}{}%
- \ifstrequal{#1}{French}{\setstretch{1.07}\minimalist@langconfig@french}{}%
-}
-\newcommand{\UseLanguage}[1]{%
- \ifx\@onlypreamble\@notprerr%
- \UseLanguageCORE{#1}%
- \else%
- \AfterEndPreamble{\UseLanguageCORE{#1}}%
- \fi%
-}
-\newcommand{\UseOtherLanguage}[2]{%
-\begingroup%
- \ifstrequal{#1}{chinese}{\minimalist@langconfig@chinese}{}%
- \ifstrequal{#1}{Chinese}{\minimalist@langconfig@chinese}{}%
- \ifstrequal{#1}{english}{\minimalist@langconfig@english}{}%
- \ifstrequal{#1}{English}{\minimalist@langconfig@english}{}%
- \ifstrequal{#1}{french}{\minimalist@langconfig@french}{}%
- \ifstrequal{#1}{French}{\minimalist@langconfig@french}{}%
- #2%
-\endgroup%
-}
+\setlength{\parindent}{2em}
-\ifbool{IsBook}{}{
+\ifbool{IsBook}{}{%
%%================================
%% Title block style
%%================================
+\if@minimalist@classical
+\renewcommand{\@maketitle}{%
+ \LocallyStopLineNumbers%
+ \begin{center}%
+ {\conditionalbfseries\sffamily\large\@title}\\\bigskip%
+ \color{black!80!paper}%
+ {\small\scshape\@author}\\[2pt]%
+ {\small\@date}%
+ \end{center}%
+ \bigskip\par%
+ \ResumeLineNumbers%
+}
+\else
\renewcommand{\@maketitle}{%
\LocallyStopLineNumbers%
\noindent%
{\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}}%
- \vspace{-\parskip}%
+ % \vspace{-\parskip}%
+ \vspace{-.5\baselineskip}%
\begin{flushright}%
- {\@title}\\\medskip%
+ {\conditionalbfseries\@title}\\\medskip%
\color{black!80!paper}%
- {\small\scshape\@author}\\[2pt]%
+ {\small\scshape\@author}%
+ \par\vspace{-\parskip}\vspace{2pt}%
{\small\@date}%
\end{flushright}%
- \vspace{-\parskip}%
+ % \vspace{-\parskip}%
\vspace{-.5\baselineskip}%
+ \ifx\@date\@empty%
+ \vspace{-.2\baselineskip}%
+ \else%
+ \vspace{-.5\baselineskip}%
+ \fi%
{\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}\par}%
\ResumeLineNumbers%
}
+\fi
\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
%%================================
%% Abstract style
%%================================
+\if@minimalist@classical
+\renewenvironment{abstract}{%
+ \LocallyStopLineNumbers%
+ \vspace{-\baselineskip}%
+ \begin{center}%
+ \textsc{\conditionalbfseries\small\abstractname}\\%
+ \vspace{-.3\baselineskip}%
+ \begin{minipage}[t]{.833\textwidth}%
+ \vspace{0pt}%
+ \color{black!80!paper}%
+ \footnotesize%
+ \parindent=2em
+}{%
+ \end{minipage}%
+ \end{center}%
+ \medskip%
+ \ResumeLineNumbers%
+}
+\else
\renewenvironment{abstract}{%
\LocallyStopLineNumbers%
\begin{flushright}%
- \textsc{\small\abstractname}\par%
- \vspace{-.75\baselineskip}%
+ \textsc{\conditionalbfseries\small\abstractname}\par%
+ \vspace{-\parskip}%
+ \vspace{-.25\baselineskip}%
\begin{minipage}[t]{.833\textwidth}%
\vspace{0pt}%
\color{black!80!paper}%
@@ -643,8 +687,68 @@
}{%
\end{minipage}%
\end{flushright}%
+ \bigskip%
\ResumeLineNumbers%
}
+\fi
+
+%%================================
+%% Keyword environment
+%%================================
+\def\keywordnameEN{\textsc{Keywords}}
+\def\keywordnameFR{\textsc{Mots clés}}
+\def\keywordnameDE{\textsc{Schlüsselwörter}}
+\def\keywordnameCN{关键词}
+\def\keywordnameTC{關鍵詞}
+\def\keywordnameJP{キーワード}
+\def\keywordnameRU{Ключевые слова}
+
+\if@minimalist@classical
+\newenvironment{keyword}{%
+ \LocallyStopLineNumbers%
+ \vspace{-.75\baselineskip}%
+ \begin{center}%
+ {\conditionalbfseries\small\csname keywordname\csname\languagename ABBR\endcsname\endcsname}\\%
+ \vspace{-.3\baselineskip}%
+ \begin{minipage}[t]{.833\textwidth}%
+ \vspace{0pt}%
+ \color{black!80!paper}%
+ \footnotesize%
+ \parindent=2em
+ \begin{center}%
+}{%
+ \end{center}%
+ \end{minipage}%
+ \end{center}%
+ \medskip%
+ \ResumeLineNumbers%
+}
+\else
+\newenvironment{keyword}{%
+ \LocallyStopLineNumbers%
+ \vspace{-.5\baselineskip}%
+ \begin{flushright}%
+ {\conditionalbfseries\small\csname keywordname\csname\languagename ABBR\endcsname\endcsname}\par%
+ \vspace{-\parskip}%
+ \vspace{-.30\baselineskip}%
+ \begin{minipage}[t]{.833\textwidth}%
+ \vspace{0pt}%
+ \color{black!80!paper}%
+ \footnotesize%
+ \parindent=2em
+ \raggedleft%
+}{%
+ \end{minipage}%
+ \end{flushright}%
+ \bigskip%
+ \ResumeLineNumbers%
+}
+\fi
+
+%%================================
+%% Simulate features of amsart
+%%================================
+\RequirePackage{PJLamssim}
}
diff --git a/macros/latex/contrib/minimalist/minimart.cls b/macros/latex/contrib/minimalist/minimart.cls
index b9a5a27142..9b19f187b1 100644
--- a/macros/latex/contrib/minimalist/minimart.cls
+++ b/macros/latex/contrib/minimalist/minimart.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{minimart}
- [2021/03/15 A simple and clear article style]
+ [2021/05/23 A simple and clear article style]
\def\minimclass@baseclass{article}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,13 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[false]{classical}
+
+\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
+\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\minimclass@baseclass}
@@ -37,6 +44,8 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
papersize={7in,10in},
@@ -45,12 +54,36 @@
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\if@minimclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@minimclass@afourpaper
+\geometry{
+ a4paper,
+ total={47em,70em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
\if@minimclass@fast
\PassOptionsToPackage{fast}{minimalist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
+\fi
+\if@minimclass@classical
+ \RequirePackage{indentfirst}
+\else
+ \AtEndPreamble{\RequirePackage{parskip}}
\fi
\RequirePackage{minimalist}
-\AtEndPreamble{\RequirePackage{parskip}}
%%================================
%% Fonts
@@ -62,6 +95,9 @@
\fi
\RequirePackage{mathpazo}
\RequirePackage{newpxtext}
+\RequirePackage{amssymb}
+
+\def\PJL@font@alreadyset{}
\RequirePackage[verbose=silent]{microtype}
@@ -71,7 +107,9 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
@@ -80,53 +118,6 @@
\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{\FAIL}
\apptocmd{\printindex}{\ResumeLineNumbers}{}{\FAIL}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@minimclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `minimalist/minimart.cls'.
diff --git a/macros/latex/contrib/minimalist/minimbook.cls b/macros/latex/contrib/minimalist/minimbook.cls
index 8030889279..b998e53dd7 100644
--- a/macros/latex/contrib/minimalist/minimbook.cls
+++ b/macros/latex/contrib/minimalist/minimbook.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{minimbook}
- [2021/03/15 A simple and clear book style]
+ [2021/05/23 A simple and clear book style]
\def\minimclass@baseclass{book}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,13 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[false]{classical}
+
+\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
+\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\minimclass@baseclass}
@@ -37,6 +44,8 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
papersize={7in,10in},
@@ -45,12 +54,36 @@
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\if@minimclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@minimclass@afourpaper
+\geometry{
+ a4paper,
+ total={47em,70em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
\if@minimclass@fast
\PassOptionsToPackage{fast}{minimalist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
+\fi
+\if@minimclass@classical
+ \RequirePackage{indentfirst}
+\else
+ \AtEndPreamble{\RequirePackage{parskip}}
\fi
\RequirePackage{minimalist}
-\AtEndPreamble{\RequirePackage{parskip}}
%%================================
%% Fonts
@@ -62,6 +95,9 @@
\fi
\RequirePackage{mathpazo}
\RequirePackage{newpxtext}
+\RequirePackage{amssymb}
+
+\def\PJL@font@alreadyset{}
\RequirePackage[verbose=silent]{microtype}
@@ -71,7 +107,9 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
@@ -80,53 +118,6 @@
\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{\FAIL}
\apptocmd{\printindex}{\ResumeLineNumbers}{}{\FAIL}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@minimclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `minimalist/minimbook.cls'.
diff --git a/macros/latex/contrib/ot-tableau/README b/macros/latex/contrib/ot-tableau/README
index 588e69e6af..059cc0f56c 100644
--- a/macros/latex/contrib/ot-tableau/README
+++ b/macros/latex/contrib/ot-tableau/README
@@ -1,3 +1,10 @@
-This material is subject to the LaTeX Project Public License. See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html for the details of that license.
-Requires packages: xstring, amssymb, bbding, suffix, colortbl, rotating, hhline,tabu
+
+
+The package makes it easy to create beautiful optimality-theoretic tableaux. The LaTeX source is visually very similar to a formatted tableau, which makes working with the source code painless (well, less painful). A variety of stylistic variants are available to suit personal taste.
+
+The package is maintained by Adam Baker (adam@adambaker.org).
+
+This material is subject to the LaTeX Project Public License. See http://www.latex-project.org/lppl.txt for the details of that license.
+
+Requires packages: xstring, amssymb, bbding, suffix, colortbl, rotating, hhline (optionally), arydshln, tipa (optionally)
diff --git a/macros/latex/contrib/ot-tableau/ot-tableau.pdf b/macros/latex/contrib/ot-tableau/ot-tableau.pdf
index bbda62b020..46a08bd942 100644
--- a/macros/latex/contrib/ot-tableau/ot-tableau.pdf
+++ b/macros/latex/contrib/ot-tableau/ot-tableau.pdf
Binary files differ
diff --git a/macros/latex/contrib/ot-tableau/ot-tableau.sty b/macros/latex/contrib/ot-tableau/ot-tableau.sty
index 84528124dc..3d2ac05907 100644
--- a/macros/latex/contrib/ot-tableau/ot-tableau.sty
+++ b/macros/latex/contrib/ot-tableau/ot-tableau.sty
@@ -1,4 +1,21 @@
-\ProvidesPackage{ot-tableau}[2017/07/23]
+%% ot-tableau.sty
+%% Copyright 2021 Adam Baker
+%
+% 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 Adam Bker.
+%
+% This work consists of the files ot-tableau.sty and ot-tableau.tex.
+
+\ProvidesPackage{ot-tableau}[2021-05-19]
% Package option: notipa
\newif\ifottableau@tipa
@@ -9,6 +26,11 @@
\newif\ifottableau@circledviolations
\DeclareOption{circledviolations}{\ottableau@circledviolationstrue}
+% Package option: usehhline
+\newif\ifottableau@usehhline
+\ottableau@usehhlinefalse % default to false
+\DeclareOption{usehhline}{\ottableau@usehhlinetrue}
+
% Package option: shadedcells
\newif\ifottableau@shadedcells
\DeclareOption{shadedcells}{\ottableau@shadedcellstrue}
@@ -29,8 +51,13 @@
\RequirePackage{rotating}
% fancy table and lines
-\RequirePackage{hhline,tabu}
-\newtabulinestyle { dashed=.5pt on 1.5pt off 1.5pt }
+% 2021-05-19: Removing hhline, which makes the nice lines, because hhline conflicts with arydshln
+\ifottableau@usehhline
+ \RequirePackage{hhline}
+\else
+\fi
+
+\RequirePackage{arydshln}
% IPA typesetting macros
\def\ipa#1{#1}
@@ -91,25 +118,34 @@
% Automatic row lettering
\newcommand*{\rowletter}{\stepcounter{tableaurow}\alph{tableaurow}. }
-% https://tex.stackexchange.com/questions/382843/using-the-tabu-environment-within-a-conditional-within-newenvironment
+
+
+
\newenvironment{tableau}[1]{\setcounter{tableaurow}{0}%
\gdef\ConstraintString{#1}
\StrSubstitute{#1}{s}{c}[\NoS]
\StrCount{\NoS}{c}[\ConstraintCount]%
+ \ifottableau@usehhline
+ \gdef\TopOrBottomLine{\hhline{---||*{\ConstraintCount}{-|}}}
+ \gdef\DoubleLine{\hhline{---||*{\ConstraintCount}{-|}}}
+ \else
+ \gdef\TopOrBottomLine{\hline}
+ \gdef\DoubleLine{\hline\hline}
+ \fi
\ifottableau@fingerfirst % finger first: this is the default
\expandafter\@firstoftwo
\else % finger second
\expandafter\@secondoftwo
\fi
- {\begin{tabu}{|r@{\hspace{4pt}}l@{\hspace{3pt}}l||#1|}} % finger first
- {\begin{tabu}{|l@{\hspace{2pt}}r@{\hspace{4pt}}l||#1|}} % finger second
- \hhline{|---||*{\ConstraintCount}{-|}}
- }{\\\hhline{|---||*{\ConstraintCount}{-|}}\end{tabu}}
-
+ {\begin{tabular}{|r@{\hspace{4pt}}l@{\hspace{3pt}}l||#1|}} % finger first
+ {\begin{tabular}{|l@{\hspace{2pt}}r@{\hspace{4pt}}l||#1|}} % finger second
+ \TopOrBottomLine
+ }{\\\TopOrBottomLine\end{tabular}}
+
% draw two lines after the constraints, one line elsewhere
\def\properlines{\ifthenelse{\thetableaurow=0}%
- {\\\hhline{:===::*{\ConstraintCount}{=:}}}%
- {\\\hhline{|---||*{\ConstraintCount}{-|}}}}
+ {\\\DoubleLine}%
+ {\\\TopOrBottomLine}}
\newcommand\cand[2][]{\OptimalOff\properlines%
\ifottableau@fingerfirst \ipa{#1} \else \rowletter \fi%
@@ -142,6 +178,3 @@
\newcommand\const[1]{&\textsc{#1}\UnshadeTheCell}
\WithSuffix\newcommand\const*[1]{&#1\UnshadeTheCell}
-
-% 2017-07-22: This doesn't work for some reason if it's toward the top of the file
-\newcolumntype{:}{|[dashed]}
diff --git a/macros/latex/contrib/ot-tableau/ot-tableau.tex b/macros/latex/contrib/ot-tableau/ot-tableau.tex
index e63c9c43aa..0eba320896 100644
--- a/macros/latex/contrib/ot-tableau/ot-tableau.tex
+++ b/macros/latex/contrib/ot-tableau/ot-tableau.tex
@@ -1,8 +1,10 @@
\documentclass{article}
\usepackage[notipa]{ot-tableau}
+% use the usehhline option to use the hhline for prettier lines (which currently does not work)
+%\usepackage[notipa,usehhline]{ot-tableau}
\usepackage{fullpage,pifont}
\title{The \textsf{ot-tableau} package}
-\date{Revised 2017-07-23}
+\date{Revised 2021-05-19}
\author{Adam Baker}
\def\eg{e.g.,~}
\def\tabl{\textsf{ot-tableau}}
@@ -88,6 +90,7 @@ The default \verb+\cand+ and \verb+\const+ commands typeset the argument with TI
If you are using Unicode input for your phonetic symbols, use the package option \verb+notipa+ to disable TIPA.
\subsection{Controlling cell shading}
+
There are two systems in use for shading OT tableaux. One system is to shade cells in a row after the crucial violation. The other system is to shade an entire column, if the associate constraint generates no crucial violations.
\tabl\ will do cell-shading automatically with the \verb+shadedcells+ package option.\footnote{More specifically, \tabl\ will look for the exclamation point. You have to provide the exclamation point.} This tableau...
@@ -204,8 +207,7 @@ Using the optional argument to \verb+\cand+, you can add any annotation to a can
\end{tableau}
\end{verbatim}
-You can mark the optimal candidate with the \verb+\Optimal+ command. This
-By default, \tabl\ typesets \textsf{bbding}'s \verb+\HandRight+ symbol (\HandRight), which I find to be the most attractive. \tabl\ also replaces asterisks with the more attractive asterisks in \textsf{amssymb}. You can replace these symbols with others if you wish, using \verb+\renewcommand+:
+You can mark the optimal candidate with the \verb+\Optimal+ command. By default, \tabl\ typesets \textsf{bbding}'s \verb+\HandRight+ symbol (\HandRight), which I find to be the most attractive. \tabl\ also replaces asterisks with the more attractive asterisks in \textsf{amssymb}. You can replace these symbols with others if you wish, using \verb+\renewcommand+:
\begin{center}
\CircledViolationsOn
@@ -232,6 +234,10 @@ By default, \tabl\ typesets \textsf{bbding}'s \verb+\HandRight+ symbol (\HandRig
\end{tableau}
\end{verbatim}
+\subsection{Prettier lines}
+\textbf{As of 2021-05-19:} A conflict between \verb+hhline+ and \verb+arydshln+ means that it's not possible to have the prettier tableau lines that \verb+hhline+ offers. (Extra whitespace is introduced above the first line.) It's possible that this will be fixed in the future, in which case you can get the prettier lines back with the \verb+usehhline+ package option, e.g., \verb+\usepackage[notipa,usehhline]{ot-tableau}+.
+
+
\section{Package Options}
It makes the most sense to set these options as package options, but if you want to change the settings in the middle of the documents, you can use the commands indicated in parentheses.
@@ -240,6 +246,7 @@ It makes the most sense to set these options as package options, but if you want
\item[circledviolations] Circle the optimal candidate's constraint violations. The optimal candidate must be identified with \verb+\cand[\Optimal]+. (\verb+\CircledViolationsOn+, \verb+\CircledViolationsOff+)
\item[shadedcells] Shade cells for a constraint that follow the candidate's fatal violation. (\verb+\ShadingOn+, \verb+\ShadingOff+)
\item[fingerafter] Place the finger-of-optimality after the letter rather than before it. (\verb+\FingerBeforeLetter+, \verb+\LetterBeforeFinger+)
+\item[usehhline] Use the \verb+hhline+ package to draw prettier tableau lines. (As of 2021-05-19, a package conflict means that the lines are not actually prettier. Hopefully this will be fixed in the future and we can go back to pretty lines!)
\end{description}
\end{document}
diff --git a/macros/latex/contrib/tcolorbox/CHANGES b/macros/latex/contrib/tcolorbox/CHANGES
index 0b75eb6406..a82b952189 100644
--- a/macros/latex/contrib/tcolorbox/CHANGES
+++ b/macros/latex/contrib/tcolorbox/CHANGES
@@ -1,7 +1,7 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -1192,3 +1192,30 @@ version 4.42 (2020/10/09)
* color stacks (by pdfcol) are not mandatory any more,
but are optional now with 'use color stack'. Note that effects of whatsits
on the vertical space have to be expected.
+
+version 4.50 (2021/05/21)
+- bug fix (#128): 'tcbincludepdf' ignored some raster options
+- bug fix (#138): visible seam for 'bicolor' and 'tile' in 'sidebyside' mode
+ around the lower (i.e. rightward) part
+- (#125) Using group around arguments for title in the examples
+- (#134) Allocate write registers \tcb@out and \tcb@record@out only when needed
+- (#135) Documentation: recommend to use initialization options after loading hyperref
+- (#118) Documentation: warn user about white title color becoming invisible
+ for the skin 'empty'
+- documentation correction (#127)
+- documentation of library skins is split into a general part and the catalog of skins
+- (#124) '\tcblistof' enhanced to take an optional short title and mimic
+ '\listoffigures' where applicable
+- library 'skins':
+ * new option 'opacitybacklower'
+ * new jigsaw variant of 'bicolor':
+ 'bicolor jigsaw', 'bicolorfirst jigsaw', 'bicolormiddle jigsaw', 'bicolorlast jigsaw'
+ * implementation of bicolor overhauled
+ * skin documentation complemented with sidebyside examples.
+- library 'theorems':
+ * (#126) new option 'theorem hanging indent'
+- library 'vignette':
+ * (#133) documentation examples for fading styles for every side added
+- library 'raster':
+ * (#119) '\thetcbrasternum' changed output the content of a counter.
+ LaTeX counter 'tcbrasterrow', 'tcbrastercolumn', 'tcbrasternum' documented.
diff --git a/macros/latex/contrib/tcolorbox/README b/macros/latex/contrib/tcolorbox/README
index 55edf61ca4..e8391f6ff8 100644
--- a/macros/latex/contrib/tcolorbox/README
+++ b/macros/latex/contrib/tcolorbox/README
@@ -1,7 +1,7 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
index d77ecad60b..5e9133d668 100644
--- a/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbbreakable.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbbreakable.code.tex: Code for breakable colorboxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{pdfcol}
\pdfcolInitStack{tcb@breakable}
diff --git a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
index 569308b3b5..8fa8fde32e 100644
--- a/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbdocumentation.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbdocumentation.code.tex: Code for LaTeX documentations
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{listings,skins,xparse,external,raster}
diff --git a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
index 776a5694ec..cee87d113d 100644
--- a/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbexternal.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbexternal.code.tex: Code for externalization
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{pro@cessing}
@@ -69,6 +69,7 @@
\begingroup%
\ifnum\the\catcode`\"=13 \tcbexternal@activate@normal@dq\fi%
\message{=== Compile external '\tcbexternal@job@name': }%
+ \tcb@allocate@tcb@out%
\immediate\openout\tcb@out="\tcbexternal@run@tex"
\immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALINPUT{"\tcbexternal@job@source"}}%
\immediate\write\tcb@out{\string\gdef\string\TCBEXTERNALSAFETY{\tcbexternal@safety}}%
diff --git a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
index 31e0b37980..c9a63da68f 100644
--- a/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbfitting.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbfitting.code.tex: Code for fit boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\newdimen\tcbfitdim
\newdimen\tcb@lowerfitdim
diff --git a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
index 9e3be34df0..db39f0cb23 100644
--- a/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbhooks.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbhooks.code.tex: Code for adding hooks
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbset{%
before upper app/.code={\appto\kvtcb@before@upper{#1}},%
diff --git a/macros/latex/contrib/tcolorbox/tcblistings.code.tex b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
index f44cbe9a4e..84e3bccff5 100644
--- a/macros/latex/contrib/tcolorbox/tcblistings.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistings.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcblistings.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{listings}[2007/02/22]
diff --git a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
index b070c4e727..5f0afcc8af 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingscore.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcblistingscode.code.tex: Auxiliary code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{pro@cessing}
diff --git a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
index b4fb28f987..1ad84adf57 100644
--- a/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcblistingsutf8.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcblistingsutf8.code.tex: Code for colorboxes with listings in UTF-8
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{listings}
diff --git a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
index 0e29cfe97d..caa2b0cb0f 100644
--- a/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbmagazine.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbmagazine.code.tex: Code for box sets and magazine styles
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{breakable}
diff --git a/macros/latex/contrib/tcolorbox/tcbminted.code.tex b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
index 20b548f0ae..13f1e26f9e 100644
--- a/macros/latex/contrib/tcolorbox/tcbminted.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbminted.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbminted.code.tex: Code for colorboxes with listings
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{minted}[2011/09/17]
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
index 591806e8e5..cdec336256 100644
--- a/macros/latex/contrib/tcolorbox/tcbposter.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbposter.code.tex: Code for posters
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{breakable,magazine,skins,fitting}
diff --git a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
index 14e7c8d430..7de64918b3 100644
--- a/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbprocessing.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbprocessing.code.tex: Code for conditional processing
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{pdftexcmds}
\RequirePackage{shellesc}
@@ -35,6 +35,7 @@
}
\def\tcbproc@writemdfive#1{%
+ \tcb@allocate@tcb@out%
\immediate\openout\tcb@out=#1%
\immediate\write\tcb@out{\string\def\string\tcbproclastmdfivesum{\tcbprocmdfivesum}\@percentchar}%
\immediate\closeout\tcb@out%
diff --git a/macros/latex/contrib/tcolorbox/tcbraster.code.tex b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
index 2cdfbfcd7b..3a00af7be6 100644
--- a/macros/latex/contrib/tcolorbox/tcbraster.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbraster.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,14 +17,13 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\newcounter{tcbrastercolumn}
\newcounter{tcbrasterrow}
+\newcounter{tcbrasternum}
\newcounter{tcbraster}
-\newrobustcmd{\thetcbrasternum}{\the\numexpr(\c@tcbrasterrow-1)*\kvtcb@raster@columns+\c@tcbrastercolumn\relax}
-
\def\tcb@raster@ehg@all{%
\tcbset{equal height group={\kvtcb@raster@ehgid}}%
}
@@ -75,7 +74,7 @@
\tcb@warning{'raster multicolumn' combined too much columns}%
\else%
\tcbset@late@options{%
- code={\preto\kvtcb@afterbox{\addtocounter{tcbrastercolumn}{\numexpr#1-1}}},
+ code={\preto\kvtcb@afterbox{\addtocounter{tcbrastercolumn}{\numexpr#1-1}\addtocounter{tcbrasternum}{\numexpr#1-1}}},
width=(\tcb@raster@box@width+\tcb@raster@xskip)*#1-\tcb@raster@xskip}%
\fi%
},
@@ -130,10 +129,11 @@
\edef\tcb@raster@save@column{\number\c@tcbrastercolumn}%
\edef\tcb@raster@save@row{\number\c@tcbrasterrow}%
\let\tcb@raster@change@fitbox\@empty%
+ \setcounter{tcbrasternum}{1}%
\setcounter{tcbrastercolumn}{1}%
\setcounter{tcbrasterrow}{1}%
\let\tcb@height@fill@unbroken\tcb@height@fill@unbroken@raster%
- \tcbset{every box on layer \the\numexpr\number\c@tcblayer+1\relax/.code={%
+ \tcbset{every box on layer \the\numexpr\number\c@tcblayer+1\relax/.append code={%
\tcb@raster@ehg@set%
\tcbset{raster every box/.try}%
\ifodd\c@tcbrastercolumn\relax%
@@ -148,13 +148,13 @@
\tcbset{raster even row/.try}%
\fi%
\tcbset{raster row \number\c@tcbrasterrow/.try}%
- \ifodd\thetcbrasternum\relax%
+ \ifodd\c@tcbrasternum\relax%
\tcbset{raster odd number/.try}%
\else%
\tcbset{raster even number/.try}%
\fi%
\tcbset{raster row \number\c@tcbrasterrow\space column \number\c@tcbrastercolumn/.try}%
- \tcbset{raster number \thetcbrasternum/.try}%
+ \tcbset{raster number \number\c@tcbrasternum/.try}%
}}%
\tcbset{#1}%
% sanitize
@@ -171,9 +171,10 @@
\ifnum\c@tcbrasterrow>1 \parindent\z@\parskip\z@\par\nointerlineskip\addvspace{\the\dimexpr\tcb@raster@yskip\relax}\noindent\fi%
\kern\tcb@raster@skip@left\fi},
after={%
+ \stepcounter{tcbrasternum}%
\ifnum\c@tcbrastercolumn=\kvtcb@raster@columns\relax%
\kern\tcb@raster@skip@right%
- \setcounter{tcbrastercolumn}{1}\addtocounter{tcbrasterrow}{1}%
+ \setcounter{tcbrastercolumn}{1}\stepcounter{tcbrasterrow}%
\else%
\stepcounter{tcbrastercolumn}%
\fi},%
@@ -216,6 +217,7 @@
\tcb@end@raster%
\setcounter{tcbrastercolumn}{\tcb@raster@save@column}%
\setcounter{tcbrasterrow}{\tcb@raster@save@row}%
+ \setcounter{tcbrasternum}{\the\numexpr(\c@tcbrasterrow-1)*\kvtcb@raster@columns+\c@tcbrastercolumn\relax}%
}
\newcommand{\tcbitem@following}[1][]{%
diff --git a/macros/latex/contrib/tcolorbox/tcbskins.code.tex b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
index 0df4c6b0c6..fc1ad843fa 100644
--- a/macros/latex/contrib/tcolorbox/tcbskins.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskins.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbskins.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{tikz}[2010/10/13]
@@ -111,6 +111,7 @@
\tikzset{%
tcb fill frame/.style={fill=tcbcolframe,fill opacity=\kvtcb@opacityframe,tcb@spec,frame@style},%
tcb fill interior/.style={fill=tcbcolback,fill opacity=\kvtcb@opacityback,tcb@spec,interior@style},%
+ tcb fill lower bicolor/.style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,tcb@spec,segmentation@style},%
tcb fill title/.style={fill=tcbcolbacktitle,fill opacity=\kvtcb@opacitybacktitle,tcb@spec,title@style},%
}
@@ -225,33 +226,63 @@
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
}
-\def\tcb@drawspec@sbs@A#1{%
- \tcb@pathbase{#1,segmentation@style}{segmentation.south}{interior.north east}%
+\def\tcb@drawspec@sbs@a{%
+ \tcb@pathbase{tcb fill interior}{interior.south west}{segmentation.north}%
+ {\tcb@arc@ins@SW}{\tcb@arc@ins@NW}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@A{%
+ \tcb@pathbase{tcb fill lower bicolor}{segmentation.south}{interior.north east}%
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@NE}{\tcb@arc@ins@SE}%
}
-\def\tcb@drawspec@sbs@B#1{%
- \tcb@pathbase{#1,segmentation@style}{segmentation.south}{interior.north east}%
+\def\tcb@drawspec@sbs@b{%
+ \tcb@pathbase{tcb fill interior}{interior.south west}{segmentation.north}%
+ {\tcb@arc@ins@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@B{%
+ \tcb@pathbase{tcb fill lower bicolor}{segmentation.south}{interior.north east}%
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
}
-\def\tcb@drawspec@sbs@C#1{%
- \tcb@pathbase{#1,segmentation@style}{segmentation.south|-frame.south}{interior.north east}%
+\def\tcb@drawspec@sbs@c{%
+ \tcb@pathbase{tcb fill interior}{interior.south west|-frame.south}{segmentation.north}%
+ {\tcb@arc@zpt}{\tcb@arc@ins@NW}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@C{%
+ \tcb@pathbase{tcb fill lower bicolor}{segmentation.south|-frame.south}{interior.north east}%
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@NE}{\tcb@arc@zpt}%
}
-\def\tcb@drawspec@sbs@D#1{%
- \tcb@pathbase{#1,segmentation@style}{segmentation.south|-frame.south}{interior.north east}%
+\def\tcb@drawspec@sbs@d{%
+ \tcb@pathbase{tcb fill interior}{interior.south west|-frame.south}{segmentation.north}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@D{%
+ \tcb@pathbase{tcb fill lower bicolor}{segmentation.south|-frame.south}{interior.north east}%
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
}
-\def\tcb@drawspec@sbs@E#1{%
- \tcb@pathbase{#1,segmentation@style}{segmentation.south|-frame.south}{interior.east|-frame.north}%
+\def\tcb@drawspec@sbs@e{%
+ \tcb@pathbase{tcb fill interior}{interior.south west|-frame.south}{segmentation.north|-frame.north}%
+ {\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@E{%
+ \tcb@pathbase{tcb fill lower bicolor}{segmentation.south|-frame.south}{interior.east|-frame.north}%
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
}
-\def\tcb@drawspec@sbs@F#1{%
- \tcb@pathbase{#1,segmentation@style}{segmentation.south}{interior.east|-frame.north}%
+\def\tcb@drawspec@sbs@f{%
+ \tcb@pathbase{tcb fill interior}{interior.south west}{segmentation.north|-frame.north}%
+ {\tcb@arc@ins@SW}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}%
+}
+
+\def\tcb@drawspec@sbs@F{%
+ \tcb@pathbase{tcb fill lower bicolor}{segmentation.south}{interior.east|-frame.north}%
{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@zpt}{\tcb@arc@ins@SE}%
}
@@ -377,6 +408,7 @@
([yshift=-\kvtcb@title@rule/2]title.south west)--([yshift=-\kvtcb@title@rule/2]title.south east);
\fi}},%
colbacklower/.colorlet=tcbcolbacklower,%
+ opacitybacklower/.store in=\kvtcb@opacitybacklower,
clear@spec/.code={\tcb@spec{}},%
tikz/.code={\appto\tcb@tikz@option@hook{,#1}},%
tikz reset/.code={\let\tcb@tikz@option@hook\@empty},%
@@ -511,30 +543,45 @@
interior titled code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@path}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@b%
+ \else%
+ \tcb@drawwithtitle@path%
+ \fi
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \tcb@drawspec@UT%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@path}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithtitle@path}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@path}%
+ \tcb@drawwithtitle@path%
\fi\tcb@spec{}},
interior code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@path}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@a%
+ \else%
+ \tcb@drawwithouttitle@path%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@UR%
+ \tcb@drawspec@UR%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@path}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithouttitle@path}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@path}%
+ \tcb@drawwithouttitle@path%
\fi\tcb@spec{}},
- segmentation code={\iftcb@sidebyside%
- \iftcb@hasTitle\tcb@drawspec@sbs@B{fill=tcbcolbacklower}\else%
- \tcb@drawspec@sbs@A{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LR{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ segmentation code={%
+ \iftcb@sidebyside%
+ \iftcb@hasTitle%
+ \tcb@drawspec@sbs@B%
+ \else%
+ \tcb@drawspec@sbs@A%
+ \fi%
+ \else%
+ \tcb@drawspec@LR{fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower}%
+ \fi\tcb@spec{}},%
skin first=bicolorfirst,skin middle=bicolormiddle,skin last=bicolorlast}
\tcbset{bicolor/.style={skin=bicolor}}
@@ -544,30 +591,45 @@
interior titled code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathfirst}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@d%
+ \else%
+ \tcb@drawwithtitle@pathfirst%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \tcb@drawspec@UT%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@pathfirst}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithtitle@pathfirst}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathfirst}%
+ \tcb@drawwithtitle@pathfirst%
\fi\tcb@spec{}},
interior code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathfirst}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@c%
+ \else%
+ \tcb@drawwithouttitle@pathfirst%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@UR%
+ \tcb@drawspec@UR%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@pathfirst}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithouttitle@pathfirst}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathfirst}%
+ \tcb@drawwithouttitle@pathfirst%
\fi\tcb@spec{}},
- segmentation code={\iftcb@sidebyside%
- \iftcb@hasTitle\tcb@drawspec@sbs@D{fill=tcbcolbacklower}\else%
- \tcb@drawspec@sbs@C{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LS{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ segmentation code={%
+ \iftcb@sidebyside%
+ \iftcb@hasTitle%
+ \tcb@drawspec@sbs@D%
+ \else%
+ \tcb@drawspec@sbs@C
+ \fi%
+ \else%
+ \tcb@drawspec@LS{fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower}%
+ \fi\tcb@spec{}},%
skin first=bicolorfirst,skin middle=bicolormiddle,skin last=bicolormiddle}
\tcb@new@skin{bicolormiddle}{base@middle,%
@@ -575,30 +637,45 @@
interior titled code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathmiddle}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@d%
+ \else%
+ \tcb@drawwithtitle@pathmiddle%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \tcb@drawspec@UT%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@pathmiddle}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithtitle@pathmiddle}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathmiddle}%
+ \tcb@drawwithtitle@pathmiddle%
\fi\tcb@spec{}},%
interior code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathmiddle}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@e%
+ \else%
+ \tcb@drawwithouttitle@pathmiddle%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@US%
+ \tcb@drawspec@US%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@pathmiddle}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithouttitle@pathmiddle}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathmiddle}%
+ \tcb@drawwithouttitle@pathmiddle%
\fi\tcb@spec{}},
- segmentation code={\iftcb@sidebyside%
- \iftcb@hasTitle\tcb@drawspec@sbs@D{fill=tcbcolbacklower}\else%
- \tcb@drawspec@sbs@E{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LS{fill=tcbcolbacklower}\fi\tcb@spec{}},%
+ segmentation code={%
+ \iftcb@sidebyside%
+ \iftcb@hasTitle%
+ \tcb@drawspec@sbs@D%
+ \else%
+ \tcb@drawspec@sbs@E%
+ \fi%
+ \else%
+ \tcb@drawspec@LS{fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower}%
+ \fi\tcb@spec{}},%
skin first=bicolormiddle,skin middle=bicolormiddle,skin last=bicolormiddle}
\tcb@new@skin{bicolorlast}{base@last,%
@@ -606,30 +683,45 @@
interior titled code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathlast}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@b%
+ \else%
+ \tcb@drawwithtitle@pathlast%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@UT%
+ \tcb@drawspec@UT%
\else%
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithtitle@pathlast}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithtitle@pathlast}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithtitle@pathlast}%
+ \tcb@drawwithtitle@pathlast%
\fi\tcb@spec{}},
interior code={%
\iftcb@lowerseparated%
\ifcase\tcbsegmentstate%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathlast}%
+ \iftcb@sidebyside%
+ \tcb@drawspec@sbs@f%
+ \else%
+ \tcb@drawwithouttitle@pathlast%
+ \fi%
\or%
- \tcb@spec{fill=tcbcolback}\tcb@drawspec@US%
+ \tcb@drawspec@US%
\else
- {\tcbset{interior style={fill=tcbcolbacklower,segmentation@style}}\tcb@drawwithouttitle@pathlast}%
+ {\tcbset{interior style={fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower,segmentation@style}}\tcb@drawwithouttitle@pathlast}%
\fi%
\else%
- {\tcb@spec{fill=tcbcolback}\tcb@drawwithouttitle@pathlast}%
+ \tcb@drawwithouttitle@pathlast%
+ \fi\tcb@spec{}},%
+ segmentation code={%
+ \iftcb@sidebyside%
+ \iftcb@hasTitle%
+ \tcb@drawspec@sbs@B%
+ \else%
+ \tcb@drawspec@sbs@F%
+ \fi%
+ \else%
+ \tcb@drawspec@LR{fill=tcbcolbacklower,fill opacity=\kvtcb@opacitybacklower}%
\fi\tcb@spec{}},%
- segmentation code={\iftcb@sidebyside%
- \iftcb@hasTitle\tcb@drawspec@sbs@B{fill=tcbcolbacklower}\else%
- \tcb@drawspec@sbs@F{fill=tcbcolbacklower}\fi\else\tcb@drawspec@LR{fill=tcbcolbacklower}\fi\tcb@spec{}},%
skin first=bicolormiddle,skin middle=bicolormiddle,skin last=bicolorlast}
\tcb@new@skin{tile}{skin@bicolor,frame engine=empty,%
@@ -1830,17 +1922,17 @@
}
\newcommand{\tcbincludepdf}[2][]{%
- \begingroup%
- \tcb@layer@pushup%
- \tcb@apply@box@options{enhanced,clip upper=true,valign=center,center upper,#1}%
- \appto\kvtcb@graphics@options{,page=\imagepage}%
\tcb@include@graphics@preparefile{#2}%
\tcb@set@pdfpages\pdfpages{\imagepath}%
\foreach \imagepage in \kvtcb@graphics@pages%
{%
+ \begingroup%
+ \tcb@layer@pushup%
+ \tcb@apply@box@options{enhanced,clip upper=true,valign=center,center upper,#1}%
+ \appto\kvtcb@graphics@options{,page=\imagepage}%
\tcb@include@graphics%
+ \endgroup%
}%
- \endgroup%
}
\tcbset{%
@@ -1891,7 +1983,7 @@
\tcbset{%
reset@skins/.style={%
frame style=,interior style=,segmentation style=,@title style=,%
- colbacklower=black!15!white,%
+ colbacklower=black!15!white,opacitybacklower=1.0,%
extend freelance=,extend freelancefirst=,extend freelancemiddle=,extend freelancelast=,%
clear@spec,%
watermark opacity=1.00,watermark color=tcbcolback!85!tcbcolframe,%
diff --git a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
index ca0940971a..5ea2f296ae 100644
--- a/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbskinsjigsaw.code.tex: Code for colorboxes with different skins
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{skins}
@@ -217,10 +217,31 @@
set@extensions@preframe={\tcb@draw@shadowjigsaw@last},%
skin first=enhancedmiddle jigsaw,skin middle=enhancedmiddle jigsaw,skin last=enhancedlast jigsaw}
+\tcb@new@skin{bicolor jigsaw}{skin@bicolor,%
+ frame engine=pathjigsaw,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@unbroken},%
+ skin first=bicolorfirst jigsaw,skin middle=bicolormiddle jigsaw,skin last=bicolorlast jigsaw}
+
+\tcb@new@skin{bicolorfirst jigsaw}{skin@bicolorfirst,%
+ frame engine=pathfirstjigsaw,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@first},%
+ skin first=bicolorfirst jigsaw,skin middle=bicolormiddle jigsaw,skin last=bicolormiddle jigsaw}
+
+\tcb@new@skin{bicolormiddle jigsaw}{skin@bicolormiddle,%
+ frame engine=pathmiddlejigsaw,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@middle},%
+ skin first=bicolormiddle jigsaw,skin middle=bicolormiddle jigsaw,skin last=bicolormiddle jigsaw}
+
+\tcb@new@skin{bicolorlast jigsaw}{skin@bicolorlast,%
+ frame engine=pathlastjigsaw,%
+ set@extensions@preframe={\tcb@draw@shadowjigsaw@last},%
+ skin first=bicolormiddle jigsaw,skin middle=bicolormiddle jigsaw,skin last=bicolorlast jigsaw}
+
\tcbset{%
enhanced jigsaw/.style={skin=enhanced jigsaw},%
enhanced standard jigsaw/.style={skin=enhanced jigsaw,
skin first=enhanced jigsaw,skin middle=enhanced jigsaw,skin last=enhanced jigsaw},%
+ bicolor jigsaw/.style={skin=bicolor jigsaw},%
frame engine/pathjigsaw/.style={frame code=\tcb@drawframe@pathjigsaw},
frame engine/pathfirstjigsaw/.style={frame code=\tcb@drawframe@pathfirstjigsaw},
frame engine/pathmiddlejigsaw/.style={frame code=\tcb@drawframe@pathmiddlejigsaw},
diff --git a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
index 334f51dea9..fb99f3ef12 100644
--- a/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbtheorems.code.tex: Code for theorems in colorboxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{amsmath}
@@ -30,6 +30,8 @@
\def\tcb@theo@desc@form@std#1{\tcb@desc@col\kvtcb@desc@font\kvtcb@desc@delim@left#1\kvtcb@desc@delim@right}
+\def\tcb@theo@title@indent@std#1{\hangindent#1\hangafter=1\relax}
+
\def\tcb@theo@title#1#2#3{%
\ifdefempty{#2}{\setbox\z@=\color@hbox#1\color@endbox}{\setbox\z@=\tcb@theo@form{#1}{#2}}%
\def\temp@a{#3}%
@@ -37,8 +39,7 @@
\unhbox\z@\kvtcb@terminatorsign%
\else%
\setbox\z@=\hbox{\unhbox\z@\kvtcb@separatorsign\ }%
- \hangindent\wd\z@%
- \hangafter=1%
+ \tcb@theo@title@indent{\wd\z@}%
\mbox{\unhbox\z@}{\tcb@theo@desc@form{#3}}\kvtcb@terminatorsign%
\fi%
}
@@ -136,6 +137,23 @@
theorem style/margin break/.style={theorem style=margin,attach title to upper={\par}},
theorem label supplement/.style={tcb@theo@label@supp/.style={#1}},
theorem full label supplement/.style={tcb@theo@full@label@supp/.style={#1}},
+ theorem hanging indent/.code={%
+ \ifstrequal{#1}{auto}{%
+ \let\tcb@theo@title@indent\tcb@theo@title@indent@std%
+ }{%
+ \def\tcb@theo@title@indent##1{%
+ \ifdim#1=0pt\relax%
+ \else%
+ \ifdim#1>0pt\relax%
+ \hangindent#1\hangafter=1\relax%
+ \else%
+ \hangindent\dimexpr-#1\relax\hangafter=-1\relax%
+ \fi%
+ \fi
+ }%
+ }%
+ },
+ theorem hanging indent/.default=auto,
}
\newcommand{\new@tcbtheorem}[5][]{%
@@ -165,6 +183,7 @@
highlight math style={colframe=red,colback=yellow!25!white},%
theorem style=standard,label separator=:,%
theorem label supplement=,theorem full label supplement=,%
+ theorem hanging indent%
},
initialize@reset=reset@theorems,
}
diff --git a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
index cd02d69ff3..ec97bb5363 100644
--- a/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbvignette.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbvignette.code.tex: Code for ornamental frames
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -17,7 +17,7 @@
%%
%% This work consists of all files listed in README
%%
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\tcbuselibrary{skins}
diff --git a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
index 8fbf7fb8a1..00586c8109 100644
--- a/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
+++ b/macros/latex/contrib/tcolorbox/tcbxparse.code.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcbxparse.code.tex: Code for xparse features
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,7 +18,7 @@
%% This work consists of all files listed in README
%%
%\makeatletter
-\tcb@set@library@version{4.42}
+\tcb@set@library@version{4.50}
\RequirePackage{xparse}[2013/12/31]
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
index 8df5f0fb63..4fc9120250 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
index 7561a6fa3d..9bd42004ef 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcolorbox-example-poster.tex: a poster example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
index 8d7e1b9e17..7421a0d17f 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
index 0d1cb965bd..94dbb582d0 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-example.tex
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcolorbox-example.tex: an example for tcolorbox
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
index 71727a970e..7cf183600b 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
index de4c7d17b9..1b49b54687 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -1,9 +1,9 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcolorbox-tutorial-poster.tex: a tutorial for poster creation with tcolorbox
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
index 9720be99f0..344cf30273 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.breakable.tex
@@ -852,6 +852,11 @@ the \emph{break sequence} parts are displayed.
\tcbbreakskininto{bicolormiddle}{bicolormiddle}{bicolormiddle}{bicolormiddle}{bicolor}
\tcbbreakskininto{bicolorlast}{bicolormiddle}{bicolormiddle}{bicolorlast}{bicolor}
\clearpage
+\tcbbreakskininto{bicolor jigsaw}{bicolorfirst jigsaw}{bicolormiddle jigsaw}{bicolorlast jigsaw}{bicolor jigsaw}
+\tcbbreakskininto{bicolorfirst jigsaw}{bicolorfirst jigsaw}{bicolormiddle jigsaw}{bicolormiddle jigsaw}{bicolor jigsaw}
+\tcbbreakskininto{bicolormiddle jigsaw}{bicolormiddle jigsaw}{bicolormiddle jigsaw}{bicolormiddle jigsaw}{bicolor jigsaw}
+\tcbbreakskininto{bicolorlast jigsaw}{bicolormiddle jigsaw}{bicolormiddle jigsaw}{bicolorlast jigsaw}{bicolor jigsaw}
+\clearpage
\tcbbreakskininto{tile}{tilefirst}{tilemiddle}{tilelast}{tile,colbacktitle=Navy}
\tcbbreakskininto{tilefirst}{tilefirst}{tilemiddle}{tilemiddle}{tile,colbacktitle=Navy}
\tcbbreakskininto{tilemiddle}{tilemiddle}{tilemiddle}{tilemiddle}{tile,colbacktitle=Navy}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
index 795c0bae49..c396417530 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coremacros.tex
@@ -173,7 +173,7 @@ This is my own box.
\begin{dispExample*}{sbs,lefthand ratio=0.6}
\newtcolorbox{mybox}[1]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
- title=#1}
+ title={#1}}
\begin{mybox}{Hello there}
This is my own box with a mandatory title.
@@ -185,7 +185,7 @@ This is my own box with a mandatory title.
colframe=red!75!black,fonttitle=\bfseries,
colbacktitle=red!85!black,enhanced,
attach boxed title to top center={yshift=-2mm},
- title=#2,#1}
+ title={#2},#1}
\begin{mybox}[colback=yellow]{Hello there}
This is my own box with a mandatory title
@@ -229,7 +229,7 @@ numbered title and options.
\begin{dispExample*}{sbs,lefthand ratio=0.6}
\newtcbox{\mybox}[1]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
- title=#1}
+ title={#1}}
\mybox{Hello there}{This is my own box.}
\end{dispExample*}
@@ -237,7 +237,7 @@ numbered title and options.
\begin{dispExample*}{sbs,lefthand ratio=0.6}
\newtcbox{\mybox}[2][]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
- title=#2,#1}
+ title={#2},#1}
\mybox[colback=yellow]{Hello there}%
{This is my own box.}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
index d885f48279..7fe459fc94 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.coreoptions.tex
@@ -409,7 +409,7 @@ This is the lower part.
\tcolorbox[savedelimiter=mybox,
savelowerto=\jobname_bspsave2.tex,lowerbox=ignored,
colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
- title=#1]}%
+ title={#1}]}%
{\endtcolorbox}
\begin{mybox}{My Example}
@@ -432,7 +432,7 @@ allows a more convenient usage:
\newtcolorbox{mybox}[1]{%
savelowerto=\jobname_bspsave2.tex,lowerbox=ignored,
colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
- title=#1}%
+ title={#1}}%
\begin{mybox}{My Example}
Upper part.
@@ -469,6 +469,7 @@ This is a \textbf{tcolorbox}.
\end{exdispExample*}
\end{docTcbKey}
+Also see \refKey{/tcb/colbacklower} of the \mylib{skins} library.
\begin{docTcbKey}{title filled}{\colOpt{=true\textbar false}}{default |true|, initially |false|}
Switches the drawing of the title background according to the given value.
@@ -1537,7 +1538,9 @@ skin variants, see \Vref{subsec:skinjigsaw}.
\begin{docTcbKey}{opacityframe}{=\meta{fraction}}{no default, initially \texttt{1.0}}
Sets the frame opacity of the box to the given \meta{fraction}.
-\begin{exdispExample*}{opacityframe}{sbs,lefthand ratio=0.6,segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\begin{exdispExample*}{opacityframe}{sbs,lefthand ratio=0.6,
+ segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}
+ }
\begin{tcolorbox}[opacityframe=0.25,
colframe=red]
This is a \textbf{tcolorbox}.
@@ -1555,6 +1558,7 @@ This is a \textbf{tcolorbox}.
\end{exdispExample*}
\end{docTcbKey}
+Also see \refKey{/tcb/opacitybacklower} of the \mylib{skins} library.
\begin{docTcbKey}{opacitybacktitle}{=\meta{fraction}}{no default, initially \texttt{1.0}}
Sets the title background opacity of the box to the given \meta{fraction}.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
index 607ef00769..7b3147217b 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.fitting.tex
@@ -497,7 +497,7 @@ are adapted. In the following, adapting the font size means adapting
bottom=1mm,right=1mm,boxsep=0mm,width=3.5cm,height=7cm,nobeforeafter,
before upper=\textcolor{blue}{\rule{5mm}{5mm}}\ ,
enhanced,watermark text={\tcbfitsteps},
- fonttitle=\bfseries,adjusted title=#1,fit algorithm=#1}
+ fonttitle=\bfseries,adjusted title={#1},fit algorithm=#1}
\mybox{fontsize}{\lipsum[2]}\hfill
\mybox{hybrid}{\lipsum[2]}\hfill
@@ -513,7 +513,7 @@ Quality \dotfill versus \dotfill Speed
\newtcboxfit{mybox}[2]{colback=red!5!white,colframe=red!75!black,left=1mm,top=1mm,
size=tight,width=7.2cm,height=5cm,nobeforeafter,
before upper=\textcolor{blue}{\rule{5mm}{5mm}}\ ,
- enhanced,fonttitle=\bfseries,adjusted title=#2,fit algorithm=#1}
+ enhanced,fonttitle=\bfseries,adjusted title={#2},fit algorithm=#1}
\mybox{hybrid}{hybrid (possible gap at end)}{\lipsum[1]}\hfill
\mybox{hybrid*}{hybrid* (no gap but possibly squeezed)}{\lipsum[1]}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
index f3fab2221b..da47d26378 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.hooks.tex
@@ -187,7 +187,7 @@ from page \pageref{subsec:overlays}.
\begin{scope}[shift={([xshift=\x]frame.north west)}]
\path[draw=green!65!black,fill=green!10,line width=1mm] (0,0) arc (0:180:5mm);
\path[fill=black] (-0.2,0) arc (0:180:1mm);
- \end{scope}}}]}}
+ \end{scope}}}}}
\tcbset{ribbon/.style={overlay app={%
\path[fill=blue!75!white,draw=blue,double=white!85!blue,
preaction={opacity=0.6,fill=blue!75!white},
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
index ef1ebcf055..48af585551 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.initoptions.tex
@@ -20,6 +20,9 @@ Particularly, they can be used for
Typically, these options may generate counters and alike.
It is \textbf{strongly} recommended that you use initialization options inside
the preamble only. Otherwise, you may get trouble when using \LaTeX's |\include| features.
+Also, it is recommended to generate new environments and commands with these
+options \emph{after} |hyperref| is loaded to avoid warnings about
+\emph{duplicate identifiers}.
\end{marker}
@@ -337,16 +340,43 @@ be redefined or a new \meta{type} can be assigned.
\end{newTcbKey}
-\begin{docCommand}{tcblistof}{\oarg{macro}\marg{name}\marg{title text}}
+\clearpage
+\begin{docCommand}[doc updated=2021-05-20]{tcblistof}{\oarg{macro}\marg{name}\oarg{short}\marg{title text}}
Displays the generated list of |tcolorbox|es with the given \meta{name}.
-The heading is generated by \meta{macro}\marg{title text} where \texttt{\textbackslash section}
-is the default setting for \meta{macro}.\par
+The heading is generated by \meta{macro}\oarg{short}\marg{title text} where \texttt{\textbackslash section}
+is the default setting for \meta{macro}.
+Here, as usual, \meta{title text} is the title of the section or chapter
+while \meta{short} is a shorter title for headings and table of contents.
+\begin{itemize}
+\item If \meta{macro} ends with a |*|, \refCom{tcblistof} mimics the behavior of
+ |\listoffigures| from the standard \LaTeX\ classes and adds the title
+ to the left and right mark for headings.
+\item If \meta{macro} starts with |\chapter|, a possible two column document setting
+ is restored to one column (as standard \LaTeX\ classes do for |\listoffigures|).
+\end{itemize}
+
+\medskip
To display the list inside a subsection, use for example:
\begin{dispListing}
\tcblistof[\subsection]{exam}{List of Exercises}
\end{dispListing}
The result of the example is found as Subsection \ref{listofexercises} on
page \pageref{listofexercises}.
+
+\medskip
+To apply the list similar to |\listoffigures| for a report or book, use for example:
+\begin{dispListing}
+\tcblistof[\chapter*]{exam}{List of Exercises}
+\end{dispListing}
+
+\medskip
+To set a short title for headings with the default |\section| setting, use for example:
+\begin{dispListing}
+\tcblistof{exam}[List of Exercises]{Elaborate List of Fine Exercises
+ for all Students of my Course}
+\end{dispListing}
+
+\medskip
\begin{marker}
The core of the list is generated by |\@starttoc|\marg{name} which
can be wrapped into an own macro.
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
index 8f99797bc2..d6b884dc19 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.listings.tex
@@ -234,7 +234,7 @@ This is my \LaTeX\ box.
colback=red!5!white,
colframe=red!75!black,
fonttitle=\bfseries,
- title=#1}
+ title={#1}}
\begin{mybox}{Listing Box}
This is my \LaTeX\ box.
@@ -246,7 +246,7 @@ This is my \LaTeX\ box.
colback=red!5!white,
colframe=red!75!black,
fonttitle=\bfseries,
- title=#2,#1}
+ title={#2},#1}
\begin{mybox}[listing only]
{Listing Box}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex
index 3a9c7524aa..a2eb8ac395 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.raster.tex
@@ -108,8 +108,13 @@ parameters and to set the properties for the enclosed boxes.
\item The boxes inside a raster are numbered automatically.
\docAuxCommand{thetcbrasternum} may be used inside a box to access
this number.
+ The \LaTeX\ counter \docCounter{tcbrastercolumn} holds the current column,
+ the counter \docCounter{tcbrasterrow} holds the current row,
+ and the counter \docCounter{tcbrasternum} holds the current box number.
\end{itemize}
+\enlargethispage*{1cm}
+
\begin{dispExample}
\begin{tcbraster}[raster columns=3, raster equal height,
size=small,colframe=red!50!black,colback=red!10!white,colbacktitle=red!50!white,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
index e9379a6fdd..63944de20a 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
@@ -227,6 +227,8 @@
posterbox,tcbposterwidth,tcbposterheight,tcbpostercolspacing,
tcbposterrowspacing,tcbpostercolumns,tcbposterrows,tcbpostercolwidth,
tcbposterrowheight,tcbposterset,
+ % extras
+ skinExampleSet,
},
texcsstyle=*\color{Definition}\bfseries,
classoffset=0% restore default
@@ -247,7 +249,7 @@
before skip balanced=4pt plus 2pt minus 1pt,
after skip balanced=5pt plus 2pt minus 1pt
},
- base example/.style={bicolor,
+ base example/.style={bicolor jigsaw,
beforeafter example,arc is angular,fonttitle=\bfseries,
fontlower=\footnotesize,
colframe=Blue_Dark,
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex
new file mode 100644
index 0000000000..5e039aee63
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skincatalog.tex
@@ -0,0 +1,1636 @@
+% !TeX root = tcolorbox.tex
+% include file of tcolorbox.tex (manual of the LaTeX package tcolorbox)
+\clearpage
+\section{Library \mylib{skins} - Catalog of Skins}\label{sec:skincatalog}%
+\tcbset{external/prefix=external/skincatalog_}%
+The \mylib{skins} library provides a catalog of skins to choose from which
+is documented in the following. The \mylib{skins} library has to be loaded
+by a package option or inside the preamble by:
+\begin{dispListing}
+\tcbuselibrary{skins}
+\end{dispListing}
+
+See \Vref{sec:skins} for the documentation of all other options of the \mylib{skins} library.
+
+\begin{itemize}
+\item In principle, a skin is applied by choosing a value for
+ \refKey{/tcb/skin}, e.g. \docValue*{enhanced}.
+ Since the parts of a breakable box should look different,
+ there are individual skins for breakable boxes, also see \Vref{subsec:breaksequence}.
+ Skins for breakable boxes derived from a base skin are called a skin family
+ in the following.
+\item Instead of setting values for \refKey{/tcb/skin}, equally named options
+ can be used which are shortcuts and which sometimes also change some
+ geometry or style settings. These are the intended options for normal users.
+ Typically, one of the following options is sufficient to select a skin:
+ \begin{itemize}
+ \item \refKey{/tcb/standard}
+ \item \refKey{/tcb/standard jigsaw}
+ \item \refKey{/tcb/enhanced}
+ \item \refKey{/tcb/enhanced jigsaw}
+ \item \refKey{/tcb/enhanced standard}
+ \item \refKey{/tcb/enhanced standard jigsaw}
+ \item \refKey{/tcb/bicolor}
+ \item \refKey{/tcb/tile}
+ \item \refKey{/tcb/beamer}
+ \item \refKey{/tcb/widget}
+ \item \refKey{/tcb/empty}
+ \item \refKey{/tcb/spartan}
+ \item \refKey{/tcb/draft}
+ \end{itemize}
+ Additionally, there are some special applications:
+ \begin{itemize}
+ \item \refKey{/tcb/marker}
+ \item \refKey{/tcb/blank}
+ \item \refKey{/tcb/blanker}
+ \item \refKey{/tcb/blankest}
+ \end{itemize}
+\end{itemize}
+
+
+
+\clearpage
+
+The auxiliary macro \docAuxCommand{skinExampleSet} is used for the
+following examples to display skin applications. Note that
+\docAuxCommand{skinExampleSet} is not part of the package, but is
+defined just for this documentation.
+
+\begin{dispListing}
+\NewDocumentCommand{\skinExampleSet}{m}{%
+ \begin{tcbraster}[raster equal height,raster columns=3,
+ colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
+ #1,
+ left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,
+ sidebyside gap=4mm]
+ \begin{tcolorbox}
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[sidebyside]
+ My content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title]
+ This is my content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \begin{tcolorbox}[adjusted title=My title,sidebyside]
+ My content.
+ \tcblower
+ More content.
+ \end{tcolorbox}
+ \end{tcbraster}
+}
+\end{dispListing}
+\tcbusetemp
+
+
+\clearpage
+\tcbset{skintable/.style={colframe=red!50!yellow!50!black,
+ colback=red!50!yellow!5!white,coltitle=red!50!yellow!3!white,
+ fonttitle=\bfseries,before=\par\smallskip,
+ title=Environment and engines for the skin \enquote{\texttt{#1}}}}
+
+\subsection{Skin Family \enquote{standard}}\label{subsec:skinstandard}
+\begin{marker}Note that the option keys \refKey{/tcb/frame style},
+ \refKey{/tcb/interior style},
+ \refKey{/tcb/segmentation style}, and
+ \refKey{/tcb/title style} are not be applicable to the standard skin.
+ Also, watermarks (see Subsection \ref{subsec:watermarks})
+ are not usable with the standard skin.
+\end{marker}
+
+\begin{docSkin}{standard}
+ This is the standard skin from the core package. All drawing engines
+ are set to type |standard|. The drawing is based on |pgf| commands and
+ does not need the |tikz| package.
+\begin{tcolorbox}[skintable=standard]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
+ \refKey{/tcb/frame engine}: \> |standard|\\
+ \refKey{/tcb/interior titled engine}: \> |standard|\\
+ \refKey{/tcb/interior engine}: \> |standard|\\
+ \refKey{/tcb/segmentation engine}: \> |standard|\\
+ \refKey{/tcb/title engine}: \> |standard|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{standard}{}{style, no value}
+ This is an abbreviation for setting |skin=standard|.
+\end{docTcbKey}
+
+\begin{dispExample}
+\skinExampleSet{standard}
+\end{dispExample}
+
+\clearpage
+
+\begin{docSkin}{standard jigsaw}
+ This is the standard jigsaw skin from the core package. It differs from
+ the skin \refSkin{standard} by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=standard jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
+ \refKey{/tcb/frame engine}: \> |standardjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |standard|\\
+ \refKey{/tcb/interior engine}: \> |standard|\\
+ \refKey{/tcb/segmentation engine}: \> |standard|\\
+ \refKey{/tcb/title engine}: \> |standard|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{standard jigsaw}{}{style, no value}
+ This is an abbreviation for setting |skin=standard jigsaw|.
+\end{docTcbKey}
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{standard jigsaw,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+}
+\end{dispExample*}
+
+
+\clearpage
+\subsection{Skin Family \enquote{enhanced}}
+\begin{marker}
+If you like the standard appearance of a |tcolorbox| but you want to
+have some \enquote{enhanced} features, the |enhanced| skin is what you are looking for.
+\end{marker}
+
+\begin{docSkin}{enhanced}
+ This skin translates the drawing commands of the core package into |tikz|
+ path commands. Therefore, it allows all |tikz| high level options for
+ these paths and has more flexibility compared to the \refSkin{standard} skin.
+ You pay for this with some prolonged compilation time.
+ The |tikz| path options can
+ be given with the option keys
+ \refKey{/tcb/frame style},
+ \refKey{/tcb/interior style},
+ \refKey{/tcb/segmentation style}, and
+ \refKey{/tcb/title style}.
+\begin{tcolorbox}[skintable=enhanced]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> |path|\\
+ \refKey{/tcb/interior engine}: \> |path|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}{enhanced}{}{style, no value}
+ This is an abbreviation for setting |skin=enhanced|.
+\end{docTcbKey}
+
+\begin{dispExample}
+\skinExampleSet{enhanced}
+\end{dispExample}
+
+\clearpage
+
+\begin{dispExample}
+% \usetikzlibrary{shadings} % preamble
+\tcbset{skin=enhanced,fonttitle=\bfseries,
+ frame style={upper left=blue,upper right=red,lower left=yellow,lower right=green},
+ interior style={white,opacity=0.5},
+ segmentation style={black,solid,opacity=0.2,line width=1pt}}
+
+\begin{tcolorbox}[title=Nice box in rainbow colors]
+ With the \enquote{enhanced} skin, it is quite easy to produce fancy looking effects.
+ \tcblower
+ Note that this is still a \texttt{tcolorbox}.
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+% \usetikzlibrary{decorations.pathmorphing} % preamble
+\tcbset{skin=enhanced,fonttitle=\bfseries,boxrule=1mm,
+ frame style={draw=FireBrick,fill=Salmon},drop fuzzy shadow,
+ interior style={draw=FireBrick,top color=Salmon!10,bottom color=Salmon!20},
+ segmentation style={draw=FireBrick,solid,decorate,
+ decoration={coil,aspect=0,segment length=10.1mm}}}
+
+\begin{tcblisting}{title=A listing box with shadow and some specials}
+Of course, skins can be used for listings also.
+\begin{equation}
+ \int\limits_1^2 \frac{1}{x}~dx = \ln(2).
+\end{equation}
+\end{tcblisting}
+\end{dispExample}
+
+
+\clearpage
+
+
+\begin{docTcbKey}{enhanced standard}{}{style, no value}
+ For unbreakable boxes, this is identical to using \refKey{/tcb/enhanced}.
+ But, for breakable boxes, the \emph{break sequence} is identical to the \refSkin{standard} skin,
+ see Section \ref{subsec:breaksequence} from page \pageref{subsec:breaksequence}.
+\end{docTcbKey}
+
+
+\begin{docTcbKey}{blank}{}{style, initially unset}
+ This style relies on the skin \refSkin{enhanced}. All drawing operations
+ are hidden and all margins are set to |0pt|. See \refKey{/tcb/blanker}
+ for switching off the drawing engines.
+\begin{dispExample}
+\begin{tcolorbox}[blank,watermark text=A blank box]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+\begin{docCommand}{tcbline}{}
+ Sometimes, a line is only a line. With \refCom{tcblower} you separate
+ the box content into two functional units. |\tcbline| draws only a line
+ which looks like the segmentation line between upper and lower part.
+ Furthermore, you can use |\tcbline| more than just once.
+ |\tcbline| always uses the |path| drawing engine. Therefore,
+ the \refKey{/tcb/segmentation style} can be applied.
+
+\begin{dispExample}
+\tcbset{enhanced,colframe=blue!50!black,colback=white}
+
+\begin{tcolorbox}[colupper=red!50!black,collower=green!50!black]
+\lipsum[1]
+\tcbline
+\lipsum[2]
+\tcblower
+\lipsum[3]
+\tcbline
+\lipsum[4]
+\end{tcolorbox}
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{tcbline*}{}
+ Equivalent to \refCom{tcbline}, but in a breakable box, \refCom{tcbline*}
+ is removed if at a page/box break. Also, it is removed at the end
+ of a box.
+\end{docCommand}
+
+\clearpage
+\begin{docSkin}{enhancedfirst}
+This is a flavor of \refSkin{enhanced} which is used as a \emph{first} part
+in a break sequence for \refSkin{enhanced}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=enhancedfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior engine}: \> |pathfirst|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=enhancedfirst}
+\end{dispExample}
+
+\medskip
+
+%\clearpage
+\begin{docSkin}{enhancedmiddle}
+This is a flavor of \refSkin{enhanced} which is used as a \emph{middle} part
+in a break sequence for \refSkin{enhanced}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=enhancedmiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior engine}: \> |pathmiddle|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=enhancedmiddle}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{enhancedlast}
+This is a flavor of \refSkin{enhanced} which is used as a \emph{last} part
+in a break sequence for \refSkin{enhanced}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=enhancedlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> |pathlast|\\
+ \refKey{/tcb/interior engine}: \> |pathlast|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\skinExampleSet{skin=enhancedlast}
+\end{dispExample}
+
+\clearpage
+
+\begin{docSkin}{enhanced jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhanced}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhanced jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |path|\\
+ \refKey{/tcb/interior engine}: \> |path|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{enhanced jigsaw}{}{style, no value}
+ This is an abbreviation for setting |skin=enhanced jigsaw|.
+\end{docTcbKey}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{enhanced jigsaw,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+}
+\end{dispExample*}
+
+
+\begin{docTcbKey}[][doc new=2017-07-01]{enhanced standard jigsaw}{}{style, no value}
+ For unbreakable boxes, this is identical to using \refKey{/tcb/enhanced jigsaw}.
+ But, for breakable boxes, the \emph{break sequence} is identical to the \refSkin{standard jigsaw} skin,
+ see Section \ref{subsec:breaksequence} from page \pageref{subsec:breaksequence}.
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docSkin}{enhancedfirst jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhancedfirst}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhancedfirst jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirstjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior engine}: \> |pathfirst|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{skin=enhancedfirst jigsaw,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+}
+\end{dispExample*}
+
+
+\clearpage
+\begin{docSkin}{enhancedmiddle jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhancedmiddle}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhancedmiddle jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddlejigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior engine}: \> |pathmiddle|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{skin=enhancedmiddle jigsaw,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+}
+\end{dispExample*}
+
+
+\begin{docTcbKey}{marker}{}{style, no value}
+ This styles relies on the skin \refSkin{enhancedmiddle jigsaw}. It is
+ intended to be used as an optical marker like a highlighter pen.
+\begin{dispExample}
+\begin{tcolorbox}[marker]
+\lipsum[2]
+\end{tcolorbox}
+\end{dispExample}
+\end{docTcbKey}
+
+\clearpage
+
+\begin{dispListing*}{before upper={This examples demonstrates the creation of several
+ \emph{text marker} environments based on \refSkin{enhancedmiddle}.\par\medskip}}
+\tcbset{textmarker/.style={%
+ skin=enhancedmiddle jigsaw,breakable,parbox=false,
+ boxrule=0mm,leftrule=5mm,rightrule=5mm,boxsep=0mm,arc=0mm,outer arc=0mm,
+ left=3mm,right=3mm,top=1mm,bottom=1mm,toptitle=1mm,bottomtitle=1mm,oversize}}
+
+\newtcolorbox{yellow}{textmarker,colback=yellow!5!white,colframe=yellow}
+\newtcolorbox{orange}{textmarker,colback=DarkOrange!5!white,
+ colframe=DarkOrange!75!yellow}
+\newtcolorbox{red}{textmarker,colback=red!5!white,colframe=red}
+\newtcolorbox{blue}{textmarker,colback=DeepSkyBlue!5!white,colframe=DeepSkyBlue}
+\newtcolorbox{green}{textmarker,colback=Chartreuse!5!white,colframe=Chartreuse}
+\newtcolorbox{rainbow}{textmarker,interior hidden,
+ frame style={top color=blue,bottom color=red,middle color=green}}
+
+\begin{yellow}
+ \lipsum[1-3]
+\end{yellow}
+
+\begin{orange}
+ \lipsum[4]
+\end{orange}
+
+\begin{red}
+ \lipsum[5]
+\end{red}
+
+\begin{green}
+ \lipsum[6]
+\end{green}
+
+\begin{blue}
+ \lipsum[7]
+\end{blue}
+
+\begin{rainbow}
+ \lipsum[8]
+\end{rainbow}
+\end{dispListing*}
+{\tcbusetemp}
+
+
+\clearpage
+\begin{docSkin}{enhancedlast jigsaw}
+ This is the jigsaw variant of skin \refSkin{enhancedlast}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=enhancedlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlastjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> |pathlast|\\
+ \refKey{/tcb/interior engine}: \> |pathlast|\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{skin=enhancedlast jigsaw,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+}
+\end{dispExample*}
+
+
+
+\clearpage
+\subsection{Skin Family \enquote{bicolor}}
+\begin{docSkin}{bicolor}
+ This skin is quite similar to the \refSkin{standard} and \refSkin{enhanced} skin.
+ But instead of a segmentation line, the optional lower part of the box is filled with a
+ different color or drawn with a different style.
+\begin{tcolorbox}[skintable=bicolor]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+ \begin{itemize}
+ \item The most basic usage of this skin is to set the background color of
+ the lower part by \refKey{/tcb/colbacklower} and all other options like for
+ the \refSkin{standard} skin.
+\begin{dispExample}
+\begin{tcolorbox}[skin=bicolor,title=The title,
+ colframe=FireBrick!75!black,colback=Salmon!50!white,colbacklower=Salmon]
+ The upper part.
+ \tcblower
+ The lower part.
+\end{tcolorbox}
+\end{dispExample}
+ \item The more advanced usage of this skin is to apply the \refKey{/tcb/frame style}
+ and the \refKey{/tcb/interior style} like for
+ the \refSkin{enhanced} skin. Also, the \refKey{/tcb/segmentation style} can be
+ used, but it is applied to the whole lower part.
+\begin{dispExample}
+\begin{tcolorbox}[skin=bicolor,title=The title,
+ frame style={top color=FireBrick,
+ bottom color=FireBrick!15!white,draw=black},
+ interior style={left color=Salmon,right color=Salmon!50!white},
+ segmentation style={right color=Salmon,left color=Salmon!50!white}]
+ The upper part.
+ \tcblower
+ The lower part.
+\end{tcolorbox}
+\end{dispExample}
+ \end{itemize}
+\end{docSkin}
+
+\clearpage
+
+\begin{docTcbKey}{bicolor}{}{style, no value}
+ This is an abbreviation for setting |skin=bicolor|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\skinExampleSet{bicolor,
+ colbacklower=LimeGreen!75!LightGreen,
+}
+\end{dispExample}
+
+\clearpage
+
+
+\begin{marker}
+ The following options \refKey{/tcb/colbacklower} and \refKey{/tcb/opacitybacklower}
+ are executed before \refKey{/tcb/segmentation style}, i.e.
+ \refKey{/tcb/segmentation style} overrules them.
+\end{marker}
+
+\begin{docTcbKey}{colbacklower}{=\meta{color}}{no default, initially \texttt{black!15!white}}
+ Sets the background \meta{color} of the lower part. It depends on the skin,
+ if this value is used.
+\end{docTcbKey}
+
+\begin{dispExample}
+\tcbset{gitexample/.style={listing and comment,comment={#1},
+ skin=bicolor,boxrule=1mm,fonttitle=\bfseries,coltitle=black,
+ frame style={draw=black,left color=Gold,right color=Goldenrod!50!Gold},
+ colback=black,colbacklower=Goldenrod!75!Gold,
+ colupper=white,collower=black,
+ listing options={language={bash},aboveskip=0pt,belowskip=0pt,nolol,
+ basicstyle=\ttfamily\bfseries,extendedchars=true}}}
+
+\begin{tcblisting}{title={Snapshot of the staging area},
+ gitexample={The option `-a' automatically stages all tracked and modified
+ files before the commit.\par
+ This can be combined with the message option `-m'
+ as seen in the third line.}}
+git commit
+git commit -a
+git commit -am 'changes to my example'
+\end{tcblisting}
+\end{dispExample}
+
+\smallskip
+
+\begin{docTcbKey}[][doc new=2021-05-21]{opacitybacklower}{=\meta{fraction}}{no default, initially \texttt{1.0}}
+ Sets the background opacity of the lower part to the given \meta{fraction}.
+ It depends on the skin, if this value is used.
+\end{docTcbKey}
+
+\begin{dispExample}
+\begin{tcolorbox}[bicolor,
+ frame style={preaction={fill=blue!50!black},
+ pattern=checkerboard,pattern color=blue!50!gray},
+ fonttitle=\bfseries,
+ colback=blue!10, colbacklower=white, opacitybacklower=0.65,
+ title={Example for a semilucent lower part}]
+This is the upper part.
+\tcblower
+And that is the lower part.
+\end{tcolorbox}
+\end{dispExample}
+
+\clearpage
+
+\begin{docSkin}{bicolorfirst}
+This is a flavor of \refSkin{bicolor} which is used as a \emph{first} part
+in a break sequence for \refSkin{bicolor}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=bicolorfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\skinExampleSet{skin=bicolorfirst,
+ colbacklower=LimeGreen!75!LightGreen,
+}
+\end{dispExample}
+
+
+\clearpage
+
+\begin{docSkin}{bicolormiddle}
+This is a flavor of \refSkin{bicolor} which is used as a \emph{middle} part
+in a break sequence for \refSkin{bicolor}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=bicolormiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=bicolormiddle,
+ colbacklower=LimeGreen!75!LightGreen,
+}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{bicolorlast}
+This is a flavor of \refSkin{bicolor} which is used as a \emph{last} part
+in a break sequence for \refSkin{bicolor}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=bicolorlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=bicolorlast,
+ colbacklower=LimeGreen!75!LightGreen,
+}
+\end{dispExample}
+
+
+\clearpage
+
+\begin{docSkin}[doc new=2021-05-21]{bicolor jigsaw}
+ This is the jigsaw variant of skin \refSkin{bicolor}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=bicolor jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{bicolor jigsaw}{}{style, no value}
+ This is an abbreviation for setting |skin=enhanced jigsaw|.
+\end{docTcbKey}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{bicolor jigsaw,
+ colbacklower=LimeGreen!75!LightGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ opacitybacklower=0.5,
+}
+\end{dispExample*}
+
+
+\clearpage
+
+
+\begin{docSkin}[doc new=2021-05-21]{bicolorfirst jigsaw}
+ This is the jigsaw variant of skin \refSkin{bicolorfirst}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=bicolorfirst jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirstjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{skin=bicolorfirst jigsaw,
+ colbacklower=LimeGreen!75!LightGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ opacitybacklower=0.5,
+}
+\end{dispExample*}
+
+
+
+\clearpage
+
+\begin{docSkin}[doc new=2021-05-21]{bicolormiddle jigsaw}
+ This is the jigsaw variant of skin \refSkin{bicolormiddle}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=bicolormiddle jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddlejigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{skin=bicolormiddle jigsaw,
+ colbacklower=LimeGreen!75!LightGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ opacitybacklower=0.5,
+}
+\end{dispExample*}
+
+
+\clearpage
+\begin{docSkin}[doc new=2021-05-21]{bicolorlast jigsaw}
+ This is the jigsaw variant of skin \refSkin{bicolorlast}.
+ It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
+\begin{tcolorbox}[skintable=bicolorlast jigsaw]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlastjigsaw|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
+\skinExampleSet{skin=bicolorlast jigsaw,
+ colbacklower=LimeGreen!75!LightGreen,
+ opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
+ opacitybacklower=0.5,
+}
+\end{dispExample*}
+
+
+
+\clearpage
+\subsection{Skin Family \enquote{tile}}
+\begin{docSkin}[doc new=2016-02-25]{tile}
+ This skin is a variant of skin \refSkin{bicolor}. Especially, the
+ optional lower part of the box is colored by \refKey{/tcb/colbacklower}.
+ The main difference to \refSkin{bicolor} is that \refSkin{tile} has no
+ frame.
+\begin{tcolorbox}[skintable=tile]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}[][doc new=2016-02-25]{tile}{}{style, initially\\
+ |skin=tile,boxrule=0pt,sharp corners,title filled,fonttitle=\textbackslash bfseries|
+}
+ This key applies |skin=tile| and in addition changes the geometry and some style options.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\skinExampleSet{tile,
+ colbacklower=LimeGreen!75!LightGreen,
+}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}[doc new=2016-02-25]{tilefirst}
+This is a flavor of \refSkin{tile} which is used as a \emph{first} part
+in a break sequence for \refSkin{tile}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=tilefirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\skinExampleSet{skin=tilefirst,
+ colbacklower=LimeGreen!75!LightGreen,
+ boxrule=0pt,
+}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}[doc new=2016-02-25]{tilemiddle}
+This is a flavor of \refSkin{tile} which is used as a \emph{middle} part
+in a break sequence for \refSkin{tile}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=tilemiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=tilemiddle,
+ colbacklower=LimeGreen!75!LightGreen,
+ boxrule=0pt,
+}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}[doc new=2016-02-25]{tilelast}
+This is a flavor of \refSkin{tile} which is used as a \emph{last} part
+in a break sequence for \refSkin{tile}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=tilelast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=tilelast,
+ colbacklower=LimeGreen!75!LightGreen,
+ boxrule=0pt,
+}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family \enquote{beamer}}
+
+\begin{docSkin}{beamer}
+ This skin resembles boxes known from the |beamer| class and therefore is
+ called \enquote{beamer}. It uses the normal colors from the core package but shades
+ them a little bit.
+\begin{tcolorbox}[skintable=beamer]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+
+\begin{docTcbKey}{beamer}{}{style, initially\\
+ |skin=beamer,boxrule=0mm,titlerule=1mm,toptitle=0.5mm,|\\
+ |arc=2mm,fonttitle=\textbackslash bfseries,drop fuzzy shadow|
+}
+ This key applies |skin=beamer| and in addition changes the geometry and some style options.
+\end{docTcbKey}
+
+
+
+\begin{dispExample}
+\skinExampleSet{beamer,title filled=false}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+\begin{tcolorbox}[beamer,colback=Salmon!50!white,colframe=FireBrick!75!black,
+ adjusted title=A colored box with the \enquote{beamer} skin]
+This box looks like a box provided by the \texttt{beamer} class.
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcolorbox}[beamer,colframe=blue,colback=black,
+ watermark graphics=lichtspiel.jpg,
+ coltext=white,watermark opacity=0.75,watermark stretch=1.0,
+ title=Beamer Box with background picture]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+
+
+\begin{dispExample}
+\newtcolorbox{myblock}[2][]{%
+ beamer,breakable,colback=LightBlue,colframe=DarkBlue,#1,title={#2}}%
+
+\begin{myblock}{Beamerish \texttt{block}: \texttt{myblock}}
+\lipsum[1]
+\end{myblock}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{beamerfirst}
+This is a flavor of \refSkin{beamer} which is used as a \emph{first} part
+in a break sequence for \refSkin{beamer}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=beamerfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathfirst|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{beamer,title filled=false,skin=beamerfirst}
+\end{dispExample}
+
+
+\medskip
+
+\begin{docSkin}{beamermiddle}
+This is a flavor of \refSkin{beamer} which is used as a \emph{middle} part
+in a break sequence for \refSkin{beamer}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=beamermiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathmiddle|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{beamer,title filled=false,skin=beamermiddle}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{beamerlast}
+This is a flavor of \refSkin{beamer} which is used as a \emph{last} part
+in a break sequence for \refSkin{beamer}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=beamerlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> |pathlast|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\skinExampleSet{beamer,title filled=false,skin=beamerlast}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family \enquote{widget}}
+\begin{docSkin}{widget}
+ This skin uses the normal colors from the core package but shades
+ them a little bit.
+ The appearance of the skin can be controlled by \refKey{/tcb/frame style},
+ \refKey{/tcb/interior style}, and \refKey{/tcb/segmentation style},
+ if needed.
+\begin{tcolorbox}[skintable=widget]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |path|\\
+ \refKey{/tcb/interior titled engine}: \> |path|\\
+ \refKey{/tcb/interior engine}: \> |path|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}[][doc updated={2020-09-23}]{widget}{}{style, initially\\
+ |skin=widget,arc=0.5mm,fonttitle=\bfseries,titlerule=0mm|
+}
+ This key applies |skin=widget| and in addition changes the geometry and some style options.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\skinExampleSet{widget}
+\end{dispExample}
+
+
+\begin{dispExample}
+\begin{tcolorbox}[widget,colback=Salmon!50!white,colframe=FireBrick!75!black,
+ adjusted title=A colored box with the \enquote{widget} skin]
+This is my content.
+\end{tcolorbox}
+\end{dispExample}
+
+\clearpage
+
+\begin{docSkin}{widgetfirst}
+This is a flavor of \refSkin{widget} which is used as a \emph{first} part
+in a break sequence for \refSkin{widget}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=widgetfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
+ \refKey{/tcb/interior engine}: \> |pathfirst|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{widget,skin=widgetfirst}
+\end{dispExample}
+
+\medskip
+
+\begin{docSkin}{widgetmiddle}
+This is a flavor of \refSkin{widget} which is used as a \emph{middle} part
+in a break sequence for \refSkin{widget}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=widgetmiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
+ \refKey{/tcb/interior engine}: \> |pathmiddle|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\skinExampleSet{widget,skin=widgetmiddle}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{widgetlast}
+This is a flavor of \refSkin{widget} which is used as a \emph{last} part
+in a break sequence for \refSkin{widget}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=widgetlast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |pathlast|\\
+ \refKey{/tcb/interior titled engine}: \> |pathlast|\\
+ \refKey{/tcb/interior engine}: \> |pathlast|\\
+ \refKey{/tcb/segmentation engine}: \> \emph{special}\\
+ \refKey{/tcb/title engine}: \> \emph{special}
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{widget,skin=widgetlast}
+\end{dispExample}
+
+
+\clearpage
+\subsection{Skin Family \enquote{empty}}
+
+\begin{docSkin}{empty}
+ This skin sets all engines to |empty|, i.\,e.\ nothing is drawn at all.
+ Therefore, this skin is a good starting point to create a complete
+ new style by yourself.
+\begin{tcolorbox}[skintable=empty]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{marker}
+ Note that the text colors stay unchanged when a skin is applied.
+ Since the standard title color
+ is white, the title of a box with skin \docValue*{empty} becomes
+ invisible, if not set to another color by \refKey{/tcb/coltitle}.
+\end{marker}
+
+
+\begin{docTcbKey}{empty}{}{style, no value}
+ This is an abbreviation for setting |skin=empty|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\skinExampleSet{empty,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+}
+\end{dispExample}
+
+
+\clearpage
+\begin{docTcbKey}{blanker}{}{style, initially unset}
+ This style relies on the skin \refSkin{empty}. All engines
+ are set to empty and all margins are set to |0pt|.
+ In contrast to \refKey{/tcb/blank}, the graphical paths are
+ not constructed with exception of the geometry nodes.
+\begin{dispExample}
+\begin{tcolorbox}[blanker,watermark text=A blank box]
+\lipsum[1]
+\end{tcolorbox}
+\end{dispExample}
+
+\begin{dispExample}
+% \tcbuselibrary{fitting}
+\newtcboxfit{\mybox}[1]{blanker,width=4cm,height=7cm,top=4pt,
+ watermark text=#1}
+
+\begin{tabular}{|c|c|c|}\hline
+A & B & C\\\hline
+\mybox{A}{\lipsum[1]} & \mybox{B}{\lipsum[2]} & \mybox{C}{\lipsum[3]}\\\hline
+\end{tabular}
+\end{dispExample}
+\end{docTcbKey}
+
+
+
+\clearpage
+\begin{docTcbKey}{blankest}{}{style, initially unset}
+ This style extends \refKey{/tcb/blanker}.
+ All engines are set to empty and all margins are set to |0pt|.
+ In contrast to \refKey{/tcb/blanker}, also title, shadow, underlay,
+ overlay, finish and borderline are removed.
+
+\begin{dispExample}
+% \tcbuselibrary{raster}
+\begin{tcbraster}[raster columns=3,raster equal height,
+ title=Box \thetcbrasternum,
+ enhanced,size=small,colframe=red!50!black,colback=red!10!white,
+ coltitle=yellow!85!black,
+ drop fuzzy shadow,watermark text={Box \thetcbrasternum},
+ borderline={.25mm}{-0.5mm}{green!40!black},
+ finish={\begin{tcbclipframe}\draw[blue,opacity=0.1,line width=1cm]
+ (frame.south west) -- (frame.north east);\end{tcbclipframe}},
+ ]
+ \begin{tcolorbox}\lipsum[4]\end{tcolorbox}
+ \begin{tcolorbox}[blanker]\lipsum[4]\end{tcolorbox}
+ \begin{tcolorbox}[blankest]\lipsum[4]\end{tcolorbox}
+\end{tcbraster}
+\end{dispExample}
+\end{docTcbKey}
+
+
+\clearpage
+\begin{docSkin}{emptyfirst}
+This is a flavor of \refSkin{empty} which is used as a \emph{first} part
+in a break sequence for \refSkin{empty}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=emptyfirst]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=emptyfirst,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+}
+\end{dispExample}
+
+
+\clearpage
+
+\begin{docSkin}{emptymiddle}
+This is a flavor of \refSkin{empty} which is used as a \emph{middle} part
+in a break sequence for \refSkin{empty}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=emptymiddle]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{dispExample}
+\skinExampleSet{skin=emptymiddle,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+}
+\end{dispExample}
+
+
+\clearpage
+\begin{docSkin}{emptylast}
+This is a flavor of \refSkin{empty} which is used as a \emph{last} part
+in a break sequence for \refSkin{empty}.
+Nevertheless, this skin can be applied independently.
+\begin{tcolorbox}[skintable=emptylast]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |empty|\\
+ \refKey{/tcb/interior titled engine}: \> |empty|\\
+ \refKey{/tcb/interior engine}: \> |empty|\\
+ \refKey{/tcb/segmentation engine}: \> |empty|\\
+ \refKey{/tcb/title engine}: \> |empty|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{dispExample}
+\skinExampleSet{skin=emptylast,
+ coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
+}
+\end{dispExample}
+
+\clearpage
+\begin{dispListing*}{breakable,phantomlabel=freeboxexample,before upper={This example demonstrates
+a breakable customized box. Here, we define an environment |freebox|.
+The first application of |freebox| produces an unbroken |tcolorbox|.
+The box is drawn by the code given by \refKey{/tcb/frame code}
+and \refKey{/tcb/interior code}.\par
+The second application of |freebox| is broken into several parts which
+are drawn by the codes given by
+\refKey{/tcb/skin first is subskin of},
+\refKey{/tcb/skin middle is subskin of}, and
+\refKey{/tcb/skin last is subskin of}.
+\par\bigskip
+}}
+% Preamble:
+%\usepackage{tikz,lipsum}
+%\tcbuselibrary{skins,breakable}
+\tikzset{coltria/.style={fill=red!15!white}}
+
+\newtcolorbox{freebox}[1][]{empty,
+ breakable,height fixed for=first and middle,
+ leftrule=5mm,left=2mm,
+ frame style={fill,top color=red!75!black,bottom color=red!75!black,middle color=red},
+ colback=yellow!50!white,
+ watermark color=red!50!yellow!75!white,
+ watermark text on=unbroken is unbroken box,
+ watermark text on=first is first part,
+ watermark text on=middle is middle part,
+ watermark text on=last is last part,
+ % code for unbroken boxes:
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --([xshift=-5mm]frame.north east)--([yshift=-5mm]frame.north east)
+ --([yshift=5mm]frame.south east)--([xshift=-5mm]frame.south east)--cycle; },
+ interior code={\path[tcb fill interior] (interior.south west)--(interior.north west)
+ --([xshift=-4.8mm]interior.north east)--([yshift=-4.8mm]interior.north east)
+ --([yshift=4.8mm]interior.south east)--([xshift=-4.8mm]interior.south east)
+ --cycle; },
+ % code for the first part of a break sequence:
+ skin first is subskin of={emptyfirst}{%
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --([xshift=-5mm]frame.north east)--([yshift=-5mm]frame.north east)
+ --(frame.south east)--cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=1mm]frame.south west) -- +(120:2mm)
+ -- +(60:2mm)-- cycle; },
+ interior code={\path[tcb fill interior] (interior.south west|-frame.south)
+ --(interior.north west)--([xshift=-4.8mm]interior.north east)
+ --([yshift=-4.8mm]interior.north east)--(interior.south east|-frame.south)
+ --cycle; },
+ },%
+ % code for the middle part of a break sequence:
+ skin middle is subskin of={emptymiddle}{%
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --(frame.north east)--(frame.south east)--cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=-1mm]frame.north west) -- +(240:2mm)
+ -- +(300:2mm) -- cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=1mm]frame.south west) -- +(120:2mm)
+ -- +(60:2mm) -- cycle;
+ },
+ interior code={\path[tcb fill interior] (interior.south west|-frame.south)
+ --(interior.north west|-frame.north)--(interior.north east|-frame.north)
+ --(interior.south east|-frame.south)--cycle; },
+ },
+ % code for the last part of a break sequence:
+ skin last is subskin of={emptylast}{%
+ frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
+ --(frame.north east)--([yshift=5mm]frame.south east)
+ --([xshift=-5mm]frame.south east)--cycle;
+ \path[coltria] ([xshift=2.5mm,yshift=-1mm]frame.north west) -- +(240:2mm)
+ -- +(300:2mm) -- cycle;
+ },
+ interior code={\path[tcb fill interior] (interior.south west)
+ --(interior.north west|-frame.north)--(interior.north east|-frame.north)
+ --([yshift=4.8mm]interior.south east)--([xshift=-4.8mm]interior.south east)
+ --cycle; },
+ },
+ #1}
+
+\begin{freebox}
+\lipsum[1]
+\end{freebox}
+
+\begin{freebox}
+\lipsum[1-12]
+\end{freebox}
+\end{dispListing*}
+{\tcbusetemp}
+
+
+\clearpage
+
+\subsection{Skin \enquote{spartan}}\label{subsec:spartan}
+
+\begin{docSkin}{spartan}
+ This skin is quite \ldots\ spartan.
+ It supports no rounded corners, no overlays, no shadows, no borderlines,
+ and no finishes. The only exception are underlays.
+ One cannot do very fancy things with this skin, but it compiles very fast.
+ Therefore, the |spartan| skin is
+ used for the draft mode, see \Vref{subsec:draftmode}.
+ Nevertheless, it can be used as a normal skin.
+
+\begin{tcolorbox}[skintable=spartan]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |spartan|\\
+ \refKey{/tcb/interior titled engine}: \> |spartan|\\
+ \refKey{/tcb/interior engine}: \> |spartan|\\
+ \refKey{/tcb/segmentation engine}: \> |spartan|\\
+ \refKey{/tcb/title engine}: \> |spartan|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+
+\begin{docTcbKey}{spartan}{}{style, no value}
+ This is an abbreviation for setting |skin=spartan|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\skinExampleSet{spartan}
+\end{dispExample}
+
+
+\clearpage
+
+\subsection{Skin \enquote{draft}}\label{subsec:draft}
+
+\begin{docSkin}{draft}
+ This skin is intended to be used while drafting new geometric settings
+ for a |tcolorbox|.
+\begin{tcolorbox}[skintable=draft]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> \emph{special}\\
+ \refKey{/tcb/interior titled engine}: \> \emph{special}\\
+ \refKey{/tcb/interior engine}: \> \emph{special}\\
+ \refKey{/tcb/segmentation engine}: \> |path|\\
+ \refKey{/tcb/title engine}: \> |path|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{draft}{}{style, no value}
+ This is an abbreviation for setting |skin=draft|.
+\end{docTcbKey}
+
+
+\begin{dispExample}
+\skinExampleSet{draft}
+\end{dispExample}
+
+
+
+\begin{dispExample}
+\vspace*{3mm}
+\begin{tcolorbox}[draft,title=A colored box with the \enquote{draft} skin]
+\lipsum[1-3]
+\tcblower
+\lipsum[4-6]
+\end{tcolorbox}
+\end{dispExample}
+
+
+
+\clearpage
+\subsection{Skin Family \enquote{freelance}}
+\begin{marker}
+This skin family \enquote{freelance} is deprecated with |tcolorbox| 3.00.
+It is not longer needed, because
+\refKey{/tcb/frame code},
+\refKey{/tcb/interior code},
+\refKey{/tcb/interior titled code}, and
+\refKey{/tcb/title code}
+can be applied to every skin now. In this sense, everything has become
+\emph{freelance} now.\par
+For users of \refKey{/tcb/freelance}: Old code should continue to work. There may be
+exceptions for breakable freelance boxes under certain circumstances.
+For new code, use \refKey{/tcb/empty} or \refKey{/tcb/enhanced} where
+you would have used \refKey{/tcb/freelance} before.
+\end{marker}
+
+\begin{docSkin}{freelance}
+ This skin gives full freedom for the appearance of the |tcolorbox|.
+ All drawing engines are set to type |freelance|; they use the |tikz| package
+ and compute the \refKey{/tcb/geometry nodes}.
+ %This skin is useful for boxes which should differ much from the normal
+ %appearance. Note that this difference has to be programmed by the user.
+ %The drawing code can be given
+ %with the following option keys. As default value, the code from the |standard|
+ %skin is set.
+\begin{tcolorbox}[skintable=freelance]
+ \begin{tabbing}
+ \refKey{/tcb/interior titled engine}: \=\kill
+ \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
+ \refKey{/tcb/frame engine}: \> |freelance|\\
+ \refKey{/tcb/interior titled engine}: \> |freelance|\\
+ \refKey{/tcb/interior engine}: \> |freelance|\\
+ \refKey{/tcb/segmentation engine}: \> |freelance|\\
+ \refKey{/tcb/title engine}: \> |freelance|
+ \end{tabbing}
+\end{tcolorbox}
+\end{docSkin}
+
+\begin{docTcbKey}{freelance}{}{style, no value}
+ This is an abbreviation for setting |skin=freelance|.
+\end{docTcbKey}
+
+\begin{docSkin}{freelancefirst}
+ This skin equals \refSkin{freelance} with exception of the break sequence,
+ see \Vref{subsec:breaksequence}.
+ %It is used as first part of the
+ %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancefirst}
+ %can be used to customize this part.
+\end{docSkin}
+
+\begin{docSkin}{freelancemiddle}
+ This skin equals \refSkin{freelance} with exception of the break sequence,
+ see \Vref{subsec:breaksequence}.
+ %It is used as middle part of the
+ %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancemiddle}
+ %can be used to customize this part.
+\end{docSkin}
+
+\begin{docSkin}{freelancelast}
+ This skin equals \refSkin{freelance} with exception of the break sequence,
+ see \Vref{subsec:breaksequence}.
+ %It is used as last part of the
+ %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancelast}
+ %can be used to customize this part.
+\end{docSkin}
+
+
+\begin{docTcbKey}{extend freelance}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelance}.
+\end{docTcbKey}
+
+\begin{docTcbKey}{extend freelancefirst}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelancefirst} which
+is used as first part of the break sequence of \refSkin{freelance}.
+See \refKey{/tcb/skin first is subskin of} for a substitute of this key.
+\end{docTcbKey}
+
+\begin{docTcbKey}{extend freelancemiddle}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelancemiddle} which
+is used as middle part of the break sequence of \refSkin{freelance}.
+See \refKey{/tcb/skin middle is subskin of} for a substitute of this key.
+\end{docTcbKey}
+
+\enlargethispage*{1cm}
+
+\begin{docTcbKey}{extend freelancelast}{=\meta{options}}{no default, initially empty}
+The \meta{options} are added to the skin definition of \refSkin{freelancelast} which
+is used as last part of the break sequence of \refSkin{freelance}.
+See \refKey{/tcb/skin last is subskin of} for a substitute of this key.
+\end{docTcbKey}
+
+
+
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
index 32b395673d..1f3833a7f7 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
@@ -10,6 +10,10 @@ The library is loaded by a package option or inside the preamble by:
This also loads the package |tikz| \cite{tantau:tikz_and_pgf}. Typically but not necessarily,
the following skins use |tikz| instead of |pgf|.
+In the following, general settings and options of the library are
+documented.
+The actual catalog of skins is found in \Vref{sec:skincatalog}.
+
\subsection{Style Option Keys}\label{subsec:addstyleoptions}
The following style options are applicable for all skins which
use engines of type |path|, |pathfirst|, |pathmiddle|, or |pathlast|.
@@ -2837,9 +2841,9 @@ For certain boxes, a more delicate procedure is needed. E.g., if the box should
be translucent, an already painted area cannot be made unpainted. Therefore,
more elaborate frame engines saw holes into the frame where the interior area and
optionally the title area will be painted.
-The resulting skins are called \emph{jigsaw} skins. For \refSkin{standard}
-and \refSkin{enhanced}, there are variants called \refSkin{standard jigsaw}
-and \refSkin{enhanced jigsaw}.
+The resulting skins are called \emph{jigsaw} skins. For \refSkin{standard},
+\refSkin{enhanced}, and \refSkin{bicolor}, there are variants called \refSkin{standard jigsaw},
+\refSkin{enhanced jigsaw}, and \refSkin{bicolor jigsaw}.
\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
@@ -2971,1978 +2975,3 @@ This box looks like a box provided by the \texttt{beamer} class.
\end{docTcbKey}
-
-\clearpage
-\tcbset{skintable/.style={colframe=red!50!yellow!50!black,
- colback=red!50!yellow!5!white,coltitle=red!50!yellow!3!white,
- fonttitle=\bfseries,before=\par\smallskip,
- title=Environment and engines for the skin \enquote{\texttt{#1}}}}
-
-\subsection{Skin Family \enquote{standard}}\label{subsec:skinstandard}
-\begin{marker}Note that the option keys \refKey{/tcb/frame style},
- \refKey{/tcb/interior style},
- \refKey{/tcb/segmentation style}, and
- \refKey{/tcb/title style} are not be applicable to the standard skin.
- Also, watermarks (see Subsection \ref{subsec:watermarks})
- are not usable with the standard skin.
-\end{marker}
-
-\begin{docSkin}{standard}
- This is the standard skin from the core package. All drawing engines
- are set to type |standard|. The drawing is based on |pgf| commands and
- does not need the |tikz| package.
-\begin{tcolorbox}[skintable=standard]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
- \refKey{/tcb/frame engine}: \> |standard|\\
- \refKey{/tcb/interior titled engine}: \> |standard|\\
- \refKey{/tcb/interior engine}: \> |standard|\\
- \refKey{/tcb/segmentation engine}: \> |standard|\\
- \refKey{/tcb/title engine}: \> |standard|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{docTcbKey}{standard}{}{style, no value}
- This is an abbreviation for setting |skin=standard|.
-\end{docTcbKey}
-
-\begin{dispExample}
-\begin{tcbraster}[standard,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-
-\begin{docSkin}{standard jigsaw}
- This is the standard jigsaw skin from the core package. It differs from
- the skin \refSkin{standard} by its frame engine, see \Vref{subsec:skinjigsaw}.
-\begin{tcolorbox}[skintable=standard jigsaw]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |pgfpicture|\\
- \refKey{/tcb/frame engine}: \> |standardjigsaw|\\
- \refKey{/tcb/interior titled engine}: \> |standard|\\
- \refKey{/tcb/interior engine}: \> |standard|\\
- \refKey{/tcb/segmentation engine}: \> |standard|\\
- \refKey{/tcb/title engine}: \> |standard|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{docTcbKey}{standard jigsaw}{}{style, no value}
- This is an abbreviation for setting |skin=standard jigsaw|.
-\end{docTcbKey}
-
-\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
-\begin{tcbraster}[standard jigsaw,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample*}
-
-
-\clearpage
-\subsection{Skin Family \enquote{enhanced}}
-\begin{marker}
-If you like the standard appearance of a |tcolorbox| but you want to
-have some \enquote{enhanced} features, the |enhanced| skin is what you are looking for.
-\end{marker}
-
-\begin{docSkin}{enhanced}
- This skin translates the drawing commands of the core package into |tikz|
- path commands. Therefore, it allows all |tikz| high level options for
- these paths and has more flexibility compared to the \refSkin{standard} skin.
- You pay for this with some prolonged compilation time.
- The |tikz| path options can
- be given with the option keys
- \refKey{/tcb/frame style},
- \refKey{/tcb/interior style},
- \refKey{/tcb/segmentation style}, and
- \refKey{/tcb/title style}.
-\begin{tcolorbox}[skintable=enhanced]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |path|\\
- \refKey{/tcb/interior titled engine}: \> |path|\\
- \refKey{/tcb/interior engine}: \> |path|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |path|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{docTcbKey}{enhanced}{}{style, no value}
- This is an abbreviation for setting |skin=enhanced|.
-\end{docTcbKey}
-
-\begin{dispExample}
-\begin{tcbraster}[enhanced,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-\begin{dispExample}
-% \usetikzlibrary{shadings} % preamble
-\tcbset{skin=enhanced,fonttitle=\bfseries,
- frame style={upper left=blue,upper right=red,lower left=yellow,lower right=green},
- interior style={white,opacity=0.5},
- segmentation style={black,solid,opacity=0.2,line width=1pt}}
-
-\begin{tcolorbox}[title=Nice box in rainbow colors]
- With the \enquote{enhanced} skin, it is quite easy to produce fancy looking effects.
- \tcblower
- Note that this is still a \texttt{tcolorbox}.
-\end{tcolorbox}
-\end{dispExample}
-
-
-\begin{dispExample}
-% \usetikzlibrary{decorations.pathmorphing} % preamble
-\tcbset{skin=enhanced,fonttitle=\bfseries,boxrule=1mm,
- frame style={draw=FireBrick,fill=Salmon},drop fuzzy shadow,
- interior style={draw=FireBrick,top color=Salmon!10,bottom color=Salmon!20},
- segmentation style={draw=FireBrick,solid,decorate,
- decoration={coil,aspect=0,segment length=10.1mm}}}
-
-\begin{tcblisting}{title=A listing box with shadow and some specials}
-Of course, skins can be used for listings also.
-\begin{equation}
- \int\limits_1^2 \frac{1}{x}~dx = \ln(2).
-\end{equation}
-\end{tcblisting}
-\end{dispExample}
-
-
-\clearpage
-
-
-\begin{docTcbKey}{enhanced standard}{}{style, no value}
- For unbreakable boxes, this is identical to using \refKey{/tcb/enhanced}.
- But, for breakable boxes, the \emph{break sequence} is identical to the \refSkin{standard} skin,
- see Section \ref{subsec:breaksequence} from page \pageref{subsec:breaksequence}.
-\end{docTcbKey}
-
-
-\begin{docTcbKey}{blank}{}{style, initially unset}
- This style relies on the skin \refSkin{enhanced}. All drawing operations
- are hidden and all margins are set to |0pt|. See \refKey{/tcb/blanker}
- for switching off the drawing engines.
-\begin{dispExample}
-\begin{tcolorbox}[blank,watermark text=A blank box]
-\lipsum[1]
-\end{tcolorbox}
-\end{dispExample}
-\end{docTcbKey}
-
-\clearpage
-\begin{docCommand}{tcbline}{}
- Sometimes, a line is only a line. With \refCom{tcblower} you separate
- the box content into two functional units. |\tcbline| draws only a line
- which looks like the segmentation line between upper and lower part.
- Furthermore, you can use |\tcbline| more than just once.
- |\tcbline| always uses the |path| drawing engine. Therefore,
- the \refKey{/tcb/segmentation style} can be applied.
-
-\begin{dispExample}
-\tcbset{enhanced,colframe=blue!50!black,colback=white}
-
-\begin{tcolorbox}[colupper=red!50!black,collower=green!50!black]
-\lipsum[1]
-\tcbline
-\lipsum[2]
-\tcblower
-\lipsum[3]
-\tcbline
-\lipsum[4]
-\end{tcolorbox}
-\end{dispExample}
-\end{docCommand}
-
-\begin{docCommand}{tcbline*}{}
- Equivalent to \refCom{tcbline}, but in a breakable box, \refCom{tcbline*}
- is removed if at a page/box break. Also, it is removed at the end
- of a box.
-\end{docCommand}
-
-\clearpage
-\begin{docSkin}{enhancedfirst}
-This is a flavor of \refSkin{enhanced} which is used as a \emph{first} part
-in a break sequence for \refSkin{enhanced}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=enhancedfirst]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathfirst|\\
- \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
- \refKey{/tcb/interior engine}: \> |pathfirst|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |pathfirst|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[skin=enhancedfirst,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-\clearpage
-\begin{docSkin}{enhancedmiddle}
-This is a flavor of \refSkin{enhanced} which is used as a \emph{middle} part
-in a break sequence for \refSkin{enhanced}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=enhancedmiddle]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior engine}: \> |pathmiddle|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |pathmiddle|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[skin=enhancedmiddle,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-
-\clearpage
-\begin{docSkin}{enhancedlast}
-This is a flavor of \refSkin{enhanced} which is used as a \emph{last} part
-in a break sequence for \refSkin{enhanced}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=enhancedlast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathlast|\\
- \refKey{/tcb/interior titled engine}: \> |pathlast|\\
- \refKey{/tcb/interior engine}: \> |pathlast|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |pathlast|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{dispExample}
-\begin{tcbraster}[skin=enhancedlast,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{enhanced jigsaw}
- This is the jigsaw variant of skin \refSkin{enhanced}.
- It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
-\begin{tcolorbox}[skintable=enhanced jigsaw]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathjigsaw|\\
- \refKey{/tcb/interior titled engine}: \> |path|\\
- \refKey{/tcb/interior engine}: \> |path|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |path|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{docTcbKey}{enhanced jigsaw}{}{style, no value}
- This is an abbreviation for setting |skin=enhanced jigsaw|.
-\end{docTcbKey}
-
-\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
-\begin{tcbraster}[enhanced jigsaw,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample*}
-
-
-\begin{docTcbKey}[][doc new=2017-07-01]{enhanced standard jigsaw}{}{style, no value}
- For unbreakable boxes, this is identical to using \refKey{/tcb/enhanced jigsaw}.
- But, for breakable boxes, the \emph{break sequence} is identical to the \refSkin{standard jigsaw} skin,
- see Section \ref{subsec:breaksequence} from page \pageref{subsec:breaksequence}.
-\end{docTcbKey}
-
-
-\clearpage
-\begin{docSkin}{enhancedfirst jigsaw}
- This is the jigsaw variant of skin \refSkin{enhancedfirst}.
- It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
-\begin{tcolorbox}[skintable=enhancedfirst jigsaw]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathfirstjigsaw|\\
- \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
- \refKey{/tcb/interior engine}: \> |pathfirst|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |pathfirst|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
-\begin{tcbraster}[skin=enhancedfirst jigsaw,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample*}
-
-
-\clearpage
-\begin{docSkin}{enhancedmiddle jigsaw}
- This is the jigsaw variant of skin \refSkin{enhancedmiddle}.
- It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
-\begin{tcolorbox}[skintable=enhancedmiddle jigsaw]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathmiddlejigsaw|\\
- \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior engine}: \> |pathmiddle|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |pathmiddle|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
-\begin{tcbraster}[skin=enhancedmiddle jigsaw,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample*}
-
-
-\begin{docTcbKey}{marker}{}{style, no value}
- This styles relies on the skin \refSkin{enhancedmiddle jigsaw}. It is
- intended to be used as an optical marker like a highlighter pen.
-\begin{dispExample}
-\begin{tcolorbox}[marker]
-\lipsum[2]
-\end{tcolorbox}
-\end{dispExample}
-\end{docTcbKey}
-
-\clearpage
-
-\begin{dispListing*}{before upper={This examples demonstrates the creation of several
- \emph{text marker} environments based on \refSkin{enhancedmiddle}.\par\medskip}}
-\tcbset{textmarker/.style={%
- skin=enhancedmiddle jigsaw,breakable,parbox=false,
- boxrule=0mm,leftrule=5mm,rightrule=5mm,boxsep=0mm,arc=0mm,outer arc=0mm,
- left=3mm,right=3mm,top=1mm,bottom=1mm,toptitle=1mm,bottomtitle=1mm,oversize}}
-
-\newtcolorbox{yellow}{textmarker,colback=yellow!5!white,colframe=yellow}
-\newtcolorbox{orange}{textmarker,colback=DarkOrange!5!white,
- colframe=DarkOrange!75!yellow}
-\newtcolorbox{red}{textmarker,colback=red!5!white,colframe=red}
-\newtcolorbox{blue}{textmarker,colback=DeepSkyBlue!5!white,colframe=DeepSkyBlue}
-\newtcolorbox{green}{textmarker,colback=Chartreuse!5!white,colframe=Chartreuse}
-\newtcolorbox{rainbow}{textmarker,interior hidden,
- frame style={top color=blue,bottom color=red,middle color=green}}
-
-\begin{yellow}
- \lipsum[1-3]
-\end{yellow}
-
-\begin{orange}
- \lipsum[4]
-\end{orange}
-
-\begin{red}
- \lipsum[5]
-\end{red}
-
-\begin{green}
- \lipsum[6]
-\end{green}
-
-\begin{blue}
- \lipsum[7]
-\end{blue}
-
-\begin{rainbow}
- \lipsum[8]
-\end{rainbow}
-\end{dispListing*}
-{\tcbusetemp}
-
-
-\clearpage
-\begin{docSkin}{enhancedlast jigsaw}
- This is the jigsaw variant of skin \refSkin{enhancedlast}.
- It differs by its frame engine, see \Vref{subsec:skinjigsaw}.
-\begin{tcolorbox}[skintable=enhancedlast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathlastjigsaw|\\
- \refKey{/tcb/interior titled engine}: \> |pathlast|\\
- \refKey{/tcb/interior engine}: \> |pathlast|\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |pathlast|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample*}{segmentation style={preaction={fill=white},pattern=checkerboard,pattern color=gray!40}}
-\begin{tcbraster}[skin=enhancedlast jigsaw,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- opacityframe=0.5,opacityback=0.5,opacitybacktitle=0.5,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample*}
-
-
-
-\clearpage
-\subsection{Skin Family \enquote{bicolor}}
-\begin{docSkin}{bicolor}
- This skin is quite similar to the \refSkin{standard} and \refSkin{enhanced} skin.
- But instead of a segmentation line, the optional lower part of the box is filled with a
- different color or drawn with a different style.
-\begin{tcolorbox}[skintable=bicolor]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |path|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |path|
- \end{tabbing}
-\end{tcolorbox}
- \begin{itemize}
- \item The most basic usage of this skin is to set the background color of
- the lower part by \refKey{/tcb/colbacklower} and all other options like for
- the \refSkin{standard} skin.
-\begin{dispExample}
-\begin{tcolorbox}[skin=bicolor,title=The title,
- colframe=FireBrick!75!black,colback=Salmon!50!white,colbacklower=Salmon]
- The upper part.
- \tcblower
- The lower part.
-\end{tcolorbox}
-\end{dispExample}
- \item The more advanced usage of this skin is to apply the \refKey{/tcb/frame style}
- and the \refKey{/tcb/interior style} like for
- the \refSkin{enhanced} skin. Also, the \refKey{/tcb/segmentation style} can be
- used, but it is applied to the whole lower part.
-\begin{dispExample}
-\begin{tcolorbox}[skin=bicolor,title=The title,
- frame style={top color=FireBrick,
- bottom color=FireBrick!15!white,draw=black},
- interior style={left color=Salmon,right color=Salmon!50!white},
- segmentation style={right color=Salmon,left color=Salmon!50!white}]
- The upper part.
- \tcblower
- The lower part.
-\end{tcolorbox}
-\end{dispExample}
- \end{itemize}
-\end{docSkin}
-
-\clearpage
-
-\begin{docTcbKey}{bicolor}{}{style, no value}
- This is an abbreviation for setting |skin=bicolor|.
-\end{docTcbKey}
-
-
-\begin{dispExample}
-\begin{tcbraster}[bicolor,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-\enlargethispage*{1cm}
-
-\begin{docTcbKey}{colbacklower}{=\meta{color}}{no default, initially \texttt{black!15!white}}
- Sets the background \meta{color} of the lower part. It depends on the skin,
- if this value is used.
-\end{docTcbKey}
-
-\begin{dispExample}
-\tcbset{gitexample/.style={listing and comment,comment={#1},
- skin=bicolor,boxrule=1mm,fonttitle=\bfseries,coltitle=black,
- frame style={draw=black,left color=Gold,right color=Goldenrod!50!Gold},
- colback=black,colbacklower=Goldenrod!75!Gold,
- colupper=white,collower=black,
- listing options={language={bash},aboveskip=0pt,belowskip=0pt,nolol,
- basicstyle=\ttfamily\bfseries,extendedchars=true}}}
-
-\begin{tcblisting}{title={Snapshot of the staging area},
- gitexample={The option `-a' automatically stages all tracked and modified
- files before the commit.\par
- This can be combined with the message option `-m'
- as seen in the third line.}}
-git commit
-git commit -a
-git commit -am 'changes to my example'
-\end{tcblisting}
-\end{dispExample}
-
-
-\clearpage
-
-
-\begin{docSkin}{bicolorfirst}
-This is a flavor of \refSkin{bicolor} which is used as a \emph{first} part
-in a break sequence for \refSkin{bicolor}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=bicolorfirst]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathfirst|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathfirst|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{dispExample}
-\begin{tcbraster}[skin=bicolorfirst,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{bicolormiddle}
-This is a flavor of \refSkin{bicolor} which is used as a \emph{middle} part
-in a break sequence for \refSkin{bicolor}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=bicolormiddle]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathmiddle|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[skin=bicolormiddle,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{bicolorlast}
-This is a flavor of \refSkin{bicolor} which is used as a \emph{last} part
-in a break sequence for \refSkin{bicolor}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=bicolorlast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathlast|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathlast|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[skin=bicolorlast,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-\clearpage
-\subsection{Skin Family \enquote{tile}}
-\begin{docSkin}[doc new=2016-02-25]{tile}
- This skin is a variant of skin \refSkin{bicolor}. Especially, the
- optional lower part of the box is colored by \refKey{/tcb/colbacklower}.
- The main difference to \refSkin{bicolor} is that \refSkin{tile} has no
- frame.
-\begin{tcolorbox}[skintable=tile]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |path|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{docTcbKey}[][doc new=2016-02-25]{tile}{}{style, initially\\
- |skin=tile,boxrule=0pt,sharp corners,title filled,fonttitle=\textbackslash bfseries|
-}
- This key applies |skin=tile| and in addition changes the geometry and some style options.
-\end{docTcbKey}
-
-
-\begin{dispExample}
-\begin{tcbraster}[tile,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}[doc new=2016-02-25]{tilefirst}
-This is a flavor of \refSkin{tile} which is used as a \emph{first} part
-in a break sequence for \refSkin{tile}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=tilefirst]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathfirst|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{dispExample}
-\begin{tcbraster}[skin=tilefirst,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,boxrule=0pt]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}[doc new=2016-02-25]{tilemiddle}
-This is a flavor of \refSkin{tile} which is used as a \emph{middle} part
-in a break sequence for \refSkin{tile}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=tilemiddle]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathmiddle|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[skin=tilemiddle,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,boxrule=0pt]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}[doc new=2016-02-25]{tilelast}
-This is a flavor of \refSkin{tile} which is used as a \emph{last} part
-in a break sequence for \refSkin{tile}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=tilelast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathlast|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[skin=tilelast,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacklower=LimeGreen!75!LightGreen,
- colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm,boxrule=0pt]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-\clearpage
-\subsection{Skin Family \enquote{beamer}}
-
-\begin{docSkin}{beamer}
- This skin resembles boxes known from the |beamer| class and therefore is
- called \enquote{beamer}. It uses the normal colors from the core package but shades
- them a little bit.
-\begin{tcolorbox}[skintable=beamer]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |path|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |path|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-
-\begin{docTcbKey}{beamer}{}{style, initially\\
- |skin=beamer,boxrule=0mm,titlerule=1mm,toptitle=0.5mm,|\\
- |arc=2mm,fonttitle=\textbackslash bfseries,drop fuzzy shadow|
-}
- This key applies |skin=beamer| and in addition changes the geometry and some style options.
-\end{docTcbKey}
-
-
-
-\begin{dispExample}
-\begin{tcbraster}[beamer,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-\begin{dispExample}
-\begin{tcolorbox}[beamer,colback=Salmon!50!white,colframe=FireBrick!75!black,
- adjusted title=A colored box with the \enquote{beamer} skin]
-This box looks like a box provided by the \texttt{beamer} class.
-\end{tcolorbox}
-\end{dispExample}
-
-
-\begin{dispExample}
-\begin{tcolorbox}[beamer,colframe=blue,colback=black,
- watermark graphics=lichtspiel.jpg,
- coltext=white,watermark opacity=0.75,watermark stretch=1.0,
- title=Beamer Box with background picture]
-\lipsum[1]
-\end{tcolorbox}
-\end{dispExample}
-
-
-\begin{dispExample}
-\newtcolorbox{myblock}[2][]{%
- beamer,breakable,colback=LightBlue,colframe=DarkBlue,#1,title=#2}%
-
-\begin{myblock}{Beamerish \texttt{block}: \texttt{myblock}}
-\lipsum[1]
-\end{myblock}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{beamerfirst}
-This is a flavor of \refSkin{beamer} which is used as a \emph{first} part
-in a break sequence for \refSkin{beamer}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=beamerfirst]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathfirst|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathfirst|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[beamer,skin=beamerfirst,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-
-\begin{docSkin}{beamermiddle}
-This is a flavor of \refSkin{beamer} which is used as a \emph{middle} part
-in a break sequence for \refSkin{beamer}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=beamermiddle]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathmiddle|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[beamer,skin=beamermiddle,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{beamerlast}
-This is a flavor of \refSkin{beamer} which is used as a \emph{last} part
-in a break sequence for \refSkin{beamer}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=beamerlast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathlast|\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> |pathlast|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{dispExample}
-\begin{tcbraster}[beamer,skin=beamerlast,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-\clearpage
-\subsection{Skin Family \enquote{widget}}
-\begin{docSkin}{widget}
- This skin uses the normal colors from the core package but shades
- them a little bit.
- The appearance of the skin can be controlled by \refKey{/tcb/frame style},
- \refKey{/tcb/interior style}, and \refKey{/tcb/segmentation style},
- if needed.
-\begin{tcolorbox}[skintable=widget]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |path|\\
- \refKey{/tcb/interior titled engine}: \> |path|\\
- \refKey{/tcb/interior engine}: \> |path|\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> \emph{special}
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{docTcbKey}[][doc updated={2020-09-23}]{widget}{}{style, initially\\
- |skin=widget,arc=0.5mm,fonttitle=\bfseries,titlerule=0mm|
-}
- This key applies |skin=widget| and in addition changes the geometry and some style options.
-\end{docTcbKey}
-
-
-
-\begin{dispExample}
-\begin{tcbraster}[widget,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\begin{dispExample}
-\begin{tcolorbox}[widget,colback=Salmon!50!white,colframe=FireBrick!75!black,
- adjusted title=A colored box with the \enquote{widget} skin]
-This is my content.
-\end{tcolorbox}
-\end{dispExample}
-
-\clearpage
-
-\begin{docSkin}{widgetfirst}
-This is a flavor of \refSkin{widget} which is used as a \emph{first} part
-in a break sequence for \refSkin{widget}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=widgetfirst]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathfirst|\\
- \refKey{/tcb/interior titled engine}: \> |pathfirst|\\
- \refKey{/tcb/interior engine}: \> |pathfirst|\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> \emph{special}
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[widget,skin=widgetfirst,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-\clearpage
-
-\begin{docSkin}{widgetmiddle}
-This is a flavor of \refSkin{widget} which is used as a \emph{middle} part
-in a break sequence for \refSkin{widget}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=widgetmiddle]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior titled engine}: \> |pathmiddle|\\
- \refKey{/tcb/interior engine}: \> |pathmiddle|\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> \emph{special}
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{dispExample}
-\begin{tcbraster}[widget,skin=widgetmiddle,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{widgetlast}
-This is a flavor of \refSkin{widget} which is used as a \emph{last} part
-in a break sequence for \refSkin{widget}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=widgetlast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |pathlast|\\
- \refKey{/tcb/interior titled engine}: \> |pathlast|\\
- \refKey{/tcb/interior engine}: \> |pathlast|\\
- \refKey{/tcb/segmentation engine}: \> \emph{special}\\
- \refKey{/tcb/title engine}: \> \emph{special}
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[widget,skin=widgetlast,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-
-
-\clearpage
-\subsection{Skin Family \enquote{empty}}
-
-\begin{docSkin}{empty}
- This skin sets all engines to |empty|, i.\,e.\ nothing is drawn at all.
- Therefore, this skin is a good starting point to create a complete
- new style by yourself.
-\begin{tcolorbox}[skintable=empty]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> |empty|\\
- \refKey{/tcb/interior engine}: \> |empty|\\
- \refKey{/tcb/segmentation engine}: \> |empty|\\
- \refKey{/tcb/title engine}: \> |empty|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{docTcbKey}{empty}{}{style, no value}
- This is an abbreviation for setting |skin=empty|.
-\end{docTcbKey}
-
-\begin{dispExample}
-\begin{tcbraster}[empty,raster equal height,raster columns=4,
- coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docTcbKey}{blanker}{}{style, initially unset}
- This style relies on the skin \refSkin{empty}. All engines
- are set to empty and all margins are set to |0pt|.
- In contrast to \refKey{/tcb/blank}, the graphical paths are
- not constructed with exception of the geometry nodes.
-\begin{dispExample}
-\begin{tcolorbox}[blanker,watermark text=A blank box]
-\lipsum[1]
-\end{tcolorbox}
-\end{dispExample}
-
-\begin{dispExample}
-% \tcbuselibrary{fitting}
-\newtcboxfit{\mybox}[1]{blanker,width=4cm,height=7cm,top=4pt,
- watermark text=#1}
-
-\begin{tabular}{|c|c|c|}\hline
-A & B & C\\\hline
-\mybox{A}{\lipsum[1]} & \mybox{B}{\lipsum[2]} & \mybox{C}{\lipsum[3]}\\\hline
-\end{tabular}
-\end{dispExample}
-\end{docTcbKey}
-
-
-
-\clearpage
-\begin{docTcbKey}{blankest}{}{style, initially unset}
- This style extends \refKey{/tcb/blanker}.
- All engines are set to empty and all margins are set to |0pt|.
- In contrast to \refKey{/tcb/blanker}, also title, shadow, underlay,
- overlay, finish and borderline are removed.
-
-\begin{dispExample}
-% \tcbuselibrary{raster}
-\begin{tcbraster}[raster columns=3,raster equal height,
- title=Box \thetcbrasternum,
- enhanced,size=small,colframe=red!50!black,colback=red!10!white,
- coltitle=yellow!85!black,
- drop fuzzy shadow,watermark text={Box \thetcbrasternum},
- borderline={.25mm}{-0.5mm}{green!40!black},
- finish={\begin{tcbclipframe}\draw[blue,opacity=0.1,line width=1cm]
- (frame.south west) -- (frame.north east);\end{tcbclipframe}},
- ]
- \begin{tcolorbox}\lipsum[4]\end{tcolorbox}
- \begin{tcolorbox}[blanker]\lipsum[4]\end{tcolorbox}
- \begin{tcolorbox}[blankest]\lipsum[4]\end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-\end{docTcbKey}
-
-
-\clearpage
-\begin{docSkin}{emptyfirst}
-This is a flavor of \refSkin{empty} which is used as a \emph{first} part
-in a break sequence for \refSkin{empty}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=emptyfirst]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> |empty|\\
- \refKey{/tcb/interior engine}: \> |empty|\\
- \refKey{/tcb/segmentation engine}: \> |empty|\\
- \refKey{/tcb/title engine}: \> |empty|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[empty,skin=emptyfirst,raster equal height,raster columns=4,
- coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-
-\begin{docSkin}{emptymiddle}
-This is a flavor of \refSkin{empty} which is used as a \emph{middle} part
-in a break sequence for \refSkin{empty}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=emptymiddle]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> |empty|\\
- \refKey{/tcb/interior engine}: \> |empty|\\
- \refKey{/tcb/segmentation engine}: \> |empty|\\
- \refKey{/tcb/title engine}: \> |empty|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{dispExample}
-\begin{tcbraster}[empty,skin=emptymiddle,raster equal height,raster columns=4,
- coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-\begin{docSkin}{emptylast}
-This is a flavor of \refSkin{empty} which is used as a \emph{last} part
-in a break sequence for \refSkin{empty}.
-Nevertheless, this skin can be applied independently.
-\begin{tcolorbox}[skintable=emptylast]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |empty|\\
- \refKey{/tcb/interior titled engine}: \> |empty|\\
- \refKey{/tcb/interior engine}: \> |empty|\\
- \refKey{/tcb/segmentation engine}: \> |empty|\\
- \refKey{/tcb/title engine}: \> |empty|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{dispExample}
-\begin{tcbraster}[empty,skin=emptylast,raster equal height,raster columns=4,
- coltitle=Navy,borderline={2pt}{0pt}{black!10!white},
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-\clearpage
-\begin{dispListing*}{breakable,phantomlabel=freeboxexample,before upper={This example demonstrates
-a breakable customized box. Here, we define an environment |freebox|.
-The first application of |freebox| produces an unbroken |tcolorbox|.
-The box is drawn by the code given by \refKey{/tcb/frame code}
-and \refKey{/tcb/interior code}.\par
-The second application of |freebox| is broken into several parts which
-are drawn by the codes given by
-\refKey{/tcb/skin first is subskin of},
-\refKey{/tcb/skin middle is subskin of}, and
-\refKey{/tcb/skin last is subskin of}.
-\par\bigskip
-}}
-% Preamble:
-%\usepackage{tikz,lipsum}
-%\tcbuselibrary{skins,breakable}
-\tikzset{coltria/.style={fill=red!15!white}}
-
-\newtcolorbox{freebox}[1][]{empty,
- breakable,height fixed for=first and middle,
- leftrule=5mm,left=2mm,
- frame style={fill,top color=red!75!black,bottom color=red!75!black,middle color=red},
- colback=yellow!50!white,
- watermark color=red!50!yellow!75!white,
- watermark text on=unbroken is unbroken box,
- watermark text on=first is first part,
- watermark text on=middle is middle part,
- watermark text on=last is last part,
- % code for unbroken boxes:
- frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
- --([xshift=-5mm]frame.north east)--([yshift=-5mm]frame.north east)
- --([yshift=5mm]frame.south east)--([xshift=-5mm]frame.south east)--cycle; },
- interior code={\path[tcb fill interior] (interior.south west)--(interior.north west)
- --([xshift=-4.8mm]interior.north east)--([yshift=-4.8mm]interior.north east)
- --([yshift=4.8mm]interior.south east)--([xshift=-4.8mm]interior.south east)
- --cycle; },
- % code for the first part of a break sequence:
- skin first is subskin of={emptyfirst}{%
- frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
- --([xshift=-5mm]frame.north east)--([yshift=-5mm]frame.north east)
- --(frame.south east)--cycle;
- \path[coltria] ([xshift=2.5mm,yshift=1mm]frame.south west) -- +(120:2mm)
- -- +(60:2mm)-- cycle; },
- interior code={\path[tcb fill interior] (interior.south west|-frame.south)
- --(interior.north west)--([xshift=-4.8mm]interior.north east)
- --([yshift=-4.8mm]interior.north east)--(interior.south east|-frame.south)
- --cycle; },
- },%
- % code for the middle part of a break sequence:
- skin middle is subskin of={emptymiddle}{%
- frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
- --(frame.north east)--(frame.south east)--cycle;
- \path[coltria] ([xshift=2.5mm,yshift=-1mm]frame.north west) -- +(240:2mm)
- -- +(300:2mm) -- cycle;
- \path[coltria] ([xshift=2.5mm,yshift=1mm]frame.south west) -- +(120:2mm)
- -- +(60:2mm) -- cycle;
- },
- interior code={\path[tcb fill interior] (interior.south west|-frame.south)
- --(interior.north west|-frame.north)--(interior.north east|-frame.north)
- --(interior.south east|-frame.south)--cycle; },
- },
- % code for the last part of a break sequence:
- skin last is subskin of={emptylast}{%
- frame code={\path[tcb fill frame] (frame.south west)--(frame.north west)
- --(frame.north east)--([yshift=5mm]frame.south east)
- --([xshift=-5mm]frame.south east)--cycle;
- \path[coltria] ([xshift=2.5mm,yshift=-1mm]frame.north west) -- +(240:2mm)
- -- +(300:2mm) -- cycle;
- },
- interior code={\path[tcb fill interior] (interior.south west)
- --(interior.north west|-frame.north)--(interior.north east|-frame.north)
- --([yshift=4.8mm]interior.south east)--([xshift=-4.8mm]interior.south east)
- --cycle; },
- },
- #1}
-
-\begin{freebox}
-\lipsum[1]
-\end{freebox}
-
-\begin{freebox}
-\lipsum[1-12]
-\end{freebox}
-\end{dispListing*}
-{\tcbusetemp}
-
-
-\clearpage
-
-\subsection{Skin \enquote{spartan}}\label{subsec:spartan}
-
-\begin{docSkin}{spartan}
- This skin is quite \ldots\ spartan.
- It supports no rounded corners, no overlays, no shadows, no borderlines,
- and no finishes. The only exception are underlays.
- One cannot do very fancy things with this skin, but it compiles very fast.
- Therefore, the |spartan| skin is
- used for the draft mode, see \Vref{subsec:draftmode}.
- Nevertheless, it can be used as a normal skin.
-
-\begin{tcolorbox}[skintable=spartan]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |spartan|\\
- \refKey{/tcb/interior titled engine}: \> |spartan|\\
- \refKey{/tcb/interior engine}: \> |spartan|\\
- \refKey{/tcb/segmentation engine}: \> |spartan|\\
- \refKey{/tcb/title engine}: \> |spartan|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-
-\begin{docTcbKey}{spartan}{}{style, no value}
- This is an abbreviation for setting |skin=spartan|.
-\end{docTcbKey}
-
-
-\begin{dispExample}
-\begin{tcbraster}[spartan,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\clearpage
-
-\subsection{Skin \enquote{draft}}\label{subsec:draft}
-
-\begin{docSkin}{draft}
- This skin is intended to be used while drafting new geometric settings
- for a |tcolorbox|.
-\begin{tcolorbox}[skintable=draft]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> \emph{special}\\
- \refKey{/tcb/interior titled engine}: \> \emph{special}\\
- \refKey{/tcb/interior engine}: \> \emph{special}\\
- \refKey{/tcb/segmentation engine}: \> |path|\\
- \refKey{/tcb/title engine}: \> |path|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{docTcbKey}{draft}{}{style, no value}
- This is an abbreviation for setting |skin=draft|.
-\end{docTcbKey}
-
-
-\begin{dispExample}
-\begin{tcbraster}[draft,raster equal height,raster columns=4,
- colback=LightGreen,colframe=DarkGreen,colbacktitle=LimeGreen!75!DarkGreen,
- left=1mm,right=1mm,top=1mm,bottom=1mm,middle=1mm]
- \begin{tcolorbox}
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \end{tcolorbox}
- \begin{tcolorbox}[adjusted title=My title]
- This is my content.
- \tcblower
- More content.
- \end{tcolorbox}
-\end{tcbraster}
-\end{dispExample}
-
-
-\begin{dispExample}
-\vspace*{3mm}
-\begin{tcolorbox}[draft,title=A colored box with the \enquote{draft} skin]
-\lipsum[1-3]
-\tcblower
-\lipsum[4-6]
-\end{tcolorbox}
-\end{dispExample}
-
-
-
-\clearpage
-\subsection{Skin Family \enquote{freelance}}
-\begin{marker}
-This skin family \enquote{freelance} is deprecated with |tcolorbox| 3.00.
-It is not longer needed, because
-\refKey{/tcb/frame code},
-\refKey{/tcb/interior code},
-\refKey{/tcb/interior titled code}, and
-\refKey{/tcb/title code}
-can be applied to every skin now. In this sense, everything has become
-\emph{freelance} now.\par
-For users of \refKey{/tcb/freelance}: Old code should continue to work. There may be
-exceptions for breakable freelance boxes under certain circumstances.
-For new code, use \refKey{/tcb/empty} or \refKey{/tcb/enhanced} where
-you would have used \refKey{/tcb/freelance} before.
-\end{marker}
-
-\begin{docSkin}{freelance}
- This skin gives full freedom for the appearance of the |tcolorbox|.
- All drawing engines are set to type |freelance|; they use the |tikz| package
- and compute the \refKey{/tcb/geometry nodes}.
- %This skin is useful for boxes which should differ much from the normal
- %appearance. Note that this difference has to be programmed by the user.
- %The drawing code can be given
- %with the following option keys. As default value, the code from the |standard|
- %skin is set.
-\begin{tcolorbox}[skintable=freelance]
- \begin{tabbing}
- \refKey{/tcb/interior titled engine}: \=\kill
- \refKey{/tcb/graphical environment}: \> |tikzpicture|\\
- \refKey{/tcb/frame engine}: \> |freelance|\\
- \refKey{/tcb/interior titled engine}: \> |freelance|\\
- \refKey{/tcb/interior engine}: \> |freelance|\\
- \refKey{/tcb/segmentation engine}: \> |freelance|\\
- \refKey{/tcb/title engine}: \> |freelance|
- \end{tabbing}
-\end{tcolorbox}
-\end{docSkin}
-
-\begin{docTcbKey}{freelance}{}{style, no value}
- This is an abbreviation for setting |skin=freelance|.
-\end{docTcbKey}
-
-\begin{docSkin}{freelancefirst}
- This skin equals \refSkin{freelance} with exception of the break sequence,
- see \Vref{subsec:breaksequence}.
- %It is used as first part of the
- %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancefirst}
- %can be used to customize this part.
-\end{docSkin}
-
-\begin{docSkin}{freelancemiddle}
- This skin equals \refSkin{freelance} with exception of the break sequence,
- see \Vref{subsec:breaksequence}.
- %It is used as middle part of the
- %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancemiddle}
- %can be used to customize this part.
-\end{docSkin}
-
-\begin{docSkin}{freelancelast}
- This skin equals \refSkin{freelance} with exception of the break sequence,
- see \Vref{subsec:breaksequence}.
- %It is used as last part of the
- %break sequence of \refSkin{freelance}. \refKey{/tcb/extend freelancelast}
- %can be used to customize this part.
-\end{docSkin}
-
-
-\begin{docTcbKey}{extend freelance}{=\meta{options}}{no default, initially empty}
-The \meta{options} are added to the skin definition of \refSkin{freelance}.
-\end{docTcbKey}
-
-\begin{docTcbKey}{extend freelancefirst}{=\meta{options}}{no default, initially empty}
-The \meta{options} are added to the skin definition of \refSkin{freelancefirst} which
-is used as first part of the break sequence of \refSkin{freelance}.
-See \refKey{/tcb/skin first is subskin of} for a substitute of this key.
-\end{docTcbKey}
-
-\begin{docTcbKey}{extend freelancemiddle}{=\meta{options}}{no default, initially empty}
-The \meta{options} are added to the skin definition of \refSkin{freelancemiddle} which
-is used as middle part of the break sequence of \refSkin{freelance}.
-See \refKey{/tcb/skin middle is subskin of} for a substitute of this key.
-\end{docTcbKey}
-
-\enlargethispage*{1cm}
-
-\begin{docTcbKey}{extend freelancelast}{=\meta{options}}{no default, initially empty}
-The \meta{options} are added to the skin definition of \refSkin{freelancelast} which
-is used as last part of the break sequence of \refSkin{freelance}.
-See \refKey{/tcb/skin last is subskin of} for a substitute of this key.
-\end{docTcbKey}
-
-
-
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
index 2d316a3379..abaf34a4d4 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.theorems.tex
@@ -439,6 +439,43 @@ This automated \hyperlink{XYZ-myex3}{hyper target can be linked to with a
\end{docTcbKey}
+\clearpage
+
+\begin{docTcbKey}[][doc new=2020-10-21]{theorem hanging indent}{\colOpt{=\docValue*{auto}\textbar \meta{length}}}{default \docValue*{auto}, initially \docValue*{auto}}
+ Sets the hanging indent of the theorem title to \docValue{auto} or the
+ given \meta{length}.
+ For \docValue{auto}, the hanging indent matches the display name, number and
+ separator sign of the theorem.
+ If \meta{length} is negative, the theorem title is indented positively
+ without hanging indent.
+
+\begin{dispExample}
+\newtcbtheorem[use counter from=mytheo]{sometheorem}{Theorem}%
+ {colback=white,colframe=red!50!black,fonttitle=\bfseries}{theo}
+
+\begin{sometheorem}{This is a very long and complicated title for a quite
+ short and nearly empty theorem}{myexA1}
+My theorem text.
+\end{sometheorem}
+
+\begin{sometheorem}[theorem hanging indent=5mm]{This is a very long and
+ complicated title for a quite short and nearly empty theorem}{myexA2}
+My theorem text.
+\end{sometheorem}
+
+\begin{sometheorem}[theorem hanging indent=0pt]{This is a very long and
+ complicated title for a quite short and nearly empty theorem}{myexA3}
+My theorem text.
+\end{sometheorem}
+
+\begin{sometheorem}[theorem hanging indent=-5mm]{This is a very long and
+ complicated title for a quite short and nearly empty theorem}{myexA4}
+My theorem text.
+\end{sometheorem}
+\end{dispExample}
+\end{docTcbKey}
+
+
\clearpage
\begin{docTcbKey}{theorem name and number}{}{style, no value, initially set}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
index ebf9f137d5..733c356d8e 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.vignette.tex
@@ -533,7 +533,42 @@ These fadings are much \emph{weaker} than the normal fadings.
\end{dispExample*}
\end{vigTcbKey}
+\clearpage
+It is possible to assign different fadings for each side of the vignette,
+if needed. Therefore, the fadings have to be applied individually with
+the four style options
+ \refKey{/tcb/vig/north style},
+ \refKey{/tcb/vig/south style},
+ \refKey{/tcb/vig/east style}, and
+ \refKey{/tcb/vig/west style}.
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (-0.5,-0.5) rectangle (1.5,1.5);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (-0.5,-0.5) rectangle (1.5,1.5);
+ \tcbvignette{
+ north style={blue,path fading=south},
+ east style ={blue,path fading=semi west},
+ south style={blue,path fading=semi north},
+ west style ={blue,path fading=east}
+ }
+\end{tikzpicture}
+\end{dispExample*}
+
+\begin{dispExample*}{sbs,righthand width=3cm,center lower}
+\begin{tikzpicture}
+ \fill [black!20] (-0.5,-0.5) rectangle (1.5,1.5);
+ \path [pattern=checkerboard,pattern color=black!30]
+ (-0.5,-0.5) rectangle (1.5,1.5);
+ \tcbvignette{
+ north style={blue,path fading=west},
+ east style ={blue,path fading=south},
+ south style={red,path fading=east},
+ west style ={red,path fading=north}
+ }
+\end{tikzpicture}
+\end{dispExample*}
\clearpage
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex b/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
index 752b5b35ad..43b623d6ca 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.doc.xparse.tex
@@ -412,7 +412,7 @@ Besides \mylib{xparse}, the following commands also need the \mylib{listings} li
IfBooleanTF={#1}
{listing side text}
{text side listing},
- title=#3,#2}
+ title={#3},#2}
\begin{mybox}{Listing Box}
This is my
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.pdf b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
index f4d99c53ae..efc1e20d97 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.pdf
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.sty b/macros/latex/contrib/tcolorbox/tcolorbox.sty
index a5f9d23397..9dc3606c0e 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.sty
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.sty
@@ -1,8 +1,8 @@
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcolorbox.sty: Text color boxes
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -18,8 +18,8 @@
%% This work consists of all files listed in README
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tcolorbox}[2020/10/09 version 4.42 text color boxes]
-\def\tcb@version{4.42}
+\ProvidesPackage{tcolorbox}[2021/05/21 version 4.50 text color boxes]
+\def\tcb@version{4.50}
\RequirePackage{pgf}[2008/01/15]
\RequirePackage{verbatim}[2003/08/22]
@@ -2105,19 +2105,57 @@
\newcommand*\l@tcolorbox{\@dottedtocline{1}{1.5em}{2.3em}}
-\newcommand{\tcblistof}[3][\section]{%
- \ifnum\c@tocdepth<1\relax%
- \tcb@warning{'tocdepth' value lower than 1 for 'tcblistof'}%
- \fi%
- #1{#3}%
- \@starttoc{#2}%
-}
-
+\ExplSyntaxOn
+\NewDocumentCommand{\tcblistof}{ O{\section} m o m }
+ {
+ \ifnum\c@tocdepth<1\relax
+ \tcb@warning{'tocdepth'~value~lower~than~1~for~'tcblistof'}
+ \fi
+ \tl_set:Nx \l_tmpa_tl {\tl_trim_spaces:n{#1}}
+ \tl_set:Nx \l_tmpb_tl {\str_range:Nnn \l_tmpa_tl {2}{8}}
+ \str_if_eq:VnT \l_tmpb_tl { chapter }
+ {
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ }
+ \tl_set:Nx \l_tmpa_tl {\str_item:Nn \l_tmpa_tl {-1}}
+ \str_if_eq:VnTF \l_tmpa_tl { * }
+ {
+ #1{#4}
+ \IfNoValueTF{#3}
+ {
+ \@mkboth{\MakeUppercase{#4}}
+ {\MakeUppercase{#4}}
+ }
+ {
+ \@mkboth{\MakeUppercase{#3}}
+ {\MakeUppercase{#3}}
+ }
+ }
+ {
+ \IfNoValueTF{#3}
+ {
+ #1{#4}
+ }
+ {
+ #1[#3]{#4}
+ }
+ }
+ \@starttoc{#2}
+ \if@restonecol\twocolumn\fi
+ }
+\ExplSyntaxOff
% verbatim output as in 'verbatim'
-\newwrite\tcb@out
+\def\tcb@allocate@tcb@out{%
+ \newwrite\tcb@out%
+ \xdef\tcb@allocate@tcb@out{}%
+}
\let\tcb@verbatim@begin@hook\@empty
\let\tcb@verbatim@end@hook\@empty
@@ -2125,6 +2163,7 @@
\def\tcbverbatimwrite#1{%
\@bsphack
+ \tcb@allocate@tcb@out%
\immediate\openout\tcb@out #1
\tcb@verbatim@begin@hook%
\let\do\@makeother\dospecials
@@ -2185,7 +2224,11 @@
% recording
-\newwrite\tcb@record@out
+\def\tcb@allocate@tcb@record@out{%
+ \newwrite\tcb@record@out%
+ \xdef\tcb@allocate@tcb@out{}%
+}
+
\def\tcb@null#1{}
\newcommand{\tcb@record}[1]{\immediate\write\tcb@record@out{#1}}
@@ -2193,6 +2236,7 @@
\newcommand{\tcbstartrecording}[1][\jobname.records]{%
\let\tcbrecord\tcb@record%
\edef\tcb@record@file{#1}%
+ \tcb@allocate@tcb@record@out%
\immediate\openout\tcb@record@out\tcb@record@file%
}
diff --git a/macros/latex/contrib/tcolorbox/tcolorbox.tex b/macros/latex/contrib/tcolorbox/tcolorbox.tex
index 39dcde9f3b..977c3895df 100644
--- a/macros/latex/contrib/tcolorbox/tcolorbox.tex
+++ b/macros/latex/contrib/tcolorbox/tcolorbox.tex
@@ -1,9 +1,9 @@
% \LaTeX-Main\
-%% The LaTeX package tcolorbox - version 4.42 (2020/10/09)
+%% The LaTeX package tcolorbox - version 4.50 (2021/05/21)
%% tcolorbox.tex: Manual
%%
%% -------------------------------------------------------------------------------------------
-%% Copyright (c) 2006-2020 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% Copyright (c) 2006-2021 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
%% -------------------------------------------------------------------------------------------
%%
%% This work may be distributed and/or modified under the
@@ -43,8 +43,8 @@
\setlength{\bibitemsep}{\smallskipamount}
\addbibresource{tcolorbox.doc.bib}
-\def\version{4.42}%
-\def\datum{2020/10/09}%
+\def\version{4.50}%
+\def\datum{2021/05/21}%
\makeindex
\hypersetup{
@@ -62,7 +62,7 @@
%\geometry{showframe}
%\tcbset{draftmode}
\tcbset{/tcb/external/-}% for final run
-%\includeonly{tcolorbox.doc.breakable}
+%\includeonly{tcolorbox.doc.skins}
%\hypersetup{colorlinks=false}
@@ -79,6 +79,7 @@
\include{tcolorbox.doc.recording}
\include{tcolorbox.doc.technical}
\include{tcolorbox.doc.skins}
+\include{tcolorbox.doc.skincatalog}
\include{tcolorbox.doc.graphics}
\include{tcolorbox.doc.filling}
\include{tcolorbox.doc.beamer}
diff --git a/macros/unicodetex/latex/beaulivre/README.md b/macros/unicodetex/latex/beaulivre/README.md
index ac62b1b3ac..34f2b47f0b 100644
--- a/macros/unicodetex/latex/beaulivre/README.md
+++ b/macros/unicodetex/latex/beaulivre/README.md
@@ -5,10 +5,11 @@
`beaulivre` is a LaTeX class for typesetting books, which has a colorful
design.
-Currently, it has native support to English, French and Chinese typesetting. And
-it may compile with either XeLaTeX or LuaLaTeX.
+Currently, it has native support to Chinese (simplified and traditional),
+English, French, German, Japanese and Russian typesetting. And it may compile
+with either XeLaTeX or LuaLaTeX.
-This is part of the colorist class series.
+This is part of the `colorist` class series.
# License
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf
index 11b51c967a..d299dac883 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex
index fc31cfd996..3ffe9d002f 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex
@@ -1,24 +1,26 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
-\documentclass{beaulivre}
-
-\UseLanguage{Chinese}
+\documentclass[allowbf]{beaulivre}
%%================================
-%% TeX logo 与 网址
+%% 引入工具集
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
+
+\UseLanguage{Chinese}
%%================================
%% 排版代码
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -31,70 +33,213 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {color,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
-\providecommand{\colorist}{\textsf{colorist}}
-\providecommand{\colorart}{\textsf{colorart}}
-\providecommand{\colorbook}{\textsf{colorbook}}
-\providecommand{\lebhart}{\textsf{lebhart}}
-\providecommand{\beaulivre}{\textsf{beaulivre}}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][提示]{%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}}
+
+%%================================
+%% 名称
+%%================================
+\providecommand{\colorist}{{\normalfont\textsf{colorist}}}
+\providecommand{\colorart}{{\normalfont\textsf{colorart}}}
+\providecommand{\colorbook}{{\normalfont\textsf{colorbook}}}
+\providecommand{\lebhart}{{\normalfont\textsf{lebhart}}}
+\providecommand{\beaulivre}{{\normalfont\textsf{beaulivre}}}
+
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
%%================================
%% 正文
%%================================
\begin{document}
-\title{\beaulivre{},以多彩的方式排版你的图书\thanks{对应版本. \texttt{\beaulivre{} 2021/03/15}}}
-\author{锦文}
-\date{2021年3月,北京}
+% \title{\beaulivre{},以多彩的方式排版你的图书}
+% \author{许锦文}
+% \thanks{对应版本. \texttt{\beaulivre{} 2021/05/24}}
+% \date{2021年5月,北京}
-\maketitle
+% \maketitle
\frontmatter
+
+\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
+\begin{tikzpicture}[overlay,remember picture]
+ \fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(25,-7)$);
+ \fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
+ \node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-10)$) {\textcolor{white}{\sffamily\beaulivre{}\\\hspace*{-.05em}以多彩的方式排版你的图书\\[10pt]\tiny 对应版本. \texttt{\beaulivre{} 2021/05/24}}};
+ \node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{许锦文}};
+ \node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{2021年5月,北京}};
+\end{tikzpicture}%
+\end{titlepage}%
+\cleardoublepage%
+
+
\chapter*{前言}
-\beaulivre{}是\colorist{}文档类系列的成员之一,整个系列包含用于排版文章的\colorart{}、\lebhart{}以及用于排版书的\colorbook{}、\beaulivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之多彩而不缭乱。
+\beaulivre{} 是 \colorist{} 文档类系列的成员之一,其名称取自于法文的beau (美丽),以及livre (书),由二者组合而成。整个 \colorist{} 系列包含用于排版文章的 \colorart{}、\lebhart{} 以及用于排版书的 \colorbook{}、\beaulivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之多彩而不缭乱。
-其中,\lebhart{}与\beaulivre{}支持英文、法文、中文三种语言,并且同一篇文档中三种语言可以很好地协调。由于采用了自定义字体,需要采用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 进行编译。
+\beaulivre{} 支持英文、法文、德文、中文、日文、俄文六种语言,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
-这篇说明文档是用\beaulivre{}排版的,你可以把它看作一份简短的说明与演示。
+这篇说明文档即是用 \beaulivre{} 排版的 (使用了参数 \texttt{allowbf}),你可以把它看作一份简短的说明与演示。
+\bigskip
\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
由于\colorist{}主体是从\textsf{minimalist}系列修改而来的,因而一些页面元素还未完全重新设计,特别是目录、part和chapter的样式。这些内容会在将来逐渐加入。
\end{tcolorbox}
+\bigskip
+\begin{remind}
+ 多语言支持、定理类环境、未完成标记等功能是由 \ProjLib{} 工具箱提供的,这里只给出了将其与本文档类搭配使用的要点。如需获取更详细的信息,可以参阅 \ProjLib{} 的说明文档。
+\end{remind}
+
\tableofcontents
\mainmatter
-\chapter{关于文档类的名称与选项}
+\chapter{初始化}
-\lebhart{}取自于德文的lebhaft (活泼),并取了artikel (文章)的前三个字母组合而成。
+\section{如何载入}
-\beaulivre{}取自于法文的beau (美丽),以及livre (书),由二者组合而成。
+只需要在第一行写:
-\medskip
-你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+\begin{code}
+ \documentclass{beaulivre}
+\end{code}
+
+即可使用 \beaulivre{} 文档类。
+
+\begin{remind}[请注意]
+ 要使用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎才能编译。
+\end{remind}
+
+\section{选项}
+
+\beaulivre{} 文档类有下面几个选项:
+
+\begin{itemize}
+ \item \texttt{draft} 或 \texttt{fast}
+ \begin{itemize}
+ \item 你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+ \begin{itemize}
+ \item 使用较为简单的数学字体设置;
+ \item 不启用超链接;
+ \item 启用 \ProjLib{} 工具箱的快速模式。
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} 或 \texttt{b5paper}
+ \begin{itemize}
+ \item 可选的纸张大小。默认的纸张大小为 8.5in $\times$ 11in。
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
+ \end{itemize}
+\end{itemize}
+
+\begin{remind}
+ \begin{itemize}
+ \item 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
+ \end{itemize}
+\end{remind}
+
+\bigskip
+另外,排版图书时常用的 \texttt{oneside}、\texttt{twoside} 选项也是可以使用的。默认采用双页排版。
+
+\chapter{关于文档类中使用的字体}
+\beaulivre{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
+
+\begin{remind}[字体演示]
+ \begin{itemize}
+ \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+ \end{itemize}
+\end{remind}
+
+\bigskip
+在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+
+
+\chapter{使用说明}
+
+接下来介绍的许多功能是由 \ProjLib{} 工具箱提供的。这里只介绍了基本使用方法,更多细节可以直接参阅其用户文档。
+
+\section{语言设置}
+
+\beaulivre{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文。可以通过下列命令来选定语言:
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}|,用于指定语言,在其后将使用对应的语言设定。
+ \begin{itemize}
+ \item 既可以用于导言部分,也可以用于正文部分。在不指定语言时,默认选定 “English”。
+ \end{itemize}
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|,用指定的语言的设定排版 \meta{content}。
+ \begin{itemize}
+ \item 相比较 \lstinline|\UseLanguage|,它不会对行距进行修改,因此中西文字混排时能够保持行距稳定。
+ \end{itemize}
+\end{itemize}
+
+\meta{language name} 有下列选择:
+\begin{itemize}
+ \item 简体中文:\texttt{Chinese}、\texttt{chinese}、\texttt{SChinese}、\texttt{schinese}、\texttt{SimplifiedChinese} \\\hspace*{5em}或 \texttt{simplifiedchinese}
+ \item 繁体中文:\texttt{TChinese}、\texttt{tchinese}、\texttt{TraditionalChinese} 或 \texttt{traditionalchinese}
+ \item 英文:\texttt{English} 或 \texttt{english}
+ \item 法文:\texttt{French} 或 \texttt{french}
+ \item 德文:\texttt{German}、\texttt{german} 或 \texttt{ngerman}
+ \item 日文:\texttt{Japanese} 或 \texttt{japanese}
+ \item 俄文:\texttt{Russian} 或 \texttt{russian}
+\end{itemize}
+
+另外,还可以通过下面的方式来填加相应语言的设置:
\begin{itemize}
- \item 使用较为简单的数学字体设置;
- \item 不使用hyperref;
- \item 所有tcolorbox使用draft模式;
- \item 使用polyglossia而不是babel来支持多语言。(使用polyglossia编译速度会略有提高,但目前对于中文的兼容不太完善,在它更加稳定后,将会考虑全面切换到polyglossia)
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向所有支持的语言增加设置 \meta{settings}。
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向指定的语言 \meta{language name} 增加设置 \meta{settings}。
+ \end{itemize}
\end{itemize}
+例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
-在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。
-\chapter{一些使用说明}
+\section{定理类环境及其引用}
-\section{定理,以及引用}
+定义、定理等环境已经被预定义,可以直接使用。
-定义、定理等环境已经被预定义,可以直接使用,例如:
+具体来说,预设的定理类环境包括:
+\texttt{assumption}、\texttt{axiom}、\texttt{conjecture}、\texttt{convention}、\texttt{corollary}、\texttt{definition}、\texttt{definition-proposition}、\texttt{definition-theorem}、\texttt{example}、\texttt{exercise}、\texttt{fact}、\texttt{hypothesis}、\texttt{lemma}、\texttt{notation}、\texttt{problem}、\texttt{property}、\texttt{proposition}、\texttt{question}、\texttt{remark}、\texttt{theorem},以及相应的带有星号 \lstinline|*| 的无编号版本。
+
+在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。
+
+\begin{remind}[例子]
\begin{code}
\begin{definition}[奇异物品] \label{def: strange} ...
\end{code}
@@ -103,23 +248,30 @@
这是奇异物品的定义。
\end{definition}
-\begin{definition}[另一个定义]
- 不同的定义会自动粘结在一起,中间不会有空隙。
-\end{definition}
+\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
-引用时,可以直接使用智能引用 \lstinline|\cref{标签名称}|,例如:\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+使用 \lstinline|\UseLanguage{English}| 后,定理会显示为:
-\bigskip
-下面是定理类环境的其他几种样式:
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ A theorem in English.
+\end{theorem}
+默认情况下,引用时,定理的名称总是与定理所在区域的语言匹配,例如,上面的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。如果在引用时想让定理的名称与当前语境相匹配,可以在全局选项中加入 \texttt{regionalref}。
+\end{remind}
+
+\medskip
+下面是定理类环境的几种主要样式:
\begin{theorem}
- Theorem style: theorem, proposition, lemma, corollary
+ Theorem style: theorem, proposition, lemma, corollary, ...
\end{theorem}
\begin{proof}
Proof style
\end{proof}
+\vspace{-\baselineskip}
+
\begin{remark}
Remark style
\end{remark}
@@ -129,132 +281,268 @@
\end{conjecture}
\begin{example*}
- Example style: example, fact
+ Example style: example, fact, ...
\end{example*}
\begin{problem}
- Problem style
+ Problem style: problem, question, ...
\end{problem}
+\medskip
+为了美观,相邻的定义环境会自动连在一起:
+\begin{definition}
+ First definition.
+\end{definition}
+
+\begin{definition}
+ Second definition.
+\end{definition}
+
+\UseLanguage{Chinese}
+
+
\section{定义新的定理型环境}
-首先定义这个环境在所用语言下的名称 \lstinline|\(name of environment)(language name)|,其中 \\\lstinline|(language name)| 是 \lstinline|EN|、\lstinline|FR|、\lstinline|CN| 等,然后用下面四种方式之一定义这一环境:
+若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称 \lstinline|\|\meta{name of environment}\meta{language abbr},其中 \meta{language abbr} 是语言的简写,分别为:
+\begin{longtable}{ll|ll}
+ \texttt{CN} & 简体中文 & \texttt{DE} & 德文\\
+ \texttt{TC} & 繁体中文 & \texttt{JP} & 日文\\
+ \texttt{EN} & 英文 & \texttt{RU} & 俄文\\
+ \texttt{FR} & 法文 & &\\
+\end{longtable}
+
+\vspace{-0.3\baselineskip}
+\begin{remind}
+ 如果要定义名称后带有星号 \lstinline|*| 的环境,那么在上面的 \meta{name of environment} 中不用写星号。
+\end{remind}
+
+然后用下面五种方式之一定义这一环境:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义不编号的环境 \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},按顺序编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},与 \meta{numbered like} 计数器共用编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},在 \meta{numbered within} 计数器内编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item 将 \meta{name of environment} 与 \meta{existed environment} 或 \meta{existed environment}\lstinline|*| 等同。
+ \item 这种方式通常在两种情况下比较有用:
+ \begin{enumerate}
+ \item 希望定义更简洁的名称。例如,使用 \lstinline|\CreateTheorem{thm}(theorem)|,便可以直接用名称 \texttt{thm} 来撰写定理。
+ \item 希望去除某些环境的编号。例如,使用 \lstinline|\CreateTheorem{remark}(remark*)|,便可以去除 \texttt{remark} 环境的编号。
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ 其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
+\end{remind}
+
\def\proofideanameCN{思路}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<section>
-例如,
+\bigskip
+下面提供一个例子。这三行代码:
\begin{code}
\def\proofideanameCN{思路}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<section>
\end{code}
-可以定义不编号的环境 \lstinline|proofidea|,它支持在中文环境中使用,效果如下所示:
+
+可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 section 内编号),它们支持在简体中文语境中使用,效果如下所示:
+
+\begin{proofidea*}
+ \lstinline|proofidea*| 环境。
+\end{proofidea*}
\begin{proofidea}
- ...
+ \lstinline|proofidea| 环境。
\end{proofidea}
\section{未完成标记}
你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<还需加入…>|: \quad \dnf<还需加入…>
+ \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
\end{itemize}
类似的,还有 \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<关于…>|: \needgraph<关于…>
+ \item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\section{语言设置}
-可以随时使用 \lstinline|\UseLanguage{语言名称}| 更改语言,语言名称包括Chinese、English、French(首字母大小写随意,例如chinese亦可)。这样,各种指令和环境的效果也会随之变动。
-
-例如,使用 \lstinline|\UseLanguage{English}| 后,定理与未完成标记会显示为:
-
-\UseLanguage{English}
-\begin{theorem}[Useless]\label{thm}
- Some theorem in English. \dnf
-\end{theorem}
-
-引用时,定理的名称总是与定理所在区域的语言匹配,例如,开头的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。
-\UseLanguage{Chinese}
-
-\section{关于字体}
-\lebhart{}与\beaulivre{}使用Palatino Linotype作为英文字体,方正悠宋、悠黑简体作为中文字体,并部分使用了Neo Euler作为数学字体:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体,\textsf{中文无衬线字体}
- \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+% \section{关于文章标题、摘要与关键词}
+
+% % 由于引入了 \ProjLib{} 工具箱的 \textsf{PJLamssim} 组件,
+% \beaulivre{} 同时具有标准文档类与\AmS{} 文档类的一些特性。
+
+% 因此,文章的标题部分既可以按照标准文档类 \textsf{article} 的写法来写:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \date{(*\meta{date}*)}
+% \maketitle
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \begin{keyword}
+% (*\meta{keywords}*)
+% \end{keyword}
+% \end{code}
+
+% 也可以按照 \AmS{} 文档类的方式来写:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \address{(*\meta{address}*)}
+% \email{(*\meta{email}*)}
+% \date{(*\meta{date}*)}
+% \keywords{(*\meta{keywords}*)}
+% \subjclass{(*\meta{subjclass}*)}
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \maketitle
+% \end{code}
+
+% 作者信息可以包含多组,输入方式为:
+
+% \begin{code}
+% \author{(*\meta{author 1}*)}
+% \address{(*\meta{address 1}*)}
+% \email{(*\meta{email 1}*)}
+% \author{(*\meta{author 2}*)}
+% \address{(*\meta{address 2}*)}
+% \email{(*\meta{email 2}*)}
+% ...
+% \end{code}
+
+% 其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。
+
+
+\section{目前存在的问题}
+
+\begin{itemize}[itemsep=.6em]
+ \item 对于字体的设置仍然不够完善。
+ \item 由于很多核心功能建立在 \ProjLib{} 工具箱的基础上,因此 \beaulivre{} 自然继承了其所有问题。详情可以参阅 \ProjLib{} 用户文档的“目前存在的问题”这一小节。
+ \item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。
+ \item 代码中仍有许多可优化之处。
\end{itemize}
-其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。
-其他字体不是免费字体,需要自行购买使用(你可以在方正字库网站查询详细资料:\url{https://www.foundertype.com})。
+\UseLanguage{English}
-在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
\chapter{文档示例}
-\singlespacing
+\vspace*{-1.5\baselineskip}
+
+\section{标准文档类写法}
+
+如果想采用标准文档类中的写法,可以参考下面的例子:
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{beaulivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\chapter{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+如果以后想切换到标准文档类,只需要将前两行换为:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{book}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
-\linenumbers
-\UseLanguage{Chinese}
+
+% \clearpage
+\section{\texorpdfstring{\AmS{}}{AMS} 文档类写法}
+
+如果日后有意切换到期刊模版,想采用 \AmS{} 文档类中的写法,可以参考下面的例子:
+
+\begin{code}
+\documentclass{beaulivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
\maketitle
-%% 正文部分
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\bigskip
-(\lstinline|\UseLanguage| 既可以放在导言中,也可以放在正文部分,并且可以按照需要反复使用)
+这样,若想切换到 \AmS{} 文档类,只需要将前两行换为:
+
+\begin{code}
+\documentclass{amsbook}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+\blinddocument
\end{document}
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf
index 5a68cba694..52a279ea3b 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex
index 0b269455e8..645ba984c0 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex
@@ -1,22 +1,24 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
-\documentclass{beaulivre}
+\documentclass[allowbf]{beaulivre}
%%================================
-%% TeX logo and URL
+%% Import toolkit
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
%%================================
%% For typestting code
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -29,226 +31,514 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,subsection,
+ color,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
-\providecommand{\colorist}{\textsf{colorist}}
-\providecommand{\colorart}{\textsf{colorart}}
-\providecommand{\colorbook}{\textsf{colorbook}}
-\providecommand{\lebhart}{\textsf{lebhart}}
-\providecommand{\beaulivre}{\textsf{beaulivre}}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][Remind]{%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}}
+
+%%================================
+%% Names
+%%================================
+\providecommand{\colorist}{{\normalfont\textsf{colorist}}}
+\providecommand{\colorart}{{\normalfont\textsf{colorart}}}
+\providecommand{\colorbook}{{\normalfont\textsf{colorbook}}}
+\providecommand{\lebhart}{{\normalfont\textsf{lebhart}}}
+\providecommand{\beaulivre}{{\normalfont\textsf{beaulivre}}}
+
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
%%================================
%% Main text
%%================================
\begin{document}
-\title{\beaulivre{}, write your books in a colorful way\thanks{Corresponding to: \texttt{\beaulivre{} 2021/03/15}}}
-\author{Jinwen}
-\date{March 2021, Beijing}
+% \title{\beaulivre{}, write your books in a colorful way}
+% \author{Jinwen XU}
+% \thanks{Corresponding to: \texttt{\beaulivre{} 2021/05/24}}
+% \date{May 2021, Beijing}
-\maketitle
+% \maketitle
+
+\frontmatter
+
+\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
+\begin{tikzpicture}[overlay,remember picture]
+ \fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(25,-7)$);
+ \fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
+ \node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-10)$) {\textcolor{white}{\sffamily\beaulivre{}\\\textsc{Write your books in \\a colorful way}\\[10pt]\tiny Corresponding to: \texttt{\beaulivre{} 2021/05/24}}};
+ \node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{Jinwen XU}};
+ \node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{May 2021, Beijing}};
+\end{tikzpicture}%
+\end{titlepage}%
+\cleardoublepage%
\frontmatter
\chapter*{Preface}
-\beaulivre{} is a member of the \colorist{} class series. The entire collection includes \colorart{} and \lebhart{} for typesetting articles and \colorbook{} and \beaulivre{} for typesetting books. My original intention in designing this series was to write drafts and notes that look colorful yet not dazzling.
+\beaulivre{} is a member of the \colorist{} class series. Its name is taken from French words ``beau'' (for ``beautiful'') and ``livre'' (for ``book''). The entire collection includes \colorart{} and \lebhart{} for typesetting articles and \colorbook{} and \beaulivre{} for typesetting books. My original intention in designing this series was to write drafts and notes that look colorful yet not dazzling.
-Among them, \lebhart{} and \beaulivre{} support three languages: English, French, and Chinese, and these three languages can be switched seamlessly in a single document. Due to the usage of custom fonts, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+\beaulivre{} supports six languages: English, French, German, Chinese, Japanese and Russian. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \beaulivre{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
-This documentation is typeset using \beaulivre{}. You can think of it as a short introduction and demonstration.
+This documentation is typeset using \beaulivre{} (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
+\bigskip
\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
Since the main body of \colorist{} is modified from the \textsf{minimalist} series, some elements have not been completely redesigned yet, especially the TOC, part and chapter style. These will be added gradually in the future versions.
\end{tcolorbox}
+\bigskip
+\begin{remind}
+ Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
+\end{remind}
+
\tableofcontents
\mainmatter
-\chapter{On the naming and options}
+\chapter{Initialization}
+
+\section{How to load}
+
+One only needs to put
+\begin{code}
+ \documentclass{beaulivre}
+\end{code}
+as the first line to use the \beaulivre{} class.
+
+\begin{remind}[Attention]
+ You need to use either \hologo{XeLaTeX} or \hologo{LuaLaTeX} engine to compile.
+\end{remind}
+
+\section{Options}
+
+\beaulivre{} offers the following options:
+
\begin{itemize}
- \item \lebhart{} is taken from German word ``lebhaft'' (``vividly''), combined with the first three letters of ``artikel'' (``article'').
- \item \beaulivre{} is taken from French words ``beau'' (for ``beautiful'') and ``livre'' (for ``book'').
+ \item \texttt{draft} or \texttt{fast}
+ \begin{itemize}
+ \item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
+ \begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Enable the fast mode of \ProjLib{} toolkit.
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} or \texttt{b5paper}
+ \begin{itemize}
+ \item Optional paper size. The default paper size is 8.5in $\times$ 11in.
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Allow boldface. When this option is enabled, the title, titles of all levels and names of theorem-like environments will be bolded.
+ \end{itemize}
\end{itemize}
-You can use the option \verb|fast| to enable a fast but slightly rough version. The main differences are:
+\begin{remind}
+ \begin{itemize}
+ \item During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. At the end, one should remove the ``fast'' option to get the final version. When in \verb|fast| mode, there will be a watermark "DRAFT" to indicate that you are currently in the draft mode.
+ \end{itemize}
+\end{remind}
+
+\bigskip
+In addition, the commonly used \texttt{oneside} and \texttt{twoside} options are also available. Two-page layout is used by default.
+
+\chapter{On the fonts}
+By default, \beaulivre{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+
+\medskip
+\begin{remind}[Font demonstration]
+ \begin{itemize}
+ \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+ \end{itemize}
+\end{remind}
+
+\bigskip
+When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
+
+
+\chapter{Some instructions}
+
+% \vspace{-\baselineskip}
+Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
+
+\section{Language configuration}
+
+\beaulivre{} has multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian. The language can be selected by the following macros:
+
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use hyperref;
- \item Use draft mode for all tcolorboxes;
- \item Use polyglossia instead of babel to support multiple languages. (Using polyglossia will increase the compilation speed slightly, but the current compatibility with Chinese is not perfect. When it becomes more stable, I will consider fully switching to polyglossia)
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
\end{itemize}
-During the writing stage of your document, it is recommended to use the \verb|fast| option to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+\meta{language name} can be:
+\begin{itemize}
+ \item Simplified Chinese: \texttt{Chinese}, \texttt{chinese}, \texttt{SChinese}, \texttt{schinese}, \texttt{SimplifiedChinese} or \texttt{simplifiedchinese}
+ \item Traditional Chinese: \texttt{TChinese}, \texttt{tchinese}, \texttt{TraditionalChinese} or \texttt{traditionalchinese}
+ \item English: \texttt{English} or \texttt{english}
+ \item French: \texttt{French} or \texttt{french}
+ \item German: \texttt{German}, \texttt{german} or \texttt{ngerman}
+ \item Japanese: \texttt{Japanese} or \texttt{japanese}
+ \item Russian: \texttt{Russian} or \texttt{russian}
+\end{itemize}
-\chapter{Some instructions}
+\medskip
+In addition, you can also add new settings to selected language:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to all supported languages.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to the selected language \meta{language name}.
+ \end{itemize}
+\end{itemize}
+For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
+\clearpage
\section{Theorems and how to reference them}
-Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+Environments such as definitions and theorems have been pre-defined and can be used directly.
+
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The display of these environments will change according to the current language.
+
+When referencing a theorem-like environment, it is recommended to use clever reference \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{remind}[Example]
\begin{code}
\begin{definition}[Strange things] \label{def: strange} ...
\end{code}
+
will produce
\begin{definition}[Strange things]\label{def: strange}
This is the definition of some strange objects.
\end{definition}
-\begin{definition}[Another definition]
- Different definitions are automatically glued together, and there will be no gaps in between.
-\end{definition}
+\lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
-When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+After using \lstinline|\UseLanguage{French}|, a theorem will be displayed as:
-\bigskip
-The following are several other styles of theorem-like environments:
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorème en français.
+\end{theorem}
+
+By default, when referenced, the name of the theorem always matches the language of the context in which the theorem is located. For example, the definition above is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}. If you want the name of the theorem to match the current context when referencing, you can add \texttt{regionalref} to the global options.
+\end{remind}
+\medskip
+The following are the main styles of theorem-like environments:
\begin{theorem}
- Theorem style: theorem, proposition, lemma, corollary
+ Theorem style: theorem, proposition, lemma, corollary, ...
\end{theorem}
\begin{proof}
Proof style
\end{proof}
+\vspace{-\baselineskip}
\begin{remark}
Remark style
\end{remark}
+\vspace{-.5\baselineskip}
\begin{conjecture}
Conjecture style
\end{conjecture}
\begin{example*}
- Example style: example, fact
+ Example style: example, fact, ...
\end{example*}
\begin{problem}
- Problem style
+ Problem style: problem, question, ...
\end{problem}
+\medskip
+For aesthetics, adjacent definitions will be connected together automatically:
+\begin{definition}
+ First definition.
+\end{definition}
+
+\begin{definition}
+ Second definition.
+\end{definition}
+
+\UseLanguage{English}
+
+\bigskip
\section{Define a new theorem-like environment}
-First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+If you need to define a new theorem-like environment, you must first define the name of the environment in the language used: \lstinline|\|\meta{name of environment}\meta{language abbr}, where \meta{language abbr} is the abbreviation of language, which can be:
+% \vspace{-.5\baselineskip}
+\begin{longtable}{ll|ll}
+ \texttt{CN} & Simplified Chinese & \texttt{DE} & German\\
+ \texttt{TC} & Traditional Chinese & \texttt{JP} & Japanese\\
+ \texttt{EN} & English & \texttt{RU} & Russian\\
+ \texttt{FR} & French & &\\
+\end{longtable}
+
+\vspace{-.5\baselineskip}
+\begin{remind}
+ If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
+\end{remind}
+
+% \clearpage
+And then define this environment in one of following five ways:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define an unnumbered environment \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
+ \item This method is usually useful in the following two situations:
+ \begin{enumerate}
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ It uses \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
+\end{remind}
+
\def\proofideanameEN{Idea}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<section>
-For example,
+\bigskip
+Here is an example. The following code:
\begin{code}
\def\proofideanameEN{Idea}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<section>
\end{code}
-defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within section) respectively. They can be used in English context. The effect is as follows:
+
+\begin{proofidea*}
+ The \lstinline|proofidea*| environment.
+\end{proofidea*}
\begin{proofidea}
- ...
+ The \lstinline|proofidea| environment.
\end{proofidea}
+\clearpage
\section{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+ \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+ \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\section{Language configuration}
-You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
-
-For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
-
-\UseLanguage{French}
-\begin{theorem}[Inutile]\label{thm}
- Un théorème en français. \dnf
-\end{theorem}
-
-When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}.
-
-\UseLanguage{English}
-
-\section{On the fonts}
-\lebhart{} and \beaulivre{} use Palatino Linotype as the English font, FounderType's YouSong and YouHei Simplified as the Chinese fonts, and partially use Neo Euler as the mathematical font:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体, \textsf{中文无衬线字体}
- \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+% \vspace{-.5\baselineskip}
+% \section{On the title, abstract and keywords}
+
+% \beaulivre{} has both the features of standard classes and that of the \AmS{} classes.
+
+% Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \date{(*\meta{date}*)}
+% \maketitle
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \begin{keyword}
+% (*\meta{keywords}*)
+% \end{keyword}
+% \end{code}
+
+% \vspace{-.5\baselineskip}
+% or written in the way of \AmS{} classes:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \address{(*\meta{address}*)}
+% \email{(*\meta{email}*)}
+% \date{(*\meta{date}*)}
+% \keywords{(*\meta{keywords}*)}
+% \subjclass{(*\meta{subjclass}*)}
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \maketitle
+% \end{code}
+
+% \medskip
+% The author information can contain multiple groups, written as:
+
+% \begin{code}
+% \author{(*\meta{author 1}*)}
+% \address{(*\meta{address 1}*)}
+% \email{(*\meta{email 1}*)}
+% \author{(*\meta{author 2}*)}
+% \address{(*\meta{address 2}*)}
+% \email{(*\meta{email 2}*)}
+% ...
+% \end{code}
+
+% Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
+
+
+\section{Known issues}
+
+\begin{itemize}[itemsep=.6em]
+ \item The font settings are still not perfect.
+ \item Since many features are based on the \ProjLib{} toolkit, \beaulivre{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
+ \item There are still many things that can be optimized in the code.
\end{itemize}
-Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. Other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
-
-When the corresponding font is not installed, the font that comes with TeX Live will be used instead, and the experience might be reduced.
\chapter{Document templates}
-\singlespacing
+% \vspace*{-1.5\baselineskip}
+
+\section{The standard way}
+
+If you want to write in the standard way, you can refer to the following example:
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{beaulivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\chapter{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+If you wish to switch to the standard class later, just replace the first two lines with:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+
+\clearpage
+\section{The \texorpdfstring{\AmS{}}{AMS} way}
-\linenumbers
-\UseLanguage{Chinese}
+If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
+
+\begin{code}
+\documentclass{beaulivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
\maketitle
-%% 正文部分
+\chapter{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\bigskip
-(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+\vspace{-0.3\baselineskip}
+In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+\blinddocument
\end{document}
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre.cls b/macros/unicodetex/latex/beaulivre/beaulivre.cls
index 694a337fae..e1fa8d3e8b 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre.cls
+++ b/macros/unicodetex/latex/beaulivre/beaulivre.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{beaulivre}
- [2021/03/15 A colorful book style]
+ [2021/05/24 A colorful book style]
\def\colorclass@baseclass{book}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,12 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+
+\newif\if@colorclass@bfivepaper\@colorclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@colorclass@bfivepapertrue}
+\newif\if@colorclass@afourpaper\@colorclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@colorclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\colorclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\colorclass@baseclass}
@@ -37,23 +43,41 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
- % papersize={8in,11in},
+ papersize={8.5in,11in},
+ total={47em,66em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\if@colorclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@colorclass@afourpaper
+\geometry{
a4paper,
total={47em,70em},
hmarginratio=1:1,
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\fi
\RequirePackage{indentfirst}
\if@colorclass@fast
\PassOptionsToPackage{fast}{colorist}
-\fi
-\if@colorclass@fast
- \PassOptionsToPackage{polyglossia}{colorist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
\fi
\RequirePackage{colorist}
@@ -71,27 +95,32 @@
\IfFontExistsTF{Palatino Linotype}{%
\setmainfont{Palatino Linotype}
}{
- \setmainfont{texgyrepagella-regular.otf}[
- BoldFont = texgyrepagella-bold.otf ,
- ItalicFont = texgyrepagella-italic.otf ,
- BoldItalicFont = texgyrepagella-bolditalic.otf ]
+ \setmainfont{TeXGyrePagellaX-Regular.otf}[
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ]
}
\setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase,
+ Scale = MatchLowercase ,
BoldFont = SourceSansPro-Bold.otf ,
ItalicFont = SourceSansPro-RegularIt.otf ,
BoldItalicFont = SourceSansPro-BoldIt.otf ]
+ \setmonofont{cmuntt.otf}[
+ Scale = 1.05 ,
+ BoldFont = cmuntb.otf ,
+ ItalicFont = cmunst.otf ,
+ BoldItalicFont = cmuntb.otf ]
%% Chinese fonts
\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
\RequirePackage{ctex}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmainfont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmainfont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmainfont{FandolSong-Regular.otf}[
@@ -101,13 +130,13 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmonofont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmonofont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmonofont{FandolFang-Regular.otf}[
@@ -118,11 +147,12 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouHeiS 506L}{%
- \setCJKsansfont{FZYouHeiS 506L}[
- BoldFont = FZYouHeiS 509R,
+\IfFontExistsTF{FZYOUHK_506L--GBK1-0}{%
+ \setCJKsansfont{FZYOUHK_506L--GBK1-0}[
+ BoldFont = FZYOUHK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouHeiS 509R ,
+ BoldItalicFont = FZYOUHK_509R--GBK1-0 ,
SmallCapsFont = * ]
}{
\setCJKsansfont{FandolHei-Regular.otf}[
@@ -133,14 +163,16 @@
}
%% Math font
-\if@colorclass@fast\else
+\if@colorclass@fast
+\RequirePackage{amssymb}
+\else
\PassOptionsToPackage
{warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO}
+\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
\setmathfont{Asana-Math.otf}
\IfFontExistsTF{Neo Euler}{%
-\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
+\setmathfont{Neo Euler}
[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
@@ -167,9 +199,22 @@
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
+\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range=up/{latin,Latin}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={bfup/{latin, Latin, greek, Greek}, frak, bffrak, cal},
+ script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={up/num, bfup/num, it, bfit, scr, bfscr,
+ sfup, sfit, bfsfup, bfsfit, tt}
+ ]{Asana-Math.otf}
+\setmathfont[range=bfcal, Scale=MatchUppercase, Alternate]{Asana-Math.otf}
}{}
\fi
+\def\PJL@font@alreadyset{}
+
\RequirePackage[verbose=silent]{microtype}
%%================================
@@ -178,60 +223,15 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
%%================================
\RequirePackage{imakeidx}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@colorclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `beaulivre/beaulivre.cls'.
diff --git a/macros/unicodetex/latex/einfart/README.md b/macros/unicodetex/latex/einfart/README.md
index 0984daa1d4..58ceae6fbf 100644
--- a/macros/unicodetex/latex/einfart/README.md
+++ b/macros/unicodetex/latex/einfart/README.md
@@ -5,10 +5,11 @@
`einfart` is a LaTeX class for typesetting articles, which has a simple and
clear design.
-Currently, it has native support to English, French and Chinese typesetting. And
-it may compile with either XeLaTeX or LuaLaTeX.
+Currently, it has native support to Chinese (simplified and traditional),
+English, French, German, Japanese and Russian typesetting. And it may compile
+with either XeLaTeX or LuaLaTeX.
-This is part of the minimalist class series.
+This is part of the `minimalist` class series.
# License
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf b/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
index 54f896a49c..fece759401 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-cn.tex b/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
index 984b1d075a..058440e3fa 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
@@ -1,25 +1,28 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{einfart}
\linenumbers % 开启行号
-\UseLanguage{Chinese}
%%================================
-%% TeX logo 与 网址
+%% 引入工具集
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
+
+\UseLanguage{Chinese}
%%================================
%% 排版代码
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -32,9 +35,9 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,subsection,
+ color,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
@@ -43,6 +46,31 @@
}
{\ResumeLineNumbers}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][提示]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% 名称
+%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
\providecommand{\minimbook}{\textsf{minimbook}}
@@ -54,111 +82,298 @@
%%================================
\begin{document}
-\title{\einfart{},以极简主义风格排版你的文章\thanks{对应版本. \texttt{\einfart{} 2021/03/15}}}
-\author{锦文}
-\date{2021年3月,北京}
+\title{\einfart{},以极简主义风格排版你的文章}
+\author{许锦文}
+\thanks{对应版本. \texttt{\einfart{} 2021/05/23}}
+\date{2021年5月,北京}
\maketitle
\begin{abstract}
- \einfart{}是\minimalist{}文档类系列的成员之一,整个系列包含用于排版文章的\minimart{}、\einfart{}以及用于排版书的\minimbook{}、\simplivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴而不简陋。
+ \einfart{} 是 \minimalist{} 文档类系列的成员之一,其名称取自于德文的 einfach (``简约''),并取了 artikel (``文章'') 的前三个字母组合而成。整个 \minimalist{} 系列包含用于排版文章的 \minimart{}、\einfart{} 以及用于排版书的 \minimbook{}、\simplivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴而不简陋。
- 其中,\einfart{}与\simplivre{}支持英文、法文、中文三种语言,并且同一篇文档中三种语言可以很好地协调。由于采用了自定义字体,需要采用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 进行编译。
+ \einfart{} 支持英文、法文、德文、中文、日文、俄文六种语言,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
- 这篇说明文档是用\einfart{}排版的,你可以把它看作一份简短的说明与演示。
+ 这篇说明文档即是用 \einfart{} 排版的,你可以把它看作一份简短的说明与演示。
\end{abstract}
\tableofcontents
-\section{关于文档类的名称与选项}
+\bigskip
+\begin{remind}
+ 多语言支持、定理类环境、未完成标记等功能是由 \ProjLib{} 工具箱提供的,这里只给出了将其与本文档类搭配使用的要点。如需获取更详细的信息,可以参阅 \ProjLib{} 的说明文档。
+\end{remind}
+
+\clearpage
+\section{初始化}
+
+\subsection{如何载入}
+
+只需要在第一行写:
+
+\begin{code}
+ \documentclass{einfart}
+\end{code}
+
+即可使用 \einfart{} 文档类。请注意,要使用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎才能编译。
+
+\subsection{选项}
+
+\einfart{} 文档类有下面几个选项:
+
+\begin{itemize}
+ \item \texttt{draft} 或 \texttt{fast}
+ \begin{itemize}
+ \item 你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+ \begin{itemize}
+ \item 使用较为简单的数学字体设置;
+ \item 不启用超链接;
+ \item 启用 \ProjLib{} 工具箱的快速模式。
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} 或 \texttt{b5paper}
+ \begin{itemize}
+ \item 可选的纸张大小。默认的纸张大小为 7in $\times$ 10in。
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item 经典模式。启用这一选项时,样式会变得更加中规中矩:段落呈首行缩进样式、各类下划线减少、标题样式改变、定理类环境的样式也会更贴近常见的设置。
+ \end{itemize}
+\end{itemize}
+
+\begin{remind}
+ \begin{itemize}
+ \item 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
+ \item 如果你喜欢更加传统的样式,\texttt{allowbf} + \texttt{classical} 是一个不错的搭配。
+ \end{itemize}
+\end{remind}
+
+\section{关于文档类中使用的字体}
+\einfart{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
+
+% \begin{itemize}
+% \item English main font. \textsf{English sans serif font}.
+% \item 中文主要字体,\textsf{中文无衬线字体}
+% \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+% \end{itemize}
+
+在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+
-\einfart{}取自于德文的einfach (“简约”),并取了artikel (“文章”)的前三个字母组合而成。
+\section{使用说明}
-\simplivre{}取自于法文的simple (“简约”),以及livre (“书”),由二者组合而成。
+接下来介绍的许多功能是由 \ProjLib{} 工具箱提供的。这里只介绍了基本使用方法,更多细节可以直接参阅其用户文档。
+
+\subsection{语言设置}
-你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+\einfart{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文。可以通过下列命令来选定语言:
\begin{itemize}
- \item 使用较为简单的数学字体设置;
- \item 不使用hyperref;
- \item 不使用tikz;
- \item 使用polyglossia而不是babel来支持多语言。(使用polyglossia编译速度会略有提高,但目前对于中文的兼容不太完善,在它更加稳定后,将会考虑全面切换到polyglossia)
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}|,用于指定语言,在其后将使用对应的语言设定。
+ \begin{itemize}
+ \item 既可以用于导言部分,也可以用于正文部分。在不指定语言时,默认选定 “English”。
+ \end{itemize}
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|,用指定的语言的设定排版 \meta{content}。
+ \begin{itemize}
+ \item 相比较 \lstinline|\UseLanguage|,它不会对行距进行修改,因此中西文字混排时能够保持行距稳定。
+ \end{itemize}
\end{itemize}
-在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。
+\meta{language name} 有下列选择:
+\begin{itemize}
+ \item 简体中文:\texttt{Chinese}、\texttt{chinese}、\texttt{SChinese}、\texttt{schinese}、\texttt{SimplifiedChinese} \\\hspace*{5em}或 \texttt{simplifiedchinese}
+ \item 繁体中文:\texttt{TChinese}、\texttt{tchinese}、\texttt{TraditionalChinese} 或 \texttt{traditionalchinese}
+ \item 英文:\texttt{English} 或 \texttt{english}
+ \item 法文:\texttt{French} 或 \texttt{french}
+ \item 德文:\texttt{German}、\texttt{german} 或 \texttt{ngerman}
+ \item 日文:\texttt{Japanese} 或 \texttt{japanese}
+ \item 俄文:\texttt{Russian} 或 \texttt{russian}
+\end{itemize}
-\section{一些使用说明}
+另外,还可以通过下面的方式来填加相应语言的设置:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向所有支持的语言增加设置 \meta{settings}。
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向指定的语言 \meta{language name} 增加设置 \meta{settings}。
+ \end{itemize}
+\end{itemize}
+例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
+
+
+\subsection{定理类环境及其引用}
-正文部分每段的开头没有缩进,但每两段之间会有半行左右的间距。就像这样——
+定义、定理等环境已经被预定义,可以直接使用。
-这里是下一个自然段。
+具体来说,预设的定理类环境包括:
+\texttt{assumption}、\texttt{axiom}、\texttt{conjecture}、\texttt{convention}、\texttt{corollary}、\texttt{definition}、\texttt{definition-proposition}、\texttt{definition-theorem}、\texttt{example}、\texttt{exercise}、\texttt{fact}、\texttt{hypothesis}、\texttt{lemma}、\texttt{notation}、\texttt{problem}、\texttt{property}、\texttt{proposition}、\texttt{question}、\texttt{remark}、\texttt{theorem},以及相应的带有星号 \lstinline|*| 的无编号版本。
-\subsection{定理,以及引用}
+在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。
-定义、定理等环境已经被预定义,可以直接使用,例如:
+\begin{remind}[例子]
\begin{code}
\begin{definition}[奇异物品] \label{def: strange} ...
\end{code}
将会生成
\begin{definition}[奇异物品]\label{def: strange}
- 这是奇异物品的定义。
+ 这是奇异物品的定义。定理类环境的前后有一行左右的间距。在定义结束的时候会有一个符号来标记。
\end{definition}
-定理类环境的前后有一行左右的间距。在定义结束的时候会有一个符号来标记。
+\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+
+使用 \lstinline|\UseLanguage{English}| 后,定理会显示为:
+
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ A theorem in English.
+\end{theorem}
+
+默认情况下,引用时,定理的名称总是与定理所在区域的语言匹配,例如,上面的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。如果在引用时想让定理的名称与当前语境相匹配,可以在全局选项中加入 \texttt{regionalref}。
+\end{remind}
+
+\UseLanguage{Chinese}
-引用时,可以直接使用智能引用 \lstinline|\cref{标签名称}|,例如:\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
\subsection{定义新的定理型环境}
-首先定义这个环境在所用语言下的名称 \lstinline|\(name of environment)(language name)|,其中 \\\lstinline|(language name)| 是 \lstinline|EN|、\lstinline|FR|、\lstinline|CN| 等,然后用下面四种方式之一定义这一环境:
+若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称 \lstinline|\|\meta{name of environment}\meta{language abbr},其中 \meta{language abbr} 是语言的简写,分别为:
+\begin{longtable}{ll|ll}
+ \texttt{CN} & 简体中文 & \texttt{DE} & 德文\\
+ \texttt{TC} & 繁体中文 & \texttt{JP} & 日文\\
+ \texttt{EN} & 英文 & \texttt{RU} & 俄文\\
+ \texttt{FR} & 法文 & &\\
+\end{longtable}
+
+\vspace{-0.3\baselineskip}
+\begin{remind}
+ 如果要定义名称后带有星号 \lstinline|*| 的环境,那么在上面的 \meta{name of environment} 中不用写星号。
+\end{remind}
+
+然后用下面五种方式之一定义这一环境:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义不编号的环境 \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},按顺序编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},与 \meta{numbered like} 计数器共用编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},在 \meta{numbered within} 计数器内编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item 将 \meta{name of environment} 与 \meta{existed environment} 或 \meta{existed environment}\lstinline|*| 等同。
+ \item 这种方式通常在两种情况下比较有用:
+ \begin{enumerate}
+ \item 希望定义更简洁的名称。例如,使用 \lstinline|\CreateTheorem{thm}(theorem)|,便可以直接用名称 \texttt{thm} 来撰写定理。
+ \item 希望去除某些环境的编号。例如,使用 \lstinline|\CreateTheorem{remark}(remark*)|,便可以去除 \texttt{remark} 环境的编号。
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ 其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
+\end{remind}
+
\def\proofideanameCN{思路}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
-例如,
+\bigskip
+下面提供一个例子。这三行代码:
\begin{code}
\def\proofideanameCN{思路}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
\end{code}
-可以定义不编号的环境 \lstinline|proofidea|,它支持在中文环境中使用,效果如下所示:
+
+可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 subsection 内编号),它们支持在简体中文语境中使用,效果如下所示:
+
+\begin{proofidea*}
+ \lstinline|proofidea*| 环境。
+\end{proofidea*}
\begin{proofidea}
- ...
+ \lstinline|proofidea| 环境。
\end{proofidea}
\subsection{未完成标记}
你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<还需加入…>|: \quad \dnf<还需加入…>
+ \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
\end{itemize}
类似的,还有 \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<关于…>|: \needgraph<关于…>
+ \item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{语言设置}
-可以随时使用 \lstinline|\UseLanguage{语言名称}| 更改语言,语言名称包括Chinese、English、French(首字母大小写随意,例如chinese亦可)。这样,各种指令和环境的效果也会随之变动。
-例如,使用 \lstinline|\UseLanguage{English}| 后,定理与未完成标记会显示为:
+\subsection{关于文章标题、摘要与关键词}
-\UseLanguage{English}
-\begin{theorem}[Useless]\label{thm}
- Some theorem in English. \dnf
-\end{theorem}
+% 由于引入了 \ProjLib{} 工具箱的 \textsf{PJLamssim} 组件,
+\einfart{} 同时具有标准文档类与\AmS{} 文档类的一些特性。
-引用时,定理的名称总是与定理所在区域的语言匹配,例如,开头的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。
+因此,文章的标题部分既可以按照标准文档类 \textsf{article} 的写法来写:
-\UseLanguage{Chinese}
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
+
+也可以按照 \AmS{} 文档类的方式来写:
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
+
+作者信息可以包含多组,输入方式为:
+
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
+
+其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。
\subsection{关于行号}
行号可以随时开启和关闭。\lstinline|\linenumbers| 用来开启行号,\lstinline|\nolinenumbers| 用来关闭行号。标题、目录、索引等位置为了美观,不进行编号。
@@ -171,74 +386,121 @@
\end{itemize}
这是标题使用下划线装饰之后带来的一个缺点。
-\subsection{关于字体}
-\einfart{}与\simplivre{}使用Palatino Linotype作为英文字体,方正悠宋、悠黑简体作为中文字体,并部分使用了Neo Euler作为数学字体:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体,\textsf{中文无衬线字体}
- \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+
+\section{目前存在的问题}
+
+\begin{itemize}[itemsep=.6em]
+ \item 对于字体的设置仍然不够完善。
+ \item 由于很多核心功能建立在 \ProjLib{} 工具箱的基础上,因此 \einfart{} 自然继承了其所有问题。详情可以参阅 \ProjLib{} 用户文档的“目前存在的问题”这一小节。
+ \item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。
+ \item 代码中仍有许多可优化之处。
\end{itemize}
-其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。
-其他字体不是免费字体,需要自行购买使用(你可以在方正字库网站查询详细资料:\url{https://www.foundertype.com})。
-在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+\UseLanguage{English}
+\clearpage
\section{文档示例}
-\singlespacing
+\subsection{标准文档类写法}
+
+如果想采用标准文档类中的写法,可以参考下面的例子:
-\LocallyStopLineNumbers
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{einfart}
+\documentclass{einfart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+如果以后想切换到标准文档类,只需要将前两行换为:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{einfart}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
-\linenumbers
-\UseLanguage{Chinese}
+
+\clearpage
+\subsection{\texorpdfstring{\AmS{}}{AMS} 文档类写法}
+
+如果日后有意切换到期刊模版,想采用 \AmS{} 文档类中的写法,可以参考下面的例子:
+
+\begin{code}
+\documentclass{einfart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
\maketitle
-%% 正文部分
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\ResumeLineNumbers
-\bigskip
-(\lstinline|\UseLanguage| 既可以放在导言中,也可以放在正文部分,并且可以按照需要反复使用)
+这样,若想切换到 \AmS{} 文档类,只需要将前两行换为:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
\end{document}
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-en.pdf b/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
index ffef04eabe..9fecd39dda 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-en.tex b/macros/unicodetex/latex/einfart/einfart-doc-en.tex
index 49b04581a0..5e42a556a0 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-en.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-en.tex
@@ -1,24 +1,26 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{einfart}
\linenumbers % Enable line numbers
%%================================
-%% TeX logo and URL
+%% Import toolkit
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
%%================================
%% For typestting code
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -31,9 +33,9 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,subsection,
+ color,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
@@ -42,6 +44,31 @@
}
{\ResumeLineNumbers}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][Remind]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% 名称
+%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
\providecommand{\minimbook}{\textsf{minimbook}}
@@ -53,110 +80,294 @@
%%================================
\begin{document}
-\title{\einfart{}, write your articles in a simple and clear way\thanks{Corresponding to: \texttt{\einfart{} 2021/03/15}}}
-\author{Jinwen}
-\date{March 2021, Beijing}
+\title{\einfart{}, write your articles in a simple and clear way}
+\author{Jinwen XU}
+\thanks{Corresponding to: \texttt{\einfart{} 2021/05/23}}
+\date{May 2021, Beijing}
\maketitle
\begin{abstract}
- \einfart{} is a member of the \minimalist{} class series. The entire collection includes \minimart{} and \einfart{} for typesetting articles and \minimbook{} and \simplivre{} for typesetting books. My original intention in designing this series was to write drafts and notes that look simple but not shabby.
+ \einfart{} is part of the \minimalist{} class series, whose name is taken from German word ``einfach'' (``simple''), combined with the first three letters of ``artikel'' (``article''). The entire collection includes \minimart{} and \einfart{} for typesetting articles, and \minimbook{} and \simplivre{} for typesetting books. My original intention in designing them was to write drafts and notes that look simple yet not shabby.
- Among them, \einfart{} and \simplivre{} support three languages: English, French, and Chinese, and these three languages can be switched seamlessly in a single document. Due to the usage of custom fonts, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+ \einfart{} supports six languages: English, French, German, Chinese, Japanese and Russian. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \einfart{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
This documentation is typeset using \einfart{}. You can think of it as a short introduction and demonstration.
\end{abstract}
\tableofcontents
-\section{On the naming and options}
-\einfart{} is taken from German word ``einfach'' (``simple''), combined with the first three letters of ``artikel'' (``article'').
+\bigskip
+\begin{remind}
+ Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
+\end{remind}
+
+\clearpage
+\section{Initialization}
+
+\subsection{How to load}
+
+One only needs to put
+\begin{code}
+ \documentclass{einfart}
+\end{code}
+as the first line to use the \einfart{} class. Please note that you need to use either \hologo{XeLaTeX} or \hologo{LuaLaTeX} engine to compile.
+
+\subsection{Options}
-\simplivre{} is taken from French words ``simple'' and ``livre'' (for ``book'').
+\einfart{} offers the following options:
-You can use the option \verb|fast| to enable a fast but slightly rough version. The main differences are:
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use hyperref;
- \item Do not use tikz;
- \item Use polyglossia instead of babel to support multiple languages. (Using polyglossia will increase the compilation speed slightly, but the current compatibility with Chinese is not perfect. When it becomes more stable, I will consider fully switching to polyglossia)
+ \item \texttt{draft} or \texttt{fast}
+ \begin{itemize}
+ \item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
+ \begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Enable the fast mode of \ProjLib{} toolkit.
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} or \texttt{b5paper}
+ \begin{itemize}
+ \item Optional paper size. The default paper size is 7in $\times$ 10in.
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Allow boldface. When this option is enabled, the title, titles of all levels and names of theorem-like environments will be bolded.
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item Classic mode. When this option is enabled, the style will become more regular: paragraphs are indented, the use of underlines are reduced, heading styles are changed, and the theorem styles will be much closer to common styles.
+ \end{itemize}
\end{itemize}
-During the writing stage of your document, it is recommended to use the \verb|fast| option to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+\begin{remind}
+ \begin{itemize}
+ \item During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. At the end, one should remove the ``fast'' option to get the final version. When in \verb|fast| mode, there will be a watermark "DRAFT" to indicate that you are currently in the draft mode.
+ \item \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
+ \end{itemize}
+\end{remind}
+
+\section{On the fonts}
+By default, \einfart{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+
+% \begin{itemize}
+% \item English main font. \textsf{English sans serif font}.
+% \item 中文主要字体, \textsf{中文无衬线字体}
+% \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+% \end{itemize}
+
+When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
\section{Some instructions}
-There is no indentation at the beginning of each paragraph, but there will be a half-line space between each two paragraphs. like this ---
+Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
+
+\subsection{Language configuration}
+
+\einfart{} has multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian. The language can be selected by the following macros:
+
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
+\end{itemize}
+
+\meta{language name} can be:
+\begin{itemize}
+ \item Simplified Chinese: \texttt{Chinese}, \texttt{chinese}, \texttt{SChinese}, \texttt{schinese}, \texttt{SimplifiedChinese} or \texttt{simplifiedchinese}
+ \item Traditional Chinese: \texttt{TChinese}, \texttt{tchinese}, \texttt{TraditionalChinese} or \texttt{traditionalchinese}
+ \item English: \texttt{English} or \texttt{english}
+ \item French: \texttt{French} or \texttt{french}
+ \item German: \texttt{German}, \texttt{german} or \texttt{ngerman}
+ \item Japanese: \texttt{Japanese} or \texttt{japanese}
+ \item Russian: \texttt{Russian} or \texttt{russian}
+\end{itemize}
+
+\medskip
+In addition, you can also add new settings to selected language:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to all supported languages.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to the selected language \meta{language name}.
+ \end{itemize}
+\end{itemize}
+For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
-Here is the next paragraph.
\subsection{Theorems and how to reference them}
-Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+Environments such as definitions and theorems have been pre-defined and can be used directly.
+
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The display of these environments will change according to the current language.
+
+When referencing a theorem-like environment, it is recommended to use clever reference \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{remind}[Example]
\begin{code}
\begin{definition}[Strange things] \label{def: strange} ...
\end{code}
+
will produce
\begin{definition}[Strange things]\label{def: strange}
- This is the definition of some strange objects.
+ This is the definition of some strange objects. There is approximately an one-line space before and after the theorem environment, and there will be a symbol to mark the end of the environment.
\end{definition}
-There is approximately an one-line space before and after the theorem environment. There will be a symbol to mark the end of the environment.
+\lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+
+After using \lstinline|\UseLanguage{French}|, a theorem will be displayed as:
+
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorème en français.
+\end{theorem}
+
+By default, when referenced, the name of the theorem always matches the language of the context in which the theorem is located. For example, the definition above is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}. If you want the name of the theorem to match the current context when referencing, you can add \texttt{regionalref} to the global options.
+\end{remind}
+
+\UseLanguage{English}
-When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
\subsection{Define a new theorem-like environment}
-First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+If you need to define a new theorem-like environment, you must first define the name of the environment in the language used: \lstinline|\|\meta{name of environment}\meta{language abbr}, where \meta{language abbr} is the abbreviation of language, which can be:
+% \vspace{-.5\baselineskip}
+\begin{longtable}{ll|ll}
+ \texttt{CN} & Simplified Chinese & \texttt{DE} & German\\
+ \texttt{TC} & Traditional Chinese & \texttt{JP} & Japanese\\
+ \texttt{EN} & English & \texttt{RU} & Russian\\
+ \texttt{FR} & French & &\\
+\end{longtable}
+
+\vspace{-.5\baselineskip}
+\begin{remind}
+ If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
+\end{remind}
+
+And then define this environment in one of following five ways:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define an unnumbered environment \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
+ \item This method is usually useful in the following two situations:
+ \begin{enumerate}
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ It uses \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
+\end{remind}
+
\def\proofideanameEN{Idea}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
+
+\bigskip
+Here is an example. The following code:
-For example,
\begin{code}
\def\proofideanameEN{Idea}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
\end{code}
-defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context. The effect is as follows:
+
+\begin{proofidea*}
+ The \lstinline|proofidea*| environment.
+\end{proofidea*}
\begin{proofidea}
- ...
+ The \lstinline|proofidea| environment.
\end{proofidea}
\subsection{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+ \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+ \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{Language configuration}
-You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
+\subsection{On the title, abstract and keywords}
-For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
+\einfart{} has both the features of standard classes and that of the \AmS{} classes.
-\UseLanguage{French}
-\begin{theorem}[Inutile]\label{thm}
- Un théorème en français. \dnf
-\end{theorem}
+Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
-When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}.
+or written in the way of \AmS{} classes:
-\UseLanguage{English}
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
+
+\medskip
+The author information can contain multiple groups, written as:
+
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
+Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
+
+\clearpage
\subsection{On the line numbers}
Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
@@ -168,72 +379,117 @@ In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnote
\end{itemize}
This is a disadvantage brought about by the underline decoration of the title.
-\subsection{On the fonts}
-\einfart{} and \simplivre{} use Palatino Linotype as the English font, FounderType's YouSong and YouHei Simplified as the Chinese fonts, and partially use Neo Euler as the mathematical font:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体, \textsf{中文无衬线字体}
- \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
-\end{itemize}
-Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. Other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+\section{Known issues}
-When the corresponding font is not installed, the font that comes with TeX Live will be used instead, and the experience might be reduced.
+\begin{itemize}[itemsep=.6em]
+ \item The font settings are still not perfect.
+ \item Since many features are based on the \ProjLib{} toolkit, \einfart{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
+ \item There are still many things that can be optimized in the code.
+\end{itemize}
+\clearpage
\section{Document templates}
-\singlespacing
+\subsection{The standard way}
+
+If you want to write in the standard way, you can refer to the following example:
-\LocallyStopLineNumbers
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{einfart}
+\documentclass{einfart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+If you wish to switch to the standard class later, just replace the first two lines with:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{einfart}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+
+\clearpage
+\subsection{The \texorpdfstring{\AmS{}}{AMS} way}
-\linenumbers
-\UseLanguage{Chinese}
+If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
+
+\begin{code}
+\documentclass{einfart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
\maketitle
-%% 正文部分
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\ResumeLineNumbers
-\bigskip
-(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
\end{document}
diff --git a/macros/unicodetex/latex/einfart/einfart.cls b/macros/unicodetex/latex/einfart/einfart.cls
index 50dae49c48..52bad4daaa 100644
--- a/macros/unicodetex/latex/einfart/einfart.cls
+++ b/macros/unicodetex/latex/einfart/einfart.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{einfart}
- [2021/03/15 A simple and clear article style]
+ [2021/05/23 A simple and clear article style]
\def\minimclass@baseclass{article}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,13 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[false]{classical}
+
+\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
+\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\minimclass@baseclass}
@@ -37,6 +44,8 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
papersize={7in,10in},
@@ -45,15 +54,36 @@
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\if@minimclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@minimclass@afourpaper
+\geometry{
+ a4paper,
+ total={47em,70em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
\if@minimclass@fast
\PassOptionsToPackage{fast}{minimalist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
\fi
-\if@minimclass@fast
- \PassOptionsToPackage{polyglossia}{minimalist}
+\if@minimclass@classical
+ \RequirePackage{indentfirst}
+\else
+ \AtEndPreamble{\RequirePackage{parskip}}
\fi
\RequirePackage{minimalist}
-\AtEndPreamble{\RequirePackage{parskip}}
%%================================
%% Fonts
@@ -69,27 +99,32 @@
\IfFontExistsTF{Palatino Linotype}{%
\setmainfont{Palatino Linotype}
}{
- \setmainfont{texgyrepagella-regular.otf}[
- BoldFont = texgyrepagella-bold.otf ,
- ItalicFont = texgyrepagella-italic.otf ,
- BoldItalicFont = texgyrepagella-bolditalic.otf ]
+ \setmainfont{TeXGyrePagellaX-Regular.otf}[
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ]
}
\setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase,
+ Scale = MatchLowercase ,
BoldFont = SourceSansPro-Bold.otf ,
ItalicFont = SourceSansPro-RegularIt.otf ,
BoldItalicFont = SourceSansPro-BoldIt.otf ]
+ \setmonofont{cmuntt.otf}[
+ Scale = 1.05 ,
+ BoldFont = cmuntb.otf ,
+ ItalicFont = cmunst.otf ,
+ BoldItalicFont = cmuntb.otf ]
%% Chinese fonts
\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
\RequirePackage{ctex}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmainfont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmainfont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmainfont{FandolSong-Regular.otf}[
@@ -99,13 +134,13 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmonofont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmonofont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmonofont{FandolFang-Regular.otf}[
@@ -116,11 +151,12 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouHeiS 506L}{%
- \setCJKsansfont{FZYouHeiS 506L}[
- BoldFont = FZYouHeiS 509R,
+\IfFontExistsTF{FZYOUHK_506L--GBK1-0}{%
+ \setCJKsansfont{FZYOUHK_506L--GBK1-0}[
+ BoldFont = FZYOUHK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouHeiS 509R ,
+ BoldItalicFont = FZYOUHK_509R--GBK1-0 ,
SmallCapsFont = * ]
}{
\setCJKsansfont{FandolHei-Regular.otf}[
@@ -131,14 +167,16 @@
}
%% Math font
-\if@minimclass@fast\else
+\if@minimclass@fast
+\RequirePackage{amssymb}
+\else
\PassOptionsToPackage
{warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO}
+\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
\setmathfont{Asana-Math.otf}
\IfFontExistsTF{Neo Euler}{%
-\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
+\setmathfont{Neo Euler}
[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
@@ -165,9 +203,22 @@
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
+\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range=up/{latin,Latin}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={bfup/{latin, Latin, greek, Greek}, frak, bffrak, cal},
+ script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={up/num, bfup/num, it, bfit, scr, bfscr,
+ sfup, sfit, bfsfup, bfsfit, tt}
+ ]{Asana-Math.otf}
+\setmathfont[range=bfcal, Scale=MatchUppercase, Alternate]{Asana-Math.otf}
}{}
\fi
+\def\PJL@font@alreadyset{}
+
\RequirePackage[verbose=silent]{microtype}
%%================================
@@ -176,7 +227,9 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
@@ -185,53 +238,6 @@
\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{\FAIL}
\apptocmd{\printindex}{\ResumeLineNumbers}{}{\FAIL}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@minimclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `einfart/einfart.cls'.
diff --git a/macros/unicodetex/latex/lebhart/README.md b/macros/unicodetex/latex/lebhart/README.md
index a5904f6091..de8ab4733b 100644
--- a/macros/unicodetex/latex/lebhart/README.md
+++ b/macros/unicodetex/latex/lebhart/README.md
@@ -5,10 +5,11 @@
`lebhart` is a LaTeX class for typesetting articles, which has a colorful
design.
-Currently, it has native support to English, French and Chinese typesetting. And
-it may compile with either XeLaTeX or LuaLaTeX.
+Currently, it has native support to Chinese (simplified and traditional),
+English, French, German, Japanese and Russian typesetting. And it may compile
+with either XeLaTeX or LuaLaTeX.
-This is part of the colorist class series.
+This is part of the `colorist` class series.
# License
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf
index c8bebc1013..c9caec16c3 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex
index 421a013c9a..196b121790 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex
@@ -1,24 +1,26 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
-\documentclass{lebhart}
-
-\UseLanguage{Chinese}
+\documentclass[allowbf]{lebhart}
%%================================
-%% TeX logo 与 网址
+%% 引入工具集
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
+
+\UseLanguage{Chinese}
%%================================
%% 排版代码
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -31,67 +33,183 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {color,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
-\providecommand{\colorist}{\textsf{colorist}}
-\providecommand{\colorart}{\textsf{colorart}}
-\providecommand{\colorbook}{\textsf{colorbook}}
-\providecommand{\lebhart}{\textsf{lebhart}}
-\providecommand{\beaulivre}{\textsf{beaulivre}}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][提示]{%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}}
+
+%%================================
+%% 名称
+%%================================
+\providecommand{\colorist}{{\normalfont\textsf{colorist}}}
+\providecommand{\colorart}{{\normalfont\textsf{colorart}}}
+\providecommand{\colorbook}{{\normalfont\textsf{colorbook}}}
+\providecommand{\lebhart}{{\normalfont\textsf{lebhart}}}
+\providecommand{\beaulivre}{{\normalfont\textsf{beaulivre}}}
%%================================
%% 正文
%%================================
\begin{document}
-\title{\lebhart{},以多彩的方式排版你的文章\thanks{对应版本. \texttt{\lebhart{} 2021/03/15}}}
-\author{锦文}
-\date{2021年3月,北京}
+\title{{\normalfont\textbf{\textsf{lebhart}}},以多彩的方式排版你的文章}
+\author{许锦文}
+\thanks{对应版本. \texttt{\lebhart{} 2021/05/24}}
+\date{2021年5月,北京}
\maketitle
\begin{abstract}
- \lebhart{}是\colorist{}文档类系列的成员之一,整个系列包含用于排版文章的\colorart{}、\lebhart{}以及用于排版书的\colorbook{}、\beaulivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之多彩而不缭乱。
+ \lebhart{} 是 \colorist{} 文档类系列的成员之一,其名称取自于德文的lebhaft (活泼),并取了artikel (文章)的前三个字母组合而成。整个 \colorist{} 系列包含用于排版文章的 \colorart{}、\lebhart{} 以及用于排版书的 \colorbook{}、\beaulivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之多彩而不缭乱。
- 其中,\lebhart{}与\beaulivre{}支持英文、法文、中文三种语言,并且同一篇文档中三种语言可以很好地协调。由于采用了自定义字体,需要采用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 进行编译。
+ \lebhart{} 支持英文、法文、德文、中文、日文、俄文六种语言,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
- 这篇说明文档是用\lebhart{}排版的,你可以把它看作一份简短的说明与演示。
+ 这篇说明文档即是用 \lebhart{} 排版的 (使用了参数 \texttt{allowbf}),你可以把它看作一份简短的说明与演示。
\end{abstract}
-\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
- 由于\colorist{}主体是从\textsf{minimalist}系列修改而来的,因而一些页面元素还未完全重新设计,特别是目录、part和chapter的样式。这些内容会在将来逐渐加入。
-\end{tcolorbox}
-
\tableofcontents
-\section{关于文档类的名称与选项}
+\bigskip\bigskip
+\begin{remind}
+ 多语言支持、定理类环境、未完成标记等功能是由 \ProjLib{} 工具箱提供的,这里只给出了将其与本文档类搭配使用的要点。如需获取更详细的信息,可以参阅 \ProjLib{} 的说明文档。
+\end{remind}
+
+\clearpage
+\section{初始化}
+
+\subsection{如何载入}
+
+只需要在第一行写:
+
+\begin{code}
+ \documentclass{lebhart}
+\end{code}
+
+即可使用 \lebhart{} 文档类。请注意,要使用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎才能编译。
+
+\subsection{选项}
+
+\lebhart{} 文档类有下面几个选项:
+
+\begin{itemize}
+ \item \texttt{draft} 或 \texttt{fast}
+ \begin{itemize}
+ \item 你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+ \begin{itemize}
+ \item 使用较为简单的数学字体设置;
+ \item 不启用超链接;
+ \item 启用 \ProjLib{} 工具箱的快速模式。
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} 或 \texttt{b5paper}
+ \begin{itemize}
+ \item 可选的纸张大小。默认的纸张大小为 8.5in $\times$ 11in。
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
+ \end{itemize}
+\end{itemize}
+
+\begin{remind}
+ \begin{itemize}
+ \item 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
+ \end{itemize}
+\end{remind}
+
+\medskip
+\section{关于文档类中使用的字体}
+\lebhart{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
+
+\begin{remind}[字体演示]
+ \begin{itemize}
+ \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+ \end{itemize}
+\end{remind}
+
+在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
-\lebhart{}取自于德文的lebhaft (活泼),并取了artikel (文章)的前三个字母组合而成。
+\clearpage
+\section{使用说明}
-\beaulivre{}取自于法文的beau (美丽),以及livre (书),由二者组合而成。
+接下来介绍的许多功能是由 \ProjLib{} 工具箱提供的。这里只介绍了基本使用方法,更多细节可以直接参阅其用户文档。
\medskip
-你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+\subsection{语言设置}
+
+\lebhart{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文。可以通过下列命令来选定语言:
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}|,用于指定语言,在其后将使用对应的语言设定。
+ \begin{itemize}
+ \item 既可以用于导言部分,也可以用于正文部分。在不指定语言时,默认选定 “English”。
+ \end{itemize}
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|,用指定的语言的设定排版 \meta{content}。
+ \begin{itemize}
+ \item 相比较 \lstinline|\UseLanguage|,它不会对行距进行修改,因此中西文字混排时能够保持行距稳定。
+ \end{itemize}
+\end{itemize}
+
+\meta{language name} 有下列选择:
+\begin{itemize}
+ \item 简体中文:\texttt{Chinese}、\texttt{chinese}、\texttt{SChinese}、\texttt{schinese}、\texttt{SimplifiedChinese} \\\hspace*{5em}或 \texttt{simplifiedchinese}
+ \item 繁体中文:\texttt{TChinese}、\texttt{tchinese}、\texttt{TraditionalChinese} 或 \texttt{traditionalchinese}
+ \item 英文:\texttt{English} 或 \texttt{english}
+ \item 法文:\texttt{French} 或 \texttt{french}
+ \item 德文:\texttt{German}、\texttt{german} 或 \texttt{ngerman}
+ \item 日文:\texttt{Japanese} 或 \texttt{japanese}
+ \item 俄文:\texttt{Russian} 或 \texttt{russian}
+\end{itemize}
+
+另外,还可以通过下面的方式来填加相应语言的设置:
\begin{itemize}
- \item 使用较为简单的数学字体设置;
- \item 不使用hyperref;
- \item 所有tcolorbox使用draft模式;
- \item 使用polyglossia而不是babel来支持多语言。(使用polyglossia编译速度会略有提高,但目前对于中文的兼容不太完善,在它更加稳定后,将会考虑全面切换到polyglossia)
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向所有支持的语言增加设置 \meta{settings}。
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向指定的语言 \meta{language name} 增加设置 \meta{settings}。
+ \end{itemize}
\end{itemize}
+例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
+
+\medskip
+\subsection{定理类环境及其引用}
-在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。
+定义、定理等环境已经被预定义,可以直接使用。
-\section{一些使用说明}
+具体来说,预设的定理类环境包括:
+\texttt{assumption}、\texttt{axiom}、\texttt{conjecture}、\texttt{convention}、\texttt{corollary}、\texttt{definition}、\texttt{definition-proposition}、\texttt{definition-theorem}、\texttt{example}、\texttt{exercise}、\texttt{fact}、\texttt{hypothesis}、\texttt{lemma}、\texttt{notation}、\texttt{problem}、\texttt{property}、\texttt{proposition}、\texttt{question}、\texttt{remark}、\texttt{theorem},以及相应的带有星号 \lstinline|*| 的无编号版本。
-\subsection{定理,以及引用}
+\medskip
+在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。
-定义、定理等环境已经被预定义,可以直接使用,例如:
+\begin{remind}[例子]
\begin{code}
\begin{definition}[奇异物品] \label{def: strange} ...
\end{code}
@@ -100,17 +218,23 @@
这是奇异物品的定义。
\end{definition}
-\begin{definition}[另一个定义]
- 不同的定义会自动粘结在一起,中间不会有空隙。
-\end{definition}
+\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
-引用时,可以直接使用智能引用 \lstinline|\cref{标签名称}|,例如:\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+\medskip
+使用 \lstinline|\UseLanguage{English}| 后,定理会显示为:
-\bigskip
-下面是定理类环境的其他几种样式:
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ A theorem in English.
+\end{theorem}
+
+默认情况下,引用时,定理的名称总是与定理所在区域的语言匹配,例如,上面的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。如果在引用时想让定理的名称与当前语境相匹配,可以在全局选项中加入 \texttt{regionalref}。
+\end{remind}
+\bigskip
+下面是定理类环境的几种主要样式:
\begin{theorem}
- Theorem style: theorem, proposition, lemma, corollary
+ Theorem style: theorem, proposition, lemma, corollary, ...
\end{theorem}
\begin{proof}
@@ -126,132 +250,277 @@
\end{conjecture}
\begin{example*}
- Example style: example, fact
+ Example style: example, fact, ...
\end{example*}
\begin{problem}
- Problem style
+ Problem style: problem, question, ...
\end{problem}
+\medskip
+为了美观,相邻的定义环境会自动连在一起:
+\begin{definition}
+ First definition.
+\end{definition}
+
+\begin{definition}
+ Second definition.
+\end{definition}
+
+\UseLanguage{Chinese}
+
+\clearpage
\subsection{定义新的定理型环境}
-首先定义这个环境在所用语言下的名称 \lstinline|\(name of environment)(language name)|,其中 \\\lstinline|(language name)| 是 \lstinline|EN|、\lstinline|FR|、\lstinline|CN| 等,然后用下面四种方式之一定义这一环境:
+若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称 \lstinline|\|\meta{name of environment}\meta{language abbr},其中 \meta{language abbr} 是语言的简写,分别为:
+\begin{longtable}{ll|ll}
+ \texttt{CN} & 简体中文 & \texttt{DE} & 德文\\
+ \texttt{TC} & 繁体中文 & \texttt{JP} & 日文\\
+ \texttt{EN} & 英文 & \texttt{RU} & 俄文\\
+ \texttt{FR} & 法文 & &\\
+\end{longtable}
+
+\vspace{-\baselineskip}
+\begin{remind}
+ 如果要定义名称后带有星号 \lstinline|*| 的环境,那么在上面的 \meta{name of environment} 中不用写星号。
+\end{remind}
+
+然后用下面五种方式之一定义这一环境:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义不编号的环境 \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},按顺序编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},与 \meta{numbered like} 计数器共用编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},在 \meta{numbered within} 计数器内编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item 将 \meta{name of environment} 与 \meta{existed environment} 或 \meta{existed environment}\lstinline|*| 等同。
+ \item 这种方式通常在两种情况下比较有用:
+ \begin{enumerate}
+ \item 希望定义更简洁的名称。例如,使用 \lstinline|\CreateTheorem{thm}(theorem)|,便可以直接用名称 \texttt{thm} 来撰写定理。
+ \item 希望去除某些环境的编号。例如,使用 \lstinline|\CreateTheorem{remark}(remark*)|,便可以去除 \texttt{remark} 环境的编号。
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ 其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
+\end{remind}
+
\def\proofideanameCN{思路}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
-例如,
+\bigskip
+下面提供一个例子。这三行代码:
\begin{code}
\def\proofideanameCN{思路}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
\end{code}
-可以定义不编号的环境 \lstinline|proofidea|,它支持在中文环境中使用,效果如下所示:
+
+可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 subsection 内编号),它们支持在简体中文语境中使用,效果如下所示:
+
+\begin{proofidea*}
+ \lstinline|proofidea*| 环境。
+\end{proofidea*}
\begin{proofidea}
- ...
+ \lstinline|proofidea| 环境。
\end{proofidea}
\subsection{未完成标记}
你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<还需加入…>|: \quad \dnf<还需加入…>
+ \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
\end{itemize}
类似的,还有 \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<关于…>|: \needgraph<关于…>
+ \item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{语言设置}
-可以随时使用 \lstinline|\UseLanguage{语言名称}| 更改语言,语言名称包括Chinese、English、French(首字母大小写随意,例如chinese亦可)。这样,各种指令和环境的效果也会随之变动。
-例如,使用 \lstinline|\UseLanguage{English}| 后,定理与未完成标记会显示为:
+\subsection{关于文章标题、摘要与关键词}
-\UseLanguage{English}
-\begin{theorem}[Useless]\label{thm}
- Some theorem in English. \dnf
-\end{theorem}
+% 由于引入了 \ProjLib{} 工具箱的 \textsf{PJLamssim} 组件,
+\lebhart{} 同时具有标准文档类与\AmS{} 文档类的一些特性。
-引用时,定理的名称总是与定理所在区域的语言匹配,例如,开头的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。
+因此,文章的标题部分既可以按照标准文档类 \textsf{article} 的写法来写:
-\UseLanguage{Chinese}
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
-\subsection{关于字体}
-\lebhart{}与\beaulivre{}使用Palatino Linotype作为英文字体,方正悠宋、悠黑简体作为中文字体,并部分使用了Neo Euler作为数学字体:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体,\textsf{中文无衬线字体}
- \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
-\end{itemize}
+也可以按照 \AmS{} 文档类的方式来写:
+
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
-其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。
+作者信息可以包含多组,输入方式为:
-其他字体不是免费字体,需要自行购买使用(你可以在方正字库网站查询详细资料:\url{https://www.foundertype.com})。
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
-在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。
+
+
+\medskip
+\section{目前存在的问题}
+
+\begin{itemize}[itemsep=.6em]
+ \item 目录、part、chapter 的设计依然有待改良。
+ \item 对于字体的设置仍然不够完善。
+ \item 由于很多核心功能建立在 \ProjLib{} 工具箱的基础上,因此 \lebhart{} 自然继承了其所有问题。详情可以参阅 \ProjLib{} 用户文档的“目前存在的问题”这一小节。
+ \item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。
+ \item 代码中仍有许多可优化之处。
+\end{itemize}
+
+\UseLanguage{English}
+
+\clearpage
\section{文档示例}
-\singlespacing
+\subsection{标准文档类写法}
+
+如果想采用标准文档类中的写法,可以参考下面的例子:
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{lebhart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+如果以后想切换到标准文档类,只需要将前两行换为:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
-\linenumbers
-\UseLanguage{Chinese}
+
+\clearpage
+\subsection{\texorpdfstring{\AmS{}}{AMS} 文档类写法}
+
+如果日后有意切换到期刊模版,想采用 \AmS{} 文档类中的写法,可以参考下面的例子:
+
+\begin{code}
+\documentclass{lebhart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
\maketitle
-%% 正文部分
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\bigskip
-(\lstinline|\UseLanguage| 既可以放在导言中,也可以放在正文部分,并且可以按照需要反复使用)
+这样,若想切换到 \AmS{} 文档类,只需要将前两行换为:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
\end{document}
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf b/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf
index 78b7bea93b..c3f8cefee0 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex b/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex
index 9985713280..53da4a67c5 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex
@@ -1,22 +1,24 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
-\documentclass{lebhart}
+\documentclass[allowbf]{lebhart}
%%================================
-%% TeX logo and URL
+%% Import toolkit
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
%%================================
%% For typestting code
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -29,85 +31,205 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,subsection,
+ color,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib
}
}
\lstnewenvironment{code}%
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
-\providecommand{\colorist}{\textsf{colorist}}
-\providecommand{\colorart}{\textsf{colorart}}
-\providecommand{\colorbook}{\textsf{colorbook}}
-\providecommand{\lebhart}{\textsf{lebhart}}
-\providecommand{\beaulivre}{\textsf{beaulivre}}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][Remind]{%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}}
+
+%%================================
+%% Names
+%%================================
+\providecommand{\colorist}{{\normalfont\textsf{colorist}}}
+\providecommand{\colorart}{{\normalfont\textsf{colorart}}}
+\providecommand{\colorbook}{{\normalfont\textsf{colorbook}}}
+\providecommand{\lebhart}{{\normalfont\textsf{lebhart}}}
+\providecommand{\beaulivre}{{\normalfont\textsf{beaulivre}}}
%%================================
%% Main text
%%================================
\begin{document}
-\title{\lebhart{}, write your articles in a colorful way\thanks{Corresponding to: \texttt{\lebhart{} 2021/03/15}}}
-\author{Jinwen}
-\date{March 2021, Beijing}
+\title{{\normalfont\textbf{\textsf{lebhart}}}, write your articles in a colorful way}
+\author{Jinwen XU}
+\thanks{Corresponding to: \texttt{\lebhart{} 2021/05/24}}
+\date{May 2021, Beijing}
\maketitle
\begin{abstract}
- \lebhart{} is a member of the \colorist{} class series. The entire collection includes \colorart{} and \lebhart{} for typesetting articles and \colorbook{} and \beaulivre{} for typesetting books. My original intention in designing this series was to write drafts and notes that look colorful yet not dazzling.
+ \lebhart{} is a member of the \colorist{} class series. Its name is taken from German word ``lebhaft'' (``vividly''), combined with the first three letters of ``artikel'' (``article''). The entire collection includes \colorart{} and \lebhart{} for typesetting articles and \colorbook{} and \beaulivre{} for typesetting books. My original intention in designing this series was to write drafts and notes that look colorful yet not dazzling.
- Among them, \lebhart{} and \beaulivre{} support three languages: English, French, and Chinese, and these three languages can be switched seamlessly in a single document. Due to the usage of custom fonts, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+ \lebhart{} supports six languages: English, French, German, Chinese, Japanese and Russian. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \lebhart{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
- This documentation is typeset using \lebhart{}. You can think of it as a short introduction and demonstration.
+ This documentation is typeset using \lebhart{} (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
\end{abstract}
-\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
- Since the main body of \colorist{} is modified from the \textsf{minimalist} series, some elements have not been completely redesigned yet, especially the TOC, part and chapter style. These will be added gradually in the future versions.
-\end{tcolorbox}
-
\tableofcontents
-\section{On the naming and options}
+\bigskip
+\begin{remind}
+ Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
+\end{remind}
+
+
+\clearpage
+\section{Initialization}
+
+\subsection{How to load}
+
+One only needs to put
+\begin{code}
+ \documentclass{lebhart}
+\end{code}
+as the first line to use the \lebhart{} class. Please note that you need to use either \hologo{XeLaTeX} or \hologo{LuaLaTeX} engine to compile.
+
+\subsection{Options}
+
+\lebhart{} offers the following options:
+
\begin{itemize}
- \item \lebhart{} is taken from German word ``lebhaft'' (``vividly''), combined with the first three letters of ``artikel'' (``article'').
- \item \beaulivre{} is taken from French words ``beau'' (for ``beautiful'') and ``livre'' (for ``book'').
+ \item \texttt{draft} or \texttt{fast}
+ \begin{itemize}
+ \item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
+ \begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Enable the fast mode of \ProjLib{} toolkit.
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} or \texttt{b5paper}
+ \begin{itemize}
+ \item Optional paper size. The default paper size is 8.5in $\times$ 11in.
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Allow boldface. When this option is enabled, the title, titles of all levels and names of theorem-like environments will be bolded.
+ \end{itemize}
\end{itemize}
-You can use the option \verb|fast| to enable a fast but slightly rough version. The main differences are:
+\begin{remind}
+ \begin{itemize}
+ \item During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. At the end, one should remove the ``fast'' option to get the final version. When in \verb|fast| mode, there will be a watermark "DRAFT" to indicate that you are currently in the draft mode.
+ \end{itemize}
+\end{remind}
+
+\section{On the fonts}
+By default, \lebhart{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+
+\begin{remind}[Font demonstration]
+ \begin{itemize}
+ \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+ \end{itemize}
+\end{remind}
+
+When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
+
+\section{Some instructions}
+
+Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
+
+\bigskip
+\subsection{Language configuration}
+
+\lebhart{} has multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian. The language can be selected by the following macros:
+
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use hyperref;
- \item Use draft mode for all tcolorboxes;
- \item Use polyglossia instead of babel to support multiple languages. (Using polyglossia will increase the compilation speed slightly, but the current compatibility with Chinese is not perfect. When it becomes more stable, I will consider fully switching to polyglossia)
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
\end{itemize}
-During the writing stage of your document, it is recommended to use the \verb|fast| option to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+\meta{language name} can be:
+\begin{itemize}
+ \item Simplified Chinese: \texttt{Chinese}, \texttt{chinese}, \texttt{SChinese}, \texttt{schinese}, \texttt{SimplifiedChinese} or \texttt{simplifiedchinese}
+ \item Traditional Chinese: \texttt{TChinese}, \texttt{tchinese}, \texttt{TraditionalChinese} or \texttt{traditionalchinese}
+ \item English: \texttt{English} or \texttt{english}
+ \item French: \texttt{French} or \texttt{french}
+ \item German: \texttt{German}, \texttt{german} or \texttt{ngerman}
+ \item Japanese: \texttt{Japanese} or \texttt{japanese}
+ \item Russian: \texttt{Russian} or \texttt{russian}
+\end{itemize}
-\section{Some instructions}
+\medskip
+In addition, you can also add new settings to selected language:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to all supported languages.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to the selected language \meta{language name}.
+ \end{itemize}
+\end{itemize}
+For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
+\bigskip
\subsection{Theorems and how to reference them}
-Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+Environments such as definitions and theorems have been pre-defined and can be used directly.
+
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The display of these environments will change according to the current language.
+
+\medskip
+When referencing a theorem-like environment, it is recommended to use clever reference \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\clearpage
+\begin{remind}[Example]
\begin{code}
\begin{definition}[Strange things] \label{def: strange} ...
\end{code}
+
will produce
\begin{definition}[Strange things]\label{def: strange}
- This is the definition of some strange objects.
+ This is the definition of some strange objects.
\end{definition}
-\begin{definition}[Another definition]
- Different definitions are automatically glued together, and there will be no gaps in between.
-\end{definition}
+\lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
-When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+\medskip
+After using \lstinline|\UseLanguage{French}|, a theorem will be displayed as:
-\bigskip
-The following are several other styles of theorem-like environments:
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorème en français.
+\end{theorem}
+By default, when referenced, the name of the theorem always matches the language of the context in which the theorem is located. For example, the definition above is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}. If you want the name of the theorem to match the current context when referencing, you can add \texttt{regionalref} to the global options.
+\end{remind}
+
+
+\bigskip
+The following are the main styles of theorem-like environments:
\begin{theorem}
- Theorem style: theorem, proposition, lemma, corollary
+ Theorem style: theorem, proposition, lemma, corollary, ...
\end{theorem}
\begin{proof}
@@ -123,129 +245,270 @@ The following are several other styles of theorem-like environments:
\end{conjecture}
\begin{example*}
- Example style: example, fact
+ Example style: example, fact, ...
\end{example*}
\begin{problem}
- Problem style
+ Problem style: problem, question, ...
\end{problem}
+\medskip
+For aesthetics, adjacent definitions will be connected together automatically:
+\begin{definition}
+ First definition.
+\end{definition}
+
+\begin{definition}
+ Second definition.
+\end{definition}
+
+\UseLanguage{English}
+
+\clearpage
\subsection{Define a new theorem-like environment}
-First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+If you need to define a new theorem-like environment, you must first define the name of the environment in the language used: \lstinline|\|\meta{name of environment}\meta{language abbr}, where \meta{language abbr} is the abbreviation of language, which can be:
+% \vspace{-.5\baselineskip}
+\begin{longtable}{ll|ll}
+ \texttt{CN} & Simplified Chinese & \texttt{DE} & German\\
+ \texttt{TC} & Traditional Chinese & \texttt{JP} & Japanese\\
+ \texttt{EN} & English & \texttt{RU} & Russian\\
+ \texttt{FR} & French & &\\
+\end{longtable}
+
+\vspace{-.5\baselineskip}
+\begin{remind}
+ If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
+\end{remind}
+
+And then define this environment in one of following five ways:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define an unnumbered environment \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
+ \item This method is usually useful in the following two situations:
+ \begin{enumerate}
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ It uses \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
+\end{remind}
+
\def\proofideanameEN{Idea}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<subsection>
-For example,
+\bigskip
+Here is an example. The following code:
\begin{code}
\def\proofideanameEN{Idea}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<subsection>
\end{code}
-defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within subsection) respectively. They can be used in English context. The effect is as follows:
+
+\begin{proofidea*}
+ The \lstinline|proofidea*| environment.
+\end{proofidea*}
\begin{proofidea}
- ...
+ The \lstinline|proofidea| environment.
\end{proofidea}
\subsection{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+ \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+ \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\subsection{Language configuration}
-You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
+\subsection{On the title, abstract and keywords}
-For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
+\lebhart{} has both the features of standard classes and that of the \AmS{} classes.
-\UseLanguage{French}
-\begin{theorem}[Inutile]\label{thm}
- Un théorème en français. \dnf
-\end{theorem}
+Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
-When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}.
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \date{(*\meta{date}*)}
+ \maketitle
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \begin{keyword}
+ (*\meta{keywords}*)
+ \end{keyword}
+\end{code}
-\UseLanguage{English}
+or written in the way of \AmS{} classes:
-\subsection{On the fonts}
-\lebhart{} and \beaulivre{} use Palatino Linotype as the English font, FounderType's YouSong and YouHei Simplified as the Chinese fonts, and partially use Neo Euler as the mathematical font:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体, \textsf{中文无衬线字体}
- \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
-\end{itemize}
+\begin{code}
+ \title{(*\meta{title}*)}
+ \author{(*\meta{author}*)}
+ \address{(*\meta{address}*)}
+ \email{(*\meta{email}*)}
+ \date{(*\meta{date}*)}
+ \keywords{(*\meta{keywords}*)}
+ \subjclass{(*\meta{subjclass}*)}
+ \begin{abstract}
+ (*\meta{abstract}*)
+ \end{abstract}
+ \maketitle
+\end{code}
+
+\clearpage %\medskip
+The author information can contain multiple groups, written as:
-Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. Other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+\begin{code}
+ \author{(*\meta{author 1}*)}
+ \address{(*\meta{address 1}*)}
+ \email{(*\meta{email 1}*)}
+ \author{(*\meta{author 2}*)}
+ \address{(*\meta{address 2}*)}
+ \email{(*\meta{email 2}*)}
+ ...
+\end{code}
-When the corresponding font is not installed, the font that comes with TeX Live will be used instead, and the experience might be reduced.
+Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
+
+\section{Known issues}
+
+\begin{itemize}[itemsep=.6em]
+ \item The font settings are still not perfect.
+ \item Since many features are based on the \ProjLib{} toolkit, \lebhart{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
+ \item There are still many things that can be optimized in the code.
+\end{itemize}
+
+\clearpage
\section{Document templates}
-\singlespacing
+\subsection{The standard way}
+
+If you want to write in the standard way, you can refer to the following example:
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{lebhart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
+\begin{keyword}
+ AAA, BBB, CCC, DDD, EEE
+\end{keyword}
+
+\section{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+If you wish to switch to the standard class later, just replace the first two lines with:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{lebhart}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
-\linenumbers
-\UseLanguage{Chinese}
+\clearpage
+\subsection{The \texorpdfstring{\AmS{}}{AMS} way}
+
+If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
+
+\begin{code}
+\documentclass{lebhart}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
+
+\begin{abstract}
+ Ceci est un résumé. \dnf<Plus de contenu est nécessaire.>
+\end{abstract}
\maketitle
-%% 正文部分
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\bigskip
-(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
\end{document}
diff --git a/macros/unicodetex/latex/lebhart/lebhart.cls b/macros/unicodetex/latex/lebhart/lebhart.cls
index 6c2e93cca4..7a3b261fe8 100644
--- a/macros/unicodetex/latex/lebhart/lebhart.cls
+++ b/macros/unicodetex/latex/lebhart/lebhart.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{lebhart}
- [2021/03/15 A colorful article style]
+ [2021/05/24 A colorful article style]
\def\colorclass@baseclass{article}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,12 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+
+\newif\if@colorclass@bfivepaper\@colorclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@colorclass@bfivepapertrue}
+\newif\if@colorclass@afourpaper\@colorclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@colorclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\colorclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\colorclass@baseclass}
@@ -37,23 +43,41 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
- % papersize={8in,11in},
+ papersize={8.5in,11in},
+ total={47em,66em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\if@colorclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@colorclass@afourpaper
+\geometry{
a4paper,
total={47em,70em},
hmarginratio=1:1,
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\fi
\RequirePackage{indentfirst}
\if@colorclass@fast
\PassOptionsToPackage{fast}{colorist}
-\fi
-\if@colorclass@fast
- \PassOptionsToPackage{polyglossia}{colorist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
\fi
\RequirePackage{colorist}
@@ -71,27 +95,32 @@
\IfFontExistsTF{Palatino Linotype}{%
\setmainfont{Palatino Linotype}
}{
- \setmainfont{texgyrepagella-regular.otf}[
- BoldFont = texgyrepagella-bold.otf ,
- ItalicFont = texgyrepagella-italic.otf ,
- BoldItalicFont = texgyrepagella-bolditalic.otf ]
+ \setmainfont{TeXGyrePagellaX-Regular.otf}[
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ]
}
\setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase,
+ Scale = MatchLowercase ,
BoldFont = SourceSansPro-Bold.otf ,
ItalicFont = SourceSansPro-RegularIt.otf ,
BoldItalicFont = SourceSansPro-BoldIt.otf ]
+ \setmonofont{cmuntt.otf}[
+ Scale = 1.05 ,
+ BoldFont = cmuntb.otf ,
+ ItalicFont = cmunst.otf ,
+ BoldItalicFont = cmuntb.otf ]
%% Chinese fonts
\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
\RequirePackage{ctex}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmainfont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmainfont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmainfont{FandolSong-Regular.otf}[
@@ -101,13 +130,13 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmonofont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmonofont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmonofont{FandolFang-Regular.otf}[
@@ -118,11 +147,12 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouHeiS 506L}{%
- \setCJKsansfont{FZYouHeiS 506L}[
- BoldFont = FZYouHeiS 509R,
+\IfFontExistsTF{FZYOUHK_506L--GBK1-0}{%
+ \setCJKsansfont{FZYOUHK_506L--GBK1-0}[
+ BoldFont = FZYOUHK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouHeiS 509R ,
+ BoldItalicFont = FZYOUHK_509R--GBK1-0 ,
SmallCapsFont = * ]
}{
\setCJKsansfont{FandolHei-Regular.otf}[
@@ -133,14 +163,16 @@
}
%% Math font
-\if@colorclass@fast\else
+\if@colorclass@fast
+\RequirePackage{amssymb}
+\else
\PassOptionsToPackage
{warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO}
+\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
\setmathfont{Asana-Math.otf}
\IfFontExistsTF{Neo Euler}{%
-\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
+\setmathfont{Neo Euler}
[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
@@ -167,9 +199,22 @@
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
+\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range=up/{latin,Latin}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={bfup/{latin, Latin, greek, Greek}, frak, bffrak, cal},
+ script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={up/num, bfup/num, it, bfit, scr, bfscr,
+ sfup, sfit, bfsfup, bfsfit, tt}
+ ]{Asana-Math.otf}
+\setmathfont[range=bfcal, Scale=MatchUppercase, Alternate]{Asana-Math.otf}
}{}
\fi
+\def\PJL@font@alreadyset{}
+
\RequirePackage[verbose=silent]{microtype}
%%================================
@@ -178,60 +223,15 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
%%================================
\RequirePackage{imakeidx}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@colorclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `lebhart/lebhart.cls'.
diff --git a/macros/unicodetex/latex/simplivre/README.md b/macros/unicodetex/latex/simplivre/README.md
index cce0b457f5..57c73bd0f7 100644
--- a/macros/unicodetex/latex/simplivre/README.md
+++ b/macros/unicodetex/latex/simplivre/README.md
@@ -5,10 +5,11 @@
`simplivre` is a LaTeX class for typesetting books, which has a simple and clear
design.
-Currently, it has native support to English, French and Chinese typesetting. And
-it may compile with either XeLaTeX or LuaLaTeX.
+Currently, it has native support to Chinese (simplified and traditional),
+English, French, German, Japanese and Russian typesetting. And it may compile
+with either XeLaTeX or LuaLaTeX.
-This is part of the minimalist class series.
+This is part of the `minimalist` class series.
# License
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
index 5000712458..61587e4a51 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
index a432d7bce8..0a16c1d99b 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
@@ -1,25 +1,28 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{simplivre}
\linenumbers % 开启行号
-\UseLanguage{Chinese}
%%================================
-%% TeX logo 与 网址
+%% 引入工具集
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
+
+\UseLanguage{Chinese}
%%================================
%% 排版代码
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -32,9 +35,9 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,subsection,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,part,chapter,section,subsection,
+ color,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib,parttext
}
}
\lstnewenvironment{code}%
@@ -43,125 +46,365 @@
}
{\ResumeLineNumbers}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][提示]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% 名称
+%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
\providecommand{\minimbook}{\textsf{minimbook}}
\providecommand{\einfart}{\textsf{einfart}}
\providecommand{\simplivre}{\textsf{simplivre}}
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
%%================================
%% 正文
%%================================
\begin{document}
-\title{\simplivre{},以极简主义风格排版你的图书\thanks{对应版本. \texttt{\simplivre{} 2021/03/15}}}
-\author{锦文}
-\date{2021年3月,北京}
+% \title{\simplivre{},以极简主义风格排版你的图书\thanks{对应版本. \texttt{\simplivre{} 2021/05/23}}}
+% \author{许锦文}
+% \date{2021年5月,北京}
-\maketitle
+% \maketitle
\frontmatter
+
+\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
+\begin{tikzpicture}[overlay,remember picture]
+ \fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(21,-7)$);
+ \fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
+ \node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\\hspace*{-.05em}以极简主义风格排版你的图书\\[10pt]\tiny 对应版本. \texttt{\simplivre{} 2021/05/23}}};
+ \node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{许锦文}};
+ \node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{2021年5月,北京}};
+\end{tikzpicture}%
+\end{titlepage}%
+\cleardoublepage%
+
\chapter*{前言}
-\simplivre{}是\minimalist{}文档类系列的成员之一,整个系列包含用于排版文章的\minimart{}、\einfart{}以及用于排版书的\minimbook{}、\simplivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴而不简陋。
+\simplivre{} 是 \minimalist{} 文档类系列的成员之一,其名称取自于法文的 simple (“简约”),以及 livre (“书”),由二者组合而成。整个 \minimalist{} 系列包含用于排版文章的 \minimart{}、\einfart{} 以及用于排版书的 \minimbook{}、\simplivre{}。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴而不简陋。
-其中,\einfart{}与\simplivre{}支持英文、法文、中文三种语言,并且同一篇文档中三种语言可以很好地协调。由于采用了自定义字体,需要采用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 进行编译。
+\simplivre{} 支持英文、法文、德文、中文、日文、俄文六种语言,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
-最后,这篇说明文档是用\simplivre{}排版的,你可以把它看作一份简短的说明与演示。
+这篇说明文档即是用 \simplivre{} 排版的,你可以把它看作一份简短的说明与演示。
+
+\bigskip
+\begin{remind}
+ 多语言支持、定理类环境、未完成标记等功能是由 \ProjLib{} 工具箱提供的,这里只给出了将其与本文档类搭配使用的要点。如需获取更详细的信息,可以参阅 \ProjLib{} 的说明文档。
+\end{remind}
\tableofcontents
\mainmatter
-\chapter{关于文档类的名称与选项}
+\part{说明}
+\parttext{可以通过 \lstinline|\\parttext|\meta{text} 在这里添加一些说明}
+
+\chapter{初始化}
+
+\section{如何载入}
+
+只需要在第一行写:
+
+\begin{code}
+ \documentclass{simplivre}
+\end{code}
+
+即可使用 \simplivre{} 文档类。
+
+\begin{remind}[请注意]
+ 要使用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎才能编译。
+\end{remind}
+
+\section{选项}
+
+\simplivre{} 文档类有下面几个选项:
-\einfart{}取自于德文的einfach (“简约”),并取了artikel (“文章”)的前三个字母组合而成。
+\begin{itemize}
+ \item \texttt{draft} 或 \texttt{fast}
+ \begin{itemize}
+ \item 你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+ \begin{itemize}
+ \item 使用较为简单的数学字体设置;
+ \item 不启用超链接;
+ \item 启用 \ProjLib{} 工具箱的快速模式。
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} 或 \texttt{b5paper}
+ \begin{itemize}
+ \item 可选的纸张大小。默认的纸张大小为 7in $\times$ 10in。
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item 经典模式。启用这一选项时,样式会变得更加中规中矩:段落呈首行缩进样式、各类下划线减少、标题样式改变、定理类环境的样式也会更贴近常见的设置。
+ \end{itemize}
+\end{itemize}
-\simplivre{}取自于法文的simple (“简约”),以及livre (“书”),由二者组合而成。
+\begin{remind}
+ \begin{itemize}
+ \item 在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。使用 \verb|fast| 模式时会有“DRAFT”字样的水印,以提示目前处于草稿阶段。
+ \item 如果你喜欢更加传统的样式,\texttt{allowbf} + \texttt{classical} 是一个不错的搭配。
+ \end{itemize}
+\end{remind}
+
+\bigskip
+另外,排版图书时常用的 \texttt{oneside}、\texttt{twoside} 选项也是可以使用的。默认采用双页排版。
-你可以使用选项 \verb|fast| 来启用快速但略微粗糙的样式,主要区别是:
+\chapter{关于文档类中使用的字体}
+\simplivre{} 默认使用 Palatino Linotype 作为英文字体,方正悠宋、悠黑GBK作为中文字体,并部分使用了 Neo Euler 作为数学字体。其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。其他字体不是免费字体,需要自行购买使用。可以在方正字库网站查询详细资料:\url{https://www.foundertype.com}。
+
+\begin{remind}[字体演示]
+ \begin{itemize}
+ \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+ \end{itemize}
+\end{remind}
+
+\bigskip
+在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+
+
+\chapter{使用说明}
+
+接下来介绍的许多功能是由 \ProjLib{} 工具箱提供的。这里只介绍了基本使用方法,更多细节可以直接参阅其用户文档。
+
+\section{语言设置}
+
+\simplivre{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文。可以通过下列命令来选定语言:
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}|,用于指定语言,在其后将使用对应的语言设定。
+ \begin{itemize}
+ \item 既可以用于导言部分,也可以用于正文部分。在不指定语言时,默认选定 “English”。
+ \end{itemize}
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|,用指定的语言的设定排版 \meta{content}。
+ \begin{itemize}
+ \item 相比较 \lstinline|\UseLanguage|,它不会对行距进行修改,因此中西文字混排时能够保持行距稳定。
+ \end{itemize}
+\end{itemize}
+
+\meta{language name} 有下列选择:
+\begin{itemize}
+ \item 简体中文:\texttt{Chinese}、\texttt{chinese}、\texttt{SChinese}、\texttt{schinese}、\texttt{SimplifiedChinese} \\\hspace*{5em}或 \texttt{simplifiedchinese}
+ \item 繁体中文:\texttt{TChinese}、\texttt{tchinese}、\texttt{TraditionalChinese} 或 \texttt{traditionalchinese}
+ \item 英文:\texttt{English} 或 \texttt{english}
+ \item 法文:\texttt{French} 或 \texttt{french}
+ \item 德文:\texttt{German}、\texttt{german} 或 \texttt{ngerman}
+ \item 日文:\texttt{Japanese} 或 \texttt{japanese}
+ \item 俄文:\texttt{Russian} 或 \texttt{russian}
+\end{itemize}
+
+另外,还可以通过下面的方式来填加相应语言的设置:
\begin{itemize}
- \item 使用较为简单的数学字体设置;
- \item 不使用hyperref;
- \item 不使用tikz;
- \item 使用polyglossia而不是babel来支持多语言。(使用polyglossia编译速度会略有提高,但目前对于中文的兼容不太完善,在它更加稳定后,将会考虑全面切换到polyglossia)
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向所有支持的语言增加设置 \meta{settings}。
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item 向指定的语言 \meta{language name} 增加设置 \meta{settings}。
+ \end{itemize}
\end{itemize}
+例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
-在文章的撰写阶段,建议使用 \verb|fast| 选项以加快编译速度,改善写作时的流畅程度。在最后,可以把 \verb|fast| 标记去除,从而得到正式的版本。
-\chapter{一些使用说明}
+\section{定理类环境及其引用}
-正文部分每段的开头没有缩进,但每两段之间会有半行左右的间距。就像这样——
+定义、定理等环境已经被预定义,可以直接使用。
-这里是下一个自然段。
+具体来说,预设的定理类环境包括:
+\texttt{assumption}、\texttt{axiom}、\texttt{conjecture}、\texttt{convention}、\texttt{corollary}、\texttt{definition}、\texttt{definition-proposition}、\texttt{definition-theorem}、\texttt{example}、\texttt{exercise}、\texttt{fact}、\texttt{hypothesis}、\texttt{lemma}、\texttt{notation}、\texttt{problem}、\texttt{property}、\texttt{proposition}、\texttt{question}、\texttt{remark}、\texttt{theorem},以及相应的带有星号 \lstinline|*| 的无编号版本。
-\section{定理,以及引用}
+在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。
-定义、定理等环境已经被预定义,可以直接使用,例如:
+\begin{remind}[例子]
\begin{code}
\begin{definition}[奇异物品] \label{def: strange} ...
\end{code}
将会生成
\begin{definition}[奇异物品]\label{def: strange}
- 这是奇异物品的定义。
+ 这是奇异物品的定义。定理类环境的前后有一行左右的间距。在定义结束的时候会有一个符号来标记。
\end{definition}
-定理类环境的前后有一行左右的间距。在定义结束的时候会有一个符号来标记。
+\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+
+使用 \lstinline|\UseLanguage{English}| 后,定理会显示为:
+
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ A theorem in English.
+\end{theorem}
+
+默认情况下,引用时,定理的名称总是与定理所在区域的语言匹配,例如,上面的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。如果在引用时想让定理的名称与当前语境相匹配,可以在全局选项中加入 \texttt{regionalref}。
+\end{remind}
+
+\UseLanguage{Chinese}
-引用时,可以直接使用智能引用 \lstinline|\cref{标签名称}|,例如:\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
\section{定义新的定理型环境}
-首先定义这个环境在所用语言下的名称 \lstinline|\(name of environment)(language name)|,其中 \\\lstinline|(language name)| 是 \lstinline|EN|、\lstinline|FR|、\lstinline|CN| 等,然后用下面四种方式之一定义这一环境:
+若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称 \lstinline|\|\meta{name of environment}\meta{language abbr},其中 \meta{language abbr} 是语言的简写,分别为:
+\begin{longtable}{ll|ll}
+ \texttt{CN} & 简体中文 & \texttt{DE} & 德文\\
+ \texttt{TC} & 繁体中文 & \texttt{JP} & 日文\\
+ \texttt{EN} & 英文 & \texttt{RU} & 俄文\\
+ \texttt{FR} & 法文 & &\\
+\end{longtable}
+
+\vspace{-0.3\baselineskip}
+\begin{remind}
+ 如果要定义名称后带有星号 \lstinline|*| 的环境,那么在上面的 \meta{name of environment} 中不用写星号。
+\end{remind}
+
+然后用下面五种方式之一定义这一环境:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义不编号的环境 \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},按顺序编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},与 \meta{numbered like} 计数器共用编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item 定义编号环境 \meta{name of environment},在 \meta{numbered within} 计数器内编号
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item 将 \meta{name of environment} 与 \meta{existed environment} 或 \meta{existed environment}\lstinline|*| 等同。
+ \item 这种方式通常在两种情况下比较有用:
+ \begin{enumerate}
+ \item 希望定义更简洁的名称。例如,使用 \lstinline|\CreateTheorem{thm}(theorem)|,便可以直接用名称 \texttt{thm} 来撰写定理。
+ \item 希望去除某些环境的编号。例如,使用 \lstinline|\CreateTheorem{remark}(remark*)|,便可以去除 \texttt{remark} 环境的编号。
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ 其内部使用了 \textsf{amsthm},因此传统的 \texttt{theoremstyle} 对其也是适用的,只需在相关定义前标明即可。
+\end{remind}
+
\def\proofideanameCN{思路}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<section>
-例如,
+\bigskip
+下面提供一个例子。这三行代码:
\begin{code}
\def\proofideanameCN{思路}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<section>
\end{code}
-可以定义不编号的环境 \lstinline|proofidea|,它支持在中文环境中使用,效果如下所示:
+
+可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 section 内编号),它们支持在简体中文语境中使用,效果如下所示:
+
+\begin{proofidea*}
+ \lstinline|proofidea*| 环境。
+\end{proofidea*}
\begin{proofidea}
- ...
+ \lstinline|proofidea| 环境。
\end{proofidea}
\section{未完成标记}
你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<还需加入…>|: \quad \dnf<还需加入…>
+ \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
\end{itemize}
类似的,还有 \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<关于…>|: \needgraph<关于…>
+ \item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\section{语言设置}
-可以随时使用 \lstinline|\UseLanguage{语言名称}| 更改语言,语言名称包括Chinese、English、French(首字母大小写随意,例如chinese亦可)。这样,各种指令和环境的效果也会随之变动。
-例如,使用 \lstinline|\UseLanguage{English}| 后,定理与未完成标记会显示为:
-
-\UseLanguage{English}
-\begin{theorem}[Useless]\label{thm}
- Some theorem in English. \dnf
-\end{theorem}
-
-引用时,定理的名称总是与定理所在区域的语言匹配,例如,开头的定义在现在的英文模式下依然显示为中文:\cref{def: strange} 和 \cref{thm}。
-
-\UseLanguage{Chinese}
+% \section{关于文章标题、摘要与关键词}
+
+% % 由于引入了 \ProjLib{} 工具箱的 \textsf{PJLamssim} 组件,
+% \simplivre{} 同时具有标准文档类与\AmS{} 文档类的一些特性。
+
+% 因此,文章的标题部分既可以按照标准文档类 \textsf{article} 的写法来写:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \date{(*\meta{date}*)}
+% \maketitle
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \begin{keyword}
+% (*\meta{keywords}*)
+% \end{keyword}
+% \end{code}
+
+% 也可以按照 \AmS{} 文档类的方式来写:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \address{(*\meta{address}*)}
+% \email{(*\meta{email}*)}
+% \date{(*\meta{date}*)}
+% \keywords{(*\meta{keywords}*)}
+% \subjclass{(*\meta{subjclass}*)}
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \maketitle
+% \end{code}
+
+% 作者信息可以包含多组,输入方式为:
+
+% \begin{code}
+% \author{(*\meta{author 1}*)}
+% \address{(*\meta{address 1}*)}
+% \email{(*\meta{email 1}*)}
+% \author{(*\meta{author 2}*)}
+% \address{(*\meta{address 2}*)}
+% \email{(*\meta{email 2}*)}
+% ...
+% \end{code}
+
+% 其中 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 的相互顺序是不重要的。
\section{关于行号}
行号可以随时开启和关闭。\lstinline|\linenumbers| 用来开启行号,\lstinline|\nolinenumbers| 用来关闭行号。标题、目录、索引等位置为了美观,不进行编号。
@@ -174,74 +417,115 @@
\end{itemize}
这是标题使用下划线装饰之后带来的一个缺点。
-\section{关于字体}
-\einfart{}与\simplivre{}使用Palatino Linotype作为英文字体,方正悠宋、悠黑简体作为中文字体,并部分使用了Neo Euler作为数学字体:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体,\textsf{中文无衬线字体}
- \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+
+\section{目前存在的问题}
+
+\begin{itemize}[itemsep=.6em]
+ \item 对于字体的设置仍然不够完善。
+ \item 由于很多核心功能建立在 \ProjLib{} 工具箱的基础上,因此 \simplivre{} 自然继承了其所有问题。详情可以参阅 \ProjLib{} 用户文档的“目前存在的问题”这一小节。
+ \item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。
+ \item 代码中仍有许多可优化之处。
\end{itemize}
-其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。
-其他字体不是免费字体,需要自行购买使用(你可以在方正字库网站查询详细资料:\url{https://www.foundertype.com})。
-在没有安装相应的字体时,将采用TeX Live中自带的字体来代替,效果可能会有所折扣。
+\UseLanguage{English}
+
+\part{演示}
+
+\chapter{文档示例}
+
+\vspace*{-1.5\baselineskip}
-\section{文档示例}
+\section{标准文档类写法}
-\singlespacing
+如果想采用标准文档类中的写法,可以参考下面的例子:
-\LocallyStopLineNumbers
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{simplivre}
+\documentclass{simplivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\chapter{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+如果以后想切换到标准文档类,只需要将前两行换为:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{simplivre}
+\documentclass{book}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
-\linenumbers
-\UseLanguage{Chinese}
+
+% \clearpage
+\section{\texorpdfstring{\AmS{}}{AMS} 文档类写法}
+
+如果日后有意切换到期刊模版,想采用 \AmS{} 文档类中的写法,可以参考下面的例子:
+
+\begin{code}
+\documentclass{simplivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月,地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
\maketitle
-%% 正文部分
+\section{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\ResumeLineNumbers
-\bigskip
-(\lstinline|\UseLanguage| 既可以放在导言中,也可以放在正文部分,并且可以按照需要反复使用)
+这样,若想切换到 \AmS{} 文档类,只需要将前两行换为:
+
+\begin{code}
+\documentclass{amsbook}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+\blinddocument
\end{document}
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
index 3da188c5dd..ba97fdde84 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
index d1a7f6d328..db1db8e751 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
@@ -1,24 +1,26 @@
%! TEX program = xelatex
-\PassOptionsToPackage{dvipsnames}{xcolor}
\documentclass{simplivre}
\linenumbers % Enable line numbers
%%================================
-%% TeX logo and URL
+%% Import toolkit
%%================================
-\usepackage{hologo}
-\usepackage{url}
+\usepackage{PJLtoolkit}
+\usepackage{longtable} % breakable tables
+\usepackage{hologo} % more TeX logo
%%================================
%% For typestting code
%%================================
\usepackage{listings}
+\definecolor{maintheme}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
\definecolor{lightergray}{gray}{0.99}
\lstset{language=[LaTeX]TeX,
- keywordstyle=\color{RoyalBlue},
+ keywordstyle=\color{maintheme},
basicstyle=\ttfamily,
- commentstyle=\color{ForestGreen}\ttfamily,
+ commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
@@ -31,9 +33,9 @@
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
-\lstset{morekeywords=%
- {CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,
- linenumbers,nolinenumbers,section,maketitle
+\lstset{moretexcs=%
+ {linenumbers,nolinenumbers,part,chapter,section,subsection,
+ color,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib,parttext
}
}
\lstnewenvironment{code}%
@@ -42,202 +44,484 @@
}
{\ResumeLineNumbers}
+%%================================
+%% remind
+%%================================
+\usepackage[many]{tcolorbox}
+\newenvironment{remind}[1][Remind]{%
+ \LocallyStopLineNumbers%
+ \begin{tcolorbox}[breakable,
+ enhanced,
+ width = \textwidth,
+ colback = white, colbacktitle = paper,
+ colframe = gray!50, boxrule=0.2mm,
+ coltitle = black,
+ fonttitle = \sffamily,
+ attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=\tcboxedtitlewidth/4},
+ boxed title style = {boxrule=0pt, colframe=paper},
+ before skip = 0.3cm,
+ after skip = 0.3cm,
+ top = 3mm,
+ bottom = 3mm,
+ title={\sffamily #1}]%
+}{\end{tcolorbox}\ResumeLineNumbers}
+
+%%================================
+%% 名称
+%%================================
\providecommand{\minimalist}{\textsf{minimalist}}
\providecommand{\minimart}{\textsf{minimart}}
\providecommand{\minimbook}{\textsf{minimbook}}
\providecommand{\einfart}{\textsf{einfart}}
\providecommand{\simplivre}{\textsf{simplivre}}
+\usetikzlibrary{calc}
+
+\usepackage{blindtext}
+
%%================================
%% Main text
%%================================
\begin{document}
-\title{\simplivre{}, write your books in a simple and clear way\thanks{Corresponding to: \texttt{\simplivre{} 2021/03/15}}}
-\author{Jinwen}
-\date{March 2021, Beijing}
+% \title{\simplivre{}, write your books in a simple and clear way}
+% \author{Jinwen XU}
+% \thanks{Corresponding to: \texttt{\simplivre{} 2021/05/23}}
+% \date{May 2021, Beijing}
-\maketitle
+% \maketitle
\frontmatter
+
+\begin{titlepage} % Suppresses displaying the page number on the title page and the subsequent page counts as page 1
+\begin{tikzpicture}[overlay,remember picture]
+ \fill [cyan!90!black] ($(current page.south west)+(0,7)$) rectangle ($(current page.north west)+(21,-7)$);
+ \fill [yellow] (current page.south west) rectangle ($(current page.north west)+(3,0)$);
+ \node[text width=10cm] at ($(current page.north west)+(8.5,-6)$) {\huge\ProjLib};
+ \node[text width=6cm,text height=3.5cm,scale=2.5] at ($(current page.north west)+(11,-9)$) {\textcolor{white}{\sffamily\simplivre{}\\\textsc{Write your books in \\a simple and clear way}\\[10pt]\tiny Corresponding to: \texttt{\simplivre{} 2021/05/23}}};
+ \node at ($(current page.south)+(1.5,3)$) {\fontsize{16pt}{0pt}\selectfont\textcolor{gray}{Jinwen XU}};
+ \node at ($(current page.south)+(1.5,2)$) {\fontsize{12pt}{0pt}\selectfont\textcolor{gray}{May 2021, Beijing}};
+\end{tikzpicture}%
+\end{titlepage}%
+\cleardoublepage%
+
\chapter*{Preface}
-\simplivre{} is a member of the \minimalist{} class series. The entire collection includes \minimart{} and \einfart{} for typesetting articles and \minimbook{} and \simplivre{} for typesetting books. My original intention in designing this series was to write drafts and notes that look simple but not shabby.
+\simplivre{} is part of the \minimalist{} class series. Its name is taken from French words ``simple'' and ``livre'' (for ``book''). The entire collection includes \minimart{} and \einfart{} for typesetting articles, and \minimbook{} and \simplivre{} for typesetting books. My original intention in designing them was to write drafts and notes that look simple yet not shabby.
-Among them, \einfart{} and \simplivre{} support three languages: English, French, and Chinese, and these three languages can be switched seamlessly in a single document. Due to the usage of custom fonts, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+\simplivre{} supports six languages: English, French, German, Chinese, Japanese and Russian. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \einfart{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
-This documentation is typeset using \einfart{}. You can think of it as a short introduction and demonstration.
+This documentation is typeset using \simplivre{}. You can think of it as a short introduction and demonstration.
+\bigskip
+\begin{remind}
+ Multi-language support, theorem-like environments, draft marks and some other features are provided by the \ProjLib{} toolkit. Here we only briefly discuss how to use it with this document class. For more detailed information, you can refer to the documentation of \ProjLib{}.
+\end{remind}
\tableofcontents
\mainmatter
-\chapter{On the naming and differences}
-\einfart{} is taken from German word ``einfach'' (``simple''), combined with the first three letters of ``artikel'' (``article'').
+\part{Instruction}
+\parttext{You can add some introduction text here via \lstinline|\\parttext|\meta{text}.}
+
+\chapter{Initialization}
-\simplivre{} is taken from French words ``simple'' and ``livre'' (for ``book'').
+\section{How to load}
+
+One only needs to put
+\begin{code}
+ \documentclass{simplivre}
+\end{code}
+as the first line to use the \simplivre{} class.
+
+\begin{remind}[Attention]
+ You need to use either \hologo{XeLaTeX} or \hologo{LuaLaTeX} engine to compile.
+\end{remind}
+
+\section{Options}
+
+\simplivre{} offers the following options:
-You can use the option \verb|fast| to enable a fast but slightly rough version. The main differences are:
\begin{itemize}
- \item Use simpler math font configuration;
- \item Do not use hyperref;
- \item Do not use tikz;
- \item Use polyglossia instead of babel to support multiple languages. (Using polyglossia will increase the compilation speed slightly, but the current compatibility with Chinese is not perfect. When it becomes more stable, I will consider fully switching to polyglossia)
+ \item \texttt{draft} or \texttt{fast}
+ \begin{itemize}
+ \item The option \verb|fast| enables a faster but slightly rougher style, main differences are:
+ \begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Enable the fast mode of \ProjLib{} toolkit.
+ \end{itemize}
+ \end{itemize}
+ \item \texttt{a4paper} or \texttt{b5paper}
+ \begin{itemize}
+ \item Optional paper size. The default paper size is 7in $\times$ 10in.
+ \end{itemize}
+ \item \texttt{allowbf}
+ \begin{itemize}
+ \item Allow boldface. When this option is enabled, the title, titles of all levels and names of theorem-like environments will be bolded.
+ \end{itemize}
+ \item \texttt{classical}
+ \begin{itemize}
+ \item Classic mode. When this option is enabled, the style will become more regular: paragraphs are indented, the use of underlines are reduced, heading styles are changed, and the theorem styles will be much closer to common styles.
+ \end{itemize}
\end{itemize}
-During the writing stage of your document, it is recommended to use the \verb|fast| option to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+\begin{remind}
+ \begin{itemize}
+ \item During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. At the end, one should remove the ``fast'' option to get the final version. When in \verb|fast| mode, there will be a watermark "DRAFT" to indicate that you are currently in the draft mode.
+ \item \texttt{allowbf} + \texttt{classical} is probably a good choice if you prefer traditional style.
+ \end{itemize}
+\end{remind}
+
+\bigskip
+In addition, the commonly used \texttt{oneside} and \texttt{twoside} options are also available. Two-page layout is used by default.
+
+\chapter{On the fonts}
+By default, \simplivre{} uses Palatino Linotype as the English font, FounderType's YouSong and YouHei GBK as the Chinese fonts, and partially uses Neo Euler as the math font. Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. The other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
+
+\begin{remind}[Font demonstration]
+ \begin{itemize}
+ \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+ \end{itemize}
+\end{remind}
+
+\bigskip
+When the corresponding font is not installed, fonts that comes with TeX Live will be used instead. In this case, the experience might be reduced.
+
\chapter{Some instructions}
-There is no indentation at the beginning of each paragraph, but there will be a half-line space between each two paragraphs. like this ---
+\vspace{-1.5\baselineskip}
+Many of the features described next are provided by the \ProjLib{} toolkit. Only the basic usage is mentioned here. For more details, please refer to its user documentation.
+
+\section{Language configuration}
+
+\simplivre{} has multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian. The language can be selected by the following macros:
+
+\begin{itemize}
+ \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
+ \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
+\end{itemize}
+
+\meta{language name} can be:
+\begin{itemize}
+ \item Simplified Chinese: \texttt{Chinese}, \texttt{chinese}, \texttt{SChinese}, \texttt{schinese}, \texttt{SimplifiedChinese} or \texttt{simplifiedchinese}
+ \item Traditional Chinese: \texttt{TChinese}, \texttt{tchinese}, \texttt{TraditionalChinese} or \texttt{traditionalchinese}
+ \item English: \texttt{English} or \texttt{english}
+ \item French: \texttt{French} or \texttt{french}
+ \item German: \texttt{German}, \texttt{german} or \texttt{ngerman}
+ \item Japanese: \texttt{Japanese} or \texttt{japanese}
+ \item Russian: \texttt{Russian} or \texttt{russian}
+\end{itemize}
+
+\medskip
+In addition, you can also add new settings to selected language:
+\begin{itemize}
+ \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to all supported languages.
+ \end{itemize}
+ \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
+ \begin{itemize}
+ \item Add \meta{settings} to the selected language \meta{language name}.
+ \end{itemize}
+\end{itemize}
+For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
-Here is the next paragraph.
\section{Theorems and how to reference them}
-Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+Environments such as definitions and theorems have been pre-defined and can be used directly.
+
+More specifically, preset environments include:
+\texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, \texttt{definition-theorem}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The display of these environments will change according to the current language.
+
+When referencing a theorem-like environment, it is recommended to use clever reference \lstinline|\cref{|\meta{label}\texttt{\}}. In this way, there is no need to explicitly write down the name of the corresponding environment every time.
+
+\begin{remind}[Example]
\begin{code}
\begin{definition}[Strange things] \label{def: strange} ...
\end{code}
+
will produce
\begin{definition}[Strange things]\label{def: strange}
- This is the definition of some strange objects.
+ This is the definition of some strange objects. There is approximately an one-line space before and after the theorem environment, and there will be a symbol to mark the end of the environment.
\end{definition}
-There is approximately an one-line space before and after the theorem environment. There will be a symbol to mark the end of the environment.
+\lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+
+After using \lstinline|\UseLanguage{French}|, a theorem will be displayed as:
+
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorème en français.
+\end{theorem}
+
+By default, when referenced, the name of the theorem always matches the language of the context in which the theorem is located. For example, the definition above is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}. If you want the name of the theorem to match the current context when referencing, you can add \texttt{regionalref} to the global options.
+\end{remind}
+
+\UseLanguage{English}
-When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
\section{Define a new theorem-like environment}
-First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+If you need to define a new theorem-like environment, you must first define the name of the environment in the language used: \lstinline|\|\meta{name of environment}\meta{language abbr}, where \meta{language abbr} is the abbreviation of language, which can be:
+% \vspace{-.5\baselineskip}
+\begin{longtable}{ll|ll}
+ \texttt{CN} & Simplified Chinese & \texttt{DE} & German\\
+ \texttt{TC} & Traditional Chinese & \texttt{JP} & Japanese\\
+ \texttt{EN} & English & \texttt{RU} & Russian\\
+ \texttt{FR} & French & &\\
+\end{longtable}
+
+\vspace{-.5\baselineskip}
+\begin{remind}
+ If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
+\end{remind}
+
+And then define this environment in one of following five ways:
\begin{itemize}
- \item \lstinline|\CreateTheorem*{(name of environment)}|
- \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
- \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
- \item \lstinline|\CreateTheorem{(name of environment)}|
+ \item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define an unnumbered environment \meta{name of environment}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered in order 1,2,3,\dots
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, which shares the counter \meta{numbered like}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
+ \begin{itemize}
+ \item Define a numbered environment \meta{name of environment}, numbered within the \\counter \meta{numbered within}
+ \end{itemize}
+ \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
+ \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
+ \begin{itemize}
+ \item Identify \meta{name of environment} with \meta{existed environment} or \meta{existed environment}\lstinline|*|.
+ \item This method is usually useful in the following two situations:
+ \begin{enumerate}
+ \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}|\\\lstinline|(theorem)|, one can then use the name \texttt{thm} to write theorem.
+ \item To remove the numbering. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}(remark*)|.
+ \end{enumerate}
+ \end{itemize}
\end{itemize}
+\begin{remind}
+ It uses \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
+\end{remind}
+
\def\proofideanameEN{Idea}
-\CreateTheorem*{proofidea}
+\CreateTheorem*{proofidea*}
+\CreateTheorem{proofidea}<section>
+
+\bigskip
+Here is an example. The following code:
-For example,
\begin{code}
\def\proofideanameEN{Idea}
- \CreateTheorem*{proofidea}
+ \CreateTheorem*{proofidea*}
+ \CreateTheorem{proofidea}<section>
\end{code}
-defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+
+defines an unnumbered environment \lstinline|proofidea*| and a numbered environment \lstinline|proofidea| (numbered within section) respectively. They can be used in English context. The effect is as follows:
+
+\begin{proofidea*}
+ The \lstinline|proofidea*| environment.
+\end{proofidea*}
\begin{proofidea}
- ...
+ The \lstinline|proofidea| environment.
\end{proofidea}
+\clearpage
\section{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf|: \quad \dnf
- \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+ \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
\end{itemize}
-Similarly, there is \lstinline|\needgraph| :
+Similarly, there is \lstinline|\needgraph| :
\begin{itemize}
- \item \lstinline|\needgraph|: \needgraph
- \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+ \item \lstinline|\needgraph| or \lstinline|\needgraph<...>|. The effect is: \needgraph or \needgraph<...>The prompt text changes according to the current language. For example, in French mode, it will be displayed as \UseOtherLanguage{French}{\needgraph}
\end{itemize}
-\section{Language configuration}
-You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
-
-For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
-
-\UseLanguage{French}
-\begin{theorem}[Inutile]\label{thm}
- Un théorème en français. \dnf
-\end{theorem}
-
-When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}.
-
-\UseLanguage{English}
+% \vspace{-.5\baselineskip}
+% \section{On the title, abstract and keywords}
+
+% \simplivre{} has both the features of standard classes and that of the \AmS{} classes.
+
+% Therefore, the title part can either be written in the usual way, in accordance with the standard class \textsf{article}:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \date{(*\meta{date}*)}
+% \maketitle
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \begin{keyword}
+% (*\meta{keywords}*)
+% \end{keyword}
+% \end{code}
+
+% \vspace{-.5\baselineskip}
+% or written in the way of \AmS{} classes:
+
+% \begin{code}
+% \title{(*\meta{title}*)}
+% \author{(*\meta{author}*)}
+% \address{(*\meta{address}*)}
+% \email{(*\meta{email}*)}
+% \date{(*\meta{date}*)}
+% \keywords{(*\meta{keywords}*)}
+% \subjclass{(*\meta{subjclass}*)}
+% \begin{abstract}
+% (*\meta{abstract}*)
+% \end{abstract}
+% \maketitle
+% \end{code}
+
+% \medskip
+% The author information can contain multiple groups, written as:
+
+% \begin{code}
+% \author{(*\meta{author 1}*)}
+% \address{(*\meta{address 1}*)}
+% \email{(*\meta{email 1}*)}
+% \author{(*\meta{author 2}*)}
+% \address{(*\meta{address 2}*)}
+% \email{(*\meta{email 2}*)}
+% ...
+% \end{code}
+
+% Among them, the mutual order of \lstinline|\address|, \lstinline|\curraddr|, \lstinline|\email| is not important.
\section{On the line numbers}
Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
\section{On the footnotes in the title}
-In \lstinline|\chapter| or \lstinline|\chapter| , if you wish to add footnotes, you can only:
+In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnotes, you can only:
\begin{itemize}
\item first write \lstinline|\mbox{\protect\footnotemark}|,
\item then add \lstinline|\footnotetext{...}| afterwards.
\end{itemize}
This is a disadvantage brought about by the underline decoration of the title.
-\section{On the fonts}
-\einfart{} and \simplivre{} use Palatino Linotype as the English font, FounderType's YouSong and YouHei Simplified as the Chinese fonts, and partially use Neo Euler as the mathematical font:
-\begin{itemize}
- \item English main font. \textsf{English sans serif font}.
- \item 中文主要字体, \textsf{中文无衬线字体}
- \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+
+\section{Known issues}
+
+\begin{itemize}[itemsep=.6em]
+ \item The font settings are still not perfect.
+ \item Since many features are based on the \ProjLib{} toolkit, \simplivre{} inherits all its problems. For details, please refer to the "Known Issues" section of the \ProjLib{} documentation.
+ \item The error handling mechanism is incomplete: there is no corresponding error prompt when some problems occur.
+ \item There are still many things that can be optimized in the code.
\end{itemize}
-Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}. Other fonts are not free, you need to purchase and use them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
-When the corresponding font is not installed, the font that comes with TeX Live will be used instead, and the experience might be reduced.
+\part{Demonstration}
\chapter{Document templates}
-\singlespacing
+\vspace*{-1.5\baselineskip}
+
+\section{The standard way}
+
+If you want to write in the standard way, you can refer to the following example:
-\LocallyStopLineNumbers
-\begin{minipage}{0.45\textwidth}
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{simplivre}
+\documentclass{simplivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
-\linenumbers
-\UseLanguage{French}
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{Titre}
-\author{Nom}
-\date{03 / 2021, Lieu}
+\title{Le Titre}
+\author{Auteur}
+\date{\PJLdate{2022-04-01}}
\maketitle
-%% Texte ici
+\chapter{Un théorème}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-%
-\hfill
-%
-\begin{minipage}{0.45\textwidth}
+
+If you wish to switch to the standard class later, just replace the first two lines with:
+
\begin{code}
-%! TEX program = xelatex
-\documentclass[fast]{simplivre}
+\documentclass{article}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
-\linenumbers
-\UseLanguage{Chinese}
+
+\clearpage
+\section{The \texorpdfstring{\AmS{}}{AMS} way}
+
+If you intend to switch to the journal template in the future and thus want to use the writing style as in the \AmS{} classes, you can refer to the following example:
+
+\begin{code}
+\documentclass{simplivre}
+\usepackage{PJLtoolkit} % Load ProjLib toolkit
+
+\UseLanguage{French} % Use French from here
\begin{document}
-\title{标题}
-\author{姓名}
-\date{2021年3月, 地点}
+\title{Le Titre}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 1}{Courriel 1}}
+\author{Auteur 1}
+\address{Adresse 1}
+\email{\href{Courriel 2}{Courriel 2}}
+\date{\PJLdate{2022-04-01}}
+\subjclass{*****}
+\keywords{...}
\maketitle
-%% 正文部分
+\chapter{Première section}
+
+%% Theorem-like environments can be used directly
+\begin{theorem}\label{thm:abc}
+ Ceci est un théorème.
+\end{theorem}
+
+Référence du théorème: \cref{thm:abc}
+ % It is recommended to use clever reference
\end{document}
\end{code}
-\end{minipage}
-\par
-\ResumeLineNumbers
-\bigskip
-(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+\vspace{-0.3\baselineskip}
+In this way, if you wish to switch to \AmS{} class later, just replace the first two lines with:
+
+\begin{code}
+\documentclass{amsart}
+\usepackage[a4paper,margin=1in]{geometry}
+\usepackage[hidelinks]{hyperref}
+\usepackage[palatino]{PJLtoolkit} % Load ProjLib toolkit
+\end{code}
+
+\blinddocument
\end{document}
diff --git a/macros/unicodetex/latex/simplivre/simplivre.cls b/macros/unicodetex/latex/simplivre/simplivre.cls
index 43aec4f462..bab668ae35 100644
--- a/macros/unicodetex/latex/simplivre/simplivre.cls
+++ b/macros/unicodetex/latex/simplivre/simplivre.cls
@@ -17,7 +17,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
\ProvidesClass{simplivre}
- [2021/03/15 A simple and clear book style]
+ [2021/05/23 A simple and clear book style]
\def\minimclass@baseclass{book}
\RequirePackage{kvoptions}
\RequirePackage{etoolbox}
@@ -27,6 +27,13 @@
}
\DeclareBoolOption[false]{draft}
\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[false]{classical}
+
+\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse
+\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue}
+\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse
+\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue}
+
\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}}
\ProcessKeyvalOptions*\relax
\LoadClass{\minimclass@baseclass}
@@ -37,6 +44,8 @@
%%================================
%% Page layout
%%================================
+\RequirePackage{silence}
+\WarningFilter{geometry}{Over-specification in}
\RequirePackage[heightrounded]{geometry}
\geometry{
papersize={7in,10in},
@@ -45,15 +54,36 @@
vmarginratio=1:1,
footnotesep=2em plus 2pt minus 2pt,
}
+\if@minimclass@bfivepaper
+\geometry{
+ b5paper,
+ total={40em,59em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
+\if@minimclass@afourpaper
+\geometry{
+ a4paper,
+ total={47em,70em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+\fi
\if@minimclass@fast
\PassOptionsToPackage{fast}{minimalist}
+ \RequirePackage{draftwatermark}
+ \DraftwatermarkOptions{text={\normalfont DRAFT},colorspec=0.95}
\fi
-\if@minimclass@fast
- \PassOptionsToPackage{polyglossia}{minimalist}
+\if@minimclass@classical
+ \RequirePackage{indentfirst}
+\else
+ \AtEndPreamble{\RequirePackage{parskip}}
\fi
\RequirePackage{minimalist}
-\AtEndPreamble{\RequirePackage{parskip}}
%%================================
%% Fonts
@@ -69,27 +99,32 @@
\IfFontExistsTF{Palatino Linotype}{%
\setmainfont{Palatino Linotype}
}{
- \setmainfont{texgyrepagella-regular.otf}[
- BoldFont = texgyrepagella-bold.otf ,
- ItalicFont = texgyrepagella-italic.otf ,
- BoldItalicFont = texgyrepagella-bolditalic.otf ]
+ \setmainfont{TeXGyrePagellaX-Regular.otf}[
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ]
}
\setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase,
+ Scale = MatchLowercase ,
BoldFont = SourceSansPro-Bold.otf ,
ItalicFont = SourceSansPro-RegularIt.otf ,
BoldItalicFont = SourceSansPro-BoldIt.otf ]
+ \setmonofont{cmuntt.otf}[
+ Scale = 1.05 ,
+ BoldFont = cmuntb.otf ,
+ ItalicFont = cmunst.otf ,
+ BoldItalicFont = cmuntb.otf ]
%% Chinese fonts
\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
\RequirePackage{ctex}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmainfont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmainfont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmainfont{FandolSong-Regular.otf}[
@@ -99,13 +134,13 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouSongS 507R}{%
- \setCJKmonofont{FZYouSongS 507R}[
- BoldFont = FZYouSongS 509R ,
- BoldFeatures = {FakeBold=2} ,
+\IfFontExistsTF{FZYOUSK_507R--GBK1-0}{%
+ \setCJKmonofont{FZYOUSK_507R--GBK1-0}[
+ BoldFont = FZYOUSK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouSongS 509R ,
- BoldItalicFeatures = {FakeBold=2} ,
+ BoldItalicFont = FZYOUSK_509R--GBK1-0 ,
+ BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}{
\setCJKmonofont{FandolFang-Regular.otf}[
@@ -116,11 +151,12 @@
BoldItalicFeatures = {FakeBold=4} ,
SmallCapsFont = * ]
}
-\IfFontExistsTF{FZYouHeiS 506L}{%
- \setCJKsansfont{FZYouHeiS 506L}[
- BoldFont = FZYouHeiS 509R,
+\IfFontExistsTF{FZYOUHK_506L--GBK1-0}{%
+ \setCJKsansfont{FZYOUHK_506L--GBK1-0}[
+ BoldFont = FZYOUHK_509R--GBK1-0 ,
+ BoldFeatures = {FakeBold=4} ,
ItalicFont = * ,
- BoldItalicFont = FZYouHeiS 509R ,
+ BoldItalicFont = FZYOUHK_509R--GBK1-0 ,
SmallCapsFont = * ]
}{
\setCJKsansfont{FandolHei-Regular.otf}[
@@ -131,14 +167,16 @@
}
%% Math font
-\if@minimclass@fast\else
+\if@minimclass@fast
+\RequirePackage{amssymb}
+\else
\PassOptionsToPackage
{warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO}
+\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
\setmathfont{Asana-Math.otf}
\IfFontExistsTF{Neo Euler}{%
-\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
+\setmathfont{Neo Euler}
[range={"0000-"0001,"0020-"007E,
"00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
"00D7,"00F7,
@@ -165,9 +203,22 @@
"1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
"1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
"1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
+\setmathfont[range=up/{greek,Greek}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range=up/{latin,Latin}, script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={bfup/{latin, Latin, greek, Greek}, frak, bffrak, cal},
+ script-features={}, sscript-features={}
+ ]{Neo Euler}
+\setmathfont[range={up/num, bfup/num, it, bfit, scr, bfscr,
+ sfup, sfit, bfsfup, bfsfit, tt}
+ ]{Asana-Math.otf}
+\setmathfont[range=bfcal, Scale=MatchUppercase, Alternate]{Asana-Math.otf}
}{}
\fi
+\def\PJL@font@alreadyset{}
+
\RequirePackage[verbose=silent]{microtype}
%%================================
@@ -176,7 +227,9 @@
\RequirePackage{graphicx}
\graphicspath{{images/}}
\RequirePackage{wrapfig}
+\RequirePackage{float}
\RequirePackage{caption}
+\captionsetup{font=small}
%%================================
%% Index
@@ -185,53 +238,6 @@
\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{\FAIL}
\apptocmd{\printindex}{\ResumeLineNumbers}{}{\FAIL}
-%%================================
-%% Draft mark
-%%================================
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-\def\dnfTextEN{To be finished here}
-\def\needgraphTextEN{A graph is needed here}
-\def\dnfTextFR{À terminer ici}
-\def\needgraphTextFR{Il manque encore un graphique ici}
-\def\dnfTextCN{这里的内容尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if@minimclass@fast
- \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
- \setlength{\fboxsep}{1.5pt}%
- \setlength{\fboxrule}{1.2pt}%
- \fbox{#2}}}
-\else
- \PassOptionsToPackage{many}{tcolorbox}
- \RequirePackage{tcolorbox}
- \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
- on line, arc = 1.2pt, outer arc = 1pt,breakable,%
- colframe = #1,colupper=#1,opacityback=0,%
- boxsep = 1pt,boxrule = 1.2pt,%
- left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
- }
-\fi
-
-\NewDocumentCommand{\dnf}{d<>}{%
- \noindent\plainBox[dnfColor]%
- {\normalfont\dnfFont\bfseries\small%
- \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}%
-}
-\NewDocumentCommand{\needgraph}{d<>}{%
- \par%
- \centerline{\plainBox[needgraphColor]%
- {\normalfont\needgraphFont\bfseries\small%
- \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
- \IfNoValueF{#1}{ : #1}}}%
- \par%
-}
-
\endinput
%%
%% End of file `simplivre/simplivre.cls'.