diff options
Diffstat (limited to 'macros/latex/contrib/projlib/ProjLib-doc-cn.tex')
-rw-r--r-- | macros/latex/contrib/projlib/ProjLib-doc-cn.tex | 452 |
1 files changed, 452 insertions, 0 deletions
diff --git a/macros/latex/contrib/projlib/ProjLib-doc-cn.tex b/macros/latex/contrib/projlib/ProjLib-doc-cn.tex new file mode 100644 index 0000000000..6ff43be01e --- /dev/null +++ b/macros/latex/contrib/projlib/ProjLib-doc-cn.tex @@ -0,0 +1,452 @@ +%! TEX program = xelatex +\documentclass[allowbf]{lebhart} + +%%================================ +%% 引入工具集 +%%================================ +\usepackage{PLtoolkit} +\usepackage{longtable} % breakable tables +\usepackage{hologo} % more TeX logo + +\UseLanguage{Chinese} + +%%================================ +%% 排版代码 +%%================================ +\usepackage{listings} +\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=% + {color,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,ProjLib + } +} +\lstnewenvironment{code}% +{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{} + +%%================================ +%% remind +%%================================ +\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{\PLtoolkit}{\textsf{PLtoolkit}} +\providecommand{\PLamssim}{\textsf{PLamssim}} +\providecommand{\PLauthor}{\textsf{PLauthor}} +\providecommand{\PLdatestr}{\textsf{PLdate}} +\providecommand{\PLdraft}{\textsf{PLdraft}} +\providecommand{\PLlang}{\textsf{PLlang}} +\providecommand{\PLlogo}{\textsf{PLlogo}} +\providecommand{\PLpaper}{\textsf{PLpaper}} +\providecommand{\PLthm}{\textsf{PLthm}} + +%%================================ +%% 正文 +%%================================ +\begin{document} + +\title{\ProjLib{} 工具集\\[.3\baselineskip]\normalsize 使用指南} +\author{许锦文} +\thanks{对应版本.~~\texttt{\ProjLib{}~2021/05/12}} +\date{2021年5月,北京} + +\maketitle + +\begin{abstract} + \ProjLib{} 工具集之设计目的为简化 \LaTeX{} 文档撰写前的准备工作。只需要加载 \PLtoolkit{},多语言设置就已准备就绪,定理类环境已被设置好可供直接使用,并且引入了一系列辅助功能。 +\end{abstract} + +% \tableofcontents + +\section{PLtoolkit} + +\subsection{如何加载} + +只需要在导言部分加入这一行即可: + +\begin{code} + \usepackage{PLtoolkit} +\end{code} + +\begin{remind}[注意事项] + 由于其内部使用了 \textsf{cleveref},\PLtoolkit{} 需要放在 \textsf{varioref}、\textsf{hyperref} 的后面。 +\end{remind} +\medskip + +\subsection{选项} + +\PLtoolkit{} 提供下列选项以供选择: +\begin{itemize} + \item \texttt{draft} 或 \texttt{fast} + \begin{itemize} + \item 快速模式。功能会适当缩减,但能够提高编译速度,建议在撰写阶段使用。 + \end{itemize} + \item \texttt{palatino}、\texttt{times}、\texttt{garamond}、\texttt{biolinum} + \begin{itemize} + \item 字体选项。顾名思义,会加载相应名称的字体。 + \end{itemize} + \item \texttt{author} + \begin{itemize} + \item 加载 \PLauthor{}。关于其详细功能,请参阅有关这一宏包的小节。 + \end{itemize} + \item \texttt{amssim} + \begin{itemize} + \item 加载 \PLamssim{}。关于其详细功能,请参阅有关这一宏包的小节。 + \end{itemize} + \item \texttt{nothms} + \begin{itemize} + \item 不设定定理类环境。如果你希望使用自己的定理样式,可以使用这一选项。 + \end{itemize} +\end{itemize} +另外,还有一些组件的参数可以作为文档类的全局参数传递,例如 \PLpaper{} 的 \texttt{paperstyle} 和 \texttt{preview} 等。详细信息可以参阅对应的小节。 + +\section{具体组件} + +\subsection{PLamssim} + +\PLamssim{} 用于模拟 \textsf{amsart} 文档类的部分功能,包括: +\begin{itemize} + \item \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email|、\lstinline|\dedicatory| 命令 (前三者由 \PLauthor{} 提供) + \item \lstinline|\keywords| 命令 + \item \lstinline|\subjclass| 命令 + \item \lstinline|\thanks| 可以写在 \lstinline|\author| 之外 + \item \lstinline|abstract| 环境可以放在 \lstinline|\maketitle| 的前面 +\end{itemize} + +这些功能只在标准文档类中启用。在 \AmS{} 文档类中,\PLamssim{} 不会起到任何效果。 + +\subsection{PLauthor} + +\PLauthor{} 提供了 \lstinline|\address|、\lstinline|\curraddr|、\lstinline|\email| 命令,并且允许输入多组用户信息。标准的输入方式是这样的: +\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{PLdate} + +\PLdatestr{} 提供了 \lstinline|\PLdate|\meta{yyyy-mm-dd} 命令,以将 \meta{yyyy-mm-dd} 转换为对应语言的日期格式显示。例如,在当前的中文语境下,\lstinline|\PLdate{2022-04-01}| 会被显示为:\PLdate{2022-04-01}。 + +关于如何选定语言,请参阅关于 \PLlang{} 的小节。 + +\subsection{PLdraft} + +\PLdraft{} 提供了下列命令: +\begin{itemize} + \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。 + \item \lstinline|\needgraph| 或 \lstinline|\needgraph<...>|。效果为:\needgraph~或 \needgraph<...>其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\needgraph} +\end{itemize} + +关于如何选定语言,请参阅关于 \PLlang{} 的小节。 + +\subsection{PLlang} + +\PLlang{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文 (其中中文、日文、俄文需要相应的 \TeX{} 引擎与字体支持)。可以通过下列命令来选定语言: +\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} 或 \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 \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{PLlogo} + +\PLlogo{} 提供了 \lstinline|\ProjLib| 命令用于绘制 Logo,效果为:\ProjLib{}。它与普通的文字指令效果类似,可以用于不同的字号: +% \begin{itemize} +% \item \lstinline|\tiny|:\quad {\tiny\ProjLib} +% \item \lstinline|\scriptsize|:\quad {\scriptsize\ProjLib} +% \item \lstinline|\footnotesize|:\quad {\footnotesize\ProjLib} +% \item \lstinline|\normalsize|:\quad {\normalsize\ProjLib} +% \item \lstinline|\large|:\quad {\large\ProjLib} +% \item \lstinline|\Large|:\quad {\Large\ProjLib} +% \item \lstinline|\LARGE|:\quad {\LARGE\ProjLib} +% \item \lstinline|\huge|:\quad {\huge\ProjLib} +% \item \lstinline|\Huge|:\quad {\Huge\ProjLib} +% \end{itemize} +% \vspace{-0.5\baselineskip} +\begin{longtable}{ll} + \lstinline|\tiny|:& {\tiny\ProjLib}\\ + \lstinline|\scriptsize|:& {\scriptsize\ProjLib}\\ + \lstinline|\footnotesize|:& {\footnotesize\ProjLib}\\ + \lstinline|\normalsize|:& {\normalsize\ProjLib}\\ + \lstinline|\large|:& {\large\ProjLib}\\ + \lstinline|\Large|:& {\Large\ProjLib}\\ + \lstinline|\LARGE|:& {\LARGE\ProjLib}\\ + \lstinline|\huge|:& {\huge\ProjLib}\\ + \lstinline|\Huge|:& {\Huge\ProjLib} +\end{longtable} + +\subsection{PLpaper} + +\PLpaper{} 主要用于调节纸张颜色。它支持下列选项: + +\begin{itemize} + \item \texttt{paperstyle = \meta{paper style name}} + \begin{itemize} + \item 设定纸张色彩样式。\meta{paper style name} 可供选择的选项有:\texttt{yellow}、\texttt{dark} 与 \texttt{nord}。 + \end{itemize} + \item \texttt{yellowpaper}、\texttt{darkpaper}、\texttt{nordpaper} + \begin{itemize} + \item 设定纸张色彩样式。效果与相应名称的 \texttt{paperstyle} 相同。 + \end{itemize} + \item \texttt{preview} + \begin{itemize} + \item 预览模式,将会把 pdf 文件的白边去掉以方便阅读。 + \end{itemize} +\end{itemize} + +为了使用的方便,建议把这些选项作为文档类的全局参数,这样对于文档的纸张设定一目了然。 + +\subsection{PLthm} + +\PLthm{} 提供定理类环境的设置。它支持下列选项: +\begin{itemize} + \item \texttt{nothms} + \begin{itemize} + \item 不设定定理类环境。如果你希望使用自己的定理样式,可以使用这一选项。 + \end{itemize} +\end{itemize} + +预设的定理类环境包括:\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|*| 的无编号版本。这些定理类环境在显示时会依据当前语言而相应变化,例如在中文模式下 \texttt{theorem} 会显示为“定理”,而在英文模式下则会显示为“Theorem”。关于如何选定语言,请参阅关于 \PLlang{} 的小节。 + +在引用定理类环境时,建议使用智能引用 \lstinline|\cref{|\meta{label}\lstinline|}|。这样就不必每次都写上相应环境的名称了。 + +\medskip +若需要定义新的定理类环境,首先要定义这个环境在所用语言下的名称 \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} + +\begin{remind} + 如果要定义名称后带有星号 \lstinline|*| 的环境,那么在上面的 \meta{name of environment} 中不用写星号。 +\end{remind} + +然后用下面五种方式之一定义这一环境: +\begin{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|}| + \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}<subsection> + +\bigskip +下面提供一个例子。这三行代码: +\begin{code} + \def\proofideanameCN{思路} + \CreateTheorem*{proofidea*} + \CreateTheorem{proofidea}<subsection> +\end{code} +可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 subsection 内编号),它们支持在简体中文语境中使用,效果如下所示 (具体样式与所在的文档类有关) : + +\begin{proofidea*} + \lstinline|proofidea*| 环境。 +\end{proofidea*} + +\begin{proofidea} + \lstinline|proofidea| 环境。 +\end{proofidea} + + +\bigskip +\section{目前存在的问题} + +\begin{itemize}[itemsep=1em] + \item \PLauthor{} 仍然处于初步阶段,在很多方面还远远比不上相对成熟的 \textsf{authblk}。 + \item \PLlang{}:针对 \textsf{polyglossia} 的设置仍然存在许多问题,因此现在主要功能都是通过 \textsf{babel} 实现的。 + \item \PLpaper{} 的 \texttt{preview} 功能主要是通过 \textsf{geometry} 宏包实现的,因此在 \textsc{\textsf{Koma}} 文档类中效果不好。 + \item \PLthm{} 对于定理类环境的编号与样式设定目前还无法由用户更改。 + \item \PLthm{}:智能引用针对所有 \PLlang{} 已支持语言的本地化尚不完整,主要是中文、日文与俄文。 + \item 错误处理功能不完善,在出现一些问题时没有相应的错误提示。 + \item 代码中有许多可优化之处,有些部分耗时过长,特别是 \PLthm{} 对定理类环境的定义。 +\end{itemize} + + +\clearpage +\section{使用示例} + +\subsection{标准文档类} + +在标准文档类中,通常只需简要设置页面尺寸、超链接,再载入 \PLtoolkit{},即可直接开始写作。下面是一段完整的示例。 + +\begin{code} +\documentclass{article} +\usepackage[a4paper,margin=.75in]{geometry} +\usepackage[hidelinks]{hyperref} +\usepackage[palatino]{PLtoolkit} % Load the toolkit and use font Palatino + +\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} + +\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} + +\bigskip +如果使用了 \PLamssim{},那么文章中就可以采用 \AmS{} 文档类的写法 (当然,此时原始的写法也是成立的,因此始终添加 \texttt{amssim} 这一参数通常是没有问题的)。此时上文引入 \PLtoolkit{} 的那一行应该写为: +\begin{code} +\usepackage[amssim,palatino]{PLtoolkit} +\end{code} + +\clearpage +\subsection{\texorpdfstring{\AmS{}}{AMS} 文档类} + +在 \AmS{} 文档类中,通常只需简要设置页面尺寸、超链接,再载入 \PLtoolkit{},即可直接开始写作。下面是一段完整的示例。 +\begin{code} +\documentclass{amsart} +\usepackage[a4paper,margin=.75in]{geometry} +\usepackage[hidelinks]{hyperref} +\usepackage[palatino]{PLtoolkit} % Load the toolkit and use font Palatino + +\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} + + +\end{document} |