1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
|
%! TEX program = xelatex
\documentclass[English,French,allowbf,puretext]{lebhart}
\theoremstyle{basic}
\CreateTheorem{definition}<highest>
\CreateTheorem{theorem}<highest>
\CreateTheorem{conjecture}<highest>
\CreateTheorem*{example*}
\CreateTheorem{problem}<highest>
\theoremstyle{emphasis}
\CreateTheorem{remark}<highest>
\theoremstyle{simple}
%%================================
%% Import toolkit
%%================================
\usepackage{ProjLib}
\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{maintheme},
basicstyle=\ttfamily,
commentstyle=\color{forestgreen}\ttfamily,
stringstyle=\rmfamily,
showstringspaces=false,
breaklines=true,
frame=lines,
backgroundcolor=\color{lightergray},
flexiblecolumns=true,
escapeinside={(*}{*)},
% numbers=left,
numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
firstnumber=last,
}
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{subsubsection,href,color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib
}
}
\lstnewenvironment{code}%
{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
%%================================
%% tip
%%================================
\newenvironment{tip}[1][Tip]{%
\begin{tcolorbox}[breakable,
enhanced,
width = \textwidth,
colback = paper, colbacktitle = paper,
colframe = gray!50, boxrule=0.2mm,
coltitle = black,
fonttitle = \sffamily,
attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm},
boxed title style = {boxrule=0pt, colframe=paper},
before skip = 0.3cm,
after skip = 0.3cm,
top = 3mm,
bottom = 3mm,
title={\scshape\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{{\normalfont\textbf{\textsf{lebhart}}}, write your articles in a colorful way}
\author{Jinwen XU}
\thanks{Corresponding to: \texttt{\lebhart{} 2021/06/30}}
\date{June 2021, Beijing}
\maketitle
\begin{abstract}
\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.
\lebhart{} has multi-language support, including Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. 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{} (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
\end{abstract}
\tableofcontents
\vspace{2.5\baselineskip}
\begin{tip}
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{tip}
\clearpage
\section{Initialization}
\subsection{How to load it}
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 The language options \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
\begin{itemize}
\item For the option names of a specific language, please refer to \meta{language name} in the next section. The first specified language will be used as the default language.
\end{itemize}
\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 \textsf{hyperref};
\item Enable the fast mode of \ProjLib{} toolkit.
\end{itemize}
\end{itemize}
\begin{tip}
During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
\end{tip}
\medskip
\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{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
\begin{itemize}
\item Font options. As the name suggest, font with corresponding name will be loaded.
\item The \texttt{useosf} option is used to enable the old-style figures.
\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{runin}
\begin{itemize}
\item Use the ``runin'' style for \lstinline|\subsubsection|
\end{itemize}
\item \texttt{puretext} or \texttt{nothms}
\begin{itemize}
\item Pure text mode. Does not load theorem-like environments.
\end{itemize}
\item \texttt{nothmnum}
\begin{itemize}
\item Theorem-like environments will not be numbered.
\end{itemize}
\end{itemize}
\clearpage
\section{On the default 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 install them on your own. (For the Chinese fonts, visit FounderType's website for detail: \url{https://www.foundertype.com} ).
\begin{tip}[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{tip}
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 Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. 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 (it is not case sensitive, for example, \texttt{French} and \texttt{french} have the same effect):
\begin{itemize}
\item Simplified Chinese: \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} or \texttt{SimplifiedChinese}
\item Traditional Chinese: \texttt{TC}, \texttt{TChinese} or \texttt{TraditionalChinese}
\item English: \texttt{EN} or \texttt{English}
\item French: \texttt{FR} or \texttt{French}
\item German: \texttt{DE}, \texttt{German} or \texttt{ngerman}
\item Italian: \texttt{IT} or \texttt{Italian}
\item Portuguese: \texttt{PT} or \texttt{Portuguese}
\item Portuguese (Brazilian): \texttt{BR} or \texttt{Brazilian}
\item Spanish: \texttt{ES} or \texttt{Spanish}
\item Japanese: \texttt{JP} or \texttt{Japanese}
\item Russian: \texttt{RU} or \texttt{Russian}
\end{itemize}
% \medskip
\clearpage
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 \texttt{definition} and \texttt{theorem} 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{observation}, \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 titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode.
\medskip
When referencing a theorem-like environment, it is recommended to use \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{tip}[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}
\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{tip}
\bigskip
The following are the main styles of theorem-like environments:
\begin{theorem}
Theorem style: theorem, proposition, lemma, corollary, ...
\end{theorem}
\begin{proof}
Proof style
\end{proof}
\begin{remark}
Remark style
\end{remark}
\begin{conjecture}
Conjecture style
\end{conjecture}
\begin{example*}
Example style: example, fact, ...
\end{example*}
\begin{problem}
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}
\subsection{Define a new theorem-like environment}
If you need to define a new theorem-like environment, you must first define the name of the environment in the language to use:
\begin{itemize}
\item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
\end{itemize}
For \meta{language name}, please refer to the section on language configuration. When \meta{language name} is not specified, the name will be set for all supported languages. In addition, environments with or without asterisk share the same name, therefore, \lstinline|\NameTheorem{envname*}{...}| has the same effect as \lstinline|\NameTheorem{envname}{...}| .
\medskip
And then define this environment in one of following five ways:
\begin{itemize}
\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{tip}
This macro utilizes the feature of \textsf{amsthm} internally, so the traditional \texttt{theoremstyle} is also applicable to it. One only needs declare the style before the relevant definitions.
\end{tip}
% \def\proofideanameEN{Idea}
\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
% \bigskip
\clearpage
Here is an example. The following code:
\begin{code}
\NameTheorem[EN]{proofidea}{Idea}
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
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}
\medskip
\subsection{Draft mark}
You can use \lstinline|\dnf| to mark the unfinished part. For example:
\begin{itemize}
\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| :
\begin{itemize}
\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{On the title, abstract and keywords}
\lebhart{} 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}*)\thanks{(*\meta{text}*)}}
\date{(*\meta{date}*)}
\maketitle
\begin{abstract}
(*\meta{abstract}*)
\end{abstract}
\begin{keyword}
(*\meta{keywords}*)
\end{keyword}
\end{code}
\clearpage
or written in the way of \AmS{} classes:
\begin{code}
\title{(*\meta{title}*)}
\author{(*\meta{author}*)}
\thanks{(*\meta{text}*)}
\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, \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}
\subsection{The standard way}
If you want to write in the standard way, you can refer to the following example:
\begin{code}
\documentclass{lebhart}
\usepackage{ProjLib} % Load ProjLib toolkit
\UseLanguage{French} % Use French from here
\begin{document}
\title{Le Titre}
\author{Auteur}
\date{\PLdate{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}
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]{ProjLib} % 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{lebhart}
\usepackage{ProjLib} % 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{\PLdate{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]{ProjLib} % Load ProjLib toolkit
\end{code}
\end{document}
|