diff options
Diffstat (limited to 'macros/latex/contrib/easybook/easybook.tex')
-rw-r--r-- | macros/latex/contrib/easybook/easybook.tex | 189 |
1 files changed, 130 insertions, 59 deletions
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 78a2bf0f49..c73726b5b5 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -23,8 +23,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK使用手册, - version = v2024cp, - date = 2024/07/09, + version = v2024dp, + date = 2024/09/13, authors = 瞿毅, info = 简便地排版中文学位论文或书籍, email = toquyi@163.com, @@ -249,8 +249,8 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she cells = {cmd = \pkg*}, cell{1}{3,4} = PaleTurquoise, cell{2}{5} = PaleTurquoise, - cell{3}{2} = PaleTurquoise, cell{4}{5} = PaleTurquoise, + cell{5}{2} = PaleTurquoise, cell{5}{1} = GreenYellow, cell{1}{2} = GreenYellow, cell{3}{1,4} = GreenYellow @@ -259,7 +259,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 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{全局选项} @@ -298,6 +298,12 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} 发行版中,所以通常不需要再专门安装。如果您想使用默认的Latin Modern或其它英文字体,可以使用 \code{auto} 选项配合 \pkg*{fontspec} 宏包的相关命令进行设置。 \begin{longtblr} @@ -338,7 +344,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \label{sec:interface options} \begin{cnltxlist} \command{ctexset}[\oarg{模块名}\marg{键值列表}] - \easybook{} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs{ctexset},模块选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有9个模块用于实现常规的排版功能,如\ref{table:module List} 所示。 + \easybook{} 扩展了 \CTeX 宏集 \hologo{LaTeX3} 风格键值的通用控制命令 \cs{ctexset},模块选项同样可用它设置,原有的 \meta{键值列表} 仍然可用。本文档类目前有10个模块用于实现常规的排版功能,如\ref{table:module List} 所示。 \begin{longtblr} [caption = 模块功能和名称清单,label = table:module List] { @@ -348,8 +354,8 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she } \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:catalog]{目录} & \\ - thmt & geo & hdr & toc & + \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{/} 后不能有空格或者换行。 @@ -404,12 +410,14 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \ctexset{tools/figurepath = path1} \ctexset{tools/figurepath = {path2}{path3}} \end{ctexexam} + + 以下几个选项用于设置题注编号的连字符,\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{.}} @@ -472,7 +480,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 设置表格题注的字体,包括字体族、字体系列、字体尺寸和字体形状命令。 \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}} 同时设置图片、表格和代码题注的字体命令。 @@ -492,7 +500,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \label{subsec:reference} \begin{cnltxlist} \keychoice{backend}{\fbox{bibtex},biblatex} - 参考文献处理后端。选择 \code{bibtex} 时使用传统的 \hologo{BibTeX} 引擎处理参考文献,加载 \pkg*{natbib} 宏包。选择 \code{biblatex} 时使用 \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}{标注风格} @@ -544,11 +552,11 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} 等效,其中支持的选项如下: @@ -591,21 +599,21 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} @@ -613,7 +621,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \subsection[页面尺寸]{页面尺寸\smodule{geo}} \label{subsec:page margins} -页面尺寸模块 \module*{geo} 用于设置纸张大小和各种页面边距,它将选项交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种 \pkg*{geometry} 的代表性选项,前面有\hface 符号的选项为额外附加,其它选项可查阅宏包帮助文档。当用此模块设置纸张规格时,会覆盖全局选项 \option{paper} 的设置。 +页面尺寸模块 \module*{geo} 用于设置纸张大小和各种页面边距,它将选项交给页面尺寸宏包 \pkg*{geometry} 处理,并且支持它的键值列表,预置的页面尺寸与 \textsf{Word} 的默认值接近。下面列举几种 \pkg*{geometry} 不同键值输入方式的选项,前面有\hface 符号的选项为额外附加,其它选项可查阅宏包帮助文档。当用此模块设置纸张规格时,会覆盖全局选项 \option{paper} 的设置。 \begin{cnltxlist}[itemsep = 0ex] \keyval{headruleskip}{页眉线间距}\dtag\Default*{0pt} \keyval{footruleskip}{页脚线间距}\dtag\Default*{3.5pt} @@ -632,6 +640,32 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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{chapter-mark} 和 \option{section-mark},在 \cls*{article} 模式时使用 \option{section-mark} 和 \option{subsection-mark} 选项,这与标准文档类的行为一致。重新设置标题标记选项时标记大小写选项 \option{uppercase} 会失效。 @@ -708,6 +742,8 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} @@ -803,7 +839,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \end{cnltxlist} \subsection[目录]{目录\smodule{toc}} -\label{subsec:catalog} +\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 @@ -828,7 +864,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 目录条目标签与标题间的代码,默认为插入 \code{1em} 横向距离。 \keyval{tocbelow}{距离命令}\dtag 在目录条目下方执行的代码,可以插入垂直距离等命令。 - \keyval{tocline}{标题定义}\dtag[\textcolor{red}{\sface}] + \keyval{tocline}{标题定义}\dtag[\sface] 这个选项在章节标题基础上扩展了浮动环境的题注标题在目录文件中的定义。章节和题注标题选项中参数 \code{\#1} 代表标题编号 \cs*{the}\meta{计数器} 对应的计数器名称,参数 \code{\#2} 则代表相应标题内容。 \begin{ctexexam} \ctexset @@ -856,7 +892,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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}{\sface}(仍包含空心符号\hface 选项的性质)表示在声明后可用。下面举一个声明算法环境和对应题注目录的例子: + 声明一种条目类型的目录命令 \cs*{listof}\meta{条目名}\code{\textcolor{cs}{s}},并且支持\ref{subsec:directory command} 中图表目录命令的机制。使用这个命令要确保将条目加入目录的机制已经存在,例如搭配 \pkg*{newfloat} 宏包创建新的浮动环境。选项前有实心符号\sface(仍包含空心符号\hface 选项的性质)表示在声明后可用。下面举一个声明算法环境和对应题注目录的例子: \begin{ctexexam} \usepackage{newfloat} \DeclareFloatingEnvironment[ @@ -867,16 +903,16 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} + \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} @@ -905,7 +941,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 悬挂缩进选项 \option{hang} 使目录条目为悬挂缩进形式。缩进距离为条目标签及其与标题内容间距的长度和。通常情况下会统一设置条目标题是否悬挂缩进,因此这个选项被设计为对所有类型条目生效。 \keyval{lolskip}{弹性长度}\Default{10pt} 代码目录中每章第一个条目上方增加的垂直距离。与 \CTeX 的表格和图片目录中每章间的条目距离选项 \option*{lotskip} 和 \option*{lofskip} 类似,在 \cls*{article} 模式中此选项失效。 - \keyval{between}{格式代码}\dtag[\textcolor{red}{\sface}] + \keyval{between}{格式代码}\dtag[\sface] 目录标题与条目内容间的局部钩子(作用于标题下方间距之后),如果是 \cls*{book} 模式则默认插入 \code{-10pt} 垂直距离抵消首行目录的额外垂直间距,这是由于图表和 由 \pkg*{newfloat} 宏包所创建环境的目录默认每使用一次章标题在题注目录中插入 \code{10pt} 距离。除了条目名的键路径外,此选项也可用于 \module*{toc} 路径中,表示章节标题目录标题代码钩子,如果是 \cls*{book} 模式则默认插入 \code{-1pc} 垂直距离。 \keyval{bibetween}{格式代码} 与选项 \option{between} 类似,是英文章节标题目录(如果启用)标题代码钩子。 @@ -913,6 +949,8 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 将目录页码装进一个右对齐的水平盒子里。这样可以使目录引导线右端对齐并与页码保持一定间距,否则会与页码相连。 \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}{刚性长度} @@ -925,8 +963,47 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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] @@ -941,7 +1018,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \subsection{目录命令} \label{subsec:directory command} -\easybook{} 改进了标准文档类中定制性较低的章节标题和图表标题目录命令。现在目录命令带有可选参数用于设置标题格式和栏数等,并且与标准文档类不同的是目录命令可在正文中\textbf{重复}使用\footnote{此功能需要\textbf{2023/06/01}以后的 \hologo{LaTeX} 内核支持。}。更多目录命令的创建和样式设置可参考\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} 时中文与英文目录之间执行的代码,可以插入设置目录样式和换页等命令。 @@ -956,7 +1033,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \command{listoflstlistings}[\sarg\oarg{键值列表}] 输出代码目录命令。带有星号参数的命令不输出目录标题。 - 如果需要部分而不是全文的目录或其它类型的目录,可以查看 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。 + 如果需要局部而不是全文范围的目录或其它类型的目录,可以查看\ref{subsec:contents} 和 \pkg*{titletoc} 宏包的相关示例。如果需要双语图表目录,可以查看 \pkg*{bicaption} 宏包的相关示例。上面目录命令的可选参数改进了原本单一的功能,也提供了配置命令 \cs{SetTocOuter} 在目录命令外设置选项默认值。 \command{SetTocOuter}[\marg{键值列表}] 统一设置上述所有目录可选参数的默认值\footnote{由于目录命令通常只在文中使用一次,因此不设计为可以分别指定不同目录的参数。},其中 \meta{键值列表} 的选项如下: \keyval{level}{标题命令} @@ -1052,6 +1129,12 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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[上标和下标]{上标和下标} @@ -1294,30 +1377,16 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} @@ -1373,14 +1442,6 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she 该命令由文档宏包 \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 = 更新日志] @@ -1423,7 +1484,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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 = 2024/03/31,changes = 修复命令 \cs{ebifbitoc} 用于条目缩进选项 \option{tocindent} 失效的问题。} \begin{version}[v = 2024as,date = 2024/04/19] @@ -1435,7 +1496,7 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \end{version} \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{AllotPartialExt}。} + \shortversion{v = 2024bk,date = 2024/05/07,changes = 新增局部题注目录分配命令 \cs{AssignPartialExt}。} \begin{version}[v = 2024bn,date = 2024/05/10] \fixed \item 修复 \module*{toc} 模块中带有 \option*{every} 后缀的选项不对所有已注册条目有效的问题。 @@ -1451,6 +1512,16 @@ $\blacktriangleright$需要注意正确\textbf{编译索引}要增加 \code{-she \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} |