\documentclass[English,Chinese,French,JP,TC,use boldface,simple name]{beaulivre}


%%================================
%% Import toolkit
%%================================
\usepackage{ProjLib}
\usepackage{longtable}  % breakable tables
\usepackage{hologo}     % more TeX logo
\usetikzlibrary{calc}

\usepackage{blindtext}

\UseLanguage{French}

%%================================
%% For typesetting 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=%
    {part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
    color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
    }
}
\lstnewenvironment{code}%
{\setstretch{1.07}%
\setkeys{lst}{columns=fullflexible,keepspaces=true}%
}{}
\lstnewenvironment{code*}%
{\setstretch{1.07}%
\setkeys{lst}{numbers=left,columns=fullflexible,keepspaces=true}%
}{}

%%================================
%% tip
%%================================
\usepackage[many]{tcolorbox}
\newenvironment{tip}[1][Astuce]{%
    \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}{\textsf{colorist}}
\providecommand{\colorart}{\textsf{colorart}}
\providecommand{\colorbook}{\textsf{colorbook}}
\providecommand{\lebhart}{\textsf{lebhart}}
\providecommand{\beaulivre}{\textsf{beaulivre}}

%%================================
%% Titles
%%================================
\let\LevelOneTitle\chapter
\let\LevelTwoTitle\section
\let\LevelThreeTitle\subsection

%%================================
%% Main text
%%================================
\begin{document}

\def\PackageVersion{2022/03/19}

\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 [forestgreen!75!black] ($(current page.south west)$) rectangle ($(current page.north east)+(0,-7)$);
    \fill [forestgreen!10!yellow!30] ($(current page.south west)$) rectangle ($(current page.north west)+(2.5,-7)$);
    \fill [forestgreen!75!black] ($(current page.north west)$) rectangle ($(current page.north west)+(2.5,-7)$);
    \fill [forestgreen!10!yellow!30] ($(current page.north east)$) rectangle ($(current page.north west)+(2.5,-7)$);
    \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{forestgreen!10!yellow!30}{\sffamily\beaulivre{}\\[5pt]\footnotesize\textsc{Écrivez vos livres \\de manière colorée}\\[10pt]\tiny Correspondant à : \texttt{\beaulivre{} \PackageVersion}}};
    \node[text width=15em] at ($(current page.south)+(5,4)$) {\color{forestgreen!10!yellow!30}\hfill\fontsize{16pt}{0pt}\selectfont{\scshape Jinwen XU}\\[1em]\hfill\fontsize{12pt}{0pt}\selectfont\TheDate{\PackageVersion}[only-year-month], à Paris};
\end{tikzpicture}%
\end{titlepage}%

\setcounter{page}{0}


\chapter{Préface}

\beaulivre{} fait partie de la série de classes \colorist{}, dont le nom est tiré des mots «~beau~» et «~livre~». L'ensemble de la collection comprend \colorart{} et \lebhart{} pour la composition d'articles, et \colorbook{} et \beaulivre{} pour celle des livres. Mon intention initiale en les concevant était d'écrire des brouillons et des notes qui ont l'air coloré mais pas éblouissant.

\beaulivre{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. Ces langues peuvent être commutées de manière transparente dans un seul document. En raison de l'utilisation de polices personnalisées, \beaulivre{} demande soit \hologo{XeLaTeX} soit \hologo{LuaLaTeX} pour la compilation.

Cette documentation est composée à l'aide de \beaulivre{} (avec l'option \texttt{allowbf}). Vous pouvez le considérer comme une courte introduction et une démonstration.

\bigskip
\begin{tip}
    La prise en charge multilingue, les environnements de type théorème, les marques de brouillon et quelques autres fonctionnalités sont fournis par la boîte à outils \ProjLib{}. Ici, nous ne discutons que brièvement de la façon de l'utiliser avec cette classe de document. Pour plus d'informations, veuillez vous référer à la documentation de \ProjLib{}.
\end{tip}

\begin{tip}
    This documentation has not been fully up-to-date with the new \texttt{expl3} version of this class series. Some options or commands introduced here might be obsolete.
\end{tip}

\tableofcontents

\mainmatter

\part{Instruction}
\parttext{Vous pouvez ajouter quelque texte d'introduction ici via \lstinline|\\parttext|\meta{text}.}

\LevelOneTitle*{Avant de commencer}
\addcontentsline{toc}{chapter}{Avant de commencer}

Pour utiliser les classes de documents décrites ici, vous devez :
\begin{itemize}
      \item installer TeX Live ou MikTeX de la dernière version possible, et vous assurer que \texttt{colorist} et \texttt{projlib} sont correctement installés dans votre système \TeX{}.
      \item télécharger et installer les polices requises, voir «~À propos des polices par défaut~».
      \item être familiarisé avec l'utilisation de base de \LaTeX{}, et savoir comment compiler vos documents avec \hologo{pdfLaTeX}, \hologo{XeLaTeX} ou \hologo{LuaLaTeX}.
\end{itemize}


\LevelOneTitle{Utilisation et exemples}

\LevelTwoTitle{Comment l'ajouter}

Il suffit simplement de mettre

\begin{code}
\documentclass{beaulivre}
\end{code}

comme première ligne pour utiliser la classe \beaulivre{}.

\begin{tip}[Attention]
    Vous devez utiliser le moteur \hologo{XeLaTeX} ou \hologo{LuaLaTeX} pour compiler.
\end{tip}

\LevelTwoTitle{Exemple - Un document complet}

Regardons d'abord un document complet.


\begin{code*}
\documentclass{beaulivre}
\usepackage{ProjLib}

\UseLanguage{French}

\begin{document}

\frontmatter

\begin{titlepage}
    (*\meta{code for titlepage}*)
\end{titlepage}

\tableofcontents

\mainmatter

\part{(*\meta{part title}*)}
\parttext{(*\meta{text after part title}*)}

\chapter{(*\meta{chapter title}*)}

\section{(*\meta{section title}*)}

\dnf<(*\meta{some hint}*)>

\begin{theorem}\label{thm:abc}
    Ceci est un théorème.
\end{theorem}
Référence du théorème: \cref{thm:abc}

\backmatter

...

\end{document}
\end{code*}

Si vous trouvez cela un peu compliqué, ne vous inquiétez pas. Examinons maintenant cet exemple pièce par pièce.

\LevelThreeTitle{Initialisation}

\begin{code}
\documentclass{beaulivre}
\usepackage{ProjLib}
\end{code}

L'initialisation est simple. La première ligne ajoute la classe de document \beaulivre{}, et la deuxième ligne ajoute la boîte à outils \ProjLib{} pour obtenir des fonctionnalités supplémentaires.

\LevelThreeTitle{Choisir la langue}

\begin{code}
\UseLanguage{French}
\end{code}

Cette ligne indique que le français sera utilisé dans le document (d'ailleurs, si seul l'anglais apparaît dans votre article, alors il n'est pas nécessaire de choisir la langue). Vous pouvez également changer de langue de la même manière plus tard au milieu du texte. Les langues prises en charge sont les suivantes : chinois simplifié, chinois traditionnel, japonais, anglais, français, allemand, espagnol, portugais, portugais brésilien et russe.

Pour une description détaillée de cette commande et d'autres commandes associées, veuillez vous référer à la section sur le support multilingue.


\LevelThreeTitle{Marques de brouillon}

\begin{code}
\dnf<(*\meta{some hint}*)>
\end{code}
Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.

\LevelThreeTitle{Environnements de type théorème}

\begin{code}
\begin{theorem}\label{thm:abc}
    Ceci est un théorème.
\end{theorem}
Référence du théorème: \cref{thm:abc}
\end{code}

Les environnements de type théorème couramment utilisés ont été prédéfinis. De plus, lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}} --- de cette manière, il ne serait pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.




\LevelOneTitle{À propos des polices par défaut}
Par défaut, cette classe de document utilise Palatino Linotype comme police anglaise principale; Source Han Serif, Source Han Sans et Source Han Mono comme police chinoise principale, sans empattement et monospace; et utilise partiellement Neo Euler comme police mathématique. Vous devez télécharger et installer ces polices vous-même. La série de polices Source Han peut être téléchargée sur \url{https://github.com/adobe-fonts} (il est recommandé de télécharger la version Super-OTC, afin que la taille de téléchargement soit plus petite). Neo Euler peut être téléchargé sur \url{https://github.com/khaledhosny/euler-otf}. Lorsque la police correspondante n'est pas installée, la police fournie avec TeX Live sera utilisée à la place et l'effet peut être réduit.

De plus, Source Code Pro est utilisé comme police anglaise sans empattement, New Computer Modern Mono comme police anglaise monospace, ainsi que certains symboles dans les polices mathématiques Asana Math, Tex Gyre Pagella Math et Latin Modern Math. Ces polices sont déjà disponibles dans TeX Live ou MikTeX, ce qui signifie que vous n'avez pas besoin de les installer vous-même.

\begin{itemize}
    \item English main font. \textsf{English sans serif font}. \texttt{English typewriter font}.
    \item 简体中文主要字体，\textsf{简体中文无衬线字体}，\texttt{简体中文等宽字体}
    \item \UseOtherLanguage{TC}{繁體中文主要字體，\textsf{繁體中文無襯線字體}，\texttt{繁體中文等寬字體}}
    \item \UseOtherLanguage{JP}{日本語のメインフォント、\textsf{日本語のサンセリフフォント}、\texttt{日本語の等幅フォント}}
    \item Démonstration de maths : \( \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}


\LevelOneTitle{Les options}

\beaulivre{} propose les options suivantes :

\begin{itemize}
    \item Les options de langue \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French}, etc.
        \begin{itemize}
            \item Pour les noms d'options d'une langue spécifique, veuillez vous référer à \meta{language name} dans la section suivante. La première langue spécifiée sera considérée comme la langue par défaut.
            \item Les options de langue ne sont pas nécessaires, elles servent principalement à augmenter la vitesse de compilation. Sans eux, le résultat serait le même, justement plus lent.
        \end{itemize}
    \item \texttt{draft} ou \texttt{fast}
        \begin{itemize}
            \item L'option \verb|fast| permet un style plus rapide mais légèrement plus rugueux, les principales différences sont :
            \begin{itemize}
                \item Utilisez une configuration de police mathématique plus simple ;
                \item N'utilisez pas \textsf{hyperref} ;
                \item Activez le mode rapide de la boîte à outils \ProjLib{}.
            \end{itemize}
        \end{itemize}
    \begin{tip}
        Pendant la phase de brouillon, il est recommandé d'utiliser le \verb|fast| option pour accélérer la compilation. Quand dans \verb|fast| mode, il y aura un filigrane ``DRAFT'' pour indiquer que vous êtes actuellement en mode brouillon.
    \end{tip}
    \item \texttt{a4paper} ou \texttt{b5paper}
        \begin{itemize}
            \item Options de format de papier. Le format de papier par défaut est 8.5 pouces $\times$ 11 pouces.
        \end{itemize}
    \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{noto}, \texttt{biolinum} ~$|$~ \texttt{useosf}
        \begin{itemize}
            \item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
            \item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
        \end{itemize}
    \item \texttt{allowbf}
        \begin{itemize}
            \item Afficher les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
        \end{itemize}
    \item \texttt{runin}
        \begin{itemize}
            \item Utilisez le style «~runin~» pour \lstinline|\subsubsection|
        \end{itemize}
    \item \texttt{nothms}
        \begin{itemize}
            \item Mode texte pur. Ne pas définir les environnements de type théorème.
        \end{itemize}
    \item \texttt{nothmnum}, \texttt{thmnum} ou \texttt{thmnum=}\meta{counter}
        \begin{itemize}
            \item Les environnements de type théorème ne seront pas numérotés / numérotés dans l'ordre 1, 2, 3... / numérotés dans \meta{counter}. Si aucune option n'est utilisée, ils seront numérotés dans \texttt{chapter} (livre) ou \texttt{section} (article).
        \end{itemize}
    \item \texttt{regionalref}, \texttt{originalref}
        \begin{itemize}
            \item Lors du référencement, si le nom de l'environnement de type théorème change avec la langue actuelle. Par défaut \texttt{regionalref} est activé, c'est-à-dire que le nom correspondant à la langue courante est utilisé ; par exemple, lors du référencement d'un environnement de type théorème dans un contexte français, les noms «~Théorème, Définition ...~» seront utilisés quel que soit le contexte linguistique dans lequel se trouve l'environnement d'origine. Si \texttt{originalref} est activé, alors le nom restera toujours le même que l'environnement d'origine ; par exemple, lors du référencement d'un théorème écrit dans le contexte français, même si l'on est actuellement dans le contexte anglais, il sera toujours affiché comme «~Théorème~».
            \item En mode \texttt{fast}, l'option \texttt{originalref} n'aura aucun effet.
        \end{itemize}
\end{itemize}
\bigskip
De plus, les options \texttt{oneside} et \texttt{twoside} couramment utilisées lors de la composition de livres sont également disponibles. La disposition recto-verso est utilisée par défaut.

\LevelOneTitle{Instructions par sujet}

\LevelTwoTitle{Configurer la langue}

\beaulivre{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. La langue peut être sélectionnée par les macros suivantes :

\begin{itemize}
    \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| est utilisé pour spécifier la langue. Le réglage correspondant de la langue sera appliqué après celui-ci. Il peut être utilisé soit dans le préambule ou dans le texte. Lorsqu'aucune langue n'est spécifiée, « English » est sélectionné par défaut.
    \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, qui utilise les paramètres de langue spécifiés pour composer \meta{content}. Par rapport à \lstinline|\UseLanguage|, il ne modifiera pas l'interligne, donc l'interligne restera stable lorsque le texte CJK et occidental sont mélangés.
\end{itemize}

\meta{language name} peut être (il n'est pas sensible à la casse, par exemple, \texttt{French} et \texttt{french} ont le même effet) :
\begin{itemize}
    \item chinois simplifié : \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} ou \texttt{SimplifiedChinese}
    \item chinois traditionnel : \texttt{TC}, \texttt{TChinese} ou \texttt{TraditionalChinese}
    \item anglais : \texttt{EN} ou \texttt{English}
    \item français : \texttt{FR} ou \texttt{French}
    \item allemand : \texttt{DE}, \texttt{German} ou \texttt{ngerman}
    \item italien : \texttt{IT} ou \texttt{Italian}
    \item portugais : \texttt{PT} ou \texttt{Portuguese}
    \item portugais (brésilien) : \texttt{BR} ou \texttt{Brazilian}
    \item espagnol : \texttt{ES} ou \texttt{Spanish}
    \item japonais : \texttt{JP} ou \texttt{Japanese}
    \item russe : \texttt{RU} ou \texttt{Russian}
\end{itemize}

\medskip
De plus, vous pouvez également ajouter de nouveaux paramètres à la langue sélectionnée :
\begin{itemize}
    \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item Ajoutez \meta{settings} à toutes les langues prises en charge.
    \end{itemize}
    \item \lstinline|\AddLanguageSetting(|\meta{language name}\lstinline|){|\meta{settings}\lstinline|}|
    \begin{itemize}
        \item Ajoutez \meta{settings} à la langue \meta{language name} sélectionnée.
    \end{itemize}
\end{itemize}
Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre tout le texte allemand affiché en orange (bien sûr, il faut alors ajouter \lstinline|\AddLanguageSetting{\color{black}}| afin de corriger la couleur du texte dans d'autres langues).

\LevelTwoTitle{Théorèmes et comment les référencer}

Des environnements tels que \texttt{definition} et \texttt{theorem} ont été prédéfinis et peuvent être utilisés directement.

Plus précisement, les environnements prédéfinis incluent : \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}, et la version non numérotée correspondante avec un astérisque \lstinline|*| dans le nom. Les titres changeront avec la langue actuelle. Par exemple, \texttt{theorem} sera affiché comme «~Theorem~» en mode anglais et «~Théorème~» en mode français.

Lors du référencement d'un environnement de type théorème, il est recommandé d'utiliser \lstinline|\cref{|\meta{label}\texttt{\}}. De cette façon, il n'est pas nécessaire d'écrire explicitement le nom de l'environnement correspondant à chaque fois.

\begin{tip}[Exemple]
\begin{code}
\begin{definition}[Des choses étranges] \label{def: strange} ...
\end{code}

will produce
\begin{definition}[Des choses étranges]\label{def: strange}
    C'est la définition de certains objets étranges. Il y a approximativement un espace d'une ligne avant et après l'environnement de type théorème, et il y aura un symbole pour marquer la fin de l'environnement.
\end{definition}

\lstinline|\cref{def: strange}| s'affichera sous la forme : \cref{def: strange}.

Après avoir utilisé \lstinline|\UseLanguage{French}|, un théorème s'affichera sous la forme :

\UseLanguage{English}
\begin{theorem}[Useless]\label{thm}
    A theorem in English.
\end{theorem}

Par défaut, lors du référencement, le nom du théorème correspond au contexte courant. Par exemple, le nom de la définition ci-dessus sera en français dans le contexte français courant : \cref{def: strange,thm}. Si vous voulez que le nom du théorème corresponde toujours à la langue du contexte dans lequel se trouve le théorème, vous pouvez ajouter \texttt{originalref} aux options globales.
\end{tip}

\UseLanguage{French}

Voici les principaux styles d'environnements de type théorème :
\begin{theorem}
    Style de théorème : theorem, proposition, lemma, corollary, ...
\end{theorem}

\begin{proof}
    Style d'épreuve
\end{proof}

\begin{remark}
    Style de remarque
\end{remark}

\begin{conjecture}
    Style de conjecture
\end{conjecture}

\begin{example*}
    Style d'exemple : example, fact, ...
\end{example*}

\begin{problem}
    Style de problème : problem, question, ...
\end{problem}

\medskip
Pour l'esthétique, les définitions adjacentes seront reliées entre elles automatiquement :
\begin{definition}
    Première définition.
\end{definition}

\begin{definition}
    Deuxième définition.
\end{definition}

\begin{tip}
    Veuillez consulter la documentation du paquet \textsf{create-theorem} pour voir comment déclarer de nouveaux environnements de type théorème.
\end{tip}

\LevelTwoTitle{Draft mark}

Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
\begin{itemize}
    \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
\end{itemize}


\bigskip
\LevelOneTitle{Problèmes connus}

\begin{itemize}
    \item Les paramètres de police ne sont pas encore parfaits.
    \item La conception de la table des matières est pas si belle.
    \item Comme de nombreuses fonctionnalités sont basées sur la boîte à outils \ProjLib{}, \colorist{} (et donc \colorart{}, \lebhart{} et \colorbook{}, \beaulivre{}) hérite de tous ses problèmes. Pour plus de détails, veuillez vous référer à la section «~Problèmes connus~» de la documentation de \ProjLib{}.
    \item Le mécanisme de gestion des erreurs est incomplet : pas de messages correspondants lorsque certains problèmes surviennent.
    \item Il y a encore beaucoup de choses qui peuvent être optimisées dans le code.
\end{itemize}

\part{Démonstration}
\blinddocument

\end{document}
\endinput
%%
%% End of file `beaulivre/beaulivre-doc-fr.tex'.
