%! TEX program = xelatex \documentclass[puretext]{minimart} \CreateTheorem{definition} \CreateTheorem{theorem} \linenumbers % Enable line numbers %%================================ %% Import toolkit %%================================ \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{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=% {linenumbers,nolinenumbers,subsection,href, color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PJLdate,ProjLib } } \lstnewenvironment{code}% {\LocallyStopLineNumbers% \setkeys{lst}{columns=fullflexible,keepspaces=true}% } {\ResumeLineNumbers} %%================================ %% tip %%================================ \usepackage[many]{tcolorbox} \newenvironment{tip}[1][Tip]{% \LocallyStopLineNumbers% \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}\ResumeLineNumbers} %%================================ %% Names %%================================ \providecommand{\minimalist}{\textsf{minimalist}} \providecommand{\minimart}{\textsf{minimart}} \providecommand{\minimbook}{\textsf{minimbook}} \providecommand{\einfart}{\textsf{einfart}} \providecommand{\simplivre}{\textsf{simplivre}} %%================================ %% Main text %%================================ \begin{document} \title{\minimalist{}, write your articles or books in a simple and clear way} \author{Jinwen XU} \thanks{Corresponding to: \texttt{\minimalist{} 2021/06/07a}} \date{June 2021, Beijing} \maketitle \begin{abstract} \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 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, German, Italian, Portuguese (European and Brazilian) and Spanish 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, 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 \medskip \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} 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 are provided. \begin{code} \usepackage{minimalist} \end{code} \subsection{Options} \minimalist{} offers the following options: \begin{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 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} \begin{tip} \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{tip} \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} \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} \begin{itemize} \item Font options. As the name suggest, font with corresponding name will be loaded. \end{itemize} \end{itemize} \section{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} \minimart{} has multi-language support, including English, French, German, Italian, Portuguese (European and Brazilian) 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 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 \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. 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. 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} \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{tip} \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} \clearpage \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}(theorem)|, one can then use the name \texttt{thm} to write theorem. \item To remove the numbering of some environments. 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} \bigskip Here is an example. The following code: \begin{code} \NameTheorem[EN]{proofidea}{Idea} \CreateTheorem*{proofidea*} \CreateTheorem{proofidea} \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} \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} \minimart{} 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} 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. \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. \subsection{On the footnotes in the title} 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{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} \subsection{The standard way} If you want to write in the standard way, 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} \date{\PJLdate{2022-04-01}} \maketitle \begin{abstract} Ceci est un résumé. \dnf \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]{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 \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}