diff options
Diffstat (limited to 'macros/latex/contrib/easybook/easybook.tex')
-rw-r--r-- | macros/latex/contrib/easybook/easybook.tex | 519 |
1 files changed, 292 insertions, 227 deletions
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index f01355d47c..377fe5a7f9 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -4,8 +4,8 @@ \usepackage[fontset = fandol]{ctex} \usepackage { - enumitem,indentfirst,tabularray,fancyvrb, - geometry,hologo,pifont,changelog,calc + enumitem,indentfirst,tabularray, + fancyvrb,geometry,hologo,changelog,calc } \definecolorscheme{blue} { @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024bu, - date = 2024/05/24, + version = v2024dm, + date = 2024/09/06, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -33,9 +33,9 @@ { \easybook{} 是基于 \cls*{ctexbook} 书籍文档类创建的纯净学术模板,同时兼具 \cls*{book} 与 \cls*{article} 文档类的功能。结合中国许多高校学位论文的通用框架设计,提供多个命令和接口可以使用户简便地定制论文模板。它的基础宏包 \pkg*{easybase} 还可以搭配 \CTeX 和标准文档类使用。 }, - arg-format = \normalfont\small\itshape\xeCJKVerbAddon, + arg-format = \normalfont\small\kaishu\xeCJKVerbAddon, abstract-format = \small, - module-sep = \,\raisebox{-1pt}{\ding{224}}\,, + module-sep = \,$\Rightarrow$\,, title-format = \huge\sffamily } \KOMAoptions{numbers = noenddot} @@ -45,21 +45,20 @@ \addtokomafont{section}{\normalfont\sffamily} \addtokomafont{subsection}{\normalfont\sffamily} \addtokomafont{subsubsection}{\normalfont\sffamily} +\setkomafont{pagehead}{\normalfont\kaishu} \DeclareTOCStyleEntry[entryformat = \sffamily]{default}{section} \DeclareFieldFormat[book]{title}{\textsf{#1}} \geometry{margin = 1in,marginparwidth = 0.6in,footskip = 0.5in} \renewlist{cnltxlist}{description}{2} -\SetEnumitemValue{label}{smallbullet}{\small\color{DarkBlue}\textbullet} +\SetEnumitemValue{label}{textbullet}{\color{DarkBlue}\textbullet} \setlist{nosep,topsep = \smallskipamount,labelsep = 0.5em} -\setlist[1]{labelindent = \parindent} -\setlist[itemize,1]{label = smallbullet,leftmargin = *} +\setlist[1]{labelindent = \parindent,leftmargin = *} +\setlist[itemize,1]{label = textbullet} \setlist[cnltxlist] { leftmargin = 0pt, - labelwidth = 2em, itemindent = -1em, - labelsep = 0pt, - listparindent = 2em, + listparindent = \parindent, topsep = \smallskipamount, itemsep = \smallskipamount, partopsep = 0ex, @@ -121,7 +120,9 @@ \@firstofone } % A tag that distinguishes the options for different paths -\NewDocumentCommand{\dtag}{sO{\ding{73}}} +\newcommand{\hface}{$\symbol{"263A}$} +\newcommand{\sface}{$\symbol{"263B}$} +\NewDocumentCommand{\dtag}{sO{\hface}} { \begingroup \reversemarginpar @@ -143,7 +144,7 @@ \code{\choices{#2}} } % Use a separate module margin marker to prevent overlap -\newcommand{\smodule}[1]{\cnltx@module@text*{\normalsize #1}} +\newcommand{\smodule}[1]{{\normalsize\cnltx@module@text*{#1}}} \renewcommand{\cnltx@package@abstract@width}{0.85\linewidth} \renewcommand{\cnltx@write@lastname}{} \newcounter{ctexexam} @@ -185,6 +186,12 @@ \def\keylit{\@cnltx@option@item\keyis} \def\keychoice{\@cnltx@option@item\choicekey} \def\keybool{\@cnltx@option@item\boolkey} +\renewenvironment{changelogdescription} + {\begin{description}[leftmargin = \parindent]} + {\end{description}} +\renewenvironment{changelogitemize} + {\begin{itemize}[leftmargin = *]} + {\end{itemize}} \makeatother\ExplSyntaxOff \labelformat{section}{节#1} \labelformat{subsection}{小节#1} @@ -202,51 +209,37 @@ \end{itemize} \subsection{前言} -对于排版外文文档已有诸如 \cls*{KOMA-Script} 和 \cls*{memoir} 等应用广泛的文档类,但这些文档类并不是为中文用户设计的,难免有些水土不符,且用户手册繁杂,对于普通用户来说学习成本高,难以快速上手。中文文档的解决方案 \pkg*{ctex} 宏集解决了中文输出和章节标题格式的设置问题,但在编写文档过程中往往需要更多基本的定制功能,例如目录、图表标题、页眉页脚、脚注和页面边距等,这往往需要额外加载不同功能的宏包。\easybook{} 文档类在 \cls*{ctexbook} 基础上载入了一些使用频率较高且基本稳定的宏包,对它们的功能进行整合并优化联动使用,模块化的改装提供统一的接口兼容 \pkg*{ctex} 文档类,可以满足学术类文档例如中国学位论文模板的基本需求。\easybook{} 提供了与 \CTeX 相同现代化风格的键值设置,支持不同类型的选项与层次化的选项设置。 +对于排版外文文档已有诸如 \cls*{KOMA-Script} 和 \cls*{memoir} 等应用广泛的文档类,但这些文档类并不是为中文用户设计的,难免有些水土不符,且用户手册繁杂,对于普通用户来说学习成本高,难以快速上手。中文文档的解决方案 \CTeX 宏集解决了中文输出和章节标题格式的设置问题,但在编写文档过程中往往需要更多基本的定制功能,例如目录、图表标题、页眉页脚、脚注和页面边距等,这往往需要额外加载不同功能的宏包。\easybook{} 文档类在 \cls*{ctexbook} 基础上载入了一些使用频率较高且基本稳定的宏包,对它们的功能进行整合并优化联动使用,模块化的改装提供统一的接口兼容 \CTeX 文档类,可以满足学术类文档例如中国学位论文模板的基本需求。\easybook{} 提供了与 \CTeX 相同现代化风格的键值设置,支持不同类型的选项与层次化的选项设置。 \subsection{基本用法} \label{subsec:basic usage} -以下一份简单的 \TeX 文档演示了 \easybook{} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\hologo{LaTeX} 工作室} 的网站。 +以下一份简单的 \TeX 文档演示了 \easybook{} 的最基本用法,在导言区进行宏包载入与文档设置,一些详细的使用样例会不定期上传在 \href{https://www.latexstudio.net/}{\hologo{LaTeX} 工作室} 的网站。或者直接使用 \pkg*{easybase} 宏包,目前适用于 \cls*{ctexbook}、\cls*{ctexrep}、\cls*{ctexart} 以及标准文档类,包含了\ref{sec:interface options} 所示各个模块接口命令的功能。当在\textbf{标准文档类}后载入时还可以使用 \pkg*{ctex} 宏包的选项,将会传递给 \pkg*{ctex} 宏包。文档类和宏包支持的全局选项见\ref{sec:document class options}。 \begin{frameverb} - \documentclass[文档类选项]{easybook} + \documentclass[全局选项]{easybook} + % \documentclass[全局选项]{ctexbook} + % \usepackage[全局选项]{easybase} \ctexset{键值列表} \usepackage{宏包列表} \begin{document} - \chapter{欢迎} - \section{Welcome to easybook} - Hello, \LaTeX - \end{document} -\end{frameverb} - -或者直接使用 \pkg*{easybase} 宏包,目前适用于 \cls*{ctexbook}、\cls*{ctexrep}、\cls*{ctexart} 以及标准文档类,包含了\ref{sec:interface options} 所示各个模块接口命令的功能。它的宏包选项共享文档类选项的一部分,支持的选项见\ref{sec:document class options}。当在\textbf{标准文档类}后载入时还可以使用 \pkg*{ctex} 宏包的选项,将会传递给 \pkg*{ctex} 宏包。 -\begin{frameverb} - \documentclass[文档类选项]{ctexbook} - - \usepackage[宏包选项]{easybase} - \ctexset{键值列表} - - \usepackage{宏包列表} - - \begin{document} - \chapter{欢迎} + \chapter{hello :)} \section{Welcome to easybook} Hello, \LaTeX \end{document} \end{frameverb} \subsection{编译方式} -假设您的 \TeX 源文件名为 \code{easybook.tex},需要使用参考文献和索引功能,并使用 \hologo{XeLaTeX} 和 \hologo{BibTeX} 引擎编译文档,那么需要在命令行中执行: +假设您的 \TeX 源文件名为 \code{easybook-demo.tex},需要使用参考文献和索引功能,并使用 \hologo{XeLaTeX} 和 \hologo{BibTeX} 引擎编译文档,那么需要在命令行中执行: \begin{frameverb} - xelatex -shell-escape easybook - bibtex easybook - makeindex easybook - xelatex -shell-escape easybook - xelatex -shell-escape easybook + xelatex -shell-escape easybook-demo + bibtex easybook-demo + makeindex easybook-demo + xelatex -shell-escape easybook-demo + xelatex -shell-escape easybook-demo \end{frameverb} 当然也可以使用 \code{latexmk} 及一些软件自带的编译工具,这里就不做介绍。 \\ -\ding{72} 需要注意正确\textbf{编译索引}要增加 \code{-shell-escape} 命令行选项。 +$\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-shell-escape} 命令行选项。 \subsection{依赖宏包} \ref{table:package list} 为 \pkg*{easybase} 直接调用的关键宏包清单,通常情况下它们是常用且稳定的。\colorbox{PaleTurquoise}{蓝色}背景的宏包表示修改了或依赖它们的内部命令。\colorbox{GreenYellow}{绿色}背景的宏包表示并未调用它们,但做了一些预配置,可在导言区手动载入以实现相关的功能。 @@ -256,7 +249,8 @@ cells = {cmd = \pkg*}, cell{1}{3,4} = PaleTurquoise, cell{2}{5} = PaleTurquoise, - cell{3}{2,4} = PaleTurquoise, + cell{4}{5} = PaleTurquoise, + cell{5}{2} = PaleTurquoise, cell{5}{1} = GreenYellow, cell{1}{2} = GreenYellow, cell{3}{1,4} = GreenYellow @@ -265,12 +259,12 @@ enumitem & etoolbox & fancyhdr & geometry & hyperref \\ imakeidx & listings & marginnote & mathtools & multicol \\ pifont & pdfpages & siunitx & spbmark & thmtools \\ - tcolorbox & titletoc & tabularray & ulem & + tcolorbox & titletoc & tabularray & & \end{longtblr} -\section{文档类选项} +\section{全局选项} \label{sec:document class options} -文档类选项应当在使用 \easybook{} 文档类或 \pkg*{easybase} 宏包(部分支持)时指定,可见\ref{subsec:basic usage} 的例子。选项前带有 \ding{73} 符号表示只可用于文档类,否则文档类与宏包都适用。除了下面列举的选项以外,还支持标准和 \CTeX 文档类的选项。 +全局选项应当在使用 \easybook{} 文档类或 \pkg*{easybase} 宏包(部分支持)时指定,可见\ref{subsec:basic usage} 的例子。选项前带有\hface 符号表示只可用于文档类,否则文档类与宏包都适用。文档类选项除了下面额外增加的以外,还支持标准和 \CTeX 文档类的选项。 \subsection{基本选项} \begin{cnltxlist} @@ -284,7 +278,7 @@ 同时开启 \option{newline} 和 \keyis{scheme}{plain} 选项以符合英文原生风格。 \keychoice{paper}{\fbox{a4paper},b5paper,c5paper,letterpaper,\optpath*{other paper}} 文档页面尺寸选项将参数交给 \pkg*{geometry} 宏包处理,可使用它支持的所有标准纸张规格。 - \keyval{configs}{配置文件列表}\dtag\newtag[Chg]% + \keyval{configs}{配置文件列表}\dtag 载入用户配置的文件名列表,文件列表以花括号包裹并以英文逗号分隔。文件名应包含如 \code{tex}、\code{def} 或 \code{cfg} 等扩展名。若配置文件不在当前文件夹则文件名需要包含路径,即 \code{path/file.cfg}。 \keychoice{floatpage}{true,\fbox{false}} 开启这个选项后浮动环境 \env{table} 和 \env{figure} 的比例参数会使用默认值。关闭它则尽可能避免出现浮动页,使图表环境与正文段落更加紧凑,减少多余的空白版面。 @@ -304,13 +298,19 @@ \setCJKmonofont{FangSong} \newCJKfontfamily[song]\songti{SimSun} \end{ctexexam} + + 如果用 \textsf{Overleaf} 或 \textsf{TeXPage} 等在线平台编译文档,则只有 \code{fandol} 字体可用。使用其它字体可将字体文件上传至项目文件夹,例如上传至 \code{font} 文件夹设置正文和无衬线字体: + \begin{ctexexam} + \setCJKmainfont{simsun.ttc}[Path = ./font/] + \setCJKsansfont{simhei.ttf}[Path = ./font/] + \end{ctexexam} \keychoice{font}{noto,times,times*,ebgaramond,libertine,palatino,\fbox{auto}}\dtag - 预置的英文字体相关配置方案如\ref{table:english font} 所示。这些字体已经包含在了 \hologo{TeXLive} 发行版中,所以通常不需要再专门安装。如果您想使用其它英文字体,可以使用 \pkg*{fontspec} 宏包的相关命令进行设置。 + 预置的英文字体相关配置方案如\ref{table:english font} 所示。这些字体已经包含在了 \hologo{TeXLive} 发行版中,所以通常不需要再专门安装。如果您想使用默认的Latin Modern或其它英文字体,可以使用 \code{auto} 选项配合 \pkg*{fontspec} 宏包的相关命令进行设置。 \begin{longtblr} [ caption = 英文字体预设方案, label = table:english font, - remark{\ding{72}} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。, + remark{$\blacktriangleright$} = \code{times*} 方案为 \textsf{windows} 系统的预置字体。, postsep = \bigskipamount-\itemsep ]{ hline{2} = {0.5pt,DarkBlue}, @@ -340,11 +340,11 @@ 开启 \cls*{article} 文章模式,与 \keyis*{class}{article} 等效。 \end{cnltxlist} -\section{接口选项} +\section{模块选项} \label{sec:interface options} \begin{cnltxlist} - \command*{ctexset}[\oarg{模块名}\marg{键值列表}] - \easybook{} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs*{ctexset},接口选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有9个模块用于实现常规的排版功能,如\ref{table:module List} 所示。 + \command{ctexset}[\oarg{模块名}\marg{键值列表}] + \easybook{} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs{ctexset},模块选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有10个模块用于实现常规的排版功能,如\ref{table:module List} 所示。 \begin{longtblr} [caption = 模块功能和名称清单,label = table:module List] { @@ -352,13 +352,13 @@ row{1,3} = {font = \sffamily}, row{2,4} = {cmd = \module*} } - \hyperref[subsec:tools]{工具} & \hyperref[subsec:font]{部件字体} & \hyperref[subsec:spread]{行距} & \hyperref[subsec:hyperlinks]{超链接} & \hyperref[subsec:reference]{参考文献} \\ - tools & font & spread & ref & bib \\ - \hyperref[subsec:theorem]{定理} & \hyperref[subsec:page margins]{页面尺寸} & \hyperref[subsec:header and footer]{页眉页脚} & \hyperref[subsec:catalog]{目录} & \\ - thmt & geo & hdr & toc & + \hyperref[subsec:tools]{工具} & \hyperref[subsec:font]{部件字体} & \hyperref[subsec:space]{间距} & \hyperref[subsec:hyperlinks]{超链接} & \hyperref[subsec:reference]{参考文献} \\ + tools & font & space & ref & bib \\ + \hyperref[subsec:theorem]{定理} & \hyperref[subsec:page margins]{页面尺寸} & \hyperref[subsec:header and footer]{页眉页脚} & \hyperref[subsec:contents]{目录} & \hyperref[subsec:caption]{图表题注} \\ + thmt & geo & hdr & toc & cap \end{longtblr} - \ref{exam:kv setting} 使用\ref{subsec:tools} 介绍的工具模块 \module*{tools} 举例三种键值列表设置方式:1. 各 \meta{模块名} 是统一接口 \cs*{ctexset} 的键路径。2. 不同模块还具有单独的接口命令 \cs*{eb}\meta{模块名}\code{\textcolor{cs}{set}}。3. \meta{模块名} 也可以使用 \cs*{ctexset} 命令的可选参数设置。路径名与所属下级选项之间可以 \code{/} 或 \code{=} 号分开,斜线 \code{/} 后不能有空格或者换行。 + \ref{exam:kv setting} 使用\ref{subsec:tools} 介绍的工具模块 \module*{tools} 举例三种键值列表设置方式:1. 各 \meta{模块名} 是统一接口 \cs{ctexset} 的键路径。2. 不同模块还具有单独的接口命令 \cs*{eb}\meta{模块名}\code{\textcolor{cs}{set}}。3. \meta{模块名} 也可以使用 \cs{ctexset} 命令的可选参数设置。路径名与所属下级选项之间可以 \code{/} 或 \code{=} 号分开,斜线 \code{/} 后不能有空格或者换行。 \begin{ctexexam}[labelref = exam:kv setting] \ctexset { @@ -378,6 +378,7 @@ \subsection[工具]{工具\smodule{tools}} \label{subsec:tools} +工具模块 \module*{tools} 主要用于综合设置各类杂项的排版元素。 \begin{cnltxlist} \keychoice{color}{\fbox{none},seaside,energy,cyberpunk} \easybook{} 预置了四种颜色主题,默认主题 \code{none} 为黑白页面,颜色主题不包括超链接。 @@ -397,59 +398,32 @@ 设置脚注跟随编号的计数器,仅在导言区有效。默认跟随章计数器,即开启新的章标题时脚注编号从1开始。 \keychoice{uppercase}{\fbox{all},first,none,none*} 使用 \cs{rightmark} 和 \cs{leftmark} 等标题标记命令获取标题内容用于页眉页脚时其中英文的大小写类型。\code{all} 为标题标记中的英文字母全部大写。\code{first} 为标记以英文起始时仅第一个字母大写。\code{none} 不改变标记中英文字母的大小写形式,变体 \code{none*} 则强制标记的字母均为小写形式。 - \kvsplit{tagform}{左括号,右括号}\Default{\Marg{(,)}}\newtag[Chg]% + \kvsplit{tagform}{左括号,右括号}\Default{\Marg{(,)}} 设置行间公式标签的括号及格式,以英文逗号分隔,分别代表左右括号。\meta{左括号} 的末尾可以是带有一个参数的命令,用于接受公式编号。将标签括号设置为方括号,并给编号使用无衬线字体: \begin{ctexexam} \newcommand{\bracketsf}[1]{[\textsf{#1}} \ebtoolsset{tagform = {\bracketsf,]}} \end{ctexexam} - \kvsplit-{figurepath}{\marg{路径名1}\marg{路径名2}$\cdots$\marg{路径名n}} - 设置插入图片的文件夹路径名。可以有多个路径名,每个路径包含在花括号内分隔,只有一个路径时需要包含在两层括号内。 -\end{cnltxlist} + \kvsplit-{figurepath}{\marg{路径名1}\marg{路径名2}$\cdots$\marg{路径名n}}\newtagv[Changed]{2024cd}% + 设置插入图片的文件夹路径名。每个路径需包含在花括号内,只有一个路径时括号可以省略。 + \begin{ctexexam} + \ctexset{tools/figurepath = path1} + \ctexset{tools/figurepath = {path2}{path3}} + \end{ctexexam} -\subsubsection{连字符} -\begin{cnltxlist} + 以下几个选项用于设置题注编号的连字符,\code{chapter} 计数器的值大于0时连字符才有意义。若需更改题注编号的输出格式可在正文中重新定义 \cs*{the}\meta{计数器} 命令。 \keyval{hyphen-figure}{图片连字符}\Default{\Marg{.}} 设置图片题注编号的连字符。 \keyval{hyphen-table}{表格连字符}\Default{\Marg{.}} 设置表格题注编号的连字符。 - \keyval{hyphen-listing}{代码连字符}\Default{\Marg{.}} - 设置代码题注编号的连字符。 + \keyval{hyphen-lstlisting}{代码连字符}\Default{\Marg{.}} + 设置代码题注编号的连字符。\pkg*{listings} 宏包的 \option{numberbychapter} 选项失效。 \keyval{hyphen-equation}{公式连字符}\Default{\Marg{.}} 设置公式题注编号的连字符。 \keyval{hyphen-every}{连字符}\Default{\Marg{.}} 统一设置上述所有编号的连字符。 \end{cnltxlist} -\subsubsection{上下标全局设置} -\label{subsubsec:super-sub-script} -\begin{cnltxlist} - \keyval{spvmove}{刚性长度}\Default{0pt} - 上标命令 \cs{super} 对应的上标垂直偏移量。 - \keyval{sphmove}{刚性长度}\Default{0pt} - 上标命令 \cs{super} 对应的上标水平偏移量。 - \keyval{sbvmove}{刚性长度}\Default{0pt} - 下标命令 \cs{sub} 对应的下标垂直偏移量。 - \keyval{sbhmove}{刚性长度}\Default{0pt} - 下标命令 \cs{sub} 对应的下标水平偏移量。 - \opt{nohmove} - 同时取消上标和下标的 \meta{水平偏移},与 \keyis{sphmove}{0pt} 和 \keyis{sbhmove}{0pt} 等效。 - \opt{novmove} - 同时取消上标和下标的 \meta{垂直偏移},与 \keyis{spvmove}{0pt} 和 \keyis{sbvmove}{0pt} 等效。 - \keyval{spcmd}{格式命令} - 上标命令 \cs{super} 对应的上标的格式命令。 - \keyval{sbcmd}{格式命令} - 下标命令 \cs{sub} 对应的下标的格式命令。 - \keyval{spbhmove}{刚性长度}\Default{0pt} - 上下标命令 \cs{supersub} 对应的上下标共同水平偏移量。 - \kvsplit{spbcmd}{上标格式,下标格式} - 上下标命令 \cs{supersub} 对应的上下标格式命令。以英文逗号分隔为前后两个部分分别设置上下标格式,也可以只有前部分,表示上标的格式。 - \kvsplit{vsep}{上标偏移,下标偏移}\Default{0.6ex} - 上下标命令 \cs{supersub} 对应的上下标额外垂直距离。前部分为上标的偏移量,后部分为下标的偏移量。如果只有前部分则上下标各自垂直移动当前值的一半。 - \keychoice{halign}{\fbox{l},c,r} - 上下标命令 \cs{supersub} 对应的上下标水平对齐方式,有左 \code{l}、居中 \code{c} 和右 \code{r} 三种对齐方式。 -\end{cnltxlist} - \subsection[超链接]{超链接\smodule{ref}} \label{subsec:hyperlinks} 模块 \module*{ref} 将超链接选项交给 \pkg*{hyperref} 宏包处理。除了一些超链接颜色的选项失效,其它由宏包全局和接口命令 \cs*{hypersetup} 支持的多数选项可用。 @@ -466,46 +440,47 @@ 将目录中的超链接取消、置于标题上、置于页码上或置于标题和页码上。 \end{cnltxlist} -\subsection[行距]{行距\smodule{spread}} -\label{subsec:spread} -行距因子用于设置各种行距倍数,\meta{数值} 是不带有长度单位的浮点数。各类行距既可以在导言区全局设置,也可以在正文中设置对后面生效。 +\subsection[间距]{间距\smodule{space}} +\label{subsec:space} +间距模块 \module*{space} 用于调整段落中的间距。带有 \option*{spread} 的选项可以设置行距倍数,\meta{数值} 是不带有长度单位的浮点数。各类行距既可以在导言区全局设置,也可以在正文中设置对后面生效。 \begin{cnltxlist} - \keyval{line}{数值}\Default{1.354} - 正文行距因子。中文主题下行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option*{linespread} 则初始值设为它的值。 - \keyval{table}{数值}\Default{1.354} + \keyval{linespread}{数值}\Default{1.354} + 正文行距因子。中文主题下行距因子初始值为 \code{1.354}(相当于 \textsf{Word} 的1.25倍行距),如果设置了文类或 \pkg*{ctex} 宏包的全局行距选项 \option{linespread} 则初始值设为它的值。 + \keyval{tabspread}{数值}\Default{1.354} 表格内容行距因子,对传统表格 \env{tabular} 和 \env{tabularx} 等环境生效。\pkg*{tabularray} 宏包的 \env{tblr} 环境自带 \option*{stretch} 和 \option*{rowsep} 等行间距选项,这里不做调整。 - \keyval{math}{数值}\Default{1.2} + \keyval{mathspread}{数值}\Default{1.2} 数学环境的行距因子,包含了 \pkg*{amsmath} 和 \pkg*{mathtools} 宏包提供的公式环境。 - \keyval{caption-figure}{数值}\Default{1.2} + \keyval{capfig-spread}{数值}\Default{1.2} 图片题注的行距因子。 - \keyval{caption-table}{数值}\Default{1.2} + \keyval{captab-spread}{数值}\Default{1.2} 表格题注的行距因子。 - \keyval{caption-listing}{数值}\Default{1.2} + \keyval{caplst-spread}{数值}\Default{1.2} 代码题注的行距因子。 - \keyval{caption-every}{数值}\Default{1.2} + \keyval{caption-spread}{数值}\Default{1.2} 同时设置图片、表格和代码题注的行距因子。 - \keyval{footnote}{数值}\Default{1.2} + \keyval{fntspread}{数值}\Default{1.2} 脚注内容整体的行距因子。可以使用 \module*{hdr} 模块 \option{fnpara-format} 选项的代码单独覆盖每个脚注的行距,从而使脚注间和内容文本自身的行距不同。 \begin{ctexexam} - \ebspreadset{footnote = 1.3} + \ebspaceset{fntspread = 1.3} \ebhdrset{fnpara-format = \linespread{1.2}\selectfont} \end{ctexexam} - \keyval{every}{数值} + \keyval{everyspread}{数值} 统一设置上述所有的行距因子。 - \keyval{abovedisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}\newtag% + \keyval{abovedisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex} 行间公式与上面正文间的额外距离。 - \keyval{belowdisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex}\newtag% + \keyval{belowdisplayskip}{弹性长度}\Default{0.5ex plus .1ex minus .1ex} 行间公式与下面正文间的额外距离。 \end{cnltxlist} \subsection[部件字体]{部件字体\smodule{font}} \label{subsec:font} +部件字体模块 \module*{font} 用于设置除了正文外其它排版元素的字体。 \begin{cnltxlist} \keyval{caption-table}{字体命令}\Default{\cs*{sffamily}\cs*{small}} 设置表格题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。 \keyval{caption-figure}{字体命令}\Default{\cs*{sffamily}\cs*{small}} 设置图片题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。 - \keyval{caption-listing}{字体命令}\Default{\cs*{sffamily}\cs*{small}} + \keyval{caption-lstlisting}{字体命令}\Default{\cs*{sffamily}\cs*{small}} 设置代码题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。 \keyval{caption-every}{字体命令}\Default{\cs*{sffamily}\cs*{small}} 同时设置图片、表格和代码题注的字体命令。 @@ -514,7 +489,7 @@ \keyval{marginpar}{字体命令}\Default{\cs*{footnotesize}} 设置边注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。 \command{ebaddtofont}[\marg{字体类型}\marg{字体命令}] - 用于在上述各种字体原有的格式上附加代码。其中 \meta{字体命令} 也可以包括行距命令且相对于 \module*{spread} 模块具有优先性,不同题注的 \meta{字体类型} 则为相应选项的后缀名。 + 用于在上述各种字体原有的格式上附加代码。其中 \meta{字体命令} 也可以包括行距命令且相对于 \module*{space} 模块具有优先性,不同题注的 \meta{字体类型} 则为相应选项的后缀名。 \begin{ctexexam} \ebaddtofont{every}{\linespread{1.5}\selectfont} \ebaddtofont{footnote}{\sffamily} @@ -525,7 +500,7 @@ \label{subsec:reference} \begin{cnltxlist} \keychoice{backend}{\fbox{bibtex},biblatex} - 参考文献处理后端。默认用传统的 \hologo{BibTeX} 处理参考文献\footnote{使用 \hologo{BibTeX} 引擎时加载 \pkg*{natbib} 宏包,使用 \hologo{biber} 时将加载 \pkg*{biblatex} 宏包。}。 + 参考文献处理后端。选择 \code{bibtex} 时使用传统的 \hologo{BibTeX} 引擎处理参考文献,加载 \pkg*{natbib} 宏包。选择 \code{biblatex} 时使用 \hologo{biber} 引擎,加载 \pkg*{biblatex} 宏包。若自动载入参考文献宏包则位于导言区末尾,但在 \pkg*{hyperref} 宏包之前。 \keychoice{bibstyle}{\fbox{numerical},authoryear,\optpath*{other sty}} 参考文献格式使用中国参考文献推荐标准GB/T 7714-2015,对应顺序编码制和著者—出版年制两种风格。若使用其它格式,使用 \hologo{BibTeX} 处理时需确保正确的 \code{bst} 文件,使用 \hologo{biber} 处理可使用 \pkg*{biblatex} 宏包支持的参考文献风格名称。 \keyval{citestyle}{标注风格} @@ -541,9 +516,9 @@ \keyval{prenote}{参考文献前注} 该选项选择由 \cs{defbibnote} 所定义的前注,缺省状态下不打印任何前注。 \keyval{section}{整数}\Default{0} - 只打印在指定文节中引用的条目。该参考文献节从1开始编号,所有在 \env*{refsection} 环境外给出的引用标记为第零节。 + 只打印第 \meta{整数} 文节中引用的条目。该参考文献节从1开始编号,所有在 \env*{refsection} 环境外给出的引用标记为第零节。 \keyval{type}{条目类型} - 指定条目的打印类型。 + 只打印名为 \meta{条目类型} 的文献条目。 \keyval{filter}{过滤器名} 使用由 \cs{defbibfilter} 定义的 \option*{filter} 来过滤条目。 @@ -577,11 +552,11 @@ \keyval{style}{定理样式}\Default{default} 选项的值为使用 \cs{declaretheoremstyle} 命令新定义的定理样式。 - 使用 \cs{declaretheorem} 命令以\ref{exam:new theorem sty} 中的定理样式 \code{fancy} 新建一个定理环境猜想,然后用一个基于 \pkg*{tcolorbox} 宏包的预置彩色盒子 \env{easyboxi} 增加背景: + 使用 \cs{declaretheorem} 命令以\ref{exam:new theorem sty} 中的定理样式 \code{fancy} 新建一个定理环境 \env*{lemma},然后用一个基于 \pkg*{tcolorbox} 宏包的预置彩色盒子 \env{easyboxi} 增加背景: \begin{ctexexam}[labelref = exam:new theorem env] - \declaretheorem[style = fancy,name = 猜想]{caixiang} + \declaretheorem[style = fancy,name = 引理]{lemma} \addtotcbstyle{tc-easyboxi}{colback = GreenYellow} - \tcolorboxenvironment{caixiang}{tc-easyboxi} + \tcolorboxenvironment{lemma}{tc-easyboxi} \end{ctexexam} \command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式}\oarg{键值列表2}] 定理样式声明命令,键值列表支持自身以及定理声明命令 \cs{declaretheorem} 的所有选项。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,其中支持的选项如下: @@ -624,21 +599,21 @@ \command{listoftheorems}[\sarg\oarg{键值列表}]\default{} \item\key{listoftheorems}{定理目录标题名} \command{settheoremtocline}[\sarg\marg{环境名}\marg{标题定义}]\newtagv{2024bb}% - 对 \pkg*{thmtools} 宏包的定理环境目录命令 \cs{listoftheorems} 进行了适配调整,\ref{subsec:directory command} 和\ref{subsec:catalog} 中的选项机制均可用,但标题定义选项 \option{tocline} 较为特殊,需用 \cs{settheoremtocline} 命令单独设置。在 \meta{标题定义} 中有三个命令 \cs{thmtname}、\cs{thmtenvname} 和 \cs{thmtnote} 分别代表定理名、定理环境名和题注用于排版目录条目。 + 对 \pkg*{thmtools} 宏包的定理环境目录命令 \cs{listoftheorems} 进行了适配调整,\ref{subsec:directory command} 和\ref{subsec:contents} 中的选项机制均可用,但标题定义选项 \option{tocline} 较为特殊,需用 \cs{settheoremtocline} 命令单独设置。在 \meta{标题定义} 中有三个命令 \cs{thmtname}、\cs{thmtenvname} 和 \cs{thmtnote} 分别代表定理名、定理环境名和题注用于排版目录条目。 \end{cnltxlist} \optpath{thmt/}\key{loeskip}{弹性长度}\Default{10pt} 定理目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。 \command{thmtifnote}[\marg{存在题注代码}\marg{不存在题注代码}] - 如果标题没题注即定理环境不用可选参数,则标题不加入定理目录,这是默认且合理的行为。若需要将无题注的标题加入目录可将 \meta{环境名} 加入目录风格的 \option{show} 选项或使用 \cs*{settheoremtocline}\code{*} 命令。是否存在题注需要在 \meta{标题定义} 中使用 \cs{thmtifnote} 命令判定,从而输出不同的内容。 + 如果标题没题注即定理环境不用可选参数,则标题不加入定理目录,这是默认且合理的行为。若需要将无题注的标题加入目录可将 \meta{环境名} 传给目录风格的 \option{show} 选项或使用 \cs*{settheoremtocline}\code{*} 命令。是否存在题注需要在 \meta{标题定义} 中使用 \cs{thmtifnote} 命令判定,从而输出不同的内容。 \command{thmtifname}[\marg{存在编号代码}\marg{不存在编号代码}] 在 \meta{标题定义} 中测试当前定理是否有编号从而输出不同的内容,定理风格选项 \keyis{numbered}{no} 设置当前定理环境没有编号。 \begin{ctexexam} - \contentsuse{caixiang}{loe} - \RegisterTocName{caixiang} - \setlisttheoremstyle{ignoreall,show = caixiang} - \settheoremtocline{caixiang} + \contentsuse{lemma}{loe} + \RegisterTocName{lemma} + \setlisttheoremstyle{ignoreall,show = lemma} + \settheoremtocline{lemma} { - \listnumberline{caixiang} + \listnumberline{lemma} \thmtname\thmtifnote{[\thmtnote]}{} } \end{ctexexam} @@ -646,16 +621,16 @@ \subsection[页面尺寸]{页面尺寸\smodule{geo}} \label{subsec:page margins} -模块 \module*{geo} 会将选项(除了前两个为附加)交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种代表性选项,其它选项可查阅宏包帮助文档。当在此设置纸张规格时,会覆盖文类选项 \option{paper} 的设置。 +页面尺寸模块 \module*{geo} 用于设置纸张大小和各种页面边距,它将选项交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种 \pkg*{geometry} 不同键值输入方式的选项,前面有\hface 符号的选项为额外附加,其它选项可查阅宏包帮助文档。当用此模块设置纸张规格时,会覆盖全局选项 \option{paper} 的设置。 \begin{cnltxlist}[itemsep = 0ex] - \keyval{headruleskip}{页眉线间距}\Default*{0pt} - \keyval{footruleskip}{页脚线间距}\Default*{3.5pt} - \kvsplit{hdivide}{左边距,版心文本宽度,右边距}\default{} + \keyval{headruleskip}{页眉线间距}\dtag\Default*{0pt} + \keyval{footruleskip}{页脚线间距}\dtag\Default*{3.5pt} + \kvsplit{hdivide}{左边距,版心宽度,右边距}\default{} \kvsplit{hmargin}{左边距,右边距}\default{} - \keyval{textheight}{版心文本高度}\default{} + \keyval{textheight}{版心高度}\default{} \keychoice{nofoot}{true,\fbox{false}}\default{} \begin{ctexexam} - \ebgeoset + \ctexset[geo] { headruleskip = 3pt, vscale = 0.9, @@ -665,29 +640,55 @@ \end{ctexexam} \end{cnltxlist} +\subsection[图表题注]{图表题注\smodule{cap}} +\label{subsec:caption} +模块 \module*{cap} 用于设置图表等浮动体的题注格式。题注主要由三部分组成:标题标签即图表名与题注编号的组合,标题文本本身通常是内容的简短描述,以及将文本与标签分开的题注分隔符。可以在导言区设置整体格式,也可以在正文使用局部更改格式。模块 \module*{cap} 由 \pkg*{caption} 宏包提供支持,接口选项与 \pkg*{caption} 宏包完全一致,但写法为 \meta{条目名}\code{/}\meta{选项}。\pkg*{caption} 宏包提供了多种方法来定制浮动环境(例如 \env{figure} 和 \env{table})中的题注,并可与许多其它宏包配合使用。功能包括旋转题注、侧向题注和连续题注等。下面列举几个题注选项的用法,\ref{exam:caption set} 中两种设置题注的方法是等效的,更多选项和创建方法可查看宏包文档: +\begin{cnltxlist}[itemsep = 0ex] + \keyval{table/labelsep}{标签分隔符}\default{} + \keyval{figure/format}{题注格式}\default{} + \keyval{lstlisting/font}{题注字体}\default{} + \begin{ctexexam}[labelref = exam:caption set] + \ctexset[cap] + { + table/labelsep = space, + figure/format = plain + } + \captionsetup[table]{labelsep = space} + \captionsetup[figure]{format = plain} + \end{ctexexam} + \begin{cnltxlist} + \command{RegisterCapOptions}[\marg{条目名列表}] + 给模块 \module*{cap} 注册题注类型为 \meta{条目名} 的 \pkg*{caption} 接口选项。已预注册 \module*{figure}、\module*{table} 和 \module*{lstlisting} 三种类型的题注选项。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。 + \end{cnltxlist} + \command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{} + \command{captionof}[\sarg\marg{条目名}\oarg{目录标题}\marg{标题}]\default{} + \command{bicaption}[\sarg\oarg{目录中文标题}\marg{中文标题}\oarg{目录英文标题}\marg{英文标题}] + 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见宏包文档。 +\end{cnltxlist} + \subsection[页眉页脚]{页眉页脚\smodule{hdr}} \label{subsec:header and footer} -模块 \module*{hdr} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。标题标记由标签和标题组成,选项中参数 \code{\#1} 代表当前章、节或小节的标题。在 \cls*{book} 模式时使用标题标记选项 \option{chap-mark} 和 \option{sec-mark},在 \cls*{article} 模式时使用 \option{sec-mark} 和 \option{subsec-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。 +模块 \module*{hdr} 设置的命令由 \pkg*{fancyhdr} 宏包提供支持。标题标记由标签和标题组成,选项中参数 \code{\#1} 代表当前章、节或小节的标题。在 \cls*{book} 模式时使用标题标记选项 \option{chapter-mark} 和 \option{section-mark},在 \cls*{article} 模式时使用 \option{section-mark} 和 \option{subsection-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。 \begin{cnltxlist} - \keyval{chap-mark}{标题标记} - \code{chapter} 级别标题标记的内容,包含了标签选项 \option{chap-label} 和章标题 \code{\#1}。 - \keyval{sec-mark}{标题标记} - \code{section} 级别标题标记的内容,包含了标签选项 \option{sec-label} 和节标题 \code{\#1}。 - \keyval{subsec-mark}{标题标记} - \code{subsection} 级别标题标记的内容,包含了标签选项 \option{subsec-label} 和小节标题 \code{\#1}。 - \kvsplit-{chap-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}} - \code{chapter} 级别标题标记的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应章编号计数器值的输出命令,必选参数是编号与标题之间的距离命令: + \keyval{chapter-mark}{标题标记} + \code{chapter} 级别标题标记的内容,包含了标签选项 \option{chapter-label} 和章标题 \code{\#1}。 + \keyval{section-mark}{标题标记} + \code{section} 级别标题标记的内容,包含了标签选项 \option{section-label} 和节标题 \code{\#1}。 + \keyval{subsection-mark}{标题标记} + \code{subsection} 级别标题标记的内容,包含了标签选项 \option{subsection-label} 和小节标题 \code{\#1}。 + \kvsplit-{chapter-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{1em}} + \code{chapter} 级别标题标记的标签(标题有编号时)。比标题标记选项更常用,可选参数是对应章编号计数器值的输出命令,必选参数是标题标签与内容之间的距离命令: \begin{ctexexam} \ebhdrset { - chap-label = [\thechapter]{\hspace{1em}}, - sec-mark = \CTEXifname{\CTEXthesection——}{}#1 + chapter-label = [\thechapter]{\hspace{1em}}, + section-mark = \CTEXifname{\CTEXthesection——}{}#1 } \end{ctexexam} - \kvsplit-{sec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} - \code{section} 级别标题标记的标签,用法与 \option{chap-label} 类似。 - \kvsplit-{subsec-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} - \code{subsection} 级别标题标记的标签,用法与 \option{chap-label} 类似。 + \kvsplit-{section-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} + \code{section} 级别标题标记的标签,用法与 \option{chapter-label} 类似。 + \kvsplit-{subsection-label}{\oarg{编号输出命令}\marg{距离命令}}\Default{\cs*{hspace}\Marg{0.5em}} + \code{subsection} 级别标题标记的标签,用法与 \option{chapter-label} 类似。 \keyval{headrule}{横线命令} 绘制页眉横线的选项,可以使用 \cs*{hrule} 或\ref{exam:markrule} 所述 \cs{markrule} 等画线命令来绘制横线。 \keyval{footrule}{横线命令} @@ -715,7 +716,12 @@ \command{markboth}[\marg{左页标题标记}\marg{右页标题标记}]\default{} \command{markright}[\marg{右页标题标记}]\default{} \command{markdouble}[\marg{双页标题标记}] - 这三个命令用于手动设置当前页标题标记,特殊情况下可以使用它们定义与标题不同的页眉页脚标记。上述标记命令内容的选项便是基于这三个命令。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。 + 这三个命令用于手动设置当前页标题标记,特殊情况下可以使用它们定义与标题不同的页眉页脚标记。其中 \cs{markdouble} 根据是否是双面打印设置相应标记。如果是单面打印,则 \meta{左页标题标记} 无效。标题标记选项 \meta{级别}\option*{-mark} 定义的是它们的参数,左右页标记规则已经进行了优化调整,若需更改可以重定义 \code{\textbackslash}\meta{级别}\code{\textcolor{cs}{mark}} 命令。 + \begin{ctexexam} + \makeatletter + \renewcommand{\sectionmark}[1]{\markright{\eb@mark@section@whole{#1}}} + \makeatother + \end{ctexexam} \end{cnltxlist} \command{markrule}[\oarg{长度}\darg{颜色名}\marg{线宽}\baroarg{上间距,下间距}] 实线命令 \cs{markrule} 既可在 \meta{横线命令} 中用于绘制页眉页脚横线,也可以在正文中使用。\meta{长度} 默认为版心的宽度,上下间距为横线与上下方部件的间距,带有长度单位,上下间距之间用符号 \code{|} 分开,若只有一部分则表示 \meta{上间距}。下面举一个设置页眉内容的例子: @@ -736,14 +742,16 @@ \ebhdrset{footnotetype = plain,footnotetype = bottom} \ebhdrset{footnotetype = {hang,bottom}} \end{ctexexam} + \command{PushFntBottom}\newtagv{2024cx}% + 默认情况下当具有 \code{b} 参数的底部浮动体与脚注同时存在时,脚注将位于浮动体上部。此命令可使脚注始终位于页面底部,与 \keyis{footnotetype}{bottom} 作用相同,只能在导言区全局使用。 \keyval{fnfirstindent}{刚性长度}\Default{1em} 每个脚注首段的首行缩进(悬挂缩进 \code{hang} 为整段缩进),等于长度 \cs{fnfirstindent} 的值。 \keyval{fnafterindent}{刚性长度}\Default{2em} 每个脚注第二段及之后段落的首行缩进,等于长度 \cs{fnafterindent} 的值。 \keyval{fnparskip}{弹性长度}\Default{0ex plus .1ex} 不同脚注自身的段落间距,脚注内容文本分段时生效,等于长度 \cs{fnparskip} 的值。 - \keyval{footnotesep}{刚性长度}\newtag% - 不同脚注之间的距离,默认情况下它自适应 \module*{spread} 模块脚注行距选项 \option{footnote} 的值。 + \keyval{footnotesep}{刚性长度} + 不同脚注之间的距离,默认情况下它自适应 \module*{space} 模块脚注行距选项 \option{fntspread} 的值。 \keychoice{fntext-pos}{normal,\fbox{super}} 设置脚注内容标记的位置,正常文本或是上标形式。 \keychoice{fnmark-num}{\fbox{plain},pifont,pifont*,pisans,pisans*,\optpath*{short num}} @@ -758,7 +766,7 @@ \end{ctexexam} \begin{cnltxlist}[itemsep = 0ex] \command{SetFntSymbsList}[\marg{符号表名}\marg{符号数量}\marg{符号列表}]\default{} - \command{UseFntSymbsList}[\marg{符号表名}]\newtag[Chg]% + \command{UseFntSymbsList}[\marg{符号表名}] 这两个命令用于在脚注短编号标记为 \code{s} 自定义符号型时设置符号列表。\cs{SetFntSymbsList} 命令用于定义名为 \meta{符号表名} 的符号列表,\cs{UseFntSymbsList} 命令用于启用已定义的符号列表。默认的脚注符号列表是空的,注意使用符号型标记的脚注时计数器 \code{footnote} 的值仍然递增,以及定义新列表时 \meta{符号列表} 的写法和命令顺序: \begin{ctexexam} \SetFntSymbsList{fancy}{2}{{1}{*}{2}{\P}} @@ -787,11 +795,11 @@ fnmarktext-format = \circledtext } \end{ctexexam} - \command{defupfntmark}[\marg{脚注正文标记格式}] + \command{defupfntmark}[\marg{正文标记格式}] 定义脚注正文标记的格式,与正文标记编号命令 \cs{theupfootnote} 配合使用。 - \command{defdownfntmark}[\marg{脚注内容标记格式}] + \command{defdownfntmark}[\marg{内容标记格式}] 定义脚注内容标记的格式,与内容标记编号命令 \cs{thedownfootnote} 配合使用。 - \command{deffntpara}[\marg{脚注段落文本格式}]\newtag% + \command{deffntpara}[\marg{段落文本格式}] 定义脚注段落文本的格式的命令。脚注段落文本由脚注内容标记和文本两部分组成,段落格式定义中参数 \code{\#1} 代表内容文本。 \command{notminipage}[\marg{普通页内容}\marg{迷你页内容}] 用于在定义脚注标记的命令中判断当前脚注是否处于迷你页而输出不同的内容。 @@ -831,8 +839,8 @@ \end{cnltxlist} \subsection[目录]{目录\smodule{toc}} -\label{subsec:catalog} -模块 \module*{toc} 将使用 \pkg*{titletoc} 宏包处理目录样式。默认包括 \module*{part}$\longrightarrow$\module*{subparagraph}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 条目名的键路径。选项前带有 \ding{73} 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{toc} 键路径下。目录选项均支持标题编号判定命令 \cs{CTEXifname}。目前支持多数学术论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。 +\label{subsec:contents} +模块 \module*{toc} 将使用 \pkg*{titletoc} 宏包处理目录样式。默认包括 \module*{part}$\longrightarrow$\module*{subparagraph}、\module*{figure}、\module*{table} 和 \module*{lstlisting} 条目名的键路径。选项前带有\hface 符号表示支持所有相应\textbf{条目名}的路径,其它选项则处于 \module*{toc} 键路径下。目录选项均支持标题编号判定命令 \cs{CTEXifname}\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。}。目前支持多数学术论文目录样式,更复杂的样式可以查看 \pkg*{titletoc} 的相关用法。 \begin{cnltxlist} \keyval{tocformat}{条目格式}\dtag 目录中各类型条目的格式。可以设置条目字体和加入垂直间距等,垂直间距最好使用防止垂直间距重合的 \cs*{addvspace} 命令。如果是段落型目录,格式代码仅在段落中当前级别条目前执行一次。也可以用 \cs{CTEXifname} 命令或 \option{tocformat*} 选项给有无编号的标题分别设置格式。 @@ -856,7 +864,7 @@ 目录条目标签与标题间的代码,默认为插入 \code{1em} 横向距离。 \keyval{tocbelow}{距离命令}\dtag 在目录条目下方执行的代码,可以插入垂直距离等命令。 - \keyval{tocline}{标题定义}\dtag[\textcolor{red}{\ding{73}}] + \keyval{tocline}{标题定义}\dtag[\sface] 这个选项在章节标题基础上扩展了浮动环境的题注标题在目录文件中的定义。章节和题注标题选项中参数 \code{\#1} 代表标题编号 \cs*{the}\meta{计数器} 对应的计数器名称,参数 \code{\#2} 则代表相应标题内容。 \begin{ctexexam} \ctexset @@ -874,17 +882,17 @@ } \end{ctexexam} \command{RegisterTocName}[\sarg\marg{条目名列表}]\newtagv[Changed]{2024bo}% - 给 \meta{条目名列表} 中的每个 \meta{条目名} 标题注册用于设置目录样式的选项,即选项前有符号 \ding{73} 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后默认格式与图表条目相同。这个命令可以重复使用,会重置目录条目为默认格式。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用: + 给 \meta{条目名列表} 中的每个 \meta{条目名} 标题注册用于设置目录样式的选项,即选项前有符号\hface 表示需要注册后使用。前面提到的条目类型均已注册,新类型的条目注册后默认格式与图表条目相同。这个命令可以重复使用,会重置目录条目为默认格式。带有星号参数的命令使注册目录的条目形成一个段落,此时多出下面三个选项可用: \keyval{tocbegin}{开始代码}\dtag\newtagv{2024as}% 当前级别目录条目第一个标题前的代码,仅在存在更高级别的条目时有效。 \keyval{tocsep}{中间代码}\dtag\Default{\Marg{.—}}\newtagv{2024as}% 当前级别目录条目每个标题之间的代码。 \keyval{tocend}{结束代码}\dtag\Default{\Marg{.}}\newtagv{2024as}% 当前级别目录条目最后一个标题后的代码。 - \command{contentsuse}[\marg{条目名}\marg{扩展名}] - 激活条目类型名称为 \meta{条目名} 的目录定制功能,它使用的目录文件后缀为 \meta{扩展名}。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。 + \command{contentsuse}[\oarg{目录层次}\marg{条目名}\marg{扩展名}]\newtagv[Changed]{2024ce}% + 激活条目类型为 \meta{条目名} 的目录定制功能,目录文件后缀为 \meta{扩展名},若 \meta{扩展名} 为 \code{toc} 则条目会自动激活。可选参数 \meta{目录层次} 为条目在目录中的层次深度,默认值为 \code{-1000},当它大于目录深度计数器 \code{tocdepth} 时不显示。图表等标题的目录条目无深度因此为默认值,章节标题 \module*{part}$\longrightarrow$\module*{subparagraph} 的深度则从 \code{-1} 到 \code{5} 依次递增。需要在激活条目后再使用命令 \cs{RegisterTocName} 注册选项。 \command{DeclareFloatList}[\marg{条目名}\marg{扩展名}] - 声明一种条目类型的目录命令 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}},并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,例如搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有红色符号 \textcolor{red}{\ding{73}}(仍包含黑色符号选项的性质)表示在声明后可用。下面举一个声明算法环境和对应题注目录的例子: + 声明一种条目类型的目录命令 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}},并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,例如搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有实心符号\sface(仍包含空心符号\hface 选项的性质)表示在声明后可用。下面举一个声明算法环境和对应题注目录的例子: \begin{ctexexam} \usepackage{newfloat} \DeclareFloatingEnvironment[ @@ -895,23 +903,23 @@ \DeclareFloatList{algorithm}{loa} \listofalgorithms[multoc] % 在正文中输出双栏算法目录 \end{ctexexam} - \command{AllotCaptionExt}[\marg{条目名}\marg{扩展名}] + \command{AssignCaptionExt}[\marg{条目名}\marg{扩展名}] 给条目类型名称为 \meta{条目名} 的标题分配目录文件 \meta{扩展名},注意 \meta{扩展名} 需要被定义在 \cs*{ext@}\meta{条目名} 命令中才有效(\pkg*{caption} 宏包的默认定义形式)。可以使不同的 \meta{条目名} 共享一个目录: \begin{ctexexam} - \AllotCaptionExt{table}{lof} + \AssignCaptionExt{table}{lof} \newcommand{\listoffiguretables}{\listoffigures} % 同时输出图表目录的命令 \end{ctexexam} - \command{AllotPartialExt}[\marg{扩展名1}\marg{扩展名2}]\newtagv{2024bk} - 给目录文件扩展名为 \meta{扩展名1} 的目录分配扩展名为 \meta{扩展名2} 的局部目录,预注册的条目均无需再分配。用于搭配题注标题 \cs{caption} 命令和 \pkg*{titletoc} 宏包的局部题注目录命令。 + \command{AssignPartialExt}[\marg{扩展名1}\marg{扩展名2}]\newtagv{2024bk} + 给目录文件扩展名为 \meta{扩展名1} 的目录分配扩展名为 \meta{扩展名2} 的局部目录\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。},预注册的条目均无需再分配。用于搭配题注标题 \cs{caption} 命令和 \pkg*{titletoc} 宏包的局部题注目录命令。 \begin{ctexexam} - \AllotPartialExt{loa}{pla} + \AssignPartialExt{loa}{pla} \startlist[fancy]{loa} \captionof{algorithm}{算法标题} \stoplist[fancy]{loa} \printlist[fancy]{loa}{}{} \end{ctexexam} \command{SetTocStyle}[\marg{条目名}\marg{风格名}\marg{键值列表}] - 定义条目类型名称为 \meta{风格名} 的目录风格。使用 \cs*{ctexset} 命令设置目录样式时,除了条目标题定义选项 \option{tocline},其它选项只有在目录输出命令前设置才有效,定义完目录风格后用 \cs{UseTocStyle} 命令可以在正文中任意位置生效。如果是没有 \ding{73} 符号的选项,\meta{条目名} 设置为 \module*{toc}。 + 定义条目类型名称为 \meta{风格名} 的目录风格。使用 \cs{ctexset} 命令设置目录样式时,除了条目标题定义选项 \option{tocline},其它选项只有在目录输出命令前设置才有效,定义完目录风格后用 \cs{UseTocStyle} 命令可以在正文中任意位置生效。如果是没有\hface 符号的选项,\meta{条目名} 设置为 \module*{toc}。 \command{UseTocStyle}[\marg{条目名}\marg{风格名}\marg{扩展名}] 使用对应条目类型名称为 \meta{风格名} 的目录风格,随后标题在目录中的格式会改变。本命令导言区和正文区均可使用,第三个必选参数还需要指定条目标题加入目录文件的 \meta{扩展名}。 \begin{ctexexam} @@ -933,14 +941,16 @@ 悬挂缩进选项 \option{hang} 使目录条目为悬挂缩进形式。缩进距离为条目标签及其与标题内容间距的长度和。通常情况下会统一设置条目标题是否悬挂缩进,因此这个选项被设计为对所有类型条目生效。 \keyval{lolskip}{弹性长度}\Default{10pt} 代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。 - \keyval{between}{代码钩子}\dtag[\textcolor{red}{\ding{73}}] - 目录标题与条目内容间的钩子(作用于标题下方间距之后),如果是 \cls*{book} 模式则默认插入 \code{-10pt} 垂直距离抵消首行目录的额外垂直间距,这是由于图表和 由 \pkg*{newfloat} 宏包所创建环境的目录默认每使用一次章标题在题注目录中插入 \code{10pt} 距离。除了条目名的键路径外,此选项也可用于 \module*{toc} 路径中,表示章节标题目录标题代码钩子,如果是 \cls*{book} 模式则默认插入 \code{-1pc} 垂直距离。 - \keyval{bibetween}{代码钩子} + \keyval{between}{格式代码}\dtag[\sface] + 目录标题与条目内容间的局部钩子(作用于标题下方间距之后),如果是 \cls*{book} 模式则默认插入 \code{-10pt} 垂直距离抵消首行目录的额外垂直间距,这是由于图表和 由 \pkg*{newfloat} 宏包所创建环境的目录默认每使用一次章标题在题注目录中插入 \code{10pt} 距离。除了条目名的键路径外,此选项也可用于 \module*{toc} 路径中,表示章节标题目录标题代码钩子,如果是 \cls*{book} 模式则默认插入 \code{-1pc} 垂直距离。 + \keyval{bibetween}{格式代码} 与选项 \option{between} 类似,是英文章节标题目录(如果启用)标题代码钩子。 \keychoice{dotalign}{\fbox{true},false} 将目录页码装进一个右对齐的水平盒子里。这样可以使目录引导线右端对齐并与页码保持一定间距,否则会与页码相连。 \keyval{pagenumwd}{刚性长度}\Default{1.55em} 设置开启 \option{dotalign} 选项时页码水平盒子的宽度。 + \keychoice{fileopen}{\fbox{once},odd} + 编译文档时打开目录文件进行写入操作的方式,这个选项影响重复使用目录命令时的输出行为。默认只在第一次编译时打开文件,选择 \code{odd} 将仅在奇数次编译时打开文件。 \keyval{tocafter-every}{距离命令}\Default{\cs*{hspace}\Marg{1em}} 统一设置所有类型条目编号与标题间的代码。 \keyval{tocindent-every}{刚性长度} @@ -953,8 +963,47 @@ \section{环境和命令} -\subsection{文区命令} +\subsection{封面和文区} \begin{cnltxlist} + \command{maketitle}[\oarg{键值列表}]\newtagv{2024dh}% + 重新改写了默认的封面标题命令,在保证原生风格的前提下使用 \pkg*{xtemplate} 宏包将封面抽象为由实例组成的模板。并为命令增加了可选参数,选项的含义与标准文档类一致: + \keyval{title}{文档标题} + 设置文档的标题,可以包含格式命令。如果没有设置标题而输出封面会报错。 + \keyval{author}{文档作者} + 设置文档的作者,可以包含格式命令。多位作者之间可以用 \cs*{and} 命令分隔,每个作者后可用 \cs*{thanks} 命令添加致谢脚注。 + \keyval{date}{文档日期}\Default{\cs*{today}} + 设置文档的日期,可以包含格式命令。默认的文档日期为当前日期 \cs*{today}。 + \command{DeclareInstance}[\Marg{easybook}\marg{位置}\Marg{cover}\marg{键值列表}] + 封面模板可用 \pkg*{xtemplate} 提供的实例声明命令进行自由定制,\ref{exam:cover instance} 举例说明了定制页面中部的内容。模板由页面上、中和下三个位置的实例组成,它们的 \meta{位置} 名字分别为 \code{top}、\code{middle} 和 \code{bottom}。每个实例的属性可用 \meta{键值列表} 修改,包含的选项如下: + \keyval{content}{实例内容} + 设置实例内容,可以包含任何记号列表。通常为格式和排版内容的命令,在局部生效。 + \keyval{beforecode}{实例前代码} + 设置实例内容前的代码,可以包含任何记号列表。通常为换页和垂直距离的命令。 + \keyval{aftercode}{实例后代码} + 与 \option{before} 选项类似,设置实例内容后的代码。 + \keychoice{align}{l,\fbox{c},r,n} + 设置实例内容的对齐方式,分别为左、中、右和自然对齐,自然对齐即正常的段落文本。 + \begin{ctexexam}[labelref = exam:cover instance] + \DeclareInstance{easybook}{middle}{cover} + { + content = + { + \thispagestyle{empty} + \begin{tblr} + { + columns = c, + hline{2-4} = {2}{0.5pt,solid}, + column{1} = {rightsep = 0pt} + } + 标题:& 一个文档标题 \\ + 作者:& 张三 \\ + 日期:& \today + \end{tblr} + }, + beforecode = \null\vspace{3cm}, + aftercode = \clearpage + } + \end{ctexexam} \command{frontmatter}[\sarg\oarg{编号格式}]\Default{Roman} 前言区命令。使部分和章标题不编号,带有星号的变体命令不使用 \cs{cleardoublepage} 命令。页码 \meta{编号格式} 可设置为 \code{arabic}、\code{Alph}、\code{alph}、\code{Roman}、\code{roman} 和 \code{chinese} 形式。 \command{mainmatter}[\sarg] @@ -969,14 +1018,14 @@ \subsection{目录命令} \label{subsec:directory command} -\easybook{} 改进了标准文档类中定制性较低的章节标题和图表标题目录命令。现在目录命令带有可选参数用于设置标题格式和栏数等,并且与标准文档类不同的是目录命令可在正文中\textbf{重复}使用。更多目录命令的创建和样式设置可参考\ref{subsec:catalog}。 +\easybook{} 改进了标准文档类中定制性较低的章节标题和图表标题目录命令。现在目录命令带有可选参数用于设置标题格式和栏数等,并且与标准文档类不同的是目录命令可在正文中\textbf{重复}使用\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。}。更多目录命令的创建和样式设置可参考\ref{subsec:contents}。 \begin{cnltxlist} \command{tableofcontents}[\sarg\oarg{键值列表}\darg{代码钩子}] 章节标题目录命令,支持中英文双语标题目录输出。带有星号参数不输出目录条目上方的标题。\meta{代码钩子} 是当输出方案 \keyis{plan}{both} 时中文与英文目录之间执行的代码,可以插入设置目录样式和换页等命令。 - \keychoice{plan}{\fbox{cn},bi,both}\newtag[Exp]% + \keychoice{plan}{\fbox{cn},bi,both} 章节标题目录的输出方案。\code{cn} 只输出中文目录,\code{bi} 只输出英文目录。\code{both} 同时连续输出中文和英文目录,需要与双语目录标题命令 \cs{bichapter} 等或双语标题选项 \option{title} 配合使用。 \keyval{bicontentsname}{英文目录标题}\Default{Contents} - 英文目录的标题,为通用接口命令 \cs*{ctexset} 的选项。 + 英文目录的标题,为通用接口命令 \cs{ctexset} 的选项。 \command{listoffigures}[\sarg\oarg{键值列表}] 输出图片目录命令。带有星号参数的命令不输出目录标题。 \command{listoftables}[\sarg\oarg{键值列表}] @@ -984,8 +1033,8 @@ \command{listoflstlistings}[\sarg\oarg{键值列表}] 输出代码目录命令。带有星号参数的命令不输出目录标题。 - 如果需要部分而不是全文的目录或其它类型的目录,可以查看 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。 - \command{SetTocOuter}[\marg{键值列表}]\newtag% + 如果需要局部而不是全文范围的目录或其它类型的目录,可以查看\ref{subsec:contents} 和 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。 + \command{SetTocOuter}[\marg{键值列表}] 统一设置上述所有目录可选参数的默认值\footnote{由于目录命令通常只在文中使用一次,因此不设计为可以分别指定不同目录的参数。},其中 \meta{键值列表} 的选项如下: \keyval{level}{标题命令} 设定输出目录标题的命令。如果使用 \option{title} 选项设置了双语标题则需要配合双语标题命令。 @@ -1004,8 +1053,8 @@ \kvsplit{title}{中文目录标题,英文目录标题} 用于更改目录的双语标题。标题之间用一个英文逗号分开,对主目录来说前部分为中文目录标题,后部分为英文目录标题,对图表和代码目录来说后部分则是加入英文目录的条目。也可以只有一部分,表示中文目录的标题。 \keychoice{bilist}{mix,\fbox{new}} - 确定章节标题目录中双语标题条目的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题。这是个全局选项,在所有目录的可选参数中使用均可生效,但推荐在章节标题目录中使用。 - \command{ebifbitoc}[\marg{英文目录代码}\marg{中文目录代码}]\newtag% + 确定章节标题目录中双语标题条目的输出排列方式。选项 \code{mix} 使每个英文标题条目在中文目录中跟随对应的中文标题输出,\code{new} 则在新建的英文目录中输出英文标题,此新目录的扩展名为 \code{tec}。这是个全局选项,在所有目录的可选参数中使用均可生效,但推荐在章节标题目录中使用。 + \command{ebifbitoc}[\marg{英文目录代码}\marg{中文目录代码}] 启用混合双语目录条目即 \keyis{bilist}{mix} 时,在设置目录样式时可以配合 \cs{ebifbitoc} 命令判断当前条目是否为英文,从而输出不同的代码。 \begin{ctexexam} \SetTocStyle{section}{fancy} @@ -1016,16 +1065,24 @@ \UseTocStyle{section}{fancy}{toc} \tableofcontents[bilist = mix] \end{ctexexam} + + 除了上述选项还支持 \CTeX 键值列表所有路径的章节标题样式选项,下面仅列举几个选项例子。需要注意的是标题样式选项根据 \option{level} 选项中的\textbf{最后}一个标题命令判断键路径,所以这个标题命令名必须存在于 \CTeX 键值列表路径中,或带有 \code{\textcolor{cs}{bi}} 前缀表示双语标题。 \keyval{format}{目录标题格式} - 设置目录标题的格式,在标题级别为 \code{chapter} 或者 \cls*{article} 模式且标题级别为 \code{section} 时有效。 + 设置目录标题的格式。 + \begin{ctexexam} + \tableofcontents[ + level = \clearpage\bisection*, + format = \centering\sffamily\Large + ] + \end{ctexexam} \keyval{aftername}{标签后代码} - 目录标题的标签与内容之间插入的代码,生效情形同上。 + 目录标题的标签与内容之间插入的代码。 \keyval{aftertitle}{标题后代码} - 目录标题内容之后插入的代码,生效情形同上。 + 目录标题内容之后插入的代码。 \keyval{break}{格式命令} - 控制章节标题与之前正文的分隔关系。一般用于设置是否在标题之前分页或者设置行间罚点,生效情形同上。 + 控制章节标题与之前正文的分隔关系。一般用于设置是否在标题之前分页或者设置行间罚点。 \keyval{pagestyle}{页面风格}\Default{empty} - 目录标题所在页的页面格式,仅当目录以 \code{chapter} 级别输出时有效。除了上述选项还支持 \CTeX 键值列表路径 \module*{chapter} 或 \module*{section} 所有的章节标题样式选项。 + 目录标题所在页的页面格式,仅当目录以 \code{chapter} 级别输出时有效。 \end{cnltxlist} \subsection{双语章节标题和新建标题} @@ -1048,9 +1105,9 @@ \BeforeAddtoBitoc{\ctexset{chapter/nmuber = \arabic{chapter}}} \end{ctexexam} \command{appendix}[\splitoarg{前名字,后名字}\darg{编号输出命令}] - 附录起始命令,其后的章节标题变为附录形式。\meta{前名字} 为英文目录中附录标题的前名字,同理 \meta{后名字} 为英文目录中附录标题的后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文目录中附录标题前名字。\meta{编号输出命令} 为附录标题计数器在英文目录中的编号命令。注意这两个参数仅对 \code{bichapter} 级别的标题生效。 - \command{BeforeAddtoBitoc}[\sarg\marg{英文标题加入目录前的代码}] - 作用于局部范围的英文目录标题条目钩子,代码在标题加入目录前执行,可以插入条目标题定义命令临时改变英文目录中条目的格式,带有星号参数的命令会重置之前的代码。这个命令设置英文目录条目的标题格式具有最高优先级,放置在导言区或 \cs{bichapter} 等双语标题命令前生效。举一个在英文目录节标题条目编号前添加 \code{Section} 字符串的例子: + 附录起始命令,其后的章节标题变为附录形式。\meta{前名字} 为英文目录中附录标题的前名字,同理 \meta{后名字} 为英文目录中附录标题的后名字。前后名字之间用一个半角逗号分开,也可以只有一部分,表示英文目录中附录标题前名字。\meta{编号输出命令} 为附录标题计数器在英文目录中的编号命令。注意这两个参数仅对 \code{chapter} 级别的标题生效。 + \command{BeforeAddtoBitoc}[\sarg\marg{格式代码}] + 英文目录中标题条目的格式钩子,\meta{格式代码} 在英文标题加入目录前执行,作用范围为局部。可以插入条目标题定义等命令临时改变英文目录中条目的格式,带有星号参数的命令会重置之前的代码。这个命令设置英文目录条目的标题格式具有最高优先级,放置在导言区或 \cs{bichapter} 等双语标题命令前生效。举一个在英文目录节标题条目编号前添加 \code{Section} 字符串的例子: \begin{ctexexam} \BeforeAddtoBitoc{\ctexset{section/name = Section\space}} \bisection{中文标题}{English title} @@ -1062,7 +1119,7 @@ \begin{ctexexam} \NewTitleCommand[chapter]{lchapter}{0} \NewTitleEntryCommand{lchapter} - \contentsuse{lchapter}{toc} + \contentsuse[0]{lchapter}{toc} \RegisterTocName{lchapter} \ctexset { @@ -1072,17 +1129,23 @@ \lchapter{正常标题} \lchapterentry{加入目录的标题} \end{ctexexam} + \command{CopyTitleFormat}[\marg{条目名1}\marg{条目名2}]\newtagv{2024cq}% + 将名为 \meta{条目名2} 的章节标题命令除了编号/名字外的格式复制给名为 \meta{条目名1} 的标题命令。 + \begin{ctexexam} + \ctexset{section/format = \sffamily\color{blue}} + \CopyTitleFormat{subsection}{section} + \end{ctexexam} \end{cnltxlist} -\subsection[上标和下标]{上标和下标\smodule{tools}} -上标和下标的功能来自 \pkg*{spbmark} 宏包,下面有三个命令可以用于输出上标和下标。可以使用键值列表的形式对上下标格式进行局部或全局设置,下面命令中两个可选参数的键值列表是等效的。全局设置的详情见\ref{subsubsec:super-sub-script},更多命令和详细用法见 \pkg*{spbmark} 宏包说明文档。 +\subsection[上标和下标]{上标和下标} +上标和下标的功能来自 \pkg*{spbmark} 宏包,可以使用键值列表的形式对上下标格式进行局部设置或用 \cs{spbset} 命令全局设置。所有选项也支持用 \module{tools} 模块设置,更多选项可见宏包文档。 \begin{cnltxlist} \command{super}[\sarg\oarg{键值列表1}\marg{内容}\oarg{键值列表2}] - 输出上标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\^{}} 符号和 \cs*{sp} 命令。 + 输出上标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\^{}} 符号和 \cs*{sp} 命令。命令中两个可选参数的键值列表等效。 \command{sub}[\sarg\oarg{键值列表1}\marg{内容}\oarg{键值列表2}] - 输出下标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\_{}} 符号和 \cs*{sb} 命令。 + 输出下标的命令,可用于文本和数学模式,在数学模式中可代替 \code{\_{}} 符号和 \cs*{sb} 命令。命令中两个可选参数的键值列表等效。 \command{supersub}[\sarg\oarg{键值列表1}\marg{上标内容}\marg{下标内容}\oarg{键值列表2}] - 同时输出上标和下标的命令,与简短命令 \cs{spb} 等效。 + 同时输出上标和下标的命令,与简短命令 \cs{spb} 等效。命令中两个可选参数的键值列表等效。 \command{spbifmath}[\marg{数学模式代码}\marg{文本模式代码}] 根据上下标处于数学还是文本模式分别设置不同的值,应当在格式命令或偏移距离选项中使用。 @@ -1092,7 +1155,11 @@ \keyval{hmove}{刚性长度}\Default{0pt} 上标或下标的水平偏移。如果是上下标命令使用则代表上标和上标的共同偏移。 \keyval{cmd}{格式命令} - 上标或下标的格式命令选项。最后一个命令可以带有一个参数,这个参数用于接受上标或下标。 + 上标或下标的格式命令选项。最后一个命令可以带有一个参数,这个参数用于接受上标或下标。下面两种设置方式是等效的: + \begin{ctexexam} + \spbset{spcmd = \color{red}} + \ctexset[tools]{spcmd = \color{red}} + \end{ctexexam} \keyval{height}{刚性长度} 段落中当前行上标或下标的基线与前一行的间距。 \keyval{depth}{刚性长度} @@ -1169,7 +1236,7 @@ \begin{cnltxlist} \command{hangpara}[\marg{缩进长度}\marg{缩进开始行数}] 悬挂缩进命令 \cs{hangpara} 使其后的一个段落保持悬挂缩进。参数与 \env{hangparas} 环境相同,不过只有一个段落。\meta{缩进长度} 可以是带单位的数值或由文本长度测定命令 \cs{widthof} 提供。 - \command{hangfrom}[\sarg\oarg{缩进长度}\marg{悬挂内容}\oarg{缩进开始行数}]\newtag% + \command{hangfrom}[\sarg\oarg{缩进长度}\marg{悬挂内容}\oarg{缩进开始行数}] 指定首行的 \meta{悬挂内容},其后一个段落保持悬挂缩进。\meta{缩进长度} 默认为 \meta{悬挂内容} 文本长度 \cs{hangwd} 的值,支持数学表达式。\meta{缩进开始行数} 默认为 \code{1}。如果是带有星号参数的命令,则首行不输出 \meta{悬挂内容},以等于 \meta{缩进长度} 长度的空白代替。 \begin{ctexexam} \hangfrom[\hangwd + 1em]{悬挂标签\hspace{0.5em}}[1] @@ -1182,7 +1249,7 @@ \subsection{代码} \begin{cnltxlist} \command{lstdefinestyle}[\marg{代码风格}\marg{键值列表}] - 代码抄录宏包 \pkg*{listings} 的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言和样式定义多种风格,默认使用的 \meta{代码风格} 为 \code{lst-latex}。 + 代码抄录宏包 \pkg*{listings} 提供了完善的排版功能,不需要前端处理器。这是它的代码风格定义命令,提供大量选项对代码样式进行高度定制。可以根据需要的代码语言定义多种风格,默认使用的 \meta{代码风格} 为适用于\TeX 语言的 \code{lst-latex}。 \command{lstinline}[\oarg{键值列表}\marg{行内代码}] 行内代码抄录命令。较原生的 \cs*{verb} 命令有较大改进,具有代码语言和样式支持。 \environment{lstlisting}[\oarg{键值列表}] @@ -1209,7 +1276,7 @@ \subsection{盒子} \label{subsec:box} -文档类预置了两个行间盒子环境和两个行内盒子命令,需要在导言区\textbf{手动载入} \pkg*{tcolorbox} 宏包提供支持。它们 \meta{配置选项} 的键值列表可见宏包文档的Option Keys一节,可以进行边距、字体及背景颜色等各种个性化设置。如果 \meta{配置选项} 较长且希望在原有基础上改为全局固定的样式,可以使用 \cs{addtotcbstyle} 命令设置,第一个参数为 \code{tc-}\meta{环境或命令名}。 +文档类预置了两个行间盒子环境和两个行内盒子命令,需要在导言区\textbf{手动载入} \pkg*{tcolorbox} 宏包提供支持。它们 \meta{配置选项} 的键值列表可见宏包文档的Option Keys一节,可以进行边距、字体及背景颜色等各种个性化设置。如果 \meta{配置选项} 较长且希望在原有基础上改为全局固定的样式,可以使用 \cs{addtotcbstyle} 命令设置,第一个参数为 \code{tc-}\meta{环境/命令名}。 \begin{cnltxlist} \command{deftcbstyle}[\marg{盒子风格}\marg{键值列表}] 新建或重置一个名称为 \meta{盒子风格} 的 \pkg*{tcolorbox} 宏包盒子风格,可以与 \cs{addtotcbstyle} 命令联用。 @@ -1287,7 +1354,7 @@ \command{setcounter}[\marg{计数器}\marg{整数}]\default{} \command{stepcounter}[\marg{计数器}] 常用的计数器设置命令。命令 \cs{newcounter} 创建一个初始值为0的新计数器。命令 \cs{setcounter} 将计数器的值设定为指定值。命令 \cs{stepcounter} 使计数器的值递增1。 - \command{counterwithin}[\sarg\oarg{格式}\marg{计数器}\oarg{连字符}\marg{父计数器}]\newtag[Chg]% + \command{counterwithin}[\sarg\oarg{格式}\marg{计数器}\oarg{连字符}\marg{父计数器}] 对计数器进行绑定的命令。将 \meta{计数器} 绑定于 \meta{父计数器},即 \meta{父计数器} 的值递增时 \meta{计数器} 的值会归零。输出格式 \cs*{the}\meta{计数器} 被定义为 \cs*{the}\meta{父计数器}\meta{连字符}\meta{格式}\marg{计数器}。\meta{格式} 一般为更改计数器编号形式的命令,默认为 \cs*{arabic}。带有星号参数的命令仅进行绑定不更改输出格式。 \command{counterwithout}[\sarg\oarg{格式}\marg{计数器}\marg{父计数器}] 对计数器关系进行解绑的命令。将 \meta{计数器} 解绑于 \meta{父计数器},同时输出格式被改为 \meta{格式}\marg{计数器}。带有星号参数的命令仅进行解绑不更改输出格式。 @@ -1301,8 +1368,8 @@ \begin{cnltxlist} \command{labelformat}[\marg{计数器}\marg{标签引用格式}] 标签格式命令 \cs{labelformat} 可以设置标签引用格式。\meta{标签引用格式} 中 \code{\#1} 代表 \cs*{the}\meta{计数器},可以设置引用序号的前缀和后缀。也可以使用 \pkg*{cleveref} 宏包提供更强大的标签功能。 - \command{AtEndPreamble}[\marg{钩子代码}] - 导言区末尾的钩子命令。为了保证兼容性 \pkg*{hyperref} 宏包被设计在导言区末尾载入,一些情况下需要钩子命令在 \pkg*{hyperref} 宏包后方执行 \meta{钩子代码},例如载入 \pkg*{cleveref} 宏包。 + \command{AtEndPreamble}[\marg{格式代码}] + 导言区末尾的钩子命令。为了保证兼容性 \pkg*{hyperref} 宏包被设计在导言区末尾载入,一些情况下需要钩子命令在 \pkg*{hyperref} 宏包后方执行 \meta{格式代码},例如载入 \pkg*{cleveref} 宏包。 \begin{ctexexam} \labelformat{chapter}{第#1章} \labelformat{chapter}{第\thechapter 章} @@ -1310,30 +1377,16 @@ \end{ctexexam} \end{cnltxlist} -\subsection{图表题注} -\pkg*{caption} 宏包提供了多种方法来定制浮动环境(例如 \env{figure} 和 \env{table})中的标题,并可与许多其它宏包配合使用。功能包括旋转题注、侧向题注和连续题注等。 -\begin{cnltxlist} - \command{captionsetup}[\oarg{条目名}\marg{键值列表}] - 这是 \pkg*{caption} 宏包的接口命令,\meta{键值列表} 提供多个选项更改图表题注的格式。题注主要由三部分组成:标题标签即图表名与题注编号的组合,标题文本本身通常是内容的简短描述,以及将文本与标签分开的题注分隔符。可以在导言区设置整体格式,也可以在正文使用局部更改格式。 -\end{cnltxlist} - -\begin{cnltxlist}[itemsep = 0ex] - \command{caption}[\sarg\oarg{目录标题}\marg{标题}]\default{} - \command{captionof}[\sarg\marg{条目名}\oarg{目录标题}\marg{标题}]\default{} - \command{bicaption}[\sarg\oarg{目录中文标题}\marg{中文标题}\oarg{目录英文标题}\marg{英文标题}] - 题注命令 \cs{caption} 用于在图表上下方插入题注,需要在浮动环境 \env*{figure} 和 \env*{table} 中使用。在浮动环境外可以使用 \cs{captionof} 命令,第一个参数指定条目名。可以搭配 \pkg*{newfloat} 宏包创建更多类型的浮动环境并设置相应题注。\cs{bicaption} 命令可以实现中英文双语题注,需要在导言区载入 \pkg*{bicaption} 宏包,具体用法见说明文档。 -\end{cnltxlist} - \subsection{索引} \begin{cnltxlist} \command{indexsetup}[\marg{键值列表}] - \pkg*{imakeidx} 宏包增强了索引的功能,可使用户在制作和排版文档的同时制作一个或多个索引。这是 \pkg*{imakeidx} 宏包的接口命令,用于设置索引表的整体格式。 + \pkg*{imakeidx} 宏包增强了索引的功能,可使用户在制作和排版文档的同时制作一个或多个索引。这是 \pkg*{imakeidx} 宏包的接口命令,用于设置索引表的整体格式,它的 \option{level} 和 \option{headers} 选项失效。 \command{index}[\oarg{索引名}\marg{标签}] 索引标签命令的可选参数可以用不同的 \meta{索引名} 给多个索引表设置标签。 \command{makeindex}[\oarg{键值列表}] 用于导言区开启索引收集的命令。这个命令可以重复使用收集多个索引表,以不同的 \meta{索引名} 作为区分,如果仅打印一个索引表没必要重复使用。 \command{printindex}[\sarg\oarg{键值列表}] - 打印不同索引表的命令。这个命令被重新定义,\meta{键值列表} 中的选项与\ref{subsec:directory command} 其它目录命令相同,但是接口命令 \cs{indexsetup} 的部分选项失效。 + 打印不同索引表的命令。这个命令被重新定义,\meta{键值列表} 中的选项与\ref{subsec:directory command} 其它目录命令相同,并多出 \option{name} 选项用于指定打印索引的名字。 \keyval{name}{索引名} 指定输出名为 \meta{索引名} 的索引表,如果只使用一个索引表则默认为项目文件名不需要指定。 \end{cnltxlist} @@ -1389,14 +1442,6 @@ 该命令由文档宏包 \pkg*{pdfpages} 提供。可以将其它 \code{pdf} 文档插入当前文档,比如插入其它软件制作的封面。可选参数可以指定插入页数、逻辑页和横向页面等,详情查看宏包文档。 \end{cnltxlist} -\subsection{下划线} -\begin{cnltxlist}[itemsep = 0ex] - \command{uline}[\marg{下划直线}]\default{} - \command{uuline}[\marg{下划双直线}]\default{} - \command{uwave}[\marg{下划波浪线}] - \pkg*{ulem} 宏包提供了多种下划线命令,可以重新定义 \cs{ULthickness} 命令控制下划线的粗细。下划线的深度由 \cs{ULdepth} 控制,默认值 \cs*{maxdimen} 是一个允许深度根据当前字体变化的特殊标志,当然也可以使用 \cs*{setlength} 设定为指定深度。 -\end{cnltxlist} - \appendix \setlist[1]{} \begin{changelog}[title = 更新日志] @@ -1439,9 +1484,9 @@ \item 新增脚注段落文本格式定义命令 \cs{deffntpara} 和脚注间距离选项 \option{footnotesep}。 \item 新增悬挂缩进命令 \cs{hangfrom}。 \item 新增行间公式与正文上下间距选项 \option{abovedisplayskip} 和 \option{belowdisplayskip}。 - \item 新增目录文件扩展名分配命令 \cs{AllotCaptionExt}。 + \item 新增目录文件扩展名分配命令 \cs{AssignCaptionExt}。 \end{version} - \shortversion{v = 2024aq,date = 2022/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。} + \shortversion{v = 2024aq,date = 2024/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。} \begin{version}[v = 2024as,date = 2024/04/19] \changed \item 目录条目样式注册命令 \cs{RegisterTocName} 增加星号参数,支持设置段落型目录。 @@ -1449,16 +1494,36 @@ \item 新增目录条目标题标签定义的选项 \option{toclabel}。 \item 新增段落型目录条目附加代码的选项 \option{tocbegin}、\option{tocsep} 和 \option{tocend}。 \end{version} - \shortversion{v = 2024aw,date = 2022/04/22,changes = 新增新建章节标题命令 \cs{NewTitleCommand} 和 \cs{NewTitleEntryCommand}。} - \shortversion{v = 2024bb,date = 2022/04/26,changes = 增加对 \pkg*{thmtools} 宏包定理环境目录 \cs{listoftheorems} 的支持。} - \shortversion{v = 2024bk,date = 2022/05/07,changes = 新增局部题注目录分配命令 \cs{AllotPartialExt}。} - \begin{version}[v = 2024bn,date = 2022/05/10] + \shortversion{v = 2024aw,date = 2024/04/22,changes = 新增新建章节标题命令 \cs{NewTitleCommand} 和 \cs{NewTitleEntryCommand}。} + \shortversion{v = 2024bb,date = 2024/04/26,changes = 增加对 \pkg*{thmtools} 宏包定理环境目录 \cs{listoftheorems} 的支持。} + \shortversion{v = 2024bk,date = 2024/05/07,changes = 新增局部题注目录分配命令 \cs{AssignPartialExt}。} + \begin{version}[v = 2024bn,date = 2024/05/10] \fixed \item 修复 \module*{toc} 模块中带有 \option*{every} 后缀的选项不对所有已注册条目有效的问题。 \added \item 新增统一设置所有目录格式时的条目类型排除命令 \cs{ExcludeEveryTocName}。 \end{version} + \shortversion{v = 2024cd,date = 2024/06/14,changes = 修复全局选项 \option{class} 无法正确切换单双面排版的问题。} + \begin{version}[v = 2024cf,date = 2024/06/16] + \fixed + \item 修复和改进新建章节/图表标题时目录层次深度的问题。 + \changed + \item \module*{tools} 模块的图片路径选项 \option{figurepath} 可在正文中使用。 + \end{version} + \shortversion{v = 2024ci,date = 2024/06/22,changes = 修复使用 \code{flush} 类型脚注报错。} + \shortversion{v = 2024co,date = 2024/07/06,changes = 目录命令的可选参数支持 \CTeX 键值列表所有路径的章节标题样式选项。} + \shortversion{v = 2024cq,date = 2024/07/12,changes = 新增章节标题格式复制命令 \cs{CopyTitleFormat}。} + \shortversion{v = 2024cu,date = 2024/07/20,changes = 修复无编号的定理环境标签命令 \cs*{p@}\meta{定理名} 缺失导致报错的问题。} + \shortversion{v = 2024cx,date = 2024/07/28,changes = 新增将脚注置于页面底部的命令 \cs{PushFntBottom}。} + \begin{version}[v = 2024dh,date = 2024/08/06] + \changed + \item 取消默认载入 \pkg*{ulem} 下划线宏包。 + \added + \item 使用 \pkg*{xtemplate} 宏包将封面标题命令 \cs{maketitle} 抽象为由实例组成的模板。 + \item 新增图表题注模块 \module*{cap}。 + \end{version} \end{changelog} \nocite{*} +% \AddToHook{cmd/printindex/before}{\clearpage} \end{document}
\ No newline at end of file |