% \iffalse meta-comment % !TeX program = XeLaTeX % !TeX encoding = UTF-8 % % Copyright (C) 2017--2023 by Xiangdong Zeng <xdzeng96@gmail.com> % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either % version 1.3c of this license or (at your option) any later % version. The latest version of this license is in: % % http://www.latex-project.org/lppl.txt % % and version 1.3 or later is part of all distributions of % LaTeX version 2005/12/01 or later. % % This work has the LPPL maintenance status `maintained'. % % The Current Maintainer of this work is Xiangdong Zeng. % % This work consists of the files fduthesis.dtx, % fduthesis-doc.dtx, % fduthesis-logo.dtx, % and the derived files fduthesis.ins, % fduthesis.cls, % fduthesis-en.cls, % fduthesis.def, % fdudoc.cls, % fdulogo.sty, % fdulogo-example.tex, % fduthesis-cover.tex, % fduthesis-en.tex, % fudan-emblem.pdf, % fudan-emblem-new.pdf, % fudan-name.pdf, % fduthesis.pdf, % fduthesis-en.pdf, % fduthesis-code.pdf, % and README.md. % %<*internal> \iffalse %</internal> % %<*readme> The `fduthesis` Class ===================== *LaTeX thesis template for Fudan University, v0.9a* Overview -------- This template supports doctoral or master dissertion and undergraduate thesis, both in Chinese or English. With the help of modern LaTeX technology, `fduthesis` aims to create a simple interface, a normative format, as well as a hackable class for the users. At present, `fduthesis` only supports XeTeX and LuaTeX engines. Support for pdfTeX and [ApTeX](https://github.com/clerkma/ptex-ng) is still under development. `fduthesis` only allows UTF-8 encoding. The documentation can be found in [fduthesis.pdf](http://mirrors.ctan.org/macros/latex/contrib/fduthesis/fduthesis.pdf) (in Chinese) or [fduthesis-en.pdf](http://mirrors.ctan.org/macros/latex/contrib/fduthesis/fduthesis-en.pdf) (in English). GitHub repository: <https://github.com/stone-zeng/fduthesis>. Installation ------------ To install `fduthesis`, you can use one of the following methods: - If you are running TeX Live, the simplest way is to run tlmgr install fduthesis - Download [fduthesis.tds.zip](http://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip) from CTAN, extract it in the root of one of your TDS trees, and update the filename database. - Get the source from GitHub: git clone https://github.com/stone-zeng/fduthesis.git Run `install-win.bat` (Windows) or `install-unix.sh` (Linux or macOS) to generate the templates and configuration files. These files would be found in a new-created `thesis` folder. You can enjoy `fduthesis` here at once. For permanent installation, you may move the following files into a directory where LaTeX will find them (e.g. `TEXMF/tex/latex/fduthesis/`): - `fduthesis.cls` - `fduthesis-en.cls` - `fduthesis.def` - `fdudoc.cls` - `fdulogo.sty` - `fudan-emblem.pdf` - `fudan-emblem-new.pdf` - `fudan-name.pdf` Do not forget to update the filename database afterwards. Contributing ------------ [Issues](https://github.com/stone-zeng/fduthesis/issues) and [pull requests](https://github.com/stone-zeng/fduthesis/pulls) are always welcome. License ------- This work may be distributed and/or modified under the conditions of the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), either version 1.3c of this license or (at your option) any later version. ----- Copyright (C) 2017–2023 by Xiangdong Zeng <xdzeng96@gmail.com>. %</readme> % %<*internal> \fi \begingroup \def\NameOfLaTeXe{LaTeX2e} \expandafter\endgroup\ifx\NameOfLaTeXe\fmtname\else \csname fi\endcsname %</internal> % %<*install> \input docstrip.tex \keepsilent \askforoverwritefalse \preamble Copyright (C) 2017--2023 by Xiangdong Zeng <xdzeng96@gmail.com> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version. The latest version of this license is in: http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. This work has the LPPL maintenance status `maintained'. The Current Maintainer of this work is Xiangdong Zeng. This work consists of the files fduthesis.dtx, fduthesis-doc.dtx, fduthesis-logo.dtx, and the derived files fduthesis.ins, fduthesis.cls, fduthesis-en.cls, fduthesis.def, fdudoc.cls, fdulogo.sty, fdulogo-example.tex, fduthesis-cover.tex, fduthesis-en.tex, fudan-emblem.pdf, fudan-emblem-new.pdf, fudan-name.pdf, fduthesis.pdf, fduthesis-en.pdf, fduthesis-code.pdf, and README.md. \endpreamble \generate{ \usedir{tex/latex/fduthesis} \file{\jobname.cls} {\from{\jobname.dtx}{class}} \file{\jobname-en.cls} {\from{\jobname.dtx}{class-en}} \file{\jobname.def} {\from{\jobname.dtx}{definition}} \file{fdudoc.cls} {\from{\jobname.dtx}{doc} \from{\jobname-doc.dtx}{doc}} \file{fdulogo.sty} {\from{\jobname.dtx}{logo} \from{\jobname-logo.dtx}{logo}} \file{fdulogo-example.tex} {\from{\jobname.dtx}{ex-logo} \from{\jobname-logo.dtx}{ex-logo}} \file{\jobname-cover.tex} {\from{\jobname.dtx}{cover} \from{\jobname-logo.dtx}{cover}} %<*internal> \usedir{source/latex/fduthesis} \file{\jobname.ins} {\from{\jobname.dtx}{install}} %</internal> \usedir{doc/latex/fduthesis} \nopreamble\nopostamble \file{README.md} {\from{\jobname.dtx}{readme}} } \obeyspaces \Msg{*************************************************************} \Msg{* *} \Msg{* To finish the installation you have to move the following *} \Msg{* files into a directory searched by TeX: *} \Msg{* *} \Msg{* The recommended directory is TDS:tex/latex/fduthesis *} \Msg{* *} \Msg{* fduthesis.cls *} \Msg{* fduthesis-en.cls *} \Msg{* fduthesis.def *} \Msg{* fdudoc.cls *} \Msg{* fdulogo.sty *} \Msg{* *} \Msg{* To produce the documentation, run the file fduthesis.dtx *} \Msg{* through XeLaTeX. *} \Msg{* *} \Msg{* Happy TeXing! *} \Msg{* *} \Msg{*************************************************************} \endbatchfile %</install> % %<*internal> \fi %</internal> % %<class|class-en|doc|logo>\NeedsTeXFormat{LaTeX2e}[2020/10/01] %<*!(driver|install|ex-logo|cover)> %<!readme>\GetIdInfo $Id: fduthesis.dtx 0.9a 2023-05-27 12:00:00Z Xiangdong Zeng <xdzeng96@gmail.com> $ %<class> {Thesis template for Fudan University} %<class>\ProvidesExplClass{\ExplFileName} %<class-en> {Thesis template for Fudan University (English version)} %<class-en>\ProvidesExplClass{\ExplFileName-en} %<definition> {Definition file for fduthesis} %<definition>\ProvidesExplFile{\ExplFileName.def} %<doc> {Documentation class for fduthesis} %<doc>\ProvidesExplClass{fdudoc} %<logo> {Fudan University's Visual Identity} %<logo>\ProvidesExplPackage{fdulogo} %<!readme> {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} %</!(driver|install|ex-logo|cover)> %<*driver> % \PassOptionsToPackage{showframe}{geometry} \documentclass{fdudoc} \usepackage{xeCJKfntef} \hypersetup{ pdftitle = {fduthesis: 夿—¦å¤§å¦è®ºæ–‡æ¨¡æ¿}, pdfauthor = {曾祥东}} % å…¨è§’æ ‡ç‚¹æ”¾åœ¨å¼•å·ä¸ï¼Œéœ€è¦æ”¹æˆåŠè§’å¼ï¼Œå¦åˆ™é—´è·è¿‡å¤§ï¼Œä¸å¥½çœ‹ \def\FSID{“{\xeCJKsetup{PunctStyle=banjiao}。}â€} % U+3002 \def\FSFW{“{\xeCJKsetup{PunctStyle=banjiao}.}â€} % U+FF0E \def\COFW{“{\xeCJKsetup{PunctStyle=banjiao}:}â€} % U+FF1A \def\SCFW{“{\xeCJKsetup{PunctStyle=banjiao}ï¼›}â€} % U+FF1B %^^A! \PassOptionsToPackage{scheme=plain, linespread=1.1}{ctex} %^^A! \documentclass{fdudoc} %^^A! \hypersetup{ %^^A! pdftitle = {fduthesis: LaTeX Thesis Template for Fudan University}, %^^A! pdfauthor = {Xiangdong Zeng}} %^^A! \ctexset{ %^^A! section = {name = {}, format+ = \raggedright}, %^^A! subsubsection/tocline = {\CTEXnumberline{#1}#2}} %^^A! \pagestyle{headings} %^^A! \def\FSID{{\xeCJKsetup{PunctStyle=banjiao}。}} %^^A! \def\FSFW{{\xeCJKsetup{PunctStyle=banjiao}.}} %^^A! \title{\textcolor{MaterialIndigo800}{\textbf{fduthesis: 夿—¦å¤§å¦è®ºæ–‡æ¨¡æ¿}}} \author{曾祥东} \date{2023/05/27\quad v0.9a% \thanks{\url{https://github.com/stone-zeng/fduthesis}.}} %^^A! \title{\textcolor{MaterialIndigo800}{% %^^A! \textbf{The \textsf{fduthesis} Class \\ %^^A! \LaTeX{} Thesis Template for Fudan University}}} %^^A! \author{Xiangdong Zeng} %^^A! \date{2023/05/27\quad v0.9a% %^^A! \thanks{\url{https://github.com/stone-zeng/fduthesis}.}} %^^A! \begin{document} %^^A! \begin{document} %^^A! \DisableImplementation \EnableImplementation \def\FDUCODEDOC{} \DocInput{fduthesis.dtx} \DocInput{fduthesis-doc.dtx,fduthesis-logo.dtx} \IndexLayout \PrintChanges \PrintIndex \end{document} %</driver> % \fi % % \changes{v0.1}{2017/02/15}{开始编写模æ¿ã€‚} % \changes{v0.2}{2017/02/19}{使用 Git 进行版本控制,并å‘布至 GitHub。} % \changes{v0.3}{2017/02/21}{使用 \cls{doc} å’Œ \pkg{DocStrip}。} % \changes{v0.3}{2017/03/04}{æ”¯æŒ \LuaLaTeX{}。} % \changes{v0.3}{2017/03/20}{æ·»åŠ æµ‹è¯•æ–‡ä»¶ã€‚} % \changes{v0.3}{2017/05/26}{使用 Travis CI 进行æŒç»é›†æˆã€‚} % \changes{v0.3}{2017/06/23}{æ·»åŠ å¤æ—¦å¤§å¦è§†è§‰è¯†åˆ«ç³»ç»Ÿã€‚} % \changes{v0.3}{2017/07/05}{新增声明页。} % \changes{v0.3}{2017/07/10}{æ·»åŠ è‹±æ–‡æ¨¡æ¿ã€‚} % \changes{v0.3}{2017/07/19}{使用 \pkg{l3docstrip} 管ç†åå—空间。} % \changes{v0.3}{2017/07/28}{æ•´ç†ä»£ç ,编写用户文档。} % \changes{v0.4}{2017/08/03}{拆分 \file{.dtx} 文件。} % \changes{v0.4}{2017/08/11}{æ·»åŠ é”™è¯¯ä¿¡æ¯æç¤ºã€‚} % \changes{v0.6}{2017/11/23}{åŒæ¥ \pkg{ctex} v2.4.11。} % \changes{v0.6}{2017/11/29}{æ·»åŠ è‹±æ–‡ç‰ˆç”¨æˆ·æ–‡æ¡£ã€‚} % \changes{v0.7}{2018/01/26}{使用 \pkg{l3build} 进行回归测试。} % \changes{v0.7}{2018/01/31}{ä¸å†éœ€è¦ \file{fduthesis-user.def}。} % \changes{v0.7}{2018/03/04}{所有选项更改为用连å—符隔开的形å¼ã€‚} % \changes{v0.7a}{2018/04/09}{更新文档,å‘布至 CTAN。} % \changes{v0.7b}{2018/04/29}{æ”¯æŒ \TeXLive{} 2018。} % \changes{v0.7b}{2018/05/06}{å°†æ ¡åã€æ ¡å¾½å›¾ç‰‡æ·»åŠ è‡³å‘行版。} % %^^A ç¦æ¢ä½¿ç”¨ " 符å·ä½œä¸ºæŠ„录文本缩略符 % \DeleteShortVerb\" %^^A! \DeleteShortVerb\" %^^A! % %^^A å°é¢ä¸Žç›®å½•çš„é¡µè¾¹è· %^^A+ % \newgeometry{ % left = 1.25 in, % right = 1.25 in, % top = 1.25 in, % bottom = 1.00 in % } % % \maketitle % \vfill % \begin{center} % \includegraphics[width=8cm]{../logo/fduthesis-cover.pdf} % \end{center} % \vfill % \thispagestyle{plain} % \clearpage % % \tableofcontents % %^^A- % % \EnableDocumentation %^^A \DisableDocumentation % % \begin{documentation} % %^^A ç”¨æˆ·æ‰‹å†Œçš„é¡µè¾¹è· %^^A+ % \newgeometry{ % left = 1.65 in, % right = 0.80 in, % top = 1.25 in, % bottom = 1.00 in % } % %^^A- % % \section{介ç»} %^^A! \section{Introduction} %^^A! % % 本模æ¿ç¼–写之åˆï¼Œå¯ä»¥æ‰¾åˆ°çš„夿—¦å¤§å¦ \LaTeX{} è®ºæ–‡æ¨¡æ¿æœ‰ä»¥ä¸‹è¿™äº›ï¼š % \begin{itemize} % \item æ•°å¦ç§‘å¦å¦é™¢çš„æœ¬ç§‘毕业论文模版 \cite{数院本科毕业论文写作模æ¿},主è¦è´¡çŒ®è€…为 2001 级的 % 何力åŒå¦ã€æŽæ¹›åŒå¦å’Œ 2004 çº§çš„å¼ è¶ŠåŒå¦ï¼› % \item Pandoxie 编写的 \cls{FDU-Thesis-Latex} \cite{pandoxie2014fduthesislatex},基本满足了åšå£« % ï¼ˆç¡•å£«ï¼‰æ¯•ä¸šè®ºæ–‡æ ¼å¼è¦æ±‚,在当时使用人数较多; % \item richarddzh ç¼–å†™çš„ç¡•å£«è®ºæ–‡æ¨¡æ¿ \cls{fudan-thesis} \cite{richard2016fudanthesis}。 % \end{itemize} % 以上模æ¿å¤§éƒ½æ²¡æœ‰ç»è¿‡ç³»ç»Ÿçš„设计,也缺ä¹åŽç»ç»´æŠ¤ã€‚相比之下,清åŽå¤§å¦ \cite{thuthesis}〠% åŒ—äº¬å¤§å¦ \cite{pkuthss}ã€é‡åº†å¤§å¦ \cite{cquthesis}ã€ä¸å›½ç§‘å¦æŠ€æœ¯å¤§å¦ \cite{ustcthesis}〠% ä¸å›½ç§‘å¦é™¢å¤§å¦ \cite{ucasthesis} 以åŠå‹æ ¡ä¸Šæµ·äº¤é€šå¤§å¦ \cite{sjtuthesis} ç‰ï¼Œéƒ½æœ‰è¾ƒä¸ºæˆç†Ÿã€ç¨³å®š % 的解决方案,也积累了广泛的用户基础,值得å‚考与借鉴。 % % 考虑到开å‘与æŒç»ç»´æŠ¤çš„需è¦ï¼Œæœ¬æ¨¡æ¿ä½¿ç”¨ \LaTeX3 \cite{source3} è¯æ³•ç¼–å†™ã€‚åŒæ—¶å°†æž„建一套简æ´çš„ % 接å£ï¼Œä»¥æ–¹ä¾¿ç”¨æˆ·ä½¿ç”¨ã€‚ %^^A! \cls{fduthesis} is a thesis template for Fudan University. %^^A! This template is mostly written in \LaTeX3 syntax, and %^^A! provides a simple interface for users. %^^A! % % \subsection*{\LaTeX{} 入门} %^^A! \subsection*{Getting started with \LaTeX{}} %^^A! % % æœ¬æ–‡æ¡£ä¸æ˜¯ä¸€ä»½ \LaTeX{} 零基础教程。如果缺ä¹ä½¿ç”¨ \LaTeX{} çš„ç»éªŒï¼Œå»ºè®®å…ˆé˜…读有关入门文档,如 % 刘海洋编著的《\LaTeX{} 入门》\cite{刘海洋2013latex入门} ç¬¬ä¸€ç« ï¼Œæˆ–â€œ\pkg{lshort}†\cite{lshort} % åŠå…¶ä¸æ–‡ç¿»è¯‘版 \cite{lshort-zh-cn}。当然,网络上的 \LaTeX{} 教程数é‡ç”šå¤šï¼Œä¹Ÿå¯è‡ªè¡Œé€‰å–。 %^^A! This documentation is \emph{not} a \LaTeX{} tutorial at %^^A! starter's level. If you are totally a newbie, please read some %^^A! introductions like the famous \pkg{lshort}. Of course, there %^^A! are countless \LaTeX{} tutorials on the Internet. You can %^^A! choose whatever you like. %^^A! % % \subsection*{关于本文档} %^^A! \subsection*{About this documentation} %^^A! % % 本文档采用ä¸åŒå—体表示ä¸åŒå†…å®¹ã€‚æ— è¡¬çº¿å—体表示å®åŒ…å称,如 \pkg{xeCJK} å®åŒ…ã€\cls{fduthesis} % 文档类ç‰ï¼›ç‰å®½å—ä½“è¡¨ç¤ºä»£ç æˆ–文件å,如 \cs{fdusetup} 命令ã€\env{abstract} 环境ã€\TeX{} 文档 % \file{thesis.tex} ç‰ï¼›å¸¦æœ‰å°–括å·çš„æ¥·ä½“ï¼ˆæˆ–è¥¿æ–‡æ–œä½“ï¼‰è¡¨ç¤ºå‘½ä»¤å‚æ•°ï¼Œå¦‚ \meta{模æ¿é€‰é¡¹}〠% \meta{English title} ç‰ã€‚åœ¨ä½¿ç”¨æ—¶ï¼Œå‚æ•°ä¸¤ä¾§çš„尖括å·ä¸å¿…输入。示例代ç è¿›è¡Œäº†è¯æ³•高亮处ç†ï¼Œ % 以方便阅读。 %^^A! In this documentation, different typefaces are used to %^^A! represent different contents. Packages and classes are shown %^^A! in sans-serif font, e.g.\ \pkg{xeCJK} package and %^^A! \cls{fduthesis} class. Commands and file names are shown in %^^A! monospaced font, e.g.\ command \cs{fdusetup}, environment %^^A! \env{abstract} and \TeX{} document \file{thesis.tex}. %^^A! Italic-shaped font with angle brackets outside means arguments, %^^A! e.g.\ \meta{English title}. However, you do not need to type %^^A! the brackets when using these commands. The example code has %^^A! proper syntax highlighting so it will be much easier to read. %^^A! % % 在用户手册ä¸ï¼Œå¸¦æœ‰è“色侧边线的为 \LaTeX{} 代ç ,而带有粉色侧边线的则为命令行代ç ,请注æ„区分。 % æ¨¡æ¿æä¾›çš„é€‰é¡¹ã€å‘½ä»¤ã€çŽ¯å¢ƒç‰ï¼Œå‡åˆ—在左边æ å¹¶ç”¨æ¨ªçº¿æ¡†èµ·ï¼ŒåŒæ—¶ç»™å‡ºä½¿ç”¨è¯æ³•和相关说明。 %^^A! \LaTeX{} code lines will have a blue line on their left, while %^^A! for command lines there will be a pink line. The options, %^^A! commands and environments in \cls{fduthesis} will be surrounded %^^A! by two horizontal lines. Their usages and descriptions are %^^A! provided at the same time. %^^A! % % 本模æ¿ä¸çš„选项ã€å‘½ä»¤æˆ–环境å¯ä»¥åˆ†ä¸ºä»¥ä¸‹ä¸‰ç±»ï¼š % \begin{itemize} % \item åå—åŽé¢å¸¦æœ‰ \rexptarget\rexpstar{} 的,表示åªèƒ½åœ¨\emph{䏿–‡æ¨¡æ¿}ä¸ä½¿ç”¨ï¼› % \item åå—åŽé¢å¸¦æœ‰ \exptarget\expstar{} 的,表示åªèƒ½åœ¨\emph{英文模æ¿}ä¸ä½¿ç”¨ï¼› % \item åå—åŽé¢ä¸å¸¦æœ‰ç‰¹æ®Šæ ‡è®°çš„,表示既å¯ä»¥åœ¨ä¸æ–‡æ¨¡æ¿ä¸ä½¿ç”¨ï¼Œä¹Ÿå¯ä»¥åœ¨è‹±æ–‡æ¨¡æ¿ä¸ä½¿ç”¨ã€‚ % \end{itemize} %^^A! The options, commands and environments in \cls{fduthesis} can be %^^A! divided into the following three types: %^^A! \begin{itemize} %^^A! \item Those can be only used in \emph{Chinese templates} are %^^A! indicated by \rexptarget\rexpstar{}. %^^A! \item Those can be only used in \emph{English templates} are %^^A! indicated by \rexptarget\expstar{}. %^^A! \item If they do not have marks afterwards, then you can use %^^A! them in both Chinese and English templates. %^^A! \end{itemize} %^^A! % % \section{安装} %^^A! \section{Installation} %^^A! % % \subsection{èŽ·å– \cls{fduthesis}} %^^A! \subsection{Obtaining \cls{fduthesis}} %^^A! % % \subsubsection{æ ‡å‡†å®‰è£…} %^^A! \subsubsection{Standard installation} %^^A! % % 如果没有特殊ç†ç”±ï¼Œå§‹ç»ˆå»ºè®®ä½¿ç”¨å®åŒ…管ç†å™¨å®‰è£… \cls{fduthesis}。例如在 \TeXLive{} ä¸ï¼Œæ‰§è¡Œï¼ˆå¯èƒ½ % 需è¦ç®¡ç†å‘˜æƒé™ï¼‰ % \begin{shellexample}[morekeywords={tlmgr,install}] % tlmgr install fduthesis % \end{shellexample} % å³å¯å®Œæˆå®‰è£…。如果已ç»è£…有完整版的 \TeXLive{},则 \cls{fduthesis} 应当已ç»åŒ…å«åœ¨å…¶ä¸ï¼Œæ¤æ—¶å³å¯ % 直接使用,也å¯ä»¥æ‰§è¡Œ % \begin{shellexample}[morekeywords={tlmgr,update},emph={--all}] % tlmgr update --all % \end{shellexample} % 检查并更新全部å®åŒ…。 %^^A! If there are no special reasons, it is always recommended to %^^A! install \cls{fduthesis} with a package manager. For example, %^^A! the following command will install the package in \TeXLive{} %^^A! (administrator permission may be required): %^^A! \begin{shellexample}[morekeywords={tlmgr,install}] %^^A! tlmgr install fduthesis %^^A! \end{shellexample} %^^A! % % 在 \TeXLive{} å’Œ \MiKTeX{} ä¸ï¼Œè¿˜å¯ä»¥é€šè¿‡å›¾å½¢ç•Œé¢è¿›è¡Œå®‰è£…和更新,æ¤å¤„ä¸å†èµ˜è¿°ã€‚ %^^A! In \TeXLive{} and \MiKTeX{}, you can also install \cls{fduthesis} %^^A! through a graphical interface. It's rather simple and will not be %^^A! described here. %^^A! % % \subsubsection{手动安装} %^^A! \subsubsection{Install manually} %^^A! % % 如果需è¦ä»Ž CTAN 上自行下载并手动安装,å¯ä½¿ç”¨ TDS 安装包: % \begin{itemize} % \item 从 CTAN 上下载 \cls{fduthesis} çš„ % \href{https://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip}{TDS 安装包}ï¼› % \item 按目录结构将 \file{fduthesis.tds.zip} ä¸çš„æ–‡ä»¶å¤åˆ¶åˆ° \TeX{} å‘行版的本地 TDS æ ¹ç›®å½•ï¼› % \item 执行 \texttt{mktexlsr} å‘½ä»¤åˆ·æ–°æ–‡ä»¶åæ•°æ®åº“以完æˆå®‰è£…。 % \end{itemize} %^^A! If you want to download the template from CTAN and install it %^^A! manually, the recommended way is to use the TDS ZIP file: %^^A! \begin{itemize} %^^A! \item Download the \href{http://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip}% %^^A! {TDS ZIP file} for \cls{fduthesis}; %^^A! \item Copy all the files in \file{fduthesis.tds.zip} into the %^^A! local TDS directory of \TeX{} distribution. %^^A! \item Run \texttt{mktexlsr} to update the ls-R database. %^^A! \end{itemize} %^^A % % \subsubsection{å¼€å‘版本} %^^A! \subsubsection{Development version} %^^A! % % CTAN 上仅æä¾›äº† \cls{fduthesis} 的稳定版,其更新å¯èƒ½è¾ƒä¸ºæ»žåŽï¼Œä¸€äº› bug 常常ä¸èƒ½å¾—åˆ°åŠæ—¶ä¿®å¤ã€‚ % 如果需è¦ä½¿ç”¨å¼€å‘版(托管在 GitHub 上),å¯ä»¥ä½¿ç”¨æ¨¡æ¿æä¾›çš„安装脚本: % \begin{itemize} % \item 打开 \href{https://github.com/stone-zeng/fduthesis}{项目主页},点击“Codeâ€æŒ‰é’®ï¼Œå¹¶é€‰æ‹© % “Download ZIPâ€ï¼Œä¸‹è½½ \file{fduthesis-main.zip};如果已ç»è£…有 Git 程åºï¼Œä¹Ÿå¯é€šè¿‡ä»¥ä¸‹å‘½ä»¤ç›´æŽ¥ % 克隆代ç 仓库: % \begin{shellexample}[gobble=7,alsoletter={.},morekeywords={git,clone}] % git clone https://github.com/stone-zeng/fduthesis.git % \end{shellexample} % \item 执行 \file{install-win.bat}(Windows 系统)或 \file{install-unix.sh}(Linux 或 macOS % 系统),所有需è¦çš„æ–‡ä»¶ä¾¿ä¼šåœ¨ \file{thesis} 文件夹ä¸ç”Ÿæˆã€‚ % \end{itemize} %^^A! On CTAN, only the stable version of \cls{fduthesis} is provided, where new features and %^^A! bug fixes may not be included in time. To use the latest development version on GitHub, %^^A! you can use the install script: %^^A! \begin{itemize} %^^A! \item Open the project's \href{https://github.com/stone-zeng/fduthesis}{homepage}, click %^^A! ``Code'' button and choose ``Download ZIP'' to download \file{fduthesis-main.zip}. %^^A! If you have git program on your computer, you can also clone the repository directly: %^^A! \begin{shellexample}[gobble=5,alsoletter={.},morekeywords={git,clone}] %^^A! git clone https://github.com/stone-zeng/fduthesis.git %^^A! \end{shellexample} %^^A! \item Run \file{install-win.bat} (Windows) or \file{install-unix.sh} (Linux or macOS), %^^A! all the necessary files will be found in the \file{thesis} folder then. %^^A! \end{itemize} %^^A! % % \subsubsection{Overleaf} %^^A! \subsubsection{Overleaf} %^^A! % % \cls{fduthesis} 也æä¾›äº† \href{https://www.overleaf.com/latex/templates/fduthesis-latex-thesis-template-for-fudan-university/svtdhhstkmkt}{Overleaf 的版本}, % 打开链接并登录åŽå³å¯ç›´æŽ¥ç¼–辑。 %^^A! \cls{fduthesis} also provides the \href{https://www.overleaf.com/latex/templates/fduthesis-latex-thesis-template-for-fudan-university/svtdhhstkmkt}{Overleaf version}. %^^A! You can follow the link and login to edit directly on the web. %^^A! % % \subsection{模æ¿ç»„æˆ} %^^A! \subsection{Composition of the template} %^^A! % % 本模æ¿ä¸»è¦åŒ…嫿 ¸å¿ƒæ–‡æ¡£ç±»ã€é…置文件ã€é™„属å®åŒ…以åŠç”¨æˆ·æ–‡æ¡£ç‰å‡ 个部分,其具体组æˆè§ % 表~\ref{tab:fduthesis-components}。 %^^A! There are several parts in \cls{fduthesis}, including kernel template %^^A! classes, configuration files, affiliated packages and user's guides. %^^A! More details are listed in table~\ref{tab:fduthesis-components}. %^^A! % % \begin{table}[ht] % \caption{\cls{fduthesis} 的主è¦ç»„æˆéƒ¨åˆ†} % \label{tab:fduthesis-components} % \centering % \small % \begin{tabular}{ll} % \toprule % \textbf{文件} & \textbf{功能说明} \\ % \midrule % \file{fduthesis.cls} & 䏿–‡æ¨¡æ¿æ–‡æ¡£ç±» \\ % \file{fduthesis-en.cls} & è‹±æ–‡æ¨¡æ¿æ–‡æ¡£ç±» \\ % \file{fduthesis.def} & 傿•°é…置文件,用于设定åˆå§‹å‚数,ä¸å»ºè®®è‡ªè¡Œæ”¹åЍ \\ % \file{fdudoc.cls} & 用户手册文档类 \\ % \file{fdulogo.sty} & 夿—¦å¤§å¦è§†è§‰è¯†åˆ«ç³»ç»Ÿ \\ % \file{fudan-emblem.pdf} & æ ¡å¾½ \\ % \file{fudan-emblem-new.pdf} & æ ¡å¾½ï¼ˆé‡ä¿®ç‰ˆï¼‰ \\ % \file{fudan-name.pdf} & æ ¡å图片 \\ % \file{README.md} & 简è¦è‡ªè¿° \\ % \ifdefined\FDUCODEDOC % \file{fduthesis.pdf} & 䏿–‡ç”¨æˆ·æ‰‹å†Œ \\ % \file{fduthesis-en.pdf} & 英文用户手册 \\ % \file{fduthesis-code.pdf} & 模æ¿å®žçް代ç (本文档) \\ % \else % \file{fduthesis.pdf} & 䏿–‡ç”¨æˆ·æ‰‹å†Œï¼ˆæœ¬æ–‡æ¡£ï¼‰ \\ % \file{fduthesis-en.pdf} & 英文用户手册 \\ % \file{fduthesis-code.pdf} & 模æ¿å®žçް代ç \\ % \fi % \bottomrule % \end{tabular} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{The main components of \cls{fduthesis}} %^^A! \label{tab:fduthesis-components} %^^A! \centering %^^A! \begin{tabular}{lp{24em}} %^^A! \toprule %^^A! \textbf{Files} & \textbf{Descriptions} \\ %^^A! \midrule %^^A! \file{fduthesis.cls} & Document class for Chinese thesis. \\ %^^A! \file{fduthesis-en.cls} & Document class for English thesis.\\ %^^A! \file{fduthesis.def} & Configuration parameters file %^^A! for \cls{fduthesis}. Please do \emph{not} modify it. \\ %^^A! \file{fdudoc.cls} & Document class for user guides. \\ %^^A! \file{fdulogo.sty} & Fudan University's visual identity. \\ %^^A! \file{fudan-emblem.pdf} & University emblem. \\ %^^A! \file{fudan-emblem-new.pdf} & University emblem (revised version). \\ %^^A! \file{fudan-name.pdf} & Figure of university name. \\ %^^A! \file{README.md} & The brief introduction. \\ %^^A! \file{fduthesis.pdf} & User's guide in Chinese. \\ %^^A! \file{fduthesis-en.pdf} & User's guide in English (this %^^A! document). \\ %^^A! \file{fduthesis-code.pdf} & Code implementation. \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \end{table} %^^A! % % \section{使用说明} %^^A! \section{User's guide} %^^A! % % \subsection{基本用法} %^^A! \subsection{Getting started} %^^A! % % 以下是一份简å•çš„ \TeX{} 文档,它演示了 \cls{fduthesis} 的最基本用法: %^^A! Here is a minimal \TeX{} file for \cls{fduthesis}: %^^A+ % \begin{latexexample}[deletetexcs={\documentclass}, % moretexcs={\chapter},morekeywords={\documentclass}, % emph={[2]document}] % % thesis.tex % \documentclass{fduthesis} % \begin{document} % \chapter{欢迎} % \section{Welcome to fduthesis!} % ä½ å¥½ï¼Œ\LaTeX{}ï¼ % \end{document} % \end{latexexample} %^^A- %^^A! % % 按照 \ref{subsec:编译方å¼}~å°èŠ‚ä¸çš„æ–¹å¼ç¼–译该文档,您应当得到 % 一篇 5 é¡µçš„æ–‡ç« ã€‚å½“ç„¶ï¼Œè¿™ç¯‡æ–‡ç« çš„ç»å¤§éƒ¨åˆ†éƒ½æ˜¯ç©ºç™½çš„。 %^^A! Compile this file under the instructions in %^^A! subsection~\ref{subsec:compilation}, you will get a 5-page article. %^^A! Of course, most of it will be blank, as you may predicate. %^^A! % % 英文模æ¿å¯ä»¥ç”¨ç±»ä¼¼çš„æ–¹å¼ä½¿ç”¨ï¼š %^^A! The English version can be used in the same way: %^^A+ % \begin{latexexample}[deletetexcs={\documentclass}, % moretexcs={\chapter},morekeywords={\documentclass}, % emph={[2]document}] % % thesis-en.tex % \documentclass{fduthesis-en} % \begin{document} % \chapter{Welcome} % \section{Welcome to fduthesis!} % Hello, \LaTeX{}! % \end{document} % \end{latexexample} %^^A- % 英文模æ¿åªå¯¹æ£æ–‡éƒ¨åˆ†è¿›è¡Œäº†æ”¹åŠ¨ï¼Œå°é¢ã€æŒ‡å¯¼å°ç»„æˆå‘˜ä»¥åŠå£°æ˜Žé¡µä»å°† % æ˜¾ç¤ºä¸ºä¸æ–‡ã€‚ %^^A! The differences between English and Chinese version only %^^A! live in the main body. Thesis cover, instructors list and %^^A! declaration page are still printed in Chinese. %^^A! % % \subsection{编译方å¼} \label{subsec:编译方å¼} %^^A! \subsection{Compilation} \label{subsec:compilation} %^^A! % % 本模æ¿ä¸æ”¯æŒ \pdfTeX{} 引擎,请使用 \XeLaTeX{} 或 \LuaLaTeX{} % 编译。推è使用 \XeLaTeX{}ã€‚ä¸ºäº†ç”Ÿæˆæ£ç¡®çš„目录ã€è„𿳍以åŠäº¤å‰å¼•用, % 您至少需è¦è¿žç»ç¼–译两次。 %^^A! \cls{fduthesis} does NOT support \pdfTeX{}. Please use %^^A! \XeLaTeX{} or \LuaLaTeX{} to compile, and \XeLaTeX{} is %^^A! recommended. To get the correct table of contents, footnotes %^^A! and cross-references, you need to compile the source file at %^^A! least twice. %^^A! % % 以下代ç ä¸ï¼Œå‡è®¾æ‚¨çš„ \TeX{} æºæ–‡ä»¶å为 \file{thesis.tex}。 % 使用 \XeLaTeX{} ç¼–è¯‘è®ºæ–‡ï¼Œè¯·åœ¨å‘½ä»¤è¡Œä¸æ‰§è¡Œ % \begin{shellexample}[morekeywords={xelatex}] % xelatex thesis % xelatex thesis % \end{shellexample} % 或使用 \pkg{latexmk}: % \begin{shellexample}[morekeywords={latexmk},emph={-xelatex}] % latexmk -xelatex thesis % \end{shellexample} %^^A! In the following example, suppose your \TeX{} source file is %^^A! \file{thesis.tex}. Please execute the following commands if %^^A! you want to use \XeLaTeX{}: %^^A! \begin{shellexample}[morekeywords={xelatex}] %^^A! xelatex thesis %^^A! xelatex thesis %^^A! \end{shellexample} %^^A! You can use \pkg{latexmk} as well: %^^A! \begin{shellexample}[morekeywords={latexmk},emph={-xelatex}] %^^A! latexmk -xelatex thesis %^^A! \end{shellexample} %^^A! % % 使用 \LuaLaTeX{} ç¼–è¯‘è®ºæ–‡ï¼Œè¯·åœ¨å‘½ä»¤è¡Œä¸æ‰§è¡Œ % \begin{shellexample}[morekeywords={lualatex}] % lualatex thesis % lualatex thesis % \end{shellexample} % 或者 % \begin{shellexample}[morekeywords={latexmk},emph={-lualatex}] % latexmk -lualatex thesis % \end{shellexample} %^^A! \LuaLaTeX{} can be used in a similar way: %^^A! \begin{shellexample}[morekeywords={lualatex}] %^^A! lualatex thesis %^^A! lualatex thesis %^^A! \end{shellexample} %^^A! or %^^A! \begin{shellexample}[morekeywords={latexmk},emph={-lualatex}] %^^A! latexmk -lualatex thesis %^^A! \end{shellexample} %^^A! % % \subsection{模æ¿é€‰é¡¹} %^^A! \subsection{Options of the template} %^^A! % % 所谓“模æ¿é€‰é¡¹â€ï¼ŒæŒ‡éœ€è¦åœ¨å¼•入文档类的时候指定的选项: % \begin{latexexample}[deletetexcs={\documentclass}, % morekeywords={\documentclass}] % \documentclass(*\oarg{模æ¿é€‰é¡¹}*){fduthesis} % \documentclass(*\oarg{模æ¿é€‰é¡¹}*){fduthesis-en} % \end{latexexample} %^^A! You can specify some \emph{template options} when loading %^^A! \cls{fduthesis}: %^^A! \begin{latexexample}[deletetexcs={\documentclass}, %^^A! morekeywords={\documentclass}] %^^A! \documentclass(*\oarg{options}*){fduthesis} %^^A! \documentclass(*\oarg{options}*){fduthesis-en} %^^A! \end{latexexample} %^^A! % % 有些模æ¿é€‰é¡¹ä¸ºå¸ƒå°”型,它们åªèƒ½åœ¨ \opt{true} å’Œ \opt{false} % ä¸å–值。对于这些选项,\kvopt{\meta{选项}}{true} ä¸çš„“|= true|†% å¯ä»¥çœç•¥ã€‚ %^^A! Some options are \emph{boolean} --- they only take the value %^^A! \opt{true} or \opt{false}. For these options, you can %^^A! abbreviate ``\kvopt{\meta{option}}{true}'' simply to %^^A! ``\opt{\meta{option}}''. %^^A! % %^^A+ % \begin{function}[added=2018-02-01]{type} % \begin{fdusyntax}[emph={[1]type}] % type = (*<doctor|master|(bachelor)>*) % \end{fdusyntax} %^^A- % 选择论文类型。三ç§é€‰é¡¹åˆ†åˆ«ä»£è¡¨åšå£«å¦ä½è®ºæ–‡ã€ç¡•士å¦ä½è®ºæ–‡å’Œæœ¬ç§‘ % 毕业论文。 % \end{function} %^^A! Choose the type of your thesis. The three options represent %^^A! doctoral dissertation, master degree thesis and undergraduate %^^A! thesis, respectively. %^^A! \end{function} %^^A! % % \begin{function}{oneside,twoside} % 指明论文的å•åŒé¢æ¨¡å¼ï¼Œé»˜è®¤ä¸º \opt{twoside}ã€‚è¯¥é€‰é¡¹ä¼šå½±å“æ¯ç« % 的开始ä½ç½®ï¼Œè¿˜ä¼šå½±å“é¡µçœ‰æ ·å¼ã€‚ % \end{function} %^^A! \begin{function}{oneside,twoside} %^^A! Specify whether single or double sided output should be %^^A! generated. \opt{twoside} will be chosen by default. These %^^A! option will determine where the new chapters begin and how %^^A! the headers display. The option \opt{twoside} does %^^A! \emph{not} tell the printer to actually make a two-sided %^^A! printout. %^^A! \end{function} %^^A! % % 在åŒé¢æ¨¡å¼ï¼ˆ\opt{twoside})下,按照通常的排版惯例,æ¯ç« 应åªä»Ž % 奇数页(在å³ï¼‰å¼€å§‹ï¼›è€Œåœ¨å•页模å¼ï¼ˆ\opt{oneside})下,则å¯ä»¥ä»Ž % ä»»æ„页é¢å¼€å§‹ã€‚本模æ¿ä¸ï¼Œç›®å½•ã€æ‘˜è¦ã€ç¬¦å·è¡¨ç‰å‡è§†ä½œç« ï¼Œä¹ŸæŒ‰ç›¸åŒ % æ–¹å¼æŽ’ç‰ˆã€‚ %^^A! If choosing \opt{twoside}, chapters will begin at the odd pages %^^A! (right hand). However, they will begin at arbitrary pages %^^A! available when choosing \opt{oneside}. Table of contents, %^^A! abstract and the list of symbols are considered as chapters and %^^A! processed in the same way. %^^A! % % åŒé¢æ¨¡å¼ä¸‹ï¼Œæ£æ–‡éƒ¨åˆ†å¶æ•°é¡µï¼ˆåœ¨å·¦ï¼‰çš„å·¦é¡µçœ‰æ˜¾ç¤ºç« æ ‡é¢˜ï¼Œå¥‡æ•°é¡µ % (在å³ï¼‰çš„å³é¡µçœ‰æ˜¾ç¤ºèŠ‚æ ‡é¢˜ï¼›å‰ç½®éƒ¨åˆ†çš„é¡µçœ‰æŒ‰åŒæ ·æ ¼å¼æ˜¾ç¤ºï¼Œä½†æ–‡å— % å‡ä¸ºå¯¹åº”æ ‡é¢˜ï¼ˆå¦‚â€œç›®å½•â€ã€â€œæ‘˜è¦â€ç‰ï¼‰ã€‚ % 而在å•颿¨¡å¼ä¸‹ï¼Œæ£æ–‡éƒ¨åˆ†åˆ™é¡µé¢ä¸åˆ†å¥‡å¶ï¼Œå‡åŒæ—¶æ˜¾ç¤ºå·¦ã€å³é¡µçœ‰ï¼Œ % æ–‡å—åˆ†åˆ«ä¸ºç« æ ‡é¢˜å’ŒèŠ‚æ ‡é¢˜ï¼›å‰ç½®éƒ¨åˆ†åªæœ‰ä¸é—´é¡µçœ‰ï¼Œæ˜¾ç¤ºå¯¹åº”æ ‡é¢˜ã€‚ %^^A! At two-sided mode, left headers on the even pages (left hand) %^^A! in \emph{main body} will show the title of chapters, while the %^^A! right headers on the odd pages (right hand) will show the %^^A! title of sections. Headers in \emph{front matter} have the %^^A! same style, but they will only show the title as ``Contents'', %^^A! ``Abstract'', etc. %^^A! %^^A! At one-sided mode, both left and right headers on \emph{all} %^^A! pages in main body will be shown. The text is the title of %^^A! chapters and sections, respectively. In front matter, there %^^A! are only middle headers, which show the corresponding titles. %^^A! % % \begin{function}{draft} % \begin{fdusyntax}[emph={[1]draft}] % draft = (*<\TFF>*) % \end{fdusyntax} % 选择是å¦å¼€å¯è‰ç¨¿æ¨¡å¼ï¼Œé»˜è®¤å…³é—。 % \end{function} %^^A! \begin{function}{draft} %^^A! \begin{fdusyntax}[emph={[1]draft}] %^^A! draft = (*<\TFF>*) %^^A! \end{fdusyntax} %^^A! Enable draft mode. Default off. %^^A! \end{function} %^^A! % % è‰ç¨¿æ¨¡å¼ä¸ºå…¨å±€é€‰é¡¹ï¼Œä¼šå½±å“到很多å®åŒ…的工作方å¼ã€‚ % å¼€å¯ä¹‹åŽï¼Œä¸»è¦çš„å˜åŒ–有: % \begin{itemize} % \item æŠŠè¡Œæº¢å‡ºçš„ç›’åæ˜¾ç¤ºä¸ºé»‘色方å—ï¼› % \item ä¸å®žé™…æ’入图片,åªè¾“出一个å 使–¹æ¡†ï¼› % \item å…³é—超链接渲染,也ä¸å†ç”Ÿæˆ PDF 书ç¾ï¼› % \item 显示页é¢è¾¹æ¡†ã€‚ % \end{itemize} %^^A! \opt{draft} is a global option and will affect many packages. %^^A! You may notice the following changes when using \opt{draft}: %^^A! \begin{itemize} %^^A! \item Lines with overfull \tn{hbox}'s will be marked with %^^A! a thick black square on the right margin. %^^A! \item Will not include graphics files actually, but instead %^^A! print a box of the size the graphic would take up, as well %^^A! as the file name. %^^A! \item Will not make hyperlinks and PDF bookmarks. %^^A! \item Show the page frames. %^^A! \end{itemize} %^^A! % % \begin{function}[added=2018-01-31]{config} % \begin{fdusyntax}[emph={[1]config}] % config = (*\marg{文件}*) % \end{fdusyntax} % 用户é…置文件的文件å。默认为空,å³ä¸è½½å…¥ç”¨æˆ·é…置文件。 % \end{function} %^^A! \begin{function}[added=2018-01-31]{config} %^^A! \begin{fdusyntax}[emph={[1]config}] %^^A! config = (*\marg{file}*) %^^A! \end{fdusyntax} %^^A! File name of user profile. Default value is empty, so no %^^A! profile is loaded automatically. %^^A! \end{function} %^^A! % % \subsection{傿•°è®¾ç½®} %^^A! \subsection{More options} %^^A! % % \begin{function}{\fdusetup} % \begin{fdusyntax}[morekeywords={\fdusetup}] % \fdusetup(*\marg{键值列表}*) % \end{fdusyntax} % æœ¬æ¨¡æ¿æä¾›äº†ä¸€ç³»åˆ—é€‰é¡¹ï¼Œå¯ç”±æ‚¨è‡ªè¡Œé…置。载入文档类之åŽï¼Œä»¥ä¸‹ % 所有选项å‡å¯é€šè¿‡ç»Ÿä¸€çš„命令 \cs{fdusetup} æ¥è®¾ç½®ã€‚ % \end{function} %^^A! \begin{function}{\fdusetup} %^^A! \begin{fdusyntax}[morekeywords={\fdusetup}] %^^A! \fdusetup(*\marg{key-value list}*) %^^A! \end{fdusyntax} %^^A! \cls{fduthesis} has provided a number of options, which %^^A! can be given via the general command \cs{fdusetup}. %^^A! \end{function} %^^A! % % \cs{fdusetup} çš„å‚æ•°æ˜¯ä¸€ç»„由(英文)逗å·éš”开的选项列表,列表ä¸çš„ % 选项通常是 \kvopt{\meta{key}}{\meta{value}} 的形å¼ã€‚部分选项的 % \meta{value} å¯ä»¥çœç•¥ã€‚对于åŒä¸€é¡¹ï¼ŒåŽé¢çš„设置将会覆盖å‰é¢çš„设置。 % 在下文的说明ä¸ï¼Œå°†ç”¨\textbf{粗体}表示默认值。 %^^A! The argument of \cs{fdusetup} is a set of comma-separated option list. %^^A! The options usually have the form of \kvopt{\meta{key}}{\meta{value}} %^^A! and in some cases \meta{value} can be omitted. %^^A! For the same option, the values given later will override the %^^A! the previous ones. Default values are indicated in %^^A! \textbf{boldface} in the following descriptions. %^^A! % % \cs{fdusetup} 采用 \LaTeX3 é£Žæ ¼çš„é”®å€¼è®¾ç½®ï¼Œæ”¯æŒä¸åŒç±»åž‹ä»¥åŠå¤šç§ % 层次的选项设定。键值列表ä¸ï¼Œâ€œ|=|â€å·¦å³çš„ç©ºæ ¼ä¸å½±å“设置;但需注æ„, % 傿•°åˆ—表ä¸ä¸å¯ä»¥å‡ºçŽ°ç©ºè¡Œã€‚ %^^A! \cs{fdusetup} follows \LaTeX3 key-value style, and different %^^A! types as well as various levels options are supported. In the %^^A! key-value list, spaces around ``|=|'' will be trimmed; however, %^^A! blank lines should never appear in the argument. %^^A! % % 与模æ¿é€‰é¡¹ç›¸åŒï¼Œå¸ƒå°”åž‹çš„å‚æ•°å¯ä»¥çœç•¥ \kvopt{\meta{选项}}{true} % ä¸çš„“\kvopt{}{true}â€ã€‚ %^^A! Similar with template options, ``\kvopt{\meta{option}}{true}'' %^^A! can be abbreviated to \opt{\meta{option}} for boolean type. %^^A! % % 妿œ‰ä¸€äº›é€‰é¡¹åŒ…å«å选项,如 \opt{style} å’Œ \opt{info} ç‰ã€‚它们å¯ä»¥ % 按如下两ç§ç‰ä»·æ–¹å¼æ¥è®¾å®šï¼š %^^A! Some options, such as \opt{style} and \opt{info}, may have %^^A! sub-options. They can be set by the following two equivalent %^^A! methods: %^^A+ % \begin{latexexample}[morekeywords={\fdusetup}, % emph={[1]style,cjk-font,font-size,info,title,title*,author,author*,department}] % \fdusetup{ % style = {cjk-font = adobe, font-size = -4}, % info = { % title = {论动体的电动力å¦}, % title* = {On the Electrodynamics of Moving Bodies}, % author = {é˜¿å°”ä¼¯ç‰¹Â·çˆ±å› æ–¯å¦}, % author* = {Albert Einstein}, % department = {物ç†å¦ç³»} % } % } % \end{latexexample} %^^A- % 或者 %^^A! or %^^A+ % \begin{latexexample}[morekeywords={\fdusetup}, % emph={[1]style,cjk-font,font-size,info,title,title*,author,author*,department}] % \fdusetup{ % style/cjk-font = adobe, % style/font-size = -4, % info/title = {论动体的电动力å¦}, % info/title* = {On the Electrodynamics of Moving Bodies}, % info/author = {é˜¿å°”ä¼¯ç‰¹Â·çˆ±å› æ–¯å¦}, % info/author* = {Albert Einstein}, % info/department = {物ç†å¦ç³»} % } % \end{latexexample} %^^A- %^^A! % % æ³¨æ„ â€œ|/|†的å‰åŽå‡ä¸å¯ä»¥å‡ºçŽ°ç©ºç™½å—符。 %^^A! Note that you may \emph{not} put spaces around ``|/|''. %^^A! % % \subsubsection{è®ºæ–‡æ ¼å¼} \label{subsubsec:è®ºæ–‡æ ¼å¼} %^^A! \subsubsection{Style and format} \label{subsubsec:style-and-format} %^^A! % % \begin{function}{style} % \begin{fdusyntax}[emph={[1]style}] % style = (*\marg{键值列表}*) % style/(*\meta{key}*) = (*\meta{value}*) % \end{fdusyntax} % 该选项包å«è®¸å¤šåé¡¹ç›®ï¼Œç”¨äºŽè®¾ç½®è®ºæ–‡æ ¼å¼ã€‚具体内容è§ä¸‹ã€‚ % \end{function} %^^A! \begin{function}{style} %^^A! \begin{fdusyntax}[emph={[1]style}] %^^A! style = (*\marg{key-value list}*) %^^A! style/(*\meta{key}*) = (*\meta{value}*) %^^A! \end{fdusyntax} %^^A! This general option is for setting the thesis style and format. %^^A! See the following details. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[updated=2019-03-05]{style/font} % \begin{fdusyntax}[emph={[1]font}] % font = (*<garamond|libertinus|lm|palatino|(times)|times*|none>*) % \end{fdusyntax} %^^A- % 设置西文å—体(包括数å¦å—体)。具体é…ç½®è§è¡¨~\ref{tab:font}。 % \end{function} %^^A! Set fonts (including math fonts). The details can be found in table~\ref{tab:font}. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \centering % \begin{threeparttable} % \caption{西文å—体é…ç½®} % \label{tab:font} % \small % \begin{tabular}{ccccc} % \toprule % & \textbf{æ£æ–‡å—体} & \textbf{æ— è¡¬çº¿å—体} & \textbf{ç‰å®½å—体} & \textbf{æ•°å¦å—体} \\ % \midrule % |garamond| & EB Garamond & Libertinus Sans & LM Mono\tnote{a} & Garamond Math \\ % |libertinus| & Libertinus Serif & Libertinus Sans & LM Mono & Libertinus Math \\ % |lm| & LM Roman & LM Sans & LM Mono & LM Math \\ % |palatino| & TG Pagella\tnote{b} & Libertinus Sans & LM Mono & TG Pagella Math \\ % |times| & XITS & TG Heros & TG Cursor & XITS Math \\ % |times*|\tnote{c} & Times New Roman & Arial & Courier New & XITS Math \\ % \bottomrule % \end{tabular} % \begin{tablenotes} % \item[a] “LMâ€æ˜¯ Latin Modern 的缩写。 % \item[b] “TGâ€æ˜¯ TeX Gyre 的缩写。 % \item[c] 本行ä¸ï¼ŒTimes New Romanã€Arial å’Œ Courier New 是商业å—体, % ä¸åŒ…å«åœ¨ \TeXLive{} å‘行版ä¸ï¼Œä½†åœ¨ Windows å’Œ macOS 系统上å‡é»˜è®¤å®‰è£…。 % \end{tablenotes} % \end{threeparttable} % \end{table} %^^A! \begin{table}[ht] %^^A! \begin{threeparttable} %^^A! \caption{Font configuration} %^^A! \label{tab:font} %^^A! \centering %^^A! \begin{tabular}{ccccc} %^^A! \toprule %^^A! & \textbf{Roman} & \textbf{Sans-serif} & \textbf{Monospaced} & \textbf{Math} \\ %^^A! \midrule %^^A! |garamond| & EB Garamond & Libertinus Sans & LM Mono\tnote{a} & Garamond Math \\ %^^A! |libertinus| & Libertinus Serif & Libertinus Sans & LM Mono & Libertinus Math \\ %^^A! |lm| & LM Roman & LM Sans & LM Mono & LM Math \\ %^^A! |palatino| & TG Pagella\tnote{b} & Libertinus Sans & LM Mono & TG Pagella Math \\ %^^A! |times| & XITS & TG Heros & TG Cursor & XITS Math \\ %^^A! |times*|\tnote{c} & Times New Roman & Arial & Courier New & XITS Math \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \begin{tablenotes} %^^A! \item[a] ``LM'' is the abbreviation of Latin Modern. %^^A! \item[b] ``TG'' is the abbreviation of TeX Gyre. %^^A! \item[c] Here, Times New Roman, Arial and Courier New are commercial fonts. They are %^^A! installed on Windows and macOS by default. %^^A! \end{tablenotes} %^^A! \end{threeparttable} %^^A! \end{table} % %^^A+ % \begin{function}[rEXP,updated=2019-03-05]{style/cjk-font} % \begin{fdusyntax}[emph={[1]cjk-font}] % cjk-font = (*<adobe|(fandol)|founder|mac|sinotype|sourcehan|windows|none>*) % \end{fdusyntax} %^^A- % è®¾ç½®ä¸æ–‡å—体。具体é…ç½®è§è¡¨~\ref{tab:cjk-font}。 % \end{function} %^^A! Set CJK (Chinese, Japanese and Korean) fonts. The details can be found in %^^A! table~\ref{tab:cjk-font}. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \caption{䏿–‡å—体é…ç½®} % \label{tab:cjk-font} % \centering % \small % \begin{tabular}{ccccc} % \toprule % & \textbf{æ£æ–‡å—体(宋体)} & \textbf{æ— è¡¬çº¿å—体(黑体)} & \textbf{ç‰å®½å—体(仿宋)} & \textbf{楷体} \\ % \midrule % |adobe| & Adobe 宋体 & Adobe 黑体 & Adobe 仿宋 & Adobe 楷体 \\ % |fandol| & Fandol 宋体 & Fandol 黑体 & Fandol 仿宋 & Fandol 楷体 \\ % |founder| & æ–¹æ£ä¹¦å®‹ & æ–¹æ£é»‘体 & æ–¹æ£ä»¿å®‹ & æ–¹æ£æ¥·ä½“ \\ % |mac| & ï¼ˆåŽæ–‡ï¼‰å®‹ä½“-简 & ï¼ˆåŽæ–‡ï¼‰é»‘体-简 & åŽæ–‡ä»¿å®‹ & ï¼ˆåŽæ–‡ï¼‰æ¥·ä½“-简 \\ % |sinotype| & åŽæ–‡å®‹ä½“ & åŽæ–‡é»‘体 & åŽæ–‡ä»¿å®‹ & åŽæ–‡æ¥·ä½“ \\ % |sourcehan| & æ€æºå®‹ä½“ & æ€æºé»‘体 & --- & --- \\ % |windows| & ï¼ˆä¸æ˜“)宋体 & ï¼ˆä¸æ˜“)黑体 & ï¼ˆä¸æ˜“)仿宋 & ï¼ˆä¸æ˜“)楷体 \\ % \bottomrule % \end{tabular} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{CJK font configuration} %^^A! \label{tab:cjk-font} %^^A! \centering %^^A! \begin{tabular}{cccc} %^^A! \toprule %^^A! & \textbf{Roman (song)} & \textbf{Sans-serif (hei)} & \textbf{Monospaced (fang)} \\ %^^A! \midrule %^^A! |adobe| & Adobe Song Std & Adobe Heiti Std & Adobe Fangsong Std \\ %^^A! |fandol| & FandolSong & FandolHei & FandolFang \\ %^^A! |founder| & FZShuSong-Z01 & FZHei-B01 & FZFangSong-Z02 \\ %^^A! |mac| & Songti SC & Heiti SC & STFangsong \\ %^^A! |sinotype| & STSong & STHeiti & STFangsong \\ %^^A! |sourcehan| & Source Han Serif SC & Source Han Sans SC & --- \\ %^^A! |windows| & SimSun & SimHei & FangSong \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \end{table} %^^A! % % å¯ç”¨ \kvopt{font}{none} 或 \kvopt{cjk-font}{none} 之åŽï¼Œæ¨¡æ¿å°†å…³é— % 默认西文 / 䏿–‡å—ä½“è®¾ç½®ã€‚æ¤æ—¶ï¼Œæ‚¨éœ€è¦è‡ªè¡Œä½¿ç”¨ \cs{setmainfont}〠% \cs{setCJKmainfont}ã€\cs{setmathfont} ç‰å‘½ä»¤æ¥é…ç½®å—体。 %^^A! When you choose \kvopt{font}{none} or \kvopt{cjk-font}{none}, %^^A! \cls{fduthesis} will disable the default western/CJK font %^^A! settings. You may use \cs{setmainfont}, \cs{setCJKmainfont} %^^A! and \cs{set\-math\-font}, etc.\ to configure the fonts manually. %^^A! % %^^A+ % \begin{function}{style/font-size} % \begin{fdusyntax}[emph={[1]font-size}] % font-size = (*<(-4)|5>*) % \end{fdusyntax} %^^A- % 设置论文的基础å—å·ã€‚ % \end{function} %^^A! Specify the basic font size in your thesis. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[rEXP,updated=2017-10-14]{style/fullwidth-stop} % \begin{fdusyntax}[emph={[1]fullwidth-stop}] % fullwidth-stop = (*<catcode|mapping|(false)>*) % \end{fdusyntax} %^^A- % é€‰æ‹©æ˜¯å¦æŠŠå…¨è§’å®žå¿ƒå¥ç‚¹\FSFW 作为默认的å¥å·å½¢çŠ¶ã€‚ % è¿™ç§å¥å·ä¸€èˆ¬ç”¨äºŽç§‘æŠ€ç±»æ–‡ç« ï¼Œä»¥é¿å…ä¸Žä¸‹æ ‡â€œ$_o$â€æˆ–“$_0$â€æ··æ·†ã€‚ % \end{function} %^^A! Let full-width full stop ``\FSFW'' as the default full stop. %^^A! Generally, this punctuation is used for scientific articles, %^^A! where ``\FSID'' is easily to be confused with subscript %^^A! ``$_o$'' or ``$_0$''. %^^A! \end{function} %^^A! % % 选择 \kvopt{fullwidth-stop}{catcode} 或 \opt{mapping} åŽï¼Œéƒ½ä¼šå®žçŽ°ä¸Šè¿°æ•ˆæžœã€‚ % 有所ä¸åŒçš„æ˜¯ï¼Œåœ¨é€‰æ‹© \opt{catcode} åŽï¼Œåªæœ‰\emph{显å¼çš„}\FSID ä¼šè¢«æ›¿æ¢ % 为\FSFW;但在选择 \opt{mapping} åŽï¼Œ\emph{所有的}\FSID 都会被替æ¢ã€‚例如, % 如果您用å®ä¿å˜äº†ä¸€äº›å«æœ‰\FSID 的文å—,那么在选择 \opt{catcode} æ—¶ï¼Œå…¶ä¸ % çš„\FSID ä¸ä¼šå°†è¢«æ›¿æ¢ä¸º\FSFW。 %^^A! If you choose \kvopt{fullwidth-stop}{catcode}, only %^^A! \emph{explicit} ``\FSID'' will be replaced by ``\FSFW''; when %^^A! choosing \kvopt{fullwidth-stop}{mapping}, however, \emph{all} %^^A! the ``\FSID'' will be replaced. %^^A! % % 选项 \kvopt{fullwidth-stop}{mapping} åªåœ¨ \XeTeX{} 下有效。使用 % \LuaTeX{} 编译时,该选项相当于 \kvopt{fullwidth-stop}{catcode}。 %^^A! \opt{mapping} is valid only under \XeTeX{}. When compiling %^^A! with \LuaTeX{}, it is equivalent to \opt{catcode}. %^^A! % % 如果您在选择 \kvopt{fullwidth-stop}{mapping} åŽä»éœ€è¦ä¸´æ—¶æ˜¾ç¤º\FSID, % å¯ä»¥æŒ‰å¦‚下方法æ“作: % \begin{latexexample}[moretexcs={\CJKfontspec},emph={[1]Mapping}] % % 请使用 XeTeX 编译 % % 外侧的花括å·è¡¨ç¤ºåˆ†ç»„ % 这是一个å¥å·{\CJKfontspec{(*\meta{å—体å}*)}[Mapping=full-stop]。} % \end{latexexample} %^^A! If you want to display ``\FSID'' temporarily after setting %^^A! \kvopt{fullwidth-stop}{mapping}, the following code snippet %^^A! will be helpful: %^^A! \begin{latexexample}[moretexcs={\CJKfontspec},emph={[1]Mapping}] %^^A! % Compiled with XeTeX %^^A! % The outside braces is used for group %^^A! 这是一个å¥å·{\CJKfontspec{(*\meta{font name}*)}[Mapping=full-stop]。} %^^A! \end{latexexample} %^^A! % % \begin{function}{style/footnote-style} %^^A è¿™é‡Œå¥‡æ€ªçš„ä¸œè¥¿æ˜¯ç”¨æ¥æŽ§åˆ¶å¯¹é½çš„。fdusyntax ä¼šåƒæŽ‰å¼€å¤´çš„å‡ ä¸ª %^^A ç©ºæ ¼ï¼Œå› æ¤è¿™é‡Œç”¨ . æ¥å ä½ã€‚ % \begin{fdusyntax}[emph={[1]footnote-style}] % footnote-style = (*<plain|\\ % ......\mbox{}~~~~~~~~~~~~~~~~~libertinus|libertinus*|libertinus-sans|\\ % ......\mbox{}~~~~~~~~~~~~~~~~~pifont|pifont*|pifont-sans|pifont-sans*|\\ % ......\mbox{}~~~~~~~~~~~~~~~~~xits|xits-sans|xits-sans*>*) % \end{fdusyntax} % è®¾ç½®è„šæ³¨ç¼–å·æ ·å¼ã€‚西文å—体设置会影å“其默认å–å€¼ï¼ˆè§ % 表~\ref{tab:footnote-font}ï¼‰ã€‚å› æ¤ï¼Œè¦ä½¿å¾—该选项生效,需将其 % 放置在 \opt{font} 选项之åŽã€‚带有 |sans| çš„ä¸ºç›¸åº”çš„æ— è¡¬çº¿å—体 % 版本;带有 |*| çš„ä¸ºé˜´æ–‡æ ·å¼ï¼ˆå³é»‘底白å—)。 % \end{function} %^^A! \begin{function}{style/footnote-style} %^^A! \begin{fdusyntax}[emph={[1]footnote-style}] %^^A! footnote-style = (*<plain|\\ %^^A! ....\mbox{}~~~~~~~~~~~~~~~~~libertinus|libertinus*|libertinus-sans|\\ %^^A! ....\mbox{}~~~~~~~~~~~~~~~~~pifont|pifont*|pifont-sans|pifont-sans*|\\ %^^A! ....\mbox{}~~~~~~~~~~~~~~~~~xits|xits-sans|xits-sans*>*) %^^A! \end{fdusyntax} %^^A! Set the style of footnote numbers. Note that western fonts %^^A! will affect its default value (see table~\ref{tab:footnote-font}), %^^A! so you may put it after |font| option. The one with |sans| %^^A! is for the corresponding sans-serif version, while |*| %^^A! for white on black version. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \caption{西文å—ä½“ä¸Žè„šæ³¨ç¼–å·æ ·å¼é»˜è®¤å€¼çš„对应关系} % \label{tab:footnote-font} % \centering % \small % \begin{tabular}{ccccc} % \toprule % \textbf{西文å—体设置} & % |libertinus| & |lm| & |palatino| & |times| \\ % \midrule % \textbf{è„šæ³¨ç¼–å·æ ·å¼é»˜è®¤å€¼} & % |libertinus| & |pifont| & |pifont| & |xits| \\ % \bottomrule % \end{tabular} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{Relationship between option \opt{font} and the %^^A! default value of \opt{footnote-style}} %^^A! \label{tab:footnote-font} %^^A! \centering %^^A! \begin{tabular}{ccccc} %^^A! \toprule %^^A! \textbf{Western fonts settings} & %^^A! |libertinus| & |lm| & |palatino| & |times| \\ %^^A! \midrule %^^A! \textbf{Default value of footnote number style} & %^^A! |libertinus| & |pifont| & |pifont| & |xits| \\ %^^A! \bottomrule %^^A! \end{tabular} %^^A! \end{table} %^^A! % %^^A+ % \begin{function}[added=2017-08-13]{style/hyperlink} % \begin{fdusyntax}[emph={[1]hyperlink}] % hyperlink = (*<border|(color)|none>*) % \end{fdusyntax} %^^A- % è®¾ç½®è¶…é“¾æŽ¥æ ·å¼ã€‚\opt{border} 表示在超链接四周绘制方框; % \opt{color} 表示用彩色显示超链接;\opt{none} 表示没有特殊装饰, % å¯ç”¨äºŽç”Ÿæˆæœ€ç»ˆçš„æ‰“å°ç‰ˆæ–‡ç¨¿ã€‚ % \end{function} %^^A! Set the style of hyperlinks. \opt{border} draws borders around %^^A! hyperlinks; \opt{color} displays hyperlinks in colorful text; %^^A! \opt{none} leads to plain text, which is useful when printing %^^A! the final document. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-08-13,updated=2021-12-27]{style/hyperlink-color} % \begin{fdusyntax}[emph={[1]hyperlink-color}] % hyperlink-color = (*<(default)|classic|material|graylevel|prl>*) % \end{fdusyntax} % 设置超链接颜色。该选项在 \kvopt{hyperlink}{none} æ—¶æ— æ•ˆã€‚ % å„选项所代表的颜色è§è¡¨~\ref{tab:hyperlink-color}。 % \end{function} %^^A! \begin{function}[added=2017-08-13,updated=2021-12-27]{style/hyperlink-color} %^^A! \begin{fdusyntax}[emph={[1]hyperlink-color}] %^^A! hyperlink-color = (*<(default)|classic|material|graylevel|prl>*) %^^A! \end{fdusyntax} %^^A! Set the color of hyperlinks. It is invalid if %^^A! \kvopt{hyperlink}{none}. The related colors can be found %^^A! in table~\ref{tab:hyperlink-color}. %^^A! \end{function} %^^A! % %^^A+ % \begin{table}[ht] % \centering % \small %^^A- % \newcommand\linkcolorexam[3]{^^A % {\small 图~\textcolor[HTML]{#1}{1-2}, % (\textcolor[HTML]{#1}{3.4})~å¼} & % {\small \textcolor[HTML]{#2}{\texttt{https://g.cn}}} & % {\small 文献~[\textcolor[HTML]{#3}{1}], % (\textcolor[HTML]{#3}{Knuth~1986})}} %^^A! \newcommand\linkcolorexam[3]{% %^^A! {\small Fig.~\textcolor[HTML]{#1}{1-2}, %^^A! Eq.~(\textcolor[HTML]{#1}{3.4})} & %^^A! {\small \textcolor[HTML]{#2}{\texttt{http://g.cn}}} & %^^A! {\small Ref.~[\textcolor[HTML]{#3}{1}], %^^A! (\textcolor[HTML]{#3}{Knuth~1986})}} % \begin{threeparttable} % \caption{预定义的超链接颜色方案} % \label{tab:hyperlink-color} %^^A! \begin{threeparttable} %^^A! \caption{Pre-defined hyperlink color schemes} %^^A! \label{tab:hyperlink-color} % \begin{tabular}{c*{3}{>{\hspace{0.2cm}}c<{\hspace{0.2cm}}}} % \toprule % \textbf{选项} & \textbf{链接} & \textbf{URL} & \textbf{引用} \\ %^^A! \begin{tabular}{c*{3}{>{\hspace{0.2cm}}c<{\hspace{0.2cm}}}} %^^A! \toprule %^^A! \textbf{Options} & \textbf{Cross references} & \textbf{URL} & \textbf{Citation} \\ %^^A+ % \midrule % \opt{default} & \linkcolorexam{990000}{0000B2}{007F00} \\ % \opt{classic} & \linkcolorexam{FF0000}{0000FF}{00FF00} \\ % \opt{material}\tnote{a} & \linkcolorexam{E91E63}{009688}{4CAF50} \\ % \opt{graylevel}\tnote{a} & \linkcolorexam{616161}{616161}{616161} \\ % \opt{prl}\tnote{b} & \linkcolorexam{2D3092}{2D3092}{2D3092} \\ % \bottomrule % \end{tabular} % \begin{tablenotes} %^^A- % \item[a] å–自 Material 色彩方案 % ï¼ˆè§ \url{https://material.io/guidelines/style/color.html})。 % \item[b] \textit{Physical Review Letter} æ‚å¿—é…色。 %^^A! \item[a] Material Design color palette %^^A! (See \url{https://material.io/guidelines/style/color.html}). %^^A! \item[b] \textit{Physical Review Letter} magazine. %^^A+ % \end{tablenotes} % \end{threeparttable} % \end{table} %^^A- %^^A! % %^^A+ % \begin{function}[added=2018-01-25,updated=2023-05-11]{style/bib-backend} % \begin{fdusyntax}[emph={[1]bib-backend}] % bib-backend = (*<bibtex|biblatex>*) % \end{fdusyntax} %^^A- % 选择å‚è€ƒæ–‡çŒ®çš„æ”¯æŒæ–¹å¼ã€‚选择 \opt{bibtex} åŽï¼Œå°†ä½¿ç”¨ \BibTeX{} % å¤„ç†æ–‡çŒ®ï¼Œæ ·å¼ç”± \pkg{natbib} å®åŒ…负责;选择 \opt{biblatex} åŽï¼Œ % 将使用 \biber{} å¤„ç†æ–‡çŒ®ï¼Œæ ·å¼åˆ™ç”± \pkg{biblatex} å®åŒ…负责。 % 如果没有指定该选项,则ä¸å†å¤„ç†å¼•用和å‚考文献。 % \end{function} %^^A! Specify the backend or driver of bibliography processing. %^^A! \BibTeX{} and \pkg{natbib} package will be used if you choose %^^A! \opt{bibtex}, while \biber{} and \pkg{biblatex} will be used %^^A! if you choose \opt{biblatex}. If not specified, the citations %^^A! and references will not be processed. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-10-28,updated=2018-01-25]{style/bib-style} % \begin{fdusyntax}[emph={[1]bib-style}] % bib-style = (*<author-year|(numerical)|\meta{å…¶ä»–æ ·å¼}>*) % \end{fdusyntax} % 设置å‚è€ƒæ–‡çŒ®æ ·å¼ã€‚\opt{author-year} å’Œ \opt{numerical} 分别对应 % å›½å®¶æ ‡å‡† GB/T 7714--2015 \cite{gb-t-7714-2015} ä¸çš„著者—出版年制和 % 顺åºç¼–ç 制。选择 \meta{å…¶ä»–æ ·å¼} 时,如果 \kvopt{bib-backend}{bibtex}, % 需ä¿è¯ç›¸åº”çš„ \file{.bst} æ ¼å¼æ–‡ä»¶èƒ½è¢«è°ƒç”¨ï¼›è€Œå¦‚æžœ % \kvopt{bib-backend}{biblatex},则需ä¿è¯ç›¸åº”çš„ \file{.bbx} æ ¼å¼æ–‡ä»¶ % 能被调用。 % \end{function} %^^A! \begin{function}[added=2017-10-28,updated=2018-01-25]{style/bib-style} %^^A! \begin{fdusyntax}[emph={[1]bib-style}] %^^A! bib-style = (*<author-year|(numerical)|\meta{other style}>*) %^^A! \end{fdusyntax} %^^A! Set the style of bibliography. \opt{author-year} and %^^A! \opt{numerical} will follow the standard GB/T 7714--2015. %^^A! By setting \kvopt{bib-style}{\meta{other style}}, you can use %^^A! other bibliography style (\file{.bst} file for %^^A! \kvopt{bib-backend}{bibtex} and \file{.bbx} file for %^^A! \kvopt{bib-backend}{biblatex}). Suffix is not needed. %^^A! \end{function} %^^A! % % \begin{function}[added=2018-01-25]{style/cite-style} % \begin{fdusyntax}[emph={[1]cite-style}] % cite-style = (*\marg{å¼•ç”¨æ ·å¼}*) % \end{fdusyntax} % é€‰æ‹©å¼•ç”¨æ ¼å¼ã€‚默认为空,å³ä¸Žå‚è€ƒæ–‡çŒ®æ ·å¼ï¼ˆè‘—è€…â€”å‡ºç‰ˆå¹´åˆ¶æˆ–é¡ºåº % ç¼–ç åˆ¶ï¼‰ä¿æŒä¸€è‡´ã€‚如果手动填写,需ä¿è¯ç›¸åº”çš„ \file{.cbx} æ ¼å¼æ–‡ä»¶ % 能被调用。该选项在 \kvopt{bib-backend}{bibtex} æ—¶æ— æ•ˆã€‚ % \end{function} %^^A! \begin{function}[added=2018-01-25]{style/cite-style} %^^A! \begin{fdusyntax}[emph={[1]cite-style}] %^^A! cite-style = (*\marg{style}*) %^^A! \end{fdusyntax} %^^A! Select citation style. Default value is empty, which means %^^A! the citation style will follow your bibliography style %^^A! (author-year or numeric). If you want change the citation %^^A! style, the corresponding \file{.cbx} file must be available. %^^A! This option is invalid when \kvopt{bib-backend}{bibtex}. %^^A! \end{function} %^^A! % % \begin{function}[added=2018-01-25]{style/bib-resource} % \begin{fdusyntax}[emph={[1]bib-resource}] % bib-resource = (*\marg{文件}*) % \end{fdusyntax} % å‚è€ƒæ–‡çŒ®æ•°æ®æºã€‚å¯ä»¥æ˜¯å•个文件,也å¯ä»¥æ˜¯ç”¨è‹±æ–‡é€—å·éš”开的一组文件。 % 如果 \kvopt{bib-backend}{biblatex},则必须明确给出 \file{.bib} % åŽç¼€å。 % \end{function} %^^A! \begin{function}[added=2018-01-25]{style/bib-resource} %^^A! \begin{fdusyntax}[emph={[1]bib-resource}] %^^A! bib-resource = (*\marg{bib file\symbol{"28}s\symbol{"29}}*) %^^A! \end{fdusyntax} %^^A! Specify the bibliography database (usually in \file{.bib} %^^A! format). If using more than one files, the file names should %^^A! be separated with comma. When \kvopt{bib-backend}{biblatex}, %^^A! you must type in the ``\file{.bib}'' suffix. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-08-10]{style/logo} % \begin{fdusyntax}[emph={[1]logo}] % logo = (*\marg{文件}*) % \end{fdusyntax} % å°é¢ä¸æ ¡å图片的文件å。默认值为 \file{fudan-name.pdf}。 % \end{function} %^^A! \begin{function}[added=2017-08-10]{style/logo} %^^A! \begin{fdusyntax}[emph={[1]logo}] %^^A! logo = (*\marg{file}*) %^^A! \end{fdusyntax} %^^A! File name of the logo in thesis cover. Default value is %^^A! \file{fudan-name.pdf}. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-08-10]{style/logo-size} % \begin{fdusyntax}[emph={[1]logo-size}] % logo-size = (*\marg{宽度}*) % logo-size = {(*\meta{宽度}*), (*\meta{高度}*)} % \end{fdusyntax} % æ ¡å图片的大å°ã€‚默认仅指定了宽度,为 |0.5\textwidth|\/。 % 如果仅需指定高度,å¯åœ¨ \meta{宽度} 处填入一个空的分组 |{}|。 % \end{function} %^^A! \begin{function}[added=2017-08-10]{style/logo-size} %^^A! \begin{fdusyntax}[emph={[1]logo-size}] %^^A! logo-size = (*\marg{width}*) %^^A! logo-size = {(*\meta{width}*), (*\meta{height}*)} %^^A! \end{fdusyntax} %^^A! Size of the logo. By default, only width is set to %^^A! |0.5\textwidth|. To set height only, you can put an %^^A! empty group ``|{}|'' at \meta{width}. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[added=2017-07-06]{style/auto-make-cover} % \begin{fdusyntax}[emph={[1]auto-make-cover}] % auto-make-cover = (*<\TTF>*) % \end{fdusyntax} %^^A- % 是å¦è‡ªåŠ¨ç”Ÿæˆè®ºæ–‡å°é¢ï¼ˆå°ä¸€ï¼‰ã€æŒ‡å¯¼å°ç»„æˆå‘˜åå•(å°äºŒï¼‰å’Œ % 声明页(å°ä¸‰ï¼‰ã€‚å°é¢ä¸çš„å„项信æ¯ï¼Œå¯é€šè¿‡ \cs{fdusetup} 录入, % 具体请å‚阅 \ref{subsubsec:ä¿¡æ¯å½•å…¥}~节。 % \end{function} %^^A! Whether generate thesis cover, list of instructors (inside %^^A! front cover) and declaration page (inside back cover) %^^A! automatically. Entries in the cover can be specified also %^^A! via \cs{fdusetup}, and you can find more details in %^^A! subsubsection~\ref{subsubsec:information}. %^^A! \end{function} %^^A! % % \begin{function}[added=2021-09-21]{style/declaration-page} % \begin{fdusyntax}[emph={[1]declaration-page}] % declaration-page = (*\marg{文件}*) % \end{fdusyntax} % æ’入扫æç‰ˆçš„声明页 PDF 文档。如果为空(默认),则使用模æ¿é¢„定义的声明页。 % \end{function} %^^A! \begin{function}[added=2021-09-21]{style/declaration-page} %^^A! \begin{fdusyntax}[emph={[1]declaration-page}] %^^A! declaration-page = (*\marg{file}*) %^^A! \end{fdusyntax} %^^A! Insert the scanned declaration page PDF file. If empty (default), %^^A! then the pre-defined declaration page will be inserted. %^^A! \end{function} %^^A! % % \begin{function}{\makecoveri,\makecoverii,\makecoveriii} % 用于手动生æˆè®ºæ–‡å°é¢ã€æŒ‡å¯¼å°ç»„æˆå‘˜åå•å’Œå£°æ˜Žé¡µã€‚è¿™å‡ ä¸ªå‘½ä»¤ä¸èƒ½ % ç¡®ä¿é¡µç çš„æ£ç¡®ç¼–æŽ’ï¼Œå› æ¤é™¤éžå¿…è¦ï¼Œæ‚¨åº”当始终使用自动生æˆçš„å°é¢ã€‚ % \end{function} %^^A! \begin{function}{\makecoveri,\makecoverii,\makecoveriii} %^^A! For generating thesis cover, list of instructors and %^^A! declaration page manually. These commands cannot guarantee %^^A! the correct page numbers, hence you should always use the %^^A! auto-generated thesis cover unless necessary. %^^A! \end{function} %^^A! % % \subsubsection{ä¿¡æ¯å½•å…¥} \label{subsubsec:ä¿¡æ¯å½•å…¥} %^^A! \subsubsection{Personal information} \label{subsubsec:information} %^^A! % % \begin{function}{info} % \begin{fdusyntax}[emph={[1]info}] % info = (*\marg{键值列表}*) % info/(*\meta{key}*) = (*\meta{value}*) % \end{fdusyntax} % 该选项包å«è®¸å¤šå项目,用于录入论文信æ¯ã€‚具体内容è§ä¸‹ã€‚以下带“|*|†% çš„é¡¹ç›®è¡¨ç¤ºå¯¹åº”çš„è‹±æ–‡å—æ®µã€‚ % \end{function} %^^A! \begin{function}{info} %^^A! \begin{fdusyntax}[emph={[1]info}] %^^A! info = (*\marg{key-value list}*) %^^A! info/(*\meta{key}*) = (*\meta{value}*) %^^A! \end{fdusyntax} %^^A! This general option is for entering your personal information. %^^A! See the following details. Note that options with ``|*|'' are %^^A! the corresponding English items. %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[added=2018-02-01,updated=2019-03-12]{info/degree} % \begin{fdusyntax}[emph={[1]degree}] % degree = (*<(academic)|professional>*) % \end{fdusyntax} %^^A- % å¦ä½ç±»åž‹ï¼Œä»…适用于åšå£«å’Œç¡•士å¦ä½è®ºæ–‡ã€‚\opt{academic} å’Œ \opt{professional} % åˆ†åˆ«è¡¨ç¤ºå¦æœ¯å¦ä½å’Œä¸“业å¦ä½ã€‚ % \end{function} %^^A! Degree type. This option can only be used in master degree %^^A! thesis. %^^A! \end{function} %^^A! % % \begin{function}{info/title,info/title*} % \begin{fdusyntax}[emph={[1]title,title*}] % title = (*\marg{䏿–‡æ ‡é¢˜}*) % title* = (*\marg{è‹±æ–‡æ ‡é¢˜}*) % \end{fdusyntax} % è®ºæ–‡æ ‡é¢˜ã€‚é»˜è®¤ä¼šåœ¨çº¦ 20 个汉å—å—宽处强制æ–行,但为了è¯ä¹‰çš„ % è¿žè´¯ä»¥åŠæŽ’ç‰ˆçš„ç¾Žè§‚ï¼Œå¦‚æžœæ‚¨çš„æ ‡é¢˜é•¿äºŽä¸€è¡Œï¼Œå»ºè®®ä½¿ç”¨â€œ|\\|†% 手动æ–行。 % \end{function} %^^A! \begin{function}{info/title,info/title*} %^^A! \begin{fdusyntax}[emph={[1]title,title*}] %^^A! title = (*\marg{title in Chinese}*) %^^A! title* = (*\marg{title in English}*) %^^A! \end{fdusyntax} %^^A! Title of your thesis. The line width is about \qty{30}{em} by %^^A! default, but you may break it with |\\| manually. %^^A! \end{function} %^^A! % % \begin{function}{info/author,info/author*} % \begin{fdusyntax}[emph={[1]author,author*}] % author = (*\marg{å§“å}*) % author* = (*\marg{英文姓å(或拼音)}*) % \end{fdusyntax} % 作者姓å。 % \end{function} %^^A! \begin{function}{info/author,info/author*} %^^A! \begin{fdusyntax}[emph={[1]author,author*}] %^^A! author = (*\marg{name in Chinese}*) %^^A! author* = (*\marg{name in English \lparen or Pinyin\rparen}*) %^^A! \end{fdusyntax} %^^A! Author's name. %^^A! \end{function} %^^A! % % \begin{function}{info/supervisor} % \begin{fdusyntax}[emph={[1]supervisor}] % supervisor = (*\marg{å§“å}*) % \end{fdusyntax} % 导师姓å。 % \end{function} %^^A! \begin{function}{info/supervisor} %^^A! \begin{fdusyntax}[emph={[1]supervisor}] %^^A! supervisor = (*\marg{name}*) %^^A! \end{fdusyntax} %^^A! Supervisor's name. %^^A! \end{function} %^^A! % % \begin{function}{info/department} % \begin{fdusyntax}[emph={[1]department}] % department = (*\marg{åç§°}*) % \end{fdusyntax} % 院系å称。 % \end{function} %^^A! \begin{function}{info/department} %^^A! \begin{fdusyntax}[emph={[1]department}] %^^A! department = (*\marg{name}*) %^^A! \end{fdusyntax} %^^A! Name of the department. %^^A! \end{function} %^^A! % % \begin{function}{info/major} % \begin{fdusyntax}[emph={[1]major}] % major = (*\marg{åç§°}*) % \end{fdusyntax} % 专业å称。 % \end{function} %^^A! \begin{function}{info/major} %^^A! \begin{fdusyntax}[emph={[1]major}] %^^A! major = (*\marg{name}*) %^^A! \end{fdusyntax} %^^A! Name of the major. %^^A! \end{function} %^^A! % % \begin{function}{info/student-id} % \begin{fdusyntax}[emph={[1]student-id}] % student-id = (*\marg{æ•°å—}*) % \end{fdusyntax} % 作者å¦å·ã€‚ % \end{function} %^^A! \begin{function}{info/student-id} %^^A! \begin{fdusyntax}[emph={[1]student-id}] %^^A! student-id = (*\marg{number}*) %^^A! \end{fdusyntax} %^^A! Author's student ID. %^^A! \end{function} %^^A! % % 夿—¦å¤§å¦å¦å·å…± 11 ä½ï¼Œå‰ä¸¤ä½ä¸ºå…¥å¦å¹´ä»½ï¼Œä¹‹åŽä¸€ä½ä¸ºå¦ç”Ÿç±»åž‹ % 代ç (åšå£«ç”Ÿä¸º 1,硕士生为 2,本科生为 3),接下æ¥çš„五ä½ä¸º % 专业代ç ,最åŽä¸‰ä½ä¸ºé¡ºåºå·ã€‚ %^^A! In Fudan University, student ID has 11 digits. The first two %^^A! are the year of attendance; next one represents the student's %^^A! type (1 for doctor, 2 for master and 3 for bachelor); the %^^A! following five digits are major ID while the last three are %^^A! serial number. %^^A! % % \begin{function}{info/school-id} % \begin{fdusyntax}[emph={[1]school-id}] % school-id = (*\marg{æ•°å—}*) % \end{fdusyntax} % 妿 ¡ä»£ç 。默认值为 10246ï¼ˆè¿™æ˜¯å¤æ—¦å¤§å¦çš„妿 ¡ä»£ç )。 % \end{function} %^^A! \begin{function}{info/school-id} %^^A! \begin{fdusyntax}[emph={[1]school-id}] %^^A! school-id = (*\marg{number}*) %^^A! \end{fdusyntax} %^^A! School ID. Default value is 10246 (school ID of Fudan University). %^^A! \end{function} %^^A! % % \begin{function}{info/date} % \begin{fdusyntax}[emph={[1]date}] % date = (*\marg{日期}*) % \end{fdusyntax} % è®ºæ–‡å®Œæˆæ—¥æœŸã€‚默认值为文档编译日期(\tn{today})。 % \end{function} %^^A! \begin{function}{info/date} %^^A! \begin{fdusyntax}[emph={[1]date}] %^^A! date = (*\marg{date}*) %^^A! \end{fdusyntax} %^^A! Finish date of your thesis. Default value is the compilation %^^A! date (\tn{today}). %^^A! \end{function} %^^A! % %^^A+ % \begin{function}[added=2017-07-04]{info/secret-level} % \begin{fdusyntax}[emph={[1]secret-level}] % secret-level = (*<(none)|i|ii|iii>*) % \end{fdusyntax} %^^A- % 密级。\opt{i}ã€\opt{ii}ã€\opt{iii} åˆ†åˆ«è¡¨ç¤ºç§˜å¯†ã€æœºå¯†ã€ç»å¯†ï¼› % \opt{none} è¡¨ç¤ºè®ºæ–‡ä¸æ¶‰å¯†ï¼Œå³ä¸æ˜¾ç¤ºå¯†çº§ä¸Žä¿å¯†å¹´é™ã€‚ % \end{function} %^^A! Secret level. \opt{i}, \opt{ii} and \opt{iii} means %^^A! ``秘密'' (secret), ``机密'' (confidential) and ``ç»å¯†'' %^^A! (top secret) respectively. \opt{none} means your thesis is %^^A! not secret-related and secret level and year will not be %^^A! shown. %^^A! \end{function} %^^A! % % \begin{function}[added=2017-07-04]{info/secret-year} % \begin{fdusyntax}[emph={[1]secret-year}] % secret-year = (*\marg{å¹´é™}*) % \end{fdusyntax} % ä¿å¯†å¹´é™ã€‚å»ºè®®æ‚¨ä½¿ç”¨ä¸æ–‡ï¼Œå¦‚“五年â€ã€‚该选项在设置 % \kvopt{secret-level}{none} æ—¶æ— æ•ˆã€‚ % \end{function} %^^A! \begin{function}[added=2017-07-04]{info/secret-year} %^^A! \begin{fdusyntax}[emph={[1]secret-year}] %^^A! secret-year = (*\marg{year}*) %^^A! \end{fdusyntax} %^^A! Secret year. It's recommended to use Chinese word as ``五年'' %^^A! (5 years) here. This option is invalid if you have set %^^A! \kvopt{secret-level}{none}. %^^A! \end{function} %^^A! % % \begin{function}{info/instructors} % \begin{fdusyntax}[emph={[1]instructors}] % instructors = (*\marg{æˆå‘˜ 1, æˆå‘˜ 2, ...}*) % \end{fdusyntax} % 指导å°ç»„æˆå‘˜ã€‚儿ˆå‘˜ä¹‹é—´éœ€ä½¿ç”¨è‹±æ–‡é€—å·éš”å¼€ã€‚ä¸ºé˜²æ¢æ§ä¹‰ï¼Œ % å¯ä»¥ç”¨åˆ†ç»„括å·â€œ|{...}|â€æŠŠå„æˆå‘˜å—段括起æ¥ã€‚ % \end{function} %^^A! \begin{function}{info/instructors} %^^A! \begin{fdusyntax}[emph={[1]instructors}] %^^A! instructors = (*\marg{member 1, member 2, ...}*) %^^A! \end{fdusyntax} %^^A! Instructors' name. Each name should be separated with %^^A! comma. To disambiguate, you may put text containing comma %^^A! into a group ``|{...}|''. %^^A! \end{function} %^^A! % % \begin{function}{info/keywords,info/keywords*} % \begin{fdusyntax}[emph={[1]keywords,keywords*}] % keywords = (*\marg{䏿–‡å…³é”®è¯}*) % keywords* = (*\marg{英文关键è¯}*) % \end{fdusyntax} % 关键è¯åˆ—表。å„关键è¯ä¹‹é—´éœ€ä½¿ç”¨è‹±æ–‡é€—å·éš”å¼€ã€‚ä¸ºé˜²æ¢æ§ä¹‰ï¼Œ % å¯ä»¥ç”¨åˆ†ç»„括å·â€œ|{...}|â€æŠŠå„å—æ®µæ‹¬èµ·æ¥ã€‚ % \end{function} %^^A! \begin{function}{info/keywords,info/keywords*} %^^A! \begin{fdusyntax}[emph={[1]keywords,keywords*}] %^^A! keywords = (*\marg{keywords in Chinese}*) %^^A! keywords* = (*\marg{keywords in English}*) %^^A! \end{fdusyntax} %^^A! Keywords list. Each keyword should be separated with comma. %^^A! To disambiguate, you may put text containing comma into a %^^A! group ``|{...}|''. %^^A! \end{function} %^^A! % % \begin{function}{info/clc} % \begin{fdusyntax}[emph={[1]clc}] % clc = (*\marg{分类å·}*) % \end{fdusyntax} % ä¸å›¾åˆ†ç±»å·ï¼ˆCLC)。 % \end{function} %^^A! \begin{function}{info/clc} %^^A! \begin{fdusyntax}[emph={[1]clc}] %^^A! clc = (*\marg{classification codes}*) %^^A! \end{fdusyntax} %^^A! Chinese Library Classification (CLC). %^^A! \end{function} %^^A! % % \begin{function}[added=2021-09-16]{info/jel} % \begin{fdusyntax}[emph={[1]jel}] % jel = (*\marg{分类å·}*) % \end{fdusyntax} % JEL 分类å·ï¼Œä»…适用于部分院系。当被指定时,英文摘è¦ä¸å°†ä»…显示 JEL % 分类å·ï¼Œè€Œä¸å†æ˜¾ç¤ºä¸å›¾åˆ†ç±»å·ã€‚ % \end{function} %^^A! \begin{function}[added=2021-09-16]{info/jel} %^^A! \begin{fdusyntax}[emph={[1]jel}] %^^A! jel = (*\marg{classification codes}*) %^^A! \end{fdusyntax} %^^A! \textit{Journal of Economic Literature} (JEL) Classification %^^A! Code. It's only mandatory for some departments. When specified, %^^A! CLC code in the English abstract will be replaced by it. %^^A! \end{function} %^^A! % % \subsection{æ£æ–‡ç¼–写} %^^A! \subsection{Writing your thesis} %^^A! % % \begin{quotation} % å–¬åŸç¬¦ï¼ˆå‰ï¼‰åšå¸å¤šèƒ½ï¼Œä»¥æ¨‚府稱。嘗云:「作樂府亦有法, % æ›°\CJKunderdot{é³³é ã€è±¬è‚šã€è±¹å°¾}å…å—æ˜¯ä¹Ÿã€‚ã€å¤§æ¦‚èµ·è¦ç¾Žéº—,ä¸è¦æµ©è•©ï¼Œ % çµè¦éŸ¿äº®ã€‚å°¤è²´åœ¨é¦–å°¾è²«ç©¿ï¼Œæ„æ€æ¸…新。苟能若是,斯å¯ä»¥è¨€æ¨‚府矣。 % \end{quotation} % \hfill ^^^^2e3aé™¶å®—å„€ã€Šå—æ‘輟耕錄·作今樂府法》 ^^A ^^^^2e3a = ç ´æŠ˜å· % % \subsubsection{凤头} %^^A! \subsubsection{Front matter} %^^A! % % \begin{function}{\frontmatter} % 声明å‰ç½®éƒ¨åˆ†å¼€å§‹ã€‚ % \end{function} %^^A! \begin{function}{\frontmatter} %^^A! Declare the beginning of front matter. %^^A! \end{function} %^^A! % % 在本模æ¿ä¸ï¼Œå‰ç½®éƒ¨åˆ†åŒ…å«ç›®å½•ã€ä¸è‹±æ–‡æ‘˜è¦ä»¥åŠç¬¦å·è¡¨ç‰ã€‚ % å‰ç½®éƒ¨åˆ†çš„页ç 采用å°å†™ç½—马嗿¯ï¼Œå¹¶ä¸”ä¸Žæ£æ–‡åˆ†å¼€è®¡æ•°ã€‚ %^^A! Front matter contains table of contents, abstracts and notation %^^A! list. The page numbers in front matter will be shown in %^^A! lowercase Roman numerals, and will be counted separately with %^^A! main matter. %^^A! % % \begin{function}{\tableofcontents,\listoffigures,\listoftables} % 生æˆç›®å½•。为了生æˆå®Œæ•´ã€æ£ç¡®çš„目录,您至少需è¦ç¼–译\emph{两次}。对于图表 % 较多的论文,也å¯ä»¥ä½¿ç”¨ \cs{listoffigures} å’Œ \cs{listoftables} 生æˆå•独的 % æ’图ã€è¡¨æ ¼ç›®å½•。 % \end{function} %^^A! \begin{function}{\tableofcontents} %^^A! Generate the table of contents (TOC). You need to compile %^^A! the source file at least \emph{twice} to get the correct TOC. %^^A! If your thesis contains many figures or tables, you may also %^^A! use \cs{listoffigures} or \cs{listoftables} to generate a list %^^A! of them. %^^A! \end{function} %^^A! % %^^A TODO: \DescribeEnv{abstract} %^^A TODO: \DescribeEnv{abstract*} % \begin{function}{abstract} % \begin{fdusyntax}[emph={[2]abstract}] % % 䏿–‡è®ºæ–‡æ¨¡æ¿ (fduthesis) % è‹±æ–‡è®ºæ–‡æ¨¡æ¿ (fduthesis-en) % \begin{abstract} \begin{abstract} % (*\meta{䏿–‡æ‘˜è¦} \hspace{3.52cm} \meta{英文摘è¦}*) % \end{abstract} \end{abstract} % \end{fdusyntax} % \end{function} % \begin{function}[rEXP]{abstract*} % \begin{fdusyntax}[emph={[2]abstract*}] % % 䏿–‡è®ºæ–‡æ¨¡æ¿ (fduthesis) % \begin{abstract*} % (*\meta{英文摘è¦}*) % \end{abstract*} % \end{fdusyntax} % 摘è¦ã€‚䏿–‡æ¨¡æ¿ä¸ï¼Œä¸å¸¦æ˜Ÿå·å’Œå¸¦æ˜Ÿå·çš„版本分别用æ¥è¾“入䏿–‡æ‘˜è¦ % 和英文摘è¦ï¼›è‹±æ–‡æ¨¡æ¿ä¸æ²¡æœ‰å¸¦æ˜Ÿå·çš„版本,您åªéœ€è¾“入英文摘è¦ã€‚ % \end{function} %^^A! \begin{function}{abstract} %^^A! \begin{fdusyntax}[emph={[2]abstract}] %^^A! % fduthesis (Chinese thesis) % fduthesis-en (English thesis) %^^A! \begin{abstract} \begin{abstract} %^^A! (*\meta{Chinese abstract} \hspace{3cm} \meta{English abstract}*) %^^A! \end{abstract} \end{abstract} %^^A! \end{fdusyntax} %^^A! \end{function} %^^A! \begin{function}[rEXP]{abstract*} %^^A! \begin{fdusyntax}[emph={[2]abstract*}] %^^A! % Only for fduthesis %^^A! \begin{abstract*} %^^A! (*\meta{English abstract}*) %^^A! \end{abstract*} %^^A! \end{fdusyntax} %^^A! Abstract environment. In \cls{fduthesis}, \env{abstract} and %^^A! \env{abstract*} are used for Chinese and English abstract, %^^A! respectively; while in \cls{fduthesis-en}, there is no %^^A! \env{abstract*} environment and you need to write the English %^^A! abstract merely. %^^A! \end{function} %^^A! % % 摘è¦çš„æœ€åŽï¼Œä¼šæ˜¾ç¤ºå…³é”®è¯åˆ—表以åŠä¸å›¾åˆ†ç±»å·ï¼ˆCLC)或 JEL 分类å·ã€‚这两项 % å¯é€šè¿‡ \cs{fdusetup} 录入,具体请å‚阅 \ref{subsubsec:ä¿¡æ¯å½•å…¥}~节。 %^^A! At the end of abstract (both Chinese and English, if available), %^^A! keywords list and CLC or JEL code will be shown. They can be %^^A! specified via command \cs{fdusetup} and you may refer to %^^A! subsubsection~\ref{subsubsec:information} for more details. %^^A! % %^^A TODO: \DescribeEnv{notation} % \begin{function}{notation} % \begin{fdusyntax}[emph={[2]notation}] % \begin{notation}(*\oarg{åˆ—æ ¼å¼è¯´æ˜Ž}*) % (*\meta{ç¬¦å· 1}*) & (*\meta{说明}*) \\ % (*\meta{ç¬¦å· 2}*) & (*\meta{说明}*) \\ % (*\phantom{\meta{ç¬¦å· $n$}}*) (*$\vdots$*) % (*\meta{符å·\ \kern-0.1em$n$}*) & (*\meta{说明}*) % \end{notation} % \end{fdusyntax} % 符å·è¡¨ã€‚å¯é€‰å‚æ•° \meta{åˆ—æ ¼å¼è¯´æ˜Ž}与 \LaTeX{} 䏿 ‡å‡†è¡¨æ ¼çš„åˆ—æ ¼ % å¼è¯´æ˜Žè¯æ³•一致,默认值为“|lp{7.5cm}|â€ï¼Œå³ç¬¬ä¸€åˆ—宽度自动调整, % 第二列é™å®½ \qty{7.5}{cm},两列å‡ä¸ºå·¦å¯¹é½ã€‚ % \end{function} %^^A! \begin{function}{notation} %^^A! \begin{fdusyntax}[emph={[2]notation}] %^^A! \begin{notation}(*\oarg{column format}*) %^^A! (*\meta{symbol 1}*) & (*\meta{description}*) \\ %^^A! (*\meta{symbol 2}*) & (*\meta{description}*) \\ %^^A! (*\phantom{\meta{symbol $n$}}*) (*$\vdots$*) %^^A! (*\meta{symbol \kern-0.1em$n$}*) & (*\meta{description}*) %^^A! \end{notation} %^^A! \end{fdusyntax} %^^A! Notation list (or symbol list, nomenclature) environment. %^^A! The optional argument \meta{column format} is the same as %^^A! in a standard \LaTeX{} table. The default value is %^^A! ``|lp{7.5cm}|'', which means auto-width for the first column %^^A! and fix-width (\qty{7.5}{cm}) for the second; both columns will %^^A! be left-aligned. %^^A! \end{function} %^^A! % % \subsubsection{猪肚} %^^A! \subsubsection{Main matter} %^^A! % % \begin{function}{\mainmatter} % 声明主体部分开始。 % \end{function} %^^A! \begin{function}{\mainmatter} %^^A! Declare the beginning of main matter. %^^A! \end{function} %^^A! % % ä¸»ä½“éƒ¨åˆ†æ˜¯è®ºæ–‡çš„æ ¸å¿ƒï¼Œæ‚¨å¯ä»¥åˆ†ç« 节撰写。如有需求,也å¯ä»¥é‡‡ç”¨ % 多文件编译的方å¼ã€‚主体部分的页ç 采用阿拉伯数å—。 %^^A! As the name suggests, ``main matter'' is the main body of your %^^A! thesis. When working on a big projects, it's usually a good %^^A! idea to split the source file into several parts. The page %^^A! numbers in main matter are shown in arabic numerals. %^^A! % % \begin{function}[updated=2018-01-15]{\footnote} % \begin{fdusyntax}[deletetexcs={\footnote},morekeywords={\footnote}] % \footnote(*\marg{脚注文å—}*) % \end{fdusyntax} % æ’å…¥è„šæ³¨ã€‚è„šæ³¨ç¼–å·æ ·å¼å¯åˆ©ç”¨ \opt{style/footnote-style} 选项控制, % å…·ä½“è§ \ref{subsubsec:è®ºæ–‡æ ¼å¼}~å°èŠ‚ã€‚ % \end{function} %^^A! \begin{function}[updated=2018-01-15]{\footnote} %^^A! \begin{fdusyntax}[deletetexcs={\footnote},morekeywords={\footnote}] %^^A! \footnote(*\marg{text}*) %^^A! \end{fdusyntax} %^^A! Insert a footnote. The style of footnote numbers can be set %^^A! with option \opt{style/foot\-note\-style}. See %^^A! subsubsection~\ref{subsubsec:style-and-format} for more details. %^^A! \end{function} %^^A! % % \begin{function}{\caption} % \begin{fdusyntax}[deletetexcs={\caption},morekeywords={\caption}] % \caption(*\marg{å›¾è¡¨æ ‡é¢˜}*) % \caption(*\oarg{çŸæ ‡é¢˜}\marg{é•¿æ ‡é¢˜}*) % \end{fdusyntax} % æ’å…¥å›¾è¡¨æ ‡é¢˜ã€‚å¯é€‰å‚æ•° \meta{çŸæ ‡é¢˜} 用于图表目录。在 % \meta{é•¿æ ‡é¢˜} ä¸ï¼Œæ‚¨å¯ä»¥è¿›è¡Œé•¿è¾¾å¤šæ®µçš„å™è¿°ï¼›ä½† \meta{çŸæ ‡é¢˜} % å’Œå•独的 \meta{å›¾è¡¨æ ‡é¢˜} ä¸åˆ™ä¸å…许分段。 % \cite{刘海洋2013latex入门} % \end{function} %^^A! \begin{function}{\caption} %^^A! \begin{fdusyntax}[deletetexcs={\caption},morekeywords={\caption}] %^^A! \caption(*\marg{caption}*) %^^A! \caption(*\oarg{short caption}\marg{long caption}*) %^^A! \end{fdusyntax} %^^A! Insert the caption of figure or table. The optional argument %^^A! \meta{short caption} will be shown in the list of figures/tables. %^^A! In \meta{long caption}, you can write descriptions for several %^^A! paragraphs, but \meta{short caption} and the single %^^A! \meta{caption} will not allow multi-paragraph text (i.e.\ %^^A! text containing \tn{par}) inside. %^^A! \end{function} %^^A! % % æŒ‰ç…§æŽ’ç‰ˆæƒ¯ä¾‹ï¼Œå»ºè®®æ‚¨å°†è¡¨æ ¼çš„æ ‡é¢˜æ”¾ç½®åœ¨ç»˜åˆ¶è¡¨æ ¼çš„å‘½ä»¤ä¹‹å‰ï¼Œ % è€Œå°†å›¾ç‰‡çš„æ ‡é¢˜æ”¾ç½®åœ¨ç»˜å›¾æˆ–æ’图的命令之åŽã€‚å¦éœ€æ³¨æ„, % \tn{caption} 命令必须放置在浮动体环境(如 \env{table} å’Œ % \env{figure})ä¸ã€‚ %^^A! By convention, caption of a table is usually put \emph{before} %^^A! the table itself, while for figure it's the opposite. %^^A! In addition, command \tn{caption} must be put inside float %^^A! environments (e.g.\ \env{table} and \env{figure}). %^^A! % % \paragraph{å‚考文献引用} %^^A! \paragraph{Citations} % % \begin{function}[updated=2021-09-20]{\cite} % \begin{fdusyntax}[deletetexcs={\cite},morekeywords={\cite}] % \cite(*\marg{æ–‡çŒ®æ ‡ç¾}*) % \cite(*\oarg{页ç }\marg{æ–‡çŒ®æ ‡ç¾}*) % \end{fdusyntax} % æ’入所引用的文献。å¯é€‰å‚æ•° \meta{页ç } å¯ç”¨æ¥æ ‡æ³¨å¼•文的页ç 。在ä¸åŒçš„ % å‚è€ƒæ–‡çŒ®æ ·å¼ä¸ï¼Œå¼•ç”¨çš„æ ·å¼ä¹Ÿä¸å°½ç›¸åŒã€‚æ ¹æ®éœ€è¦ï¼Œæ¨¡æ¿è¿˜æä¾›äº†æ›´å¤šçš„命令 % ç”¨æ¥æ ‡è®°å¼•用。顺åºç¼–ç 制和著者—出版年制下的å„ç§å¼•用方å¼è§ % 表~\ref{tab:citation-numerical} 和表~\ref{tab:citation-author-year}。 % \end{function} %^^A! \begin{function}[updated=2021-09-20]{\cite} %^^A! \begin{fdusyntax}[deletetexcs={\cite},morekeywords={\cite}] %^^A! \cite(*\marg{bib key}*) %^^A! \cite(*\oarg{page number}\marg{bib key}*) %^^A! \end{fdusyntax} %^^A! Insert citations. The optional argument \meta{page number} can be %^^A! used to indicate the page number of the citation. The citation style %^^A! varies among different bibliography styles. More commands are also %^^A! provided to mark the citations, which can be found in %^^A! table~\ref{tab:citation-numerical} (numerical style) and %^^A! \ref{tab:citation-author-year} (author-year style). %^^A! \end{function} %^^A! % %^^A+ % \NewDocumentCommand\verbcite{O{cite}om}{^^A % \IfNoValueTF{#2}{^^A % \texttt{\textbackslash#1\{#3\}}^^A % }{^^A % \texttt{\textbackslash#1[#2]\{#3\}}^^A % }} %^^A- % % \begin{table}[ht] % \caption{顺åºç¼–ç åˆ¶ä¸‹çš„å¼•ç”¨æ ·å¼} \label{tab:citation-numerical} % \centering % \small % \begin{tabularx}{\textwidth}{cCll} % \toprule % \textbf{引用方å¼} & % \textbf{排版效果} & % \textbf{\kvopt{bib-backend}{bibtex}} & % \textbf{\kvopt{bib-backend}{biblatex}} \\ % \midrule % å•篇文献 & % 引文\cite{texbook} & % \verbcite{texbook} & % åŒå·¦ \\ % 多篇文献 & % 引文\cite{texbook,companion} & % \verbcite{texbook,companion} & % åŒå·¦ \\ % æ ‡æ³¨é¡µç & % 引文\cite[126--137]{texbook} & % \verbcite[cite][126--137]{texbook} & % åŒå·¦ \\ % æ ‡æ³¨ä½œè€… & % \citet{texbook}指出 & % \verbcite[citet]{texbook} & % \verbcite[authornumcite]{texbook} \\ % æ ‡æ³¨ä½œè€…ã€é¡µç & % \citet[42]{texbook}指出 & % \verbcite[citet][42]{texbook} & % \verbcite[authornumcite][42]{texbook} \\ % éžä¸Šæ ‡ & % 引文{\citestyle{numbers}\cite{texbook}} & % \verbcite[parencite]{texbook} & % åŒå·¦ \\ % \bottomrule % \end{tabularx} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{Citations in numerical style} \label{tab:citation-numerical} %^^A! \centering %^^A! \small %^^A! \def\C#1{\textcolor{MaterialGreen}{#1}} %^^A! \begin{tabularx}{\textwidth}{cCll} %^^A! \toprule %^^A! \textbf{Styles} & %^^A! \textbf{Results} & %^^A! \textbf{\kvopt{bib-backend}{bibtex}} & %^^A! \textbf{\kvopt{bib-backend}{biblatex}} \\ %^^A! \midrule %^^A! Single & %^^A! Text\textsuperscript{[\C1]} & %^^A! \verbcite{texbook} & %^^A! Same as left \\ %^^A! Multiple & %^^A! Text\textsuperscript{[\C1--\C2]} & %^^A! \verbcite{texbook,companion} & %^^A! Same as left \\ %^^A! With page & %^^A! Text\textsuperscript{[\C1]126--137} & %^^A! \verbcite[cite][126--137]{texbook} & %^^A! Same as left \\ %^^A! With author & %^^A! Knuth\textsuperscript{[\C1]} states & %^^A! \verbcite[citet]{texbook} & %^^A! \verbcite[authornumcite]{texbook} \\ %^^A! With page \& author & %^^A! Knuth\textsuperscript{[\C1]42} states & %^^A! \verbcite[citet][42]{texbook} & %^^A! \verbcite[authornumcite][42]{texbook} \\ %^^A! No superscript & %^^A! Text [\C1] & %^^A! \verbcite[parencite]{texbook} & %^^A! Same as left \\ %^^A! \bottomrule %^^A! \end{tabularx} %^^A! \end{table} %^^A! % % \begin{table}[ht] % \caption{è‘—è€…â€”å‡ºç‰ˆå¹´åˆ¶ä¸‹çš„å¼•ç”¨æ ·å¼} \label{tab:citation-author-year} % \centering % \small % \def\!{\kern-1.5pt} % \begin{tabularx}{\textwidth}{cCll} % \toprule % \textbf{引用方å¼} & % \textbf{排版效果} & % \textbf{\kvopt{bib-backend}{bibtex}} & % \textbf{\kvopt{bib-backend}{biblatex}} \\ % \midrule % å•篇文献 & % (\citeauthor{texbook}\!, \citeyear{texbook}\!) & % \verbcite[citep]{texbook} & % \verbcite{texbook} \\ % 多篇文献 & % (\citeauthor{texbook}\!, \citeyear{texbook}\!; % \citeauthor{companion}\!, \citeyear{companion}\!) & % \verbcite[citep]{texbook,companion} & % \verbcite{texbook,companion} \\ % æ ‡æ³¨é¡µç & % (\citeauthor{texbook}\!, \citeyear{texbook}\!)^^A % \textsuperscript{126--137} & % \verbcite[citep][126--137]{texbook} & % \verbcite[cite][126--137]{texbook} \\ % æ ‡æ³¨ä½œè€… & % \citeauthor{texbook}(\citeyear{texbook}\!) & % \verbcite[citet]{texbook} & % åŒå·¦ \\ % æ ‡æ³¨ä½œè€…ã€é¡µç & % \citeauthor{texbook}(\citeyear{texbook}\!)\textsuperscript{42} & % \verbcite[citet][42]{texbook} & % åŒå·¦ \\ % \bottomrule % \end{tabularx} % \end{table} %^^A! \begin{table}[ht] %^^A! \caption{Citations in author-year style} \label{tab:citation-author-year} %^^A! \centering %^^A! \small %^^A! \def\C#1{\textcolor{MaterialGreen}{#1}} %^^A! \begin{tabularx}{\textwidth}{cCll} %^^A! \toprule %^^A! \textbf{Styles} & %^^A! \textbf{Results} & %^^A! \textbf{\kvopt{bib-backend}{bibtex}} & %^^A! \textbf{\kvopt{bib-backend}{biblatex}} \\ %^^A! \midrule %^^A! Single & %^^A! (\C{Knuth}, \C{1986}) & %^^A! \verbcite[citep]{texbook} & %^^A! \verbcite{texbook} \\ %^^A! Multiple & %^^A! (\C{Knuth}, \C{1986}; \C{Mittelbach et~al.}, \C{2004}) & %^^A! \verbcite[citep]{texbook,companion} & %^^A! \verbcite{texbook,companion} \\ %^^A! With page & %^^A! (\C{Knuth}, \C{1986})\textsuperscript{126--137} & %^^A! \verbcite[citep][126--137]{texbook} & %^^A! \verbcite[cite][126--137]{texbook} \\ %^^A! With author & %^^A! \C{Knuth} (\C{1986}) & %^^A! \verbcite[citet]{texbook} & %^^A! Same as left \\ %^^A! With page \& author & %^^A! \C{Knuth} (\C{1986})\textsuperscript{42} & %^^A! \verbcite[citet][42]{texbook} & %^^A! Same as left \\ %^^A! \bottomrule %^^A! \end{tabularx} %^^A! \end{table} %^^A! % % \paragraph{定ç†ç±»çŽ¯å¢ƒ} %^^A! \paragraph{Theorem-like environments} % %^^A TODO: \DescribeEnv{proof} % \begin{function}{axiom,corollary,definition,example,lemma, % proof,theorem} % \begin{fdusyntax}[emph={[2]proof}] % \begin{proof}(*\oarg{å°æ ‡é¢˜}*) % (*\meta{è¯æ˜Žè¿‡ç¨‹}*) % \end{proof} % \end{fdusyntax} % 一系列预定义的数å¦çŽ¯å¢ƒã€‚å…·ä½“å«ä¹‰è§è¡¨~\ref{tab:theorem}。 % \end{function} %^^A! \begin{function}{axiom,corollary,definition,example,lemma, %^^A! proof,theorem} %^^A! \begin{fdusyntax}[emph={[2]proof}] %^^A! \begin{proof}(*\oarg{subheading}*) %^^A! (*\meta{procedure of proof}*) %^^A! \end{proof} %^^A! \end{fdusyntax} %^^A! A series of pre-defined math environments. %^^A! \end{function} %^^A! % % \begin{table}[ht] % \caption{预定义的数å¦çŽ¯å¢ƒ} \label{tab:theorem} % \centering % \small % \begin{tabular}{*{8}{c}} % \toprule % \textbf{åç§°} & % \env{axiom} & \env{corollary} & \env{definition} & \env{example} & % \env{lemma} & \env{proof} & \env{theorem} \\ % \midrule % \textbf{å«ä¹‰} & % å…¬ç† & 推论 & 定义 & 例 & % å¼•ç† & è¯æ˜Ž & å®šç† \\ % \bottomrule % \end{tabular} % \end{table} % % è¯æ˜ŽçŽ¯å¢ƒï¼ˆ\env{proof})的最åŽä¼šæ·»åŠ è¯æ¯•符å·â€œ$\QED$â€ã€‚è¦ç¡®ä¿ % 该符å·åœ¨æ£ç¡®çš„ä½ç½®æ˜¾ç¤ºï¼Œæ‚¨éœ€è¦æŒ‰ç…§ \ref{subsec:编译方å¼}~节 % ä¸çš„æœ‰å…³è¯´æ˜Žç¼–译\emph{两次}。 %^^A! A QED\footnote{Abbreviation of Latin phrase \emph{quod erat %^^A! demonstrandum}, means ``what was to be demonstrated''.} %^^A! symbol ``$\QED$'' will be added at the end of \env{proof} %^^A! environment. You need to compile the source file \emph{twice} %^^A! as in subsection~\ref{subsec:compilation} in order to make %^^A! the position of QED symbol correct. %^^A! % % \begin{function}[updated=2023-02-08]{\newtheorem} % \begin{fdusyntax}[deletetexcs={\newtheorem}, % morekeywords={\newtheorem,\newtheorem*}] % \newtheorem(*\oarg{选项}\marg{环境å}\marg{æ ‡é¢˜}*) % \newtheorem*(*\oarg{选项}\marg{环境å}\marg{æ ‡é¢˜}*) % \begin(*\marg{环境å}\oarg{å°æ ‡é¢˜}*) % (*\meta{内容}*) % \end(*\marg{环境å}*) % \end{fdusyntax} % 声明新的定ç†ç±»çŽ¯å¢ƒï¼ˆæ•°å¦çŽ¯å¢ƒï¼‰ã€‚å¸¦æ˜Ÿå·çš„版本表示ä¸è¿›è¡Œç¼–å·ï¼Œ % å¹¶ä¸”ä¼šé»˜è®¤æ·»åŠ è¯æ¯•符å·â€œ$\QED$â€ã€‚声明åŽï¼Œå³å¯åŒé¢„定义的数å¦çŽ¯å¢ƒ % ä¸€æ ·ä½¿ç”¨ã€‚ % \end{function} %^^A! \begin{function}[updated=2017-12-12]{\newtheorem} %^^A! \begin{fdusyntax}[deletetexcs={\newtheorem}, %^^A! morekeywords={\newtheorem,\newtheorem*}] %^^A! \newtheorem(*\oarg{options}\marg{environment}\marg{title}*) %^^A! \newtheorem*(*\oarg{options}\marg{environment}\marg{title}*) %^^A! \begin(*\marg{environment}\oarg{subheading}*) %^^A! (*\meta{contents}*) %^^A! \end(*\marg{environment}*) %^^A! \end{fdusyntax} %^^A! Declare new math environments (theorems). If you use %^^A! \cs{newtheorem*}, then the theorem will not be numbered, and %^^A! a QED symbol ``$\QED$'' will be added at the end of the %^^A! environment. All the theorem environments defined by yourself %^^A! can be used as the pre-defined ones. %^^A! \end{function} %^^A! % % 事实上,表~\ref{tab:theorem} ä¸é¢„å®šä¹‰çš„çŽ¯å¢ƒæ£æ˜¯é€šè¿‡ä»¥ä¸‹æ–¹å¼å®šä¹‰çš„: % \begin{latexexample}[deletetexcs={\newtheorem}, % morekeywords={\newtheorem,\newtheorem*}] % \newtheorem*{proof}{è¯æ˜Ž} % \newtheorem{axiom}{å…¬ç†} % \newtheorem{corollary}{定ç†} % ... % \end{latexexample} %^^A! Actually, the pre-defined math environments are just defined %^^A! with \cs{new\-the\-o\-rem} and \cs{new\-the\-o\-rem*}: %^^A! \begin{latexexample}[deletetexcs={\newtheorem}, %^^A! morekeywords={\newtheorem,\newtheorem*}] %^^A! \newtheorem*{proof}{proof} %^^A! \newtheorem{axiom}{axiom} %^^A! \newtheorem{corollary}{corollary} %^^A! ... %^^A! \end{latexexample} %^^A! % % 与 \cs{fdusetup} 相åŒï¼Œ\cs{newtheorem} çš„å¯é€‰å‚æ•° \meta{选项} % 也为一组键值列表。å¯ç”¨çš„选项è§ä¸‹ã€‚æ³¨æ„æ‚¨æ— 需输入“|theorem/|â€ã€‚ %^^A! Similar with \cs{fdusetup}, the optional argument \meta{options} %^^A! of \cs{newtheorem} is a key-value list as well. The available %^^A! are described below. Note that you don't need to type in the %^^A! ``|theorem/|'' prefix. %^^A! % % \begin{function}{theorem/style} % \begin{fdusyntax}[emph={[1]style}] % style = (*<(plain)|margin|change|\\ % XXXXXX\mbox{}~~~~~~~~break|marginbreak|changebreak>*) % \end{fdusyntax} % 定ç†ç±»çŽ¯å¢ƒçš„æ€»ä½“æ ·å¼ã€‚ % \end{function} %^^A! \begin{function}{theorem/style} %^^A! \begin{fdusyntax}[emph={[1]style}] %^^A! style = (*<(plain)|margin|change|\\ %^^A! XXXX\mbox{}~~~~~~~~break|marginbreak|changebreak>*) %^^A! \end{fdusyntax} %^^A! The overall style of the theorem environment. %^^A! \end{function} %^^A! % % \begin{function}{theorem/header-font} % \begin{fdusyntax}[emph={[1]header-font}] % header-font = (*\marg{å—体}*) % \end{fdusyntax} % 定ç†å¤´ï¼ˆå³æ ‡é¢˜ï¼‰çš„å—ä½“ã€‚ä¸æ–‡æ¨¡æ¿é»˜è®¤ä¸º \tn{sffamily}ï¼Œå³æ— 衬线体 % (黑体);英文模æ¿é»˜è®¤ä¸º |\bfseries\upshape|,å³åŠ ç²—ç›´ç«‹ä½“ã€‚ % \end{function} %^^A! \begin{function}{theorem/header-font} %^^A! \begin{fdusyntax}[emph={[1]header-font}] %^^A! header-font = (*\marg{font}*) %^^A! \end{fdusyntax} %^^A! Font of the theorem header. Default value is \tn{sffamily} %^^A! and |\bfseries\upshape| for Chinese and English template, %^^A! respectively. %^^A! \end{function} %^^A! % % \begin{function}{theorem/body-font} % \begin{fdusyntax}[emph={[1]body-font}] % body-font = (*\marg{å—体}*) % \end{fdusyntax} % 定ç†å†…容的å—ä½“ã€‚ä¸æ–‡æ¨¡æ¿é»˜è®¤ä¸º \tn{fdu@kai}ï¼Œå³æ¥·ä½“ï¼›è‹±æ–‡æ¨¡æ¿ % 默认为 \tn{itshape}ï¼Œå³æ–œä½“。 % \end{function} %^^A! \begin{function}{theorem/body-font} %^^A! \begin{fdusyntax}[emph={[1]body-font}] %^^A! body-font = (*\marg{font}*) %^^A! \end{fdusyntax} %^^A! Font of the theorem body. Default value is \tn{fdu@kai} %^^A! (\textit{楷体}) and \tn{itshape} for Chinese and English %^^A! template, respectively. %^^A! \end{function} %^^A! % % \begin{function}{theorem/qed} % \begin{fdusyntax}[emph={[1]qed}] % qed = (*\marg{符å·}*) % \end{fdusyntax} % 定ç†ç»“æŸæ ‡è®°ï¼ˆå³è¯æ¯•符å·ï¼‰ã€‚如果用 \cs{newtheorem} 声明定ç†ï¼Œåˆ™é»˜è®¤ä¸ºç©ºï¼› % 用 \cs{newtheorem*} 声明,则默认为 |\ensuremath{\QED}|,å³â€œ$\QED$â€ã€‚ % \end{function} %^^A! \begin{function}{theorem/qed} %^^A! \begin{fdusyntax}[emph={[1]qed}] %^^A! qed = (*\marg{symbol}*) %^^A! \end{fdusyntax} %^^A! Theorem end mark. For \cs{newtheorem}, default value is %^^A! empty; for \cs{newtheorem*}, default value is %^^A! |\ensuremath{\QED}| (i.e.\ ``$\QED$''). %^^A! \end{function} %^^A! % % \begin{function}{theorem/counter} % \begin{fdusyntax}[emph={[1]counter}] % counter = (*\marg{计数器}*) % \end{fdusyntax} % 定ç†è®¡æ•°å™¨ï¼Œè¡¨ç¤ºå®šç†ç¼–å·åœ¨ \meta{计数器} çš„ä¸‹ä¸€çº§ï¼Œå¹¶ä¼šéš \meta{计数器} % çš„å˜åŒ–而清零。\cite{刘海洋2013latex入门}默认为 |chapter|ï¼Œè¡¨ç¤ºæŒ‰ç« ç¼–å·ã€‚ % 使用 \cs{newtheorem*} æ—¶ï¼Œè¯¥é€‰é¡¹æ— æ•ˆã€‚ % \end{function} %^^A! \begin{function}{theorem/counter} %^^A! \begin{fdusyntax}[emph={[1]counter}] %^^A! counter = (*\marg{counter}*) %^^A! \end{fdusyntax} %^^A! The theorem will be enumerated within \meta{counter}. For %^^A! example, the default value is |chapter|, which means with %^^A! each new \tn{chapter}, the enumeration begins again with 1. %^^A! This option is invalid for \cs{newtheorem*}. %^^A! \end{function} %^^A! % % \subsubsection{豹尾} %^^A! \subsubsection{Back matter} %^^A! % % \begin{function}{\backmatter} % 声明åŽç½®éƒ¨åˆ†å¼€å§‹ã€‚ % \end{function} %^^A! \begin{function}{\backmatter} %^^A! Declare the beginning of back matter. %^^A! \end{function} %^^A! % % åŽç½®éƒ¨åˆ†åŒ…å«å‚考文献ã€å£°æ˜Žé¡µç‰ã€‚ %^^A! Back matter contains bibliography, declaration page, etc. %^^A! % % \begin{function}[updated=2018-01-25]{\printbibliography} % \begin{fdusyntax}[morekeywords={\printbibliography}] % \printbibliography(*\oarg{选项}*) % \end{fdusyntax} % 打å°å‚考文献列表。如果 \kvopt{bib-backend}{bibtex},则 \meta{选项} % æ— æ•ˆï¼Œç›¸å½“äºŽ \tn{bibliography} \texttt{\marg{文献数æ®åº“}},其ä¸çš„ % \meta{文献数æ®åº“} å¯åˆ©ç”¨ \opt{style/bib-resource} é€‰é¡¹æŒ‡å®šï¼Œå…·ä½“è§ % \ref{subsubsec:è®ºæ–‡æ ¼å¼}~å°èŠ‚ï¼›è€Œå¦‚æžœ \kvopt{bib-backend}{biblatex}, % 则该命令由 \pkg{biblatex} å®åŒ…直接æä¾›ï¼Œå¯ç”¨é€‰é¡¹è¯·å‚阅其文档 % \cite{biblatex}。 % \end{function} %^^A! \begin{function}[updated=2018-01-25]{\printbibliography} %^^A! \begin{fdusyntax}[morekeywords={\printbibliography}] %^^A! \printbibliography(*\oarg{options}*) %^^A! \end{fdusyntax} %^^A! Print the bibliography. When \kvopt{bib-backend}{bibtex}, then %^^A! \meta{options} is invalid and this command is equivalent to %^^A! \tn{bibliography} \texttt{\marg{bib files}}, where \meta{bib files} %^^A! should be specified with option \opt{style/bib-resource} (see %^^A! subsubsection~\ref{subsubsec:style-and-format}). When %^^A! \kvopt{bib-backend}{bibtex}, then \tn{printbibliography} is %^^A! provided by \pkg{biblatex} and the available options can be %^^A! found in its documentation. %^^A! \end{function} %^^A! % % \begin{function}[added=2023-02-06]{acknowledgements} % \begin{fdusyntax}[emph={[2]acknowledgements}] % \begin{acknowledgements} % (*\meta{致谢内容}*) % \end{acknowledgements} % \end{fdusyntax} % 致谢。 % \end{function} %^^A! \begin{function}[added=2023-02-06]{acknowledgements} %^^A! \begin{fdusyntax}[emph={[2]acknowledgements}] %^^A! \begin{acknowledgements} %^^A! (*\meta{acknowledgements}*) %^^A! \end{acknowledgements} %^^A! \end{fdusyntax} %^^A! Acknowledgements. %^^A! \end{function} %^^A! % % \section{å®åŒ…ä¾èµ–情况} %^^A! \section{Packages dependencies} %^^A! % % 使用ä¸åŒç¼–译方å¼ã€æŒ‡å®šä¸åŒé€‰é¡¹ï¼Œä¼šå¯¼è‡´å®åŒ…ä¾èµ–情况有所ä¸åŒã€‚ % 具体如下: % \begin{itemize} % \item 在任何情况下,本模æ¿éƒ½ä¼š\emph{显å¼}调用以下å®åŒ… % (或文档类): % \begin{itemize} % \item \pkg{xtemplate} å’Œ \pkg{l3keys2e},用于扩展 \LaTeX3 编程环境。 % 它们属于 \pkg{l3packages} å®é›†ã€‚ % \item \cls{ctexbook},æä¾›ä¸æ–‡æŽ’版的通用框架。属于 \CTeX{} % å®é›† \cite{CTeX}。 % \item \pkg{amsmath},对 \LaTeX{} çš„æ•°å¦æŽ’ç‰ˆåŠŸèƒ½è¿›è¡Œäº† % 免颿‰©å±•。属于 \AmSLaTeX{} 套件。 % \item \pkg{unicode-math}ï¼Œè´Ÿè´£å¤„ç† Unicode ç¼–ç çš„ % OpenType æ•°å¦å—体。 % \item \pkg{geometry},用于调整页é¢å°ºå¯¸ã€‚ % \item \pkg{fancyhdr},处ç†é¡µçœ‰é¡µè„šã€‚ % \item \pkg{footmisc},处ç†è„šæ³¨ã€‚ % \item \pkg{ntheorem},æä¾›å¢žå¼ºç‰ˆçš„定ç†ç±»çŽ¯å¢ƒã€‚ % \item \pkg{graphicx},æä¾›å›¾å½¢æ’入的接å£ã€‚ % \item \pkg{longtable}ï¼Œé•¿è¡¨æ ¼ï¼ˆå…许跨页)支æŒã€‚ % \item \pkg{caption},用于设置题注。 % \item \pkg{xcolor},æä¾›å½©è‰²æ”¯æŒã€‚ % \item \pkg{hyperref},æä¾›äº¤å‰å¼•用ã€è¶…链接ã€ç”µå书ç¾ç‰åŠŸèƒ½ã€‚ % \end{itemize} % \item å¼€å¯ \kvopt{style/footnote-style}{pifont} åŽï¼Œä¼šè°ƒç”¨ % \pkg{pifont} å®åŒ…。它属于 \pkg{psnfss} 套件。 % \item å¼€å¯ \kvopt{style/bib-backend}{bibtex} åŽï¼Œä¼šè°ƒç”¨ % \pkg{natbib} å®åŒ…,并ä¾èµ– \BibTeX{} 程åºã€‚å‚è€ƒæ–‡çŒ®æ ·å¼ç”± % \pkg{gbt7714} å®åŒ…æä¾› \cite{natbib,gbt7714}。 % \item å¼€å¯ \kvopt{style/bib-backend}{biblatex} åŽï¼Œä¼šè°ƒç”¨ % \pkg{biblatex} å®åŒ…,并ä¾èµ– \biber{} 程åºã€‚å‚è€ƒæ–‡çŒ®æ ·å¼ç”± % \pkg{biblatex-gb7714-2015} å®åŒ…æä¾› % \cite{biblatex,biblatex-gb7714-2015}。 % \end{itemize} %^^A! Different compilation methods and options will result in a %^^A! different packages dependency. Details are as follows: %^^A! \begin{itemize} %^^A! \item In any case, \cls{fduthesis} will load the following %^^A! packages \emph{explicitly}: %^^A! \begin{itemize} %^^A! \item \pkg{xtemplate} and \pkg{l3keys2e}, belong to %^^A! \pkg{l3packages} bundle %^^A! \item \cls{ctexbook}, belongs to \CTeX{} bundle %^^A! \item \pkg{amsmath}, belongs to \AmSLaTeX{} bundle %^^A! \item \pkg{unicode-math} %^^A! \item \pkg{geometry} %^^A! \item \pkg{fancyhdr} %^^A! \item \pkg{footmisc} %^^A! \item \pkg{ntheorem} %^^A! \item \pkg{graphicx} %^^A! \item \pkg{longtable} %^^A! \item \pkg{caption} %^^A! \item \pkg{xcolor} %^^A! \item \pkg{hyperref} %^^A! \end{itemize} %^^A! \item When chosen \kvopt{style/footnote-style}{pifont}, %^^A! package \pkg{pifont} will be loaded. It belongs to %^^A! \pkg{psnfss} bundle. %^^A! \item When chosen \kvopt{style/bib-backend}{bibtex}, %^^A! package \pkg{natbib} will be loaded. Meanwhile, program %^^A! \BibTeX{} will be required for compilation. The %^^A! bibliography style is provided by \pkg{gbt7714}. %^^A! \item When chosen \kvopt{style/bib-backend}{biblatex}, %^^A! package \pkg{biblatex} will be loaded. Program \biber{} %^^A! will be required then. The bibliography style is provided %^^A! by \pkg{biblatex-gb7714-2015}. %^^A! \end{itemize} %^^A! % % 这里åªåˆ—出了本模æ¿ç›´æŽ¥è°ƒç”¨çš„å®åŒ…。这些å®åŒ…自身的调用情况, % æ¤å¤„ä¸å†å…·ä½“展开。如有需è¦ï¼Œè¯·å‚阅相关文档。 %^^A! Only the packages loaded directly by \cls{fduthesis} are listed %^^A! here. If you need to know the dependencies of the packages %^^A! themselves, please refer to the corresponding manuals. %^^A! % % \begin{thebibliography}{99} % % \newcommand\urlprefix{\newline\hspace*{\fill}} % \let\OldUrl=\url % \renewcommand\url[2][]{{\small\textit{#1}~\OldUrl{#2}}} % \newcommand\CTANurl[2][]{{^^A % \small\textit{#1}~\href{https://mirror.ctan.org/#2}{\texttt{CTAN://#2}}}} % % \subsection{图书} % % \bibitem[Knuth(1986)]{texbook} % \textsc{Knuth D E}. % \newblock \textit{The \TeX book: Computers \& Typesetting, volume A} [M]. % \newblock Boston: Addison--Wesley Publishing Company, 1986 % \urlprefix \CTANurl[æºä»£ç ^^A % \footnote{æ¤ä»£ç åªå¯ä½œä¸ºå¦ä¹ ä¹‹ç”¨ã€‚æœªç» Knuth æœ¬äººåŒæ„,您ä¸åº”å½“ç¼–è¯‘æ¤æ–‡æ¡£ã€‚}:]^^A % {systems/knuth/dist/tex/texbook.tex} % % \bibitem[Mittelbach et~al.(2004)]{companion} % \textsc{Mittelbach F} and \textsc{Goossens M}. % \newblock \textit{The \LaTeX{} Companion} [M]. % \newblock 2nd ed. % \newblock Boston: Addison--Wesley Publishing Company, 2004 % % \bibitem[()]{胡伟2017latex2e} % 胡伟. % \newblock \textit{\LaTeXe{} 文类和å®åŒ…å¦ä¹ 手册} [M]. % \newblock 北京: 清åŽå¤§å¦å‡ºç‰ˆç¤¾, 2017 % % \bibitem[()]{刘海洋2013latex入门} % 刘海洋. % \newblock \textit{\LaTeX{} 入门} [M]. % \newblock 北京: 电å工业出版社, 2013 % % \subsection{æ ‡å‡†ã€è§„范} % % \bibitem[()]{gb-t-7713.1-2006} % 国务院å¦ä½å§”员会办公室, 全国信æ¯ä¸Žæ–‡çŒ®æ ‡å‡†åŒ–技术委员会. % \newblock \textit{å¦ä½è®ºæ–‡ç¼–写规则: GB/T 7713.1--2006} [S]. % \newblock 北京: ä¸å›½æ ‡å‡†å‡ºç‰ˆç¤¾, 2007 % % \bibitem[()]{gb-t-7714-2015} % 全国信æ¯ä¸Žæ–‡çŒ®æ ‡å‡†åŒ–技术委员会. % \newblock \textit{ä¿¡æ¯ä¸Žæ–‡çŒ®\quad å‚考文献著录规则: GB/T 7714--2015} [S]. % \newblock 北京: ä¸å›½æ ‡å‡†å‡ºç‰ˆç¤¾, 2015 % % \bibitem[()]{gb-t-15834-2011} % 教育部è¯è¨€æ–‡å—ä¿¡æ¯ç®¡ç†å¸. % \newblock \textit{æ ‡ç‚¹ç¬¦å·ç”¨æ³•: GB/T 15834--2011} [S/OL]. % \newblock 北京: ä¸å›½æ ‡å‡†å‡ºç‰ˆç¤¾, 2012 % \urlprefix\url{http://www.moe.gov.cn/ewebeditor/uploadfile/2015/01/13/20150113091548267.pdf} % % \bibitem[()]{clreq} % W3C. % \newblock \textit{䏿–‡æŽ’版需求(Requirements for Chinese Text Layout)} [EB/OL]. % \newblock W3C Editor's Draft. % \newblock (2023-05-24) % \urlprefix\url{https://w3c.github.io/clreq/} % % \bibitem[()]{夿—¦å¤§å¦è®ºæ–‡è§„范} % 夿—¦å¤§å¦å›¾ä¹¦é¦†, 夿—¦å¤§å¦ç ”究生院. % \newblock \textit{夿—¦å¤§å¦åšå£«ã€ç¡•士å¦ä½è®ºæ–‡è§„范} [EB/OL]. % \newblock 2017 å¹´ 3 月修订版. % \newblock (2017-03-27) % \urlprefix\url{http://www.gs.fudan.edu.cn/_upload/article/4c/a8/a82545ef443b9c057c14ba13782c/c883c6f3-6d7f-410c-8f30-d8bde6fcb990.doc} % % \subsection{å®åŒ…ã€æ¨¡ç‰ˆ} % % \bibitem[()]{source2e} % \textsc{Braams J}, \textsc{Carlisle D}, \textsc{Jeffrey A}, et~al. % \newblock \textit{The \LaTeXe{} Sources} [CP/OL]. % \newblock (2022-11-01) % \urlprefix\url{https://ctan.org/pkg/latex} % \urlprefix\CTANurl[æºä»£ç :]{macros/latex/base/source2e.pdf} % % \bibitem[()]{CTeX} % \textsc{CTEX.ORG}. % \newblock \textit{\CTeX{} å®é›†æ‰‹å†Œ} [EB/OL]. % \newblock version 2.5.10, % \newblock (2022-07-14) % \urlprefix\url{https://ctan.org/pkg/ctex} % \urlprefix\CTANurl[æ–‡æ¡£åŠæºä»£ç :]{language/chinese/ctex/ctex.pdf} % % \bibitem[()]{xeCJK} % \textsc{CTEX.ORG}. % \newblock \textit{\pkg{xeCJK} å®åŒ…} [EB/OL]. % \newblock version 3.9.1, % \newblock (2022-08-05) % \urlprefix\url{https://ctan.org/pkg/xecjk} % \urlprefix\CTANurl[æ–‡æ¡£åŠæºä»£ç :]{macros/xetex/latex/xecjk/xeCJK.pdf} % % \bibitem[()]{natbib} % \textsc{Daly P W}. % \newblock \textit{Natural Sciences Citations and References} [EB/OL]. % \newblock version 8.31b, % \newblock (2010-09-13) % \urlprefix\url{https://ctan.org/pkg/natbib} % \urlprefix\CTANurl[æ–‡æ¡£åŠæºä»£ç :]{macros/latex/contrib/natbib/natbib.pdf} % % \bibitem[()]{source3} % \textsc{The \LaTeX3 Project}. % \newblock \textit{The \LaTeX3 Sources} [CP/OL]. % \newblock (2023-05-22) % \urlprefix\url{https://ctan.org/pkg/l3kernel} % \urlprefix\CTANurl[æºä»£ç :]{macros/latex/contrib/l3kernel/source3.pdf} % % \bibitem[()]{biblatex} % \textsc{Kime P}, \textsc{Wemheuer M}, \textsc{Lehman P}. % \newblock \textit{The \pkg{biblatex} Package} [EB/OL]. % \newblock version 3.19, % \newblock (2023-03-05) % \urlprefix\url{https://ctan.org/pkg/biblatex} % \urlprefix\CTANurl[文档:]{macros/latex/contrib/biblatex/doc/biblatex.pdf} % % \bibitem[()]{lshort} % \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et~al. % \newblock \textit{The Not So Short Introduction to \LaTeXe{}: Or \LaTeXe{} in 139 minutes} [EB/OL]. % \newblock version 6.4, % \newblock (2021-03-09) % \urlprefix\url{https://ctan.org/pkg/lshort-english} % \urlprefix\CTANurl[文档:]{info/lshort/english/lshort.pdf} % % \bibitem[()]{lshort-zh-cn} % \textsc{Oetiker T}, \textsc{Partl H}, \textsc{Hyna I}, et~al. % \newblock \textit{一份(ä¸å¤ªï¼‰ç®€çŸçš„ \LaTeXe{} 介ç»: 或 111 分钟了解 \LaTeXe{}} [EB/OL]. % \newblock \CTeX{} å¼€å‘å°ç»„, 译. % \newblock 原版版本 version 6.4, 䏿–‡ç‰ˆæœ¬ version 6.04, % \newblock (2023-05-05) % \urlprefix\url{https://ctan.org/pkg/lshort-zh-cn} % \urlprefix\CTANurl[文档:]{info/lshort/chinese/lshort-zh-cn.pdf} % % \bibitem[()]{biblatex-gb7714-2015} % 胡振震. % \newblock \textit{ç¬¦åˆ GB/T 7714-2015 æ ‡å‡†çš„ biblatex å‚è€ƒæ–‡çŒ®æ ·å¼} [EB/OL]. % \newblock version 1.1n, % \newblock (2023-05-25) % \urlprefix\url{https://ctan.org/pkg/biblatex-gb7714-2015} % \urlprefix\CTANurl[文档:]{biblatex-contrib/biblatex-gb7714-2015/biblatex-gb7714-2015.pdf} % % \bibitem[()]{gbt7714} % æŽæ³½å¹³ï¼ˆ\textsc{Zeping L}). % \newblock \textit{GB/T 7714-2015 \BibTeX{} Style} [EB/OL]. % \newblock version 2.1.5, % \newblock (2022-10-03) % \urlprefix\url{https://ctan.org/pkg/gbt7714} % \urlprefix\CTANurl[文档:]{biblio/bibtex/contrib/gbt7714/gbt7714.pdf} % % \bibitem[()]{cquthesis} % æŽæŒ¯æ¥ . % \newblock \textit{\textsc{CquThesis}:é‡åº†å¤§å¦æ¯•业论文 \LaTeX{} 模æ¿} [EB/OL]. % \newblock version 1.50, % \newblock (2020-06-23) % \urlprefix\url{https://ctan.org/pkg/cquthesis} % \urlprefix\CTANurl[æ–‡æ¡£åŠæºä»£ç :]{macros/latex/contrib/cquthesis/cquthesis.pdf} % % \bibitem[()]{pkuthss} % Casper Ti. Vector. % \newblock \textit{北京大å¦å¦ä½è®ºæ–‡æ¨¡ç‰ˆï¼špkuthss} [EB/OL]. % \newblock version 1.9.3, % \newblock (2022-10-30) % \urlprefix\url{https://ctan.org/pkg/pkuthss} % \urlprefix\CTANurl[æ–‡æ¡£åŠæºä»£ç :]{macros/latex/contrib/pkuthss/pkuthss.pdf} % % \bibitem[()]{thuthesis} % 清åŽå¤§å¦ TUNA å会. % \newblock \textit{\textsc{ThuThesis}:清åŽå¤§å¦å¦ä½è®ºæ–‡æ¨¡æ¿} [EB/OL]. % \newblock version 7.4.0, % \newblock (2023-05-15) % \urlprefix\url{https://ctan.org/pkg/thuthesis} % \urlprefix\CTANurl[æ–‡æ¡£åŠæºä»£ç :]{macros/latex/contrib/thuthesis/thuthesis.pdf} % % \emph{以下模版未收录至 CTAN,但ä»ç„¶ä¿æŒæ›´æ–°ã€‚} % % \bibitem[()]{sjtuthesis} % \textsc{SJTUG}. % \newblock \textit{上海交通大å¦å¦ä½è®ºæ–‡æ¨¡æ¿} [EB/OL]. % \newblock version 2.0.2, % \newblock (2023-04-01) % \urlprefix\url{https://github.com/sjtug/SJTUThesis} % \urlprefix\url[æºä»£ç 仓库:]{https://github.com/sjtug/SJTUTeX} % % \bibitem[()]{ustcthesis} % \textsc{USTC \TeX{} User Group}. % \newblock \textit{ä¸å›½ç§‘å¦æŠ€æœ¯å¤§å¦å¦ä½è®ºæ–‡ \LaTeX{} 模æ¿} [EB/OL]. % \newblock version 3.3.4, % \newblock (2023-05-10) % \urlprefix\url{https://github.com/ustctug/ustcthesis} % % \bibitem[()]{ucasthesis} % \textsc{mohuangrui}. % \newblock \textit{\pkg{ucasthesis} 国科大å¦ä½è®ºæ–‡ \LaTeX{} 模æ¿} [EB/OL]. % \newblock (2021-10-29) % \urlprefix\url{https://github.com/mohuangrui/ucasthesis} % % \emph{ä»¥ä¸‹æ¨¡ç‰ˆçŽ°å·²åœæ¢æ›´æ–°ã€‚} % % \bibitem[()]{pandoxie2014fduthesislatex} % \textsc{Pandoxie}. % \newblock \textit{Fudan University-Latex Template} [EB/OL]. % \newblock (2014-06-07) % \urlprefix\url{https://github.com/Pandoxie/FDU-Thesis-Latex} % % \bibitem[()]{richard2016fudanthesis} % \textsc{richard}. % \newblock \textit{夿—¦å¤§å¦ç¡•士å¦ä½è®ºæ–‡æ¨¡æ¿} [EB/OL]. % \newblock (2016-01-31) % \urlprefix\url{https://github.com/richarddzh/fudan-thesis} % % \bibitem{数院本科毕业论文写作模æ¿} % 夿—¦å¤§å¦æ•°å¦ç§‘å¦å¦é™¢. % \newblock \textit{2019 æ˜¥å£æœ¬ç§‘毕业论文写作模æ¿} [EB/OL]. % \newblock (2019-03-12) % \urlprefix\url{https://math.fudan.edu.cn/f3/e1/c30360a324577/page.htm} % % \subsection{å…¶ä»–} % % \bibitem[()]{wright2009dtxfile} % \textsc{Wright J}. % \newblock \textit{A model dtx file} [EB/OL]. % \newblock (2009-10-06) % \urlprefix\url{https://www.texdev.net/2009/10/06/a-model-dtx-file/} % % \bibitem[()]{å”雀计划} % 刘庆(\textsc{Eric Q L}). % \newblock \textit{å”é›€è®¡åˆ’ï¼šä¸æ–‡å—体排å°çš„æ€è·¯} [EB/OL]. % \urlprefix\url{https://thetype.com/kongque/} % % \end{thebibliography} % % \clearpage % %^^A! \end{document} % % \end{documentation} % % \begin{implementation} % %^^A 代ç éƒ¨åˆ†çš„é¡µè¾¹è· % \newgeometry{ % left = 2.25 in, % right = 1.00 in, % top = 1.25 in, % bottom = 1.00 in, % marginpar = 2.25 in % } % % \section{实现细节} % % 本模æ¿ä½¿ç”¨ \LaTeX3 è¯æ³•编写,ä¾èµ– \pkg{expl3} 环境, % 并需调用 \pkg{l3packages} ä¸çš„相关å®åŒ…。 % % 按照 \LaTeX3 è¯æ³•,代ç ä¸çš„ç©ºæ ¼ã€æ¢è¡Œã€å›žè½¦ä¸Žåˆ¶è¡¨ç¬¦å®Œå…¨å¿½ç•¥ï¼Œ % 而下划线“|_|â€å’Œå†’å·â€œ|:|â€åˆ™å¯ä½œä¸ºä¸€èˆ¬å—æ¯ä½¿ç”¨ã€‚ % æ£å¸¸çš„ç©ºæ ¼å¯ä»¥ä½¿ç”¨â€œ|~|â€ä»£æ›¿ï¼›è‡³äºŽ |~| åŽŸæ¥æ‰€è¡¨ç¤ºçš„“带åâ€ï¼Œ % 则è¦ç”¨ \LaTeXe{} 的原始命令 \tn{nobreakspace} 代替。 % % 以下代ç 䏿œ‰ä¸€äº›å½¢å¦‚ \textcolor[HTML]{2E3191}{\textsf{<*class>}} % çš„æ ‡è®°ï¼Œè¿™æ˜¯ \pkg{DocStrip} ä¸çš„“guardâ€ï¼Œç”¨æ¥é€‰æ‹©æ€§åœ°æå–文件。 % “\textsf{*}â€å’Œâ€œ\textsf{/}â€åˆ†åˆ«è¡¨ç¤ºè¯¥éƒ¨åˆ†çš„开始和结æŸã€‚ä¸å« % “\textsf{*}â€å’Œâ€œ\textsf{/}â€çš„ guard 出现在行å·å·¦ä¾§ï¼Œå®ƒä»¬ç”¨æ¥ç¡®å®š % å•独一行代ç 的归属。这些 guard 的颜色深浅ä¸ä¸€ï¼Œç”¨ä»¥æ˜Žç¡®åµŒå¥—关系。 % % 妿œ‰è‹¥å¹²å½¢å¦‚ \textcolor{MaterialPink}{\textsf{<@@=fdu>}} çš„ guard, % å®ƒä»¬ç”¨æ¥æŒ‡ç¤ºåå—空间(模å—)。 % % \subsection{准备} % % \begin{macrocode} %<@@=fdu> %<*class|class-en> % \end{macrocode} % % \changes{v0.8}{2021/09/15}{åŒæ¥ \LaTeX{} 2020/10/01,ä¸å†æ˜¾å¼è°ƒç”¨ % \pkg{expl3} å’Œ \pkg{xparse} å®åŒ…。} % \changes{v0.8}{2022/02/17}{在使用å‰å£°æ˜Žæç¤ºä¿¡æ¯ã€‚} % % 检查 \LaTeX3 编程环境。 % \begin{macrocode} \RequirePackage { xtemplate, l3keys2e } \msg_new:nnn { fduthesis } { l3-too-old } { Package~ "#1"~ is~ too~ old. \\\\ Please~ update~ an~ up-to-date~ version~ of~ the~ bundles \\ "l3kernel"~ and~ "l3packages"~ using~ your~ TeX~ package \\ manager~ or~ from~ CTAN. } \clist_map_inline:nn { xtemplate, l3keys2e } { \@ifpackagelater {#1} { 2020/07/17 } { } { \msg_error:nnn { fduthesis } { l3-too-old } {#1} } } % \end{macrocode} % % ç›®å‰ \cls{fduthesis} ä»…æ”¯æŒ \XeTeX{} å’Œ \LuaTeX{}。 % \begin{macrocode} \msg_new:nnn { fduthesis } { unsupported-engine } { The~ fduthesis~ class~ requires~ either~ XeTeX~ or~ LuaTeX. \\\\ "#1"~ is~ not~ supported~ at~ present.~ You~ must~ change \\ your~ typesetting~ engine~ to~ "xelatex"~ or~ "lualatex". } \sys_if_engine_xetex:F { \sys_if_engine_luatex:F { \msg_fatal:nnx { fduthesis } { unsupported-engine } { \c_sys_engine_str } } } % \end{macrocode} % % \subsubsection{内部å˜é‡å£°æ˜Ž} % % \begin{variable}{\l_@@_tmpa_box, % \l_@@_tmpa_clist, % \l_@@_tmpa_dim, % \l_@@_tmpa_skip, % \l_@@_tmpa_tl,\l_@@_tmpb_tl} % 临时å˜é‡ã€‚ % \begin{macrocode} \box_new:N \l_@@_tmpa_box \clist_new:N \l_@@_tmpa_clist \dim_new:N \l_@@_tmpa_dim \skip_new:N \l_@@_tmpa_skip \tl_new:N \l_@@_tmpa_tl \tl_new:N \l_@@_tmpb_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_thesis_type_tl} % 论文类型。 % \begin{macrocode} \tl_new:N \g_@@_thesis_type_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_to_ctexbook_clist,\g_@@_to_hyperref_clist} % 分别ä¿å˜ç”± \cls{fduthesis} ä¼ å…¥ \cls{ctexbook} 文档类和 % \pkg{hyperref} å®åŒ…的选项列表。 % \begin{macrocode} \clist_new:N \g_@@_to_ctexbook_clist \clist_new:N \g_@@_to_hyperref_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_twoside_bool} % 是å¦å¼€å¯åŒé¡µæ¨¡å¼ï¼ˆé»˜è®¤æ‰“开)。 % \begin{macrocode} \bool_new:N \g_@@_twoside_bool \bool_set_true:N \g_@@_twoside_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_draft_bool} % 是å¦å¼€å¯è‰ç¨¿æ¨¡å¼ï¼ˆé»˜è®¤å…³é—)。 % \begin{macrocode} \bool_new:N \g_@@_draft_bool % \end{macrocode} % \end{variable} % % \begin{variable}{\g_@@_config_tl} % ä¿å˜é…置文件å称。默认为空。 % \begin{macrocode} \tl_new:N \g_@@_config_tl % \end{macrocode} % \end{variable} % % \subsubsection{内部函数} % % \begin{macro}{ % \file_input:V, % \int_to_arabic:v, % \keys_define:nx, % \prop_item:No, % \regex_replace_all:nnc} % \begin{macro}[TF]{\tl_if_eq:Vn} % \LaTeX3{} 函数å˜ä½“。 % \begin{macrocode} \cs_generate_variant:Nn \file_input:n { V } \cs_generate_variant:Nn \int_to_arabic:n { v } \cs_generate_variant:Nn \keys_define:nn { nx } \cs_generate_variant:Nn \prop_item:Nn { No } \cs_generate_variant:Nn \regex_replace_all:nnN { nnc } \prg_generate_conditional_variant:Nnn \tl_if_eq:nn { Vn } { T, TF } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@_quad:,\@@_qquad:} % ç‰ä»·äºŽ \LaTeXe{} ä¸çš„ \tn{quad} å’Œ \tn{qquad}。 % \begin{macrocode} \cs_new:Npn \@@_quad: { \skip_horizontal:n { 1 em } } \cs_new:Npn \@@_qquad: { \skip_horizontal:n { 2 em } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_vspace:N,\@@_vspace:n,\@@_vspace:c} % 类似 \LaTeXe{} ä¸çš„ \tn{vspace*}。 % \begin{macrocode} \cs_new_protected:Npn \@@_vspace:N #1 { \dim_set_eq:NN \l_@@_tmpa_dim \prevdepth \hrule height \c_zero_dim \nobreak \skip_vertical:N #1 \skip_vertical:N \c_zero_skip \dim_set_eq:NN \prevdepth \l_@@_tmpa_dim } \cs_new_protected:Npn \@@_vspace:n #1 { \skip_set:Nn \l_@@_tmpa_skip {#1} \@@_vspace:N \l_@@_tmpa_skip } \cs_generate_variant:Nn \@@_vspace:N { c } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_symbol:n} % ç‰ä»·äºŽ \LaTeXe{} ä¸çš„ \tn{symbol}。 % \begin{macrocode} \cs_new:Npn \@@_symbol:n #1 { \tex_char:D #1 \scan_stop: } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_arabic:n} % ç‰ä»·äºŽ \LaTeXe{} ä¸çš„ \tn{arabic}。 % \begin{macrocode} \cs_new:Npn \@@_arabic:n #1 { \int_to_arabic:v { c@ #1 } } % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/15}{统一使用 \LaTeX{} 2020/10/01 æ–°çš„é’©åæœºåˆ¶ã€‚} % % \begin{macro}{\@@_gadd_ltxhook:nn} % å°è£… \LaTeX{} 的钩åç®¡ç†æœºåˆ¶ã€‚本模æ¿ä¸çš„å—ä½“åŠ è½½å‘½ä»¤ä½äºŽ % \texttt{begindocument/\allowbreak before} é’©åä¸ï¼Œéœ€ç¡®ä¿åœ¨ \pkg{xeCJK} 之剿‰§è¡Œã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_gadd_ltxhook:nn #1#2 { \hook_gput_code:nnn {#1} { . } {#2} } \hook_gset_rule:nnnn { begindocument/before } { . } { < } { xeCJK } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_patch_cmd:Nnn,\@@_appto_cmd:Nn} % è¡¥ä¸å·¥å…·ï¼Œæ¥è‡ª \pkg{ctexpatch} å®åŒ…。 % \begin{macrocode} \cs_new_protected:Npn \@@_patch_cmd:Nnn #1#2#3 { \ctex_patch_cmd_once:NnnnTF #1 { } {#2} {#3} { } { \ctex_patch_failure:N #1 } } \cs_new_protected:Npn \@@_appto_cmd:Nn #1#2 { \ctex_appto_cmd:NnnTF #1 { } {#2} { } { \ctex_patch_failure:N #1 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_fn_style:nn, % \@@_define_punct:nn, % \@@_define_name:nn, % \@@_define_name:nnn} % 用æ¥å®šä¹‰è„šæ³¨æ ·å¼ã€æ ‡ç‚¹ã€é»˜è®¤å称的辅助函数。 % \begin{macrocode} \cs_new_protected:Npn \@@_define_fn_style:nn #1#2 { \tl_const:cn { c_@@_fn_style_ #1 _tl } {#2} } \cs_new_protected:Npn \@@_define_punct:nn #1#2 { \tl_const:cn { c_@@_ #1 _tl } {#2} } \cs_new_protected:Npn \@@_define_name:nn #1#2 { \tl_const:cn { c_@@_name_ #1 _tl } {#2} } \cs_new_protected:Npn \@@_define_name:nnn #1#2#3 { \tl_const:cn { c_@@_name_ #1 _tl } {#2} \tl_const:cn { c_@@_name_ #1 _en_tl } {#3} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_msg_new:nn, % \@@_error:n,\@@_error:nn,\@@_error:nx,\@@_error:nnn,\@@_error:nnnn, % \@@_warning:n,\@@_warning:nn,\@@_warning:nxx, % \@@_info:nx} % å„ç§ä¿¡æ¯å‡½æ•°çš„缩略形å¼ã€‚ % \begin{macrocode} \cs_new:Npn \@@_msg_new:nn { \msg_new:nnn { fduthesis } } \cs_new:Npn \@@_error:n { \msg_error:nn { fduthesis } } \cs_new:Npn \@@_error:nn { \msg_error:nnn { fduthesis } } \cs_new:Npn \@@_error:nx { \msg_error:nnx { fduthesis } } \cs_new:Npn \@@_error:nnn { \msg_error:nnnn { fduthesis } } \cs_new:Npn \@@_error:nnnn { \msg_error:nnnnn { fduthesis } } \cs_new:Npn \@@_warning:n { \msg_warning:nn { fduthesis } } \cs_new:Npn \@@_warning:nn { \msg_warning:nnn { fduthesis } } \cs_new:Npn \@@_warning:nxx { \msg_warning:nnxx { fduthesis } } \cs_new:Npn \@@_info:nx { \msg_info:nnx { fduthesis } } % \end{macrocode} % \end{macro} % % \subsection{选项处ç†} % % 定义 |fdu/option| 键值类。 % \begin{macrocode} \keys_define:nn { fdu / option } { % \end{macrocode} % % \changes{v0.7}{2018/02/01}{新增 \opt{type} 选项。} % % \begin{macro}{type} % 设置论文类型。设为模æ¿é€‰é¡¹ä¸»è¦æ˜¯ä¸ºäº†ä»¥åŽçš„兼容性。论文类型å¯èƒ½ä¼š % å½±å“å¾ˆå¤šè®¾ç½®ï¼Œåªæ˜¯æš‚时还ä¸è€ƒè™‘。默认为本科毕业论文。 % \begin{macrocode} type .choices:nn = { doctor, master, bachelor } { \tl_set_eq:NN \g_@@_thesis_type_tl \l_keys_choice_tl }, type .value_required:n = true, type .initial:n = bachelor, % \end{macrocode} % \end{macro} % % \begin{macro}{oneside,twoside} % 设置页é¢ç±»åž‹ä¸ºå•颿ˆ–åŒé¢ã€‚ % \begin{macrocode} oneside .value_forbidden:n = true, twoside .value_forbidden:n = true, oneside .code:n = { \clist_gput_right:Nn \g_@@_to_ctexbook_clist { oneside } \bool_set_false:N \g_@@_twoside_bool }, twoside .code:n = { \clist_gput_right:Nn \g_@@_to_ctexbook_clist { twoside } \bool_set_true:N \g_@@_twoside_bool }, % \end{macrocode} % \end{macro} % % \changes{v0.5}{2017/09/23}{移除 \opt{nofonts} 选项。} % % \begin{macro}{draft} % 是å¦å¼€å¯è‰ç¨¿æ¨¡å¼ï¼ˆé»˜è®¤å…³é—)。 % \begin{macrocode} draft .choice:, draft / true .code:n = { \bool_set_true:N \g_@@_draft_bool \clist_gput_right:Nn \g_@@_to_ctexbook_clist { draft } }, draft / false .code:n = { \bool_set_false:N \g_@@_draft_bool }, draft .default:n = true, draft .initial:n = false, % \end{macrocode} % \end{macro} % % \changes{v0.7}{2018/01/31}{新增 \opt{config} 选项。} % % \begin{macro}{config} % é…置文件å。 % \begin{macrocode} config .tl_set:N = \g_@@_config_tl, % \end{macrocode} % \end{macro} % % å¤„ç†æœªçŸ¥é€‰é¡¹ã€‚ % \begin{macrocode} unknown .code:n = { \@@_error:n { unknown-option } } } \@@_msg_new:nn { unknown-option } { Class~ option~ "\l_keys_key_str"~ is~ unknown. } % \end{macrocode} % % å°†æ–‡æ¡£ç±»é€‰é¡¹ä¼ ç»™ |fdu/option|。 % \begin{macrocode} \ProcessKeysOptions { fdu / option } % \end{macrocode} % % è½½å…¥å‚æ•°é…置文件。 % \begin{macrocode} \file_input:n { fduthesis.def } \@@_msg_new:nn { load-config-file } { You~ are~ loading~ config~ file~ "#1". } \tl_if_empty:NF \g_@@_config_tl { \@@_info:nx { load-config-file } { \g_@@_config_tl } \file_input:V \g_@@_config_tl } % \end{macrocode} % % \subsection{载入å®åŒ…ã€æ–‡æ¡£ç±»} % % \changes{v0.7}{2018/01/19}{使用 \cls{ctexbook} 文档类,而éžç›´æŽ¥ä½¿ç”¨ % æ ‡å‡†æ–‡æ¡£ç±» \cls{book}。} % % å°†é€‰é¡¹ä¼ å…¥ \cls{ctexbook} 文档类。 % \begin{macrocode} % TODO: (2017-07-22) Chinese fonts in fduthesis-en \PassOptionsToClass { UTF8, %<class-en> scheme = plain, heading = true, %<class> fontset = none, %<class-en> fontset = fandol, zihao = -4, %<class> linespread = \c_@@_line_spread_fp, \g_@@_to_ctexbook_clist } { ctexbook } % \end{macrocode} % % ä¼ å…¥å„å®åŒ…选项。 % \begin{macrocode} \clist_map_inline:nn { { no-math } { fontspec }, { perpage } { footmisc }, { amsmath, thmmarks } { ntheorem } } { \PassOptionsToPackage #1 } % \end{macrocode} % % 载入 \cls{ctexbook} 文档类。 % 在使用 \XeLaTeX{} 编译时,\cls{ctexbook} 的底层将调用 \pkg{xeCJK} % å®åŒ…;而在使用 \LuaLaTeX{} 编译时,则将调用 \pkg{LuaTeX-ja} å®åŒ…。 % ä¸¤ç§æƒ…况下 \cls{ctexbook} å‡ä¼šè°ƒç”¨ \pkg{fontspec} å®åŒ…。 % \begin{macrocode} \LoadClass { ctexbook } % \end{macrocode} % % \changes{v0.4}{2017/08/13}{æä¾›å½©è‰²æ”¯æŒã€‚} % % 载入å„å®åŒ…。其ä¸ï¼Œ\pkg{amsmath} 必须在 \pkg{unicode-math} 之å‰å¼•入。 % \begin{macrocode} \RequirePackage { amsmath, unicode-math, geometry, fancyhdr, footmisc, ntheorem, graphicx, longtable, caption, xcolor } % \end{macrocode} % % \changes{v0.8}{2021/09/16}{åªæ£€æŸ¥ \cls{ctexbook} å’Œ \pkg{xeCJK} 的版本。} % % \begin{macro}{\@@_check_package:nnn,\@@_check_class:nnn} % 检查过时å®åŒ…和文档类。 % \begin{macrocode} \cs_new_protected:Npn \@@_check_package:nnn #1#2#3 { \@ifpackagelater {#1} {#2} { } { \@@_error:nnnn { package-too-old } { Package } {#1} {#3} } } \cs_new_protected:Npn \@@_check_class:nnn #1#2#3 { \@ifclasslater {#1} {#2} { } { \@@_error:nnnn { package-too-old } { Class } {#1} {#3} } } \@@_msg_new:nn { package-too-old } { #1~ "#2"~ is~ too~ old. \\ The~ fduthesis~ class~ only~ supports~ "#2" \\ with~ a~ version~ higher~ than~ v#3. \\\\ Please~ update~ an~ up-to-date~ version~ of~ it \\ using~ your~ TeX~ package~ manager~ or~ from~ CTAN. } % \end{macrocode} % \end{macro} % % \begin{macrocode} \@@_check_class:nnn { ctexbook } { 2021/03/14 } { 2.5.6 } \sys_if_engine_xetex:T { \@@_check_package:nnn { xeCJK } { 2020/05/01 } { 3.8.3 } } % \end{macrocode} % % \subsection{页é¢å¸ƒå±€} % % 利用 \pkg{geometry} å®åŒ…è®¾ç½®çº¸å¼ å¤§å°ã€é¡µé¢è¾¹è·ä»¥åŠé¡µçœ‰é«˜åº¦ã€‚这里, % $\qty{2.54}{\centi\meter}=\qty{1}{in}$, % $\qty{3.18}{\centi\meter}=\qty{1.25}{in}$。 % \begin{macrocode} \geometry { paper = a4paper, vmargin = 2.54 cm, hmargin = 3.18 cm, headheight = 15 pt } % \end{macrocode} % % è‰ç¨¿æ¨¡å¼ä¸‹æ˜¾ç¤ºé¡µé¢è¾¹æ¡†åŠé¡µçœ‰ã€é¡µè„šçº¿ã€‚ % \begin{macrocode} \bool_if:NT \g_@@_draft_bool { \geometry { showframe } } % \end{macrocode} % % \subsection{å—体} % % \subsubsection{预定义å—体é…ç½®} % % \changes{v0.7c}{2019/03/05}{釿ž„å—体é…置,并兼容 macOS。} % % \begin{variable}{\g_@@_fontset_tl, \g_@@_cjk_fontset_tl} % å˜æ”¾å—体选项值。 % \begin{macrocode} \tl_new:N \g_@@_fontset_tl %<class>\tl_new:N \g_@@_cjk_fontset_tl % \end{macrocode} % \end{variable} % % \begin{macro}{style/font} % \changes{v0.7c}{2019/03/05}{新增 \opt{garamond} å’Œ \opt{times*} æ ·å¼ã€‚} % 预定义西文å—体。 % \begin{macrocode} \keys_define:nn { fdu / style } { font .choices:nn = { garamond, libertinus, lm, palatino, times, times*, none } { \tl_set_eq:NN \g_@@_fontset_tl \l_keys_choice_tl }, font .value_required:n = true, } % \end{macrocode} % \end{macro} % % \begin{macro}{style/cjk-font} % \changes{v0.7c}{2019/03/05}{新增 \opt{sinotype} å’Œ \opt{sourcehan} æ ·å¼ã€‚} % é¢„å®šä¹‰ä¸æ–‡å—体。 % \begin{macrocode} %<*class> \keys_define:nn { fdu / style } { cjk-font .choices:nn = { adobe, fandol, founder, mac, sinotype, sourcehan, windows, none } { \tl_set_eq:NN \g_@@_cjk_fontset_tl \l_keys_choice_tl }, cjk-font .value_required:n = true, } % \end{macrocode} %</class> % \end{macro} % % \begin{macro}{ % \@@_setmainfont:nn, % \@@_setsansfont:nn, % \@@_setmonofont:nn, % \@@_setmathfont:nn} % 用于设置西文å—ä½“çš„è¾…åŠ©å‡½æ•°ï¼Œæ¥æºäºŽ \pkg{fontspec} å’Œ \pkg{unicode-math}。 % \begin{arguments} % \item å—体å % \item 选项 % \end{arguments} % \begin{macrocode} \cs_new_protected:Npn \@@_setmainfont:nn #1#2 { \__fontspec_main_setmainfont:nn {#2} {#1} } \cs_new_protected:Npn \@@_setsansfont:nn #1#2 { \__fontspec_main_setsansfont:nn {#2} {#1} } \cs_new_protected:Npn \@@_setmonofont:nn #1#2 { \__fontspec_main_setmonofont:nn {#2} {#1} } \cs_new_protected:Npn \@@_setmathfont:nn #1#2 { \__um_setmathfont:nn {#2} {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{ % \@@_setCJKmainfont:nn, % \@@_setCJKsansfont:nn, % \@@_setCJKmonofont:nn} % \changes{v0.8}{2021/09/15}{展开å—体æ—å称。} % ç”¨äºŽè®¾ç½®ä¸æ–‡å—ä½“çš„è¾…åŠ©å‡½æ•°ï¼Œæ¥æºäºŽ \pkg{xeCJK} å’Œ \pkg{ctex} å®åŒ…。 % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_setCJKmainfont:nn #1#2 { \@@_set_family:xnn { \CJKrmdefault } {#2} {#1} } \cs_new_protected:Npn \@@_setCJKsansfont:nn #1#2 { \@@_set_family:xnn { \CJKsfdefault } {#2} {#1} } \cs_new_protected:Npn \@@_setCJKmonofont:nn #1#2 { \@@_set_family:xnn { \CJKttdefault } {#2} {#1} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_set_cjk_font_kai:nn,\fdu@kai} % 楷体需è¦å•独设置。 % \begin{macrocode} \cs_new_protected:Npn \@@_set_cjk_font_kai:nn #1#2 { \@@_set_family:nnn { fdu@kai } {#2} {#1} } \cs_new_protected:Npn \fdu@kai { \@@_switch_family:n { fdu@kai } } % \end{macrocode} % \end{macro} % % \changes{v0.7d}{2019/03/29}{在å—体未æä¾›å¯¹åº”粗体的情况下,å…许使用伪粗。} % % \begin{macro}{ % \@@_cjk_font_options:, % \@@_setCJKmainfont:n, % \@@_setCJKsansfont:n, % \@@_setCJKmonofont:n, % \@@_set_cjk_font_kai:n} % å°† boldã€italic å’Œ bold italic 统一按照 roman 设置。 % \begin{macrocode} \tl_const:Nn \@@_cjk_font_options: { UprightFont = *, ItalicFont = *, AutoFakeBold = true } \cs_new_protected:Npx \@@_setCJKmainfont:n #1 { \@@_setCJKmainfont:nn {#1} { \@@_cjk_font_options: } } \cs_new_protected:Npx \@@_setCJKsansfont:n #1 { \@@_setCJKsansfont:nn {#1} { \@@_cjk_font_options: } } \cs_new_protected:Npx \@@_setCJKmonofont:n #1 { \@@_setCJKmonofont:nn {#1} { \@@_cjk_font_options: } } \cs_new_protected:Npx \@@_set_cjk_font_kai:n #1 { \@@_set_cjk_font_kai:nn {#1} { \@@_cjk_font_options: } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_set_family:nnn,\@@_set_family:xnn,\@@_switch_family:n} % å°è£… CJK å—体æ—的设定和切æ¢å‘½ä»¤ã€‚ % \begin{macrocode} \sys_if_engine_xetex:TF { \cs_new_eq:NN \@@_set_family:nnn \xeCJK_set_family:nnn \cs_new_eq:NN \@@_switch_family:n \xeCJK_switch_family:n } { \cs_new_eq:NN \@@_set_family:nnn \ctex_ltj_set_family:nnn \cs_new_eq:NN \@@_switch_family:n \ctex_ltj_switch_family:n } \cs_generate_variant:Nn \@@_set_family:nnn { x } %</class> % \end{macrocode} % \end{macro} % % \begin{macro}{ % \setmainfont, % \setsansfont, % \setmonofont, % \setmathfont, % \setCJKmainfont, % \setCJKsansfont, % \setCJKmonofont} % 釿–°å®šä¹‰ä»¥ä¸Šå®åŒ…æä¾›çš„å—体选择命令。我们把它放在导言区末尾,使得用户é…ç½®ä¸è¢« % 模æ¿é…置覆盖。 % \begin{macrocode} \cs_new_protected:Npn \@@_set_font_helper:n #1 { \exp_args:Nc \RenewDocumentCommand { set #1 font } { O { } m O { } } { \ctex_at_end_preamble:n { \use:c { @@_set #1 font:nn } {##2} { ##1, ##3 } } } } \clist_map_inline:nn { main, sans, mono, math } { \@@_set_font_helper:n {#1} } %<class>\clist_map_inline:nn { CJKmain, CJKsans, CJKmono } %<class> { \@@_set_font_helper:n {#1} } % \end{macrocode} % \end{macro} % % \changes{v0.7e}{2019/04/10}{兼容 Libertinus å’Œ XITS å—体的文件åå˜åŠ¨ã€‚} % \changes{v0.8}{2021/09/15}{åˆ¤æ– Libertinus Sans Bold Oblique å—体是å¦å˜åœ¨ã€‚} % \changes{v0.9}{2023/02/18}{ä¸å†æ£€æŸ¥ Libertinus å’Œ XITS å—体的文件å。} % % \begin{macro}{\@@_load_font_garamond:} % EB Garamond 系列。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_garamond: { \@@_setmainfont:nn { EBGaramond } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, BoldItalicFont = *-BoldItalic } \@@_setsansfont:nn { LibertinusSans } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, } \@@_setmonofont:nn { lmmonolt10 } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-oblique, BoldItalicFont = *-boldoblique } \@@_setmathfont:nn { Garamond-Math.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_libertinus:} % Libertinus 系列。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_libertinus: { \@@_setmainfont:nn { LibertinusSerif } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, BoldItalicFont = *-BoldItalic, } \@@_setsansfont:nn { LibertinusSans } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, } \@@_setmonofont:nn { lmmonolt10 } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-oblique, BoldItalicFont = *-boldoblique } \@@_setmathfont:nn { LibertinusMath-Regular.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_lm:} % Latin Modern 系列。在 \XeLaTeX{} å’Œ \LuaLaTeX{} ä¸å·²ä½œä¸ºé»˜è®¤å—体,所以仅需 % é¢å¤–å¤„ç†æ•°å¦éƒ¨åˆ†ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_lm: { \@@_setmathfont:nn { latinmodern-math.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_palatino:} % Palatino 系列。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_palatino: { \@@_setmainfont:nn { texgyrepagella } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic } \@@_setsansfont:nn { LibertinusSans } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, Scale = MatchUppercase, } \@@_setmonofont:nn { lmmonolt10 } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-oblique, BoldItalicFont = *-boldoblique } \@@_setmathfont:nn { texgyrepagella-math.otf } { } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_times:} % Times 系列。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_font_times: { \@@_setmainfont:nn { XITS } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Italic, BoldItalicFont = *-BoldItalic, } \@@_setsansfont:nn { texgyreheros } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic } \@@_setmonofont:nn { texgyrecursor } { Extension = .otf, UprightFont = *-regular, BoldFont = *-bold, ItalicFont = *-italic, BoldItalicFont = *-bolditalic, Ligatures = CommonOff } \@@_setmathfont:nn { XITSMath-Regular.otf } { BoldFont = XITSMath-Bold.otf } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font_times*:} % Times* 系列,除数å¦éƒ¨åˆ†å¤–采用系统å—体。 % \begin{macrocode} \cs_new_protected:cpn { @@_load_font_ times* : } { \@@_setmainfont:nn { Times~ New~ Roman } { } \@@_setsansfont:nn { Arial } { } \@@_setmonofont:nn { Courier~ New } { } \@@_setmathfont:nn { XITSMath-Regular.otf } { BoldFont = XITSMath-Bold.otf } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_adobe:} % Adobe å—库。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_adobe: { \@@_setCJKmainfont:n { AdobeSongStd-Light } \@@_setCJKsansfont:n { AdobeHeitiStd-Regular } \@@_setCJKmonofont:n { AdobeFangsongStd-Regular } \@@_set_cjk_font_kai:n { AdobeKaitiStd-Regular } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_fandol:} % Fandol å—库。注æ„它是安装在 TeX å‘行版ä¸çš„,所以使用文件å调用。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_fandol: { \@@_setCJKmainfont:nn { FandolSong } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_setCJKsansfont:nn { FandolHei } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_setCJKmonofont:nn { FandolFang } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Regular, ItalicFont = *-Regular, BoldItalicFont = *-Regular } \@@_set_cjk_font_kai:nn { FandolKai } { Extension = .otf, UprightFont = *-Regular, BoldFont = *-Regular, ItalicFont = *-Regular, BoldItalicFont = *-Regular } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_founder:} % æ–¹æ£å—库。虽然有粗体(方æ£å°æ ‡å®‹ï¼‰ç‰ï¼Œä½†å¹¶éžå…费,故这里ä¸åšå¤„ç†ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_founder: { \@@_setCJKmainfont:n { FZShuSong-Z01 } \@@_setCJKsansfont:n { FZHei-B01 } \@@_setCJKmonofont:n { FZFangSong-Z02 } \@@_set_cjk_font_kai:n { FZKai-Z03 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_mac:} % macOS è‡ªå¸¦ä¸æ–‡å—体。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_mac: { \@@_setCJKmainfont:nn { STSongti-SC } { UprightFont = *-Light, BoldFont = *-Bold, ItalicFont = *-Light, BoldItalicFont = *-Bold } \@@_setCJKsansfont:nn { STHeitiSC } { UprightFont = *-Medium, BoldFont = *-Medium, ItalicFont = *-Medium, BoldItalicFont = *-Medium } \@@_setCJKmonofont:n { STFangsong } \@@_set_cjk_font_kai:nn { STKaitiSC } { UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_sinotype:} % åŽæ–‡å—库。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_sinotype: { \@@_setCJKmainfont:n { STSong } \@@_setCJKsansfont:n { STHeiti } \@@_setCJKmonofont:n { STFangsong } \@@_set_cjk_font_kai:n { STKaiti } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_sourcehan:} % æ€æºå®‹ä½“ã€æ€æºé»‘体。由于没有对应的楷体和仿宋,这里直接给出è¦å‘Šã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_sourcehan: { \@@_setCJKmainfont:nn { SourceHanSerifSC } { UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_setCJKsansfont:nn { SourceHanSansSC } { UprightFont = *-Regular, BoldFont = *-Bold, ItalicFont = *-Regular, BoldItalicFont = *-Bold } \@@_warning:n { source-han } } \@@_msg_new:nn { source-han } { Font~ set~ "sourcehan"~ does~ not~ contain~ kaiti~ and~ fangsong. } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_cjk_font_windows:} % Windows è‡ªå¸¦ä¸æ–‡å—体。 % \begin{macrocode} \cs_new_protected:Npn \@@_load_cjk_font_windows: { \@@_setCJKmainfont:n { SimSun } \@@_setCJKsansfont:n { SimHei } \@@_setCJKmonofont:n { FangSong } \@@_set_cjk_font_kai:n { KaiTi } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_load_font:} % å—ä½“åŠ è½½å‘½ä»¤ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_load_font: { \use:c { @@_load_font_ \g_@@_fontset_tl : } %<class> \use:c { @@_load_cjk_font_ \g_@@_cjk_fontset_tl : } } \ctex_at_end_preamble:n { \@@_load_font: } % \end{macrocode} % \end{macro} % %^^A 以下相关代ç 已在 v0.7c ä¸ç§»é™¤ã€‚ % \changes{v0.5}{2017/09/09}{釿–°å®žçްå—ä½“è°ƒç”¨ã€‚æ ¸å¿ƒå†…å®¹æ˜¯åˆ†ç¦»å—体的声明与设定, % 并按照宋ã€é»‘ã€ä»¿ã€æ¥·åˆ’åˆ†ä¸æ–‡å—体。} % \changes{v0.6}{2017/11/11}{é¢å¤–å¤„ç† XITS å—体的å°åž‹å¤§å†™å—æ¯ã€‚} % \changes{v0.5}{2017/09/23}{新增 \kvopt{font}{none} 选项。} % \changes{v0.5}{2017/09/23}{新增 \kvopt{cjk-font}{none} 选项。} % \changes{v0.5}{2017/09/23}{åŒæ¥ \pkg{fontspec} v2.6e。} % \changes{v0.6}{2017/10/11}{åŒæ¥ \pkg{unicode-math} v0.8h。} % % \subsubsection{æ•°å¦å—体设置} % % æ ¹æ® GB 3102.11--93 ä»¥åŠ ISO 80000-2:2009 的规定,数å¦è¡¨è¾¾å¼ä¸ % 表示å˜é‡çš„æ‹‰ä¸å—æ¯å’Œå¸Œè…Šå—æ¯å‡åº”当使用斜体。 % 这里的 |\keys_set:nn{unicode-math}| 实际相当于 \cs{unimathsetup}。 % \begin{macrocode} % TODO: (2018-01-19) Do we need `mathrm=sym`? \keys_set:nn { unicode-math } { math-style = ISO, bold-style = ISO, % mathrm = sym } % \end{macrocode} % % \subsubsection{å—å·} % % \begin{macro}{style/font-size} % \changes{v0.9}{2023/02/08}{通过引入 \file{ctex-c5size.clo} æ¥ä¿®æ”¹å—å·ã€‚} % |font-size| 䏿˜¯æ–‡æ¡£ç±»é€‰é¡¹ï¼Œä¸èƒ½ä¼ ç»™ \cls{ctexbook} æ–‡æ¡£ç±»ï¼Œå› æ¤ % éœ€è¦æ‰‹åЍ引入 |.clo| 文件。 % \begin{macrocode} \keys_define:nn { fdu / style } { font-size .choice:, font-size .value_required:n = true, font-size / -4 .code:n = { }, font-size / 5 .code:n = { \ctex_file_input:n { ctex-c5size.clo } }, %<class-en> } % \end{macrocode} % \end{macro} % % \subsubsection{其他设置} % % \begin{macro}{style/fullwidth-stop} % \changes{v0.6}{2017/10/14}{支æŒç±»åˆ«ç å’Œ TECKit æ˜ å°„ä¸¤ç§æœºåˆ¶ã€‚} % 设置å¥å·å½¢çŠ¶ï¼ˆåœ†åœˆæˆ–æ˜¯åœ†ç‚¹ï¼‰ã€‚ % \begin{macrocode} %<*class> fullwidth-stop .choice:, fullwidth-stop .value_required:n = true, % \end{macrocode} % åˆ©ç”¨ç±»åˆ«ç æœºåˆ¶åˆ‡æ¢ï¼Œåªæœ‰æ˜¾å¼çš„\FSID 会被替æ¢ã€‚ % \begin{macrocode} fullwidth-stop / catcode .code:n = { \@@_set_fullwidth_stop_catcode: }, % \end{macrocode} % 利用 TECKit æ˜ å°„æœºåˆ¶åˆ‡æ¢ï¼Œç›¸å½“于设置了 \tn{defaultCJKfontfeatures} % |{|\kvopt{Map\-ping}{fullwidth-stop}|}|ã€‚è¿™ç§æ‰‹æ®µä¼šæ›¿æ¢æ‰€æœ‰å‡ºçŽ°çš„\FSID, % 并䏔将影哿‰€æœ‰å—体。åªåœ¨ \XeTeX{} 下å¯ç”¨ã€‚ % \begin{macrocode} fullwidth-stop / mapping .code:n = { \sys_if_engine_xetex:TF { \clist_gset:Nn \g__xeCJK_default_features_clist { Mapping = fullwidth-stop } } { % \end{macrocode} % \LuaTeX{} ä¸‹æ”¹ç”¨ç±»åˆ«ç æœºåˆ¶ä»£æ›¿ï¼Œå¹¶ç»™å‡ºè¦å‘Šã€‚ % \begin{macrocode} \sys_if_engine_luatex:T { \@@_warning:n { mapping-not-available } \@@_set_fullwidth_stop_catcode: } } }, fullwidth-stop / false .code:n = { } } % \end{macrocode} % \end{macro} % æç¤ºä¿¡æ¯ã€‚ % \begin{macrocode} \@@_msg_new:nn { mapping-not-available } { Option~ "fullwidth-stop = mapping"~ is~ not~ available~ in~ LuaTeX. \\ "fullwidth-stop = catcode"~ will~ be~ set~ instead. } % \end{macrocode} % % \begin{macro}{\@@_set_fullwidth_stop_catcode:} % \changes{v0.8}{2021/09/16}{将类别ç 设置应用于预定义的文本ä¸ï¼Œå¹¶ä¼˜åŒ–实现。} % å°†\FSID 设置为活动符,并定义为å¥ç‚¹\FSFW。 % \begin{macrocode} \cs_new:Npn \@@_set_fullwidth_stop_catcode: { \char_set_active_eq:NN ^^^^3002 \c_@@_fwid_full_stop_tl \char_set_catcode_active:N ^^^^3002 \clist_map_inline:nn { \c_@@_orig_decl_text_tl, \c_@@_auth_decl_text_tl } { \tl_set_rescan:Nno ##1 { } {##1} } } %</class> % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/15}{å…许 \tn{emph} 坹䏿–‡ç”Ÿæ•ˆã€‚} % % 声明 \tn{emph} æ ·å¼åºåˆ—ï¼Œä½¿å¾—ä¸æ–‡å¼ºè°ƒä»¥æ¥·ä½“显示。 % \begin{macrocode} %<*class> \DeclareEmphSequence { \itshape \fdu@kai, \upshape \CJKfamily { \CJKfamilydefault }, } %</class> % \end{macrocode} % % \changes{v0.6}{2017/10/28}{优化 \LuaTeX{} ä¸‹å¸Œè…Šå—æ¯ã€è¥¿é‡Œå°”å—æ¯å’Œå¸¦åœˆæ•°å—çš„ % 显示(\pkg{ctex} v2.4.11 已默认进行处ç†ï¼‰ã€‚} % % \subsection{页眉页脚} % % æ¸…é™¤é»˜è®¤é¡µçœ‰é¡µè„šæ ¼å¼ã€‚ % \begin{macrocode} \fancyhf { } % \end{macrocode} % % \begin{macro}{\@@_fancy_head:nn} % é¡µçœ‰æ ·å¼ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_fancy_head:nn #1#2 { \fancyhead [#1] %<class> { \small \fdu@kai \nouppercase {#2} } %<class-en> { \small \itshape \nouppercase {#2} } } % \end{macrocode} % \end{macro} % % 构建页眉,è¦åœ¨å•颿ˆ–åŒé¢ä¸‹åˆ†åˆ«è®¾ç½®ã€‚ % % \cs{fancyhead} 的选项ä¸ï¼Œ\opt{E} å’Œ \opt{O} åˆ†åˆ«è¡¨ç¤ºå¶æ•°ï¼ˆeven)和奇数(odd), 而 \opt{L}〠% \opt{R} å’Œ \opt{C} 则分别表示左(left)ã€å³ï¼ˆright)和ä¸é—´ï¼ˆcenter)。按照通常的排版规则, % åŒé¢æ¨¡å¼ä¸‹ï¼Œå¶æ•°é¡µçš„ä¸é—´é¡µçœ‰æ–‡å—在左,奇数页则在å³ï¼›å•颿¨¡å¼ä¸‹ï¼Œå·¦å³é¡µçœ‰éƒ½ä¼šæ˜¾ç¤ºã€‚ % \begin{macrocode} \bool_if:NTF \g_@@_twoside_bool { \@@_fancy_head:nn { EL } { \leftmark } \@@_fancy_head:nn { OR } { \rightmark } } { \@@_fancy_head:nn { L } { \leftmark } \@@_fancy_head:nn { R } { \rightmark } } % \end{macrocode} % % æž„å»ºé¡µè„šï¼Œç”¨æ¥æ˜¾ç¤ºé¡µç 。选项 \opt{C} 表示居ä¸ï¼ˆcenter)。 % \begin{macrocode} \fancyfoot [ C ] { \small \thepage } % \end{macrocode} % % 关闿¨ªçº¿æ˜¾ç¤ºï¼ˆæœªå¯ç”¨ï¼‰ã€‚ % \begin{macrocode} % \RenewDocumentCommand \headrulewidth { } { 0 pt } % \end{macrocode} % % \begin{macro}{\cleardoublepage} % é‡å®šä¹‰ \tn{cleardoublepage}ï¼Œä½¿å¾—å¶æ•°é¡µé¢åœ¨æ²¡æœ‰å†…å®¹æ—¶ä¹Ÿä¸æ˜¾ç¤ºé¡µçœ‰é¡µè„šï¼Œè§ % \url{https://tex.stackexchange.com/a/1683}。 % \begin{macrocode} \RenewDocumentCommand \cleardoublepage { } { \clearpage \bool_if:NT \g_@@_twoside_bool { \int_if_odd:nF \c@page { \hbox:n { } \thispagestyle { empty } \newpage } } } % \end{macrocode} % \end{macro} % % \pkg{ctex} å®åŒ…使用 \opt{heading} 选项åŽï¼Œä¼šæŠŠé¡µé¢æ ¼å¼è®¾ç½®ä¸º |headings|。 % å› æ¤å¿…须在 \pkg{ctex} 调用之åŽé‡æ–°è®¾ç½® \cs{pagestyle} 为 |fancy|。 % \begin{macrocode} \pagestyle { fancy } % \end{macrocode} % % \subsection{ç« èŠ‚æ ‡é¢˜ç»“æž„} % % |\keys_set:nn{ctex}| 实际相当于 \cs{ctexset}。 % \begin{macrocode} \keys_set:nn { ctex } { % \end{macrocode} % è®¾ç½®ç« ï¼ˆchapter)ã€èŠ‚ï¼ˆsection)与å°èŠ‚ï¼ˆsub-sectionï¼‰æ ‡é¢˜æ ·å¼ã€‚ % æ¤å¤„使用 \kvopt{fixskip}{true} é€‰é¡¹æ¥æŠ‘åˆ¶å‰åŽçš„多余间è·ã€‚ % \begin{macrocode} chapter = { %<class> format = \huge \normalfont \sffamily \centering, %<*class-en> format = \centering, nameformat = \LARGE \bfseries, titleformat = \huge \bfseries, aftername = \par \nobreak \vskip 10 pt, %</class-en> beforeskip = 50 pt, afterskip = 40 pt, number = \@@_arabic:n { chapter }, fixskip = true }, section = { %<class> format = \Large \normalfont \sffamily \raggedright, %<class-en> format = \Large \bfseries \raggedright, beforeskip = 3.5 ex plus 1.0 ex minus 0.2 ex, afterskip = 2.7 ex plus 0.5 ex, fixskip = true }, subsection = { %<class> format = \large \normalfont \sffamily \raggedright, %<class-en> format = \large \bfseries \raggedright, beforeskip = 3.25 ex plus 1.0 ex minus 0.2 ex, afterskip = 2.5 ex plus 0.3 ex, fixskip = true } } % \end{macrocode} % % \changes{v0.7d}{2019/03/24}{ä¼˜åŒ–ç›®å½•ã€æ‘˜è¦ã€å‚考文献ç‰çš„æ ‡é¢˜å®žçŽ°ã€‚} % \changes{v0.9}{2023/02/05}{在目录和书ç¾ä¸åˆ é™¤ç« æ ‡é¢˜ä¸çš„ \tn{quad}。} % % \begin{macro}{\@@_sanitize_chapter_title:n} % åˆ é™¤ç« æ ‡é¢˜ä¸çš„ \tn{quad}。 % \begin{macrocode} \cs_new_protected:Npn \@@_sanitize_chapter_title:n #1 { \tl_clear:N \l_@@_tmpa_tl \tl_set:No \l_@@_tmpa_tl {#1} \tl_remove_all:Nn \l_@@_tmpa_tl { \quad } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter:n,\@@_chapter:V} % 手动生æˆç« çš„æ ‡é¢˜ï¼Œç”¨äºŽæ‘˜è¦ã€å‚考文献ç‰ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_chapter:n #1 { \@@_sanitize_chapter_title:n {#1} \group_begin: \ctexset { chapter / numbering = false } \chapter [ \l_@@_tmpa_tl ] {#1} \group_end: \@@_chapter_header:n {#1} } \cs_generate_variant:Nn \@@_chapter:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter_no_toc:n,\@@_chapter_no_toc:V} % 目录自身ä¸å‡ºçŽ°åœ¨ç›®å½•ä¸ï¼Œéœ€ç‰¹åˆ«å¤„ç†ã€‚å‚考 % \url{https://tex.stackexchange.com/a/1821}。 % \begin{macrocode} \cs_new_protected:Npn \@@_chapter_no_toc:n #1 { \chapter * {#1} \@@_sanitize_chapter_title:n {#1} \pdfbookmark [0] { \l_@@_tmpa_tl } { toc } \@@_chapter_header:n {#1} } \cs_generate_variant:Nn \@@_chapter_no_toc:n { V } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_chapter_header:n} % \changes{v0.8}{2022/01/18}{简化å•页模å¼ä¸‹é¡µçœ‰çš„实现方å¼ã€‚} % å•页模å¼ä¸‹ï¼Œç›®å½•ã€æ‘˜è¦ã€ç¬¦å·è¡¨ç‰çš„页眉ä¸é—´ä¸ºç›¸åº”æ ‡é¢˜ï¼Œå·¦å³ä¸ºç©ºã€‚这里通过居ä¸çš„ % \tn{leftmark} 实现。 % \begin{macrocode} \cs_new_protected:Npn \@@_chapter_header:n #1 { \bool_if:NTF \g_@@_twoside_bool { \markboth {#1} {#1} } { \markboth { \hfill #1 \hfill } { } } } % \end{macrocode} % \end{macro} % % \subsection{脚注} % % \changes{v0.3}{2017/02/21}{支æŒè„šæ³¨ã€‚} % % \subsubsection{ç¼–å·æ ·å¼} % % å„ç§è„šæ³¨ç¼–å·æ ·å¼çš„å称。 % \begin{macrocode} \clist_map_inline:nn { { plain } { plain }, { libertinus } { libertinus }, { libertinus_neg } { libertinus* }, { libertinus_sans } { libertinus-sans }, { pifont } { pifont }, { pifont_neg } { pifont* }, { pifont_sans } { pifont-sans }, { pifont_sans_neg } { pifont-sans* }, { xits } { xits }, { xits_sans } { xits-sans }, { xits_sans_neg } { xits-sans* } } { \@@_define_fn_style:nn #1 } % \end{macrocode} % % \begin{variable}{\l_@@_fn_style_tl} % ä¿å˜å½“å‰ä½¿ç”¨çš„è„šæ³¨ç¼–å·æ ·å¼ã€‚ % \begin{macrocode} \tl_new:N \l_@@_fn_style_tl % \end{macrocode} % \end{variable} % % \begin{macrocode} \keys_define:nn { fdu / style } { % \end{macrocode} % % \begin{macro}{style/footnote-style} % 脚注类型共分四大类: % \begin{itemize} % \item \opt{plain}:使用当å‰å—体; % \item \opt{libertinus}:å–自 Libertinus Serif å’Œ Libertinus Sans % å—体; % \item \opt{pifont}:使用 \pkg{pifont} å®åŒ…ï¼› % \item \opt{xits}:å–自 XITS å—体。 % \end{itemize} % ä¸å¸¦ä»»ä½•修饰的为衬线阳文符å·ï¼Œå¸¦â€œ|sans|â€çš„ä¸ºæ— è¡¬çº¿ç¬¦å·ï¼Œå¸¦â€œ|*|â€çš„ % 为阴文版本。 % \begin{macrocode} footnote-style .choices:nn = { plain, libertinus, libertinus*, libertinus-sans, pifont, pifont*, pifont-sans, pifont-sans*, xits, xits-sans, xits-sans* } % \end{macrocode} % \changes{v0.6}{2017/11/12}{ä¸å†ä¾èµ– XITS-Math å—体。} % 若使用 \opt{pifont} 类型,则需引入 \pkg{pifont} å®åŒ…。 % \begin{macrocode} { \tl_gset_eq:NN \l_@@_fn_style_tl \l_keys_choice_tl \int_compare:nT { 5 <= \l_keys_choice_int <= 8 } { \RequirePackage { pifont } } }, footnote-style .value_required:n = true } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_libertinus:n} % \opt{libertinus} 普通版。\numrange{1}{20} 为数å—,\numrange{21}{46} % 为å°å†™è‹±æ–‡å—æ¯ï¼Œ\numrange{47}{72} ä¸ºå¤§å†™è‹±æ–‡å—æ¯ã€‚ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_libertinus:n #1 { \int_compare:nTF { #1 >= 21 } { \int_compare:nTF { #1 >= 47 } { \@@_symbol:n { \int_eval:n { "24B6 - 47 + #1 } } } { \@@_symbol:n { \int_eval:n { "24D0 - 21 + #1 } } } } { \@@_symbol:n { \int_eval:n { "2460 - 1 + #1 } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_libertinus_neg:n} % \opt{libertinus} 阴文衬线版。åªå« \numrange{1}{20}。 % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_libertinus_neg:n #1 { \int_compare:nTF { #1 >= 11 } { \@@_symbol:n { \int_eval:n { "24EB - 11 + #1 } } } { \@@_symbol:n { \int_eval:n { "2776 - 1 + #1 } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont:n} % \opt{pifont} 普通版。以下四ç§éƒ½åªåŒ…å« \numrange{1}{10}。 % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont:n #1 { \ding { \int_eval:n { 171 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont_neg:n} % \opt{pifont} 阴文衬线版。 % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont_neg:n #1 { \ding { \int_eval:n { 181 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont_sans:n} % \opt{pifont} é˜³æ–‡æ— è¡¬çº¿ç‰ˆã€‚ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont_sans:n #1 { \ding { \int_eval:n { 191 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_pifont_sans_neg:n} % \opt{pifont} é˜´æ–‡æ— è¡¬çº¿ç‰ˆã€‚ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_pifont_sans_neg:n #1 { \ding { \int_eval:n { 201 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_xits:n} % \opt{xits} 普通版。\numrange{1}{9} 为数å—,\numrange{10}{35} % 为å°å†™è‹±æ–‡å—æ¯ï¼Œ\numrange{36}{61} ä¸ºå¤§å†™è‹±æ–‡å—æ¯ã€‚ % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_xits:n #1 { \int_compare:nTF { #1 >= 10 } { \int_compare:nTF { #1 >= 36 } { \@@_symbol:n { \int_eval:n { "24B6 - 36 + #1 } } } { \@@_symbol:n { \int_eval:n { "24D0 - 10 + #1 } } } } { \@@_symbol:n { \int_eval:n { "2460 - 1 + #1 } } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_xits_sans:n} % \opt{xits} é˜³æ–‡æ— è¡¬çº¿ç‰ˆã€‚åªåŒ…å« \numrange{1}{10}。 % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_xits_sans:n #1 { \@@_symbol:n { \int_eval:n { "2780 - 1 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fn_symbol_xits_sans_neg:n} % \opt{xits} é˜´æ–‡æ— è¡¬çº¿ç‰ˆã€‚ä¹ŸåªåŒ…å« \numrange{1}{10}。 % \begin{macrocode} \cs_new:Npn \@@_fn_symbol_xits_sans_neg:n #1 { \@@_symbol:n { \int_eval:n { "278A - 1 + #1 } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\thefootnote} % \changes{v0.7}{2018/01/17}{改为å¯å®Œå…¨å±•开的命令。} % é‡å®šä¹‰è„šæ³¨ç¼–å·ã€‚ % \begin{macrocode} \cs_set:Npn \thefootnote { \fdu_footnote_number:N \c@footnote } % \end{macrocode} % \end{macro} % % \begin{macro}{\fdu_footnote_number:N} % è„šæ³¨ç¼–å·æ ·å¼ã€‚ % \begin{macrocode} \cs_new:Npn \fdu_footnote_number:N #1 { \tl_case:NnF \l_@@_fn_style_tl { % \end{macrocode} % \opt{plain} 类型直接使用计数器 |footnote| 的值。 % \begin{macrocode} \c_@@_fn_style_plain_tl { \int_use:N #1 } % \end{macrocode} % \opt{libertinus} 类型需è¦ä½¿ç”¨ Libertinus Serif 或 % Libertinus Sans å—体。 % \begin{macrocode} \c_@@_fn_style_libertinus_tl { \fontspec { LibertinusSerif-Regular.otf } \@@_fn_symbol_libertinus:n {#1} } \c_@@_fn_style_libertinus_neg_tl { \fontspec { LibertinusSerif-Regular.otf } \@@_fn_symbol_libertinus_neg:n {#1} } \c_@@_fn_style_libertinus_sans_tl { \fontspec { LibertinusSans-Regular.otf } \@@_fn_symbol_libertinus:n {#1} } % \end{macrocode} % \opt{pifont} ç±»åž‹æ— éœ€è¿›è¡Œé¢å¤–çš„æ“作。 % \begin{macrocode} \c_@@_fn_style_pifont_tl { \@@_fn_symbol_pifont:n {#1} } \c_@@_fn_style_pifont_neg_tl { \@@_fn_symbol_pifont_neg:n {#1} } \c_@@_fn_style_pifont_sans_tl { \@@_fn_symbol_pifont_sans:n {#1} } \c_@@_fn_style_pifont_sans_neg_tl { \@@_fn_symbol_pifont_sans_neg:n {#1} } % \end{macrocode} % \opt{xits} 类型需è¦ä¸´æ—¶åˆ‡æ¢æ•°å¦å—体。 % \begin{macrocode} \c_@@_fn_style_xits_tl { \fontspec { XITS-Regular.otf } \@@_fn_symbol_xits:n {#1} } \c_@@_fn_style_xits_sans_tl { \fontspec { XITS-Regular.otf } \@@_fn_symbol_xits_sans:n {#1} } \c_@@_fn_style_xits_sans_neg_tl { \fontspec { XITS-Regular.otf } \@@_fn_symbol_xits_sans_neg:n {#1} } } % \end{macrocode} % å˜é‡ \cs{l_@@_fn_style_tl} ä¿å˜çš„类型未知时,默认使用 \opt{plain} % 类型。 % \begin{macrocode} { \int_use:N #1 } } % \end{macrocode} % \end{macro} % % \subsubsection{æ•´ä½“æ ·å¼} % % \begin{macro}[int]{\@makefntext} % \changes{v0.7}{2018/01/18}{简化实现,兼容 \pkg{fancyvrb} å®åŒ…。 % ä¸å†ä½¿ç”¨æ‚¬æŒ‚缩进。} % é‡å®šä¹‰å†…部脚注文å—命令,使脚注编å·ä¸ä½¿ç”¨ä¸Šæ ‡ï¼Œå®½åº¦ä¸º \qty{1.5}{em}。 % è§ \url{http://tex.stackexchange.com/q/19844} å’Œ % \url{https://www.zhihu.com/question/53030087}。 % \begin{macrocode} \cs_set:Npn \@makefntext #1 { \mode_leave_vertical: \hbox_to_wd:nn { 1.5 em } { \@thefnmark \hfil } #1 } % \end{macrocode} % \end{macro} % % \subsection{定ç†çŽ¯å¢ƒ} % % \changes{v0.3}{2017/05/07}{新增定ç†çŽ¯å¢ƒã€‚} % % \begin{variable}{\c_@@_thm_style_plain_clist, % \c_@@_thm_style_break_clist} % ä¿å˜ \opt{plain}ã€\opt{break} 两ç§ç±»åž‹çš„å®šç†æ ·å¼å称。 % \begin{macrocode} \clist_const:Nn \c_@@_thm_style_plain_clist { plain, margin, change } \clist_const:Nn \c_@@_thm_style_break_clist { break, marginbreak, changebreak } % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_thm_style_tl, % \l_@@_thm_header_font_tl, % \l_@@_thm_body_font_tl, % \l_@@_thm_qed_tl, % \l_@@_thm_counter_tl} % å®šç†æ‰€éœ€çš„ä¸€äº›å—æ®µã€‚ % \begin{macrocode} \tl_new:N \l_@@_thm_style_tl \tl_new:N \l_@@_thm_header_font_tl \tl_new:N \l_@@_thm_body_font_tl \tl_new:N \l_@@_thm_qed_tl \tl_new:N \l_@@_thm_counter_tl % \end{macrocode} % \end{variable} % % \begin{macro}{theorem/style, % theorem/header-font, % theorem/body-font, % theorem/qed, % theorem/counter} % 定义 |fdu/theorem| 键值类。 % \begin{macrocode} \keys_define:nn { fdu / theorem } { style .tl_set:N = \l_@@_thm_style_tl, header-font .tl_set:N = \l_@@_thm_header_font_tl, body-font .tl_set:N = \l_@@_thm_body_font_tl, qed .tl_set:N = \l_@@_thm_qed_tl, counter .tl_set:N = \l_@@_thm_counter_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_ntheorem_style:n,\@@_thm_ntheorem_new:w} % æ‹·è´ \pkg{ntheorem} 命令。 % \begin{macrocode} \cs_new_eq:NN \@@_thm_ntheorem_style:n \theoremstyle \cs_new_eq:NN \@@_thm_ntheorem_new:w \newtheorem % \end{macrocode} % \end{macro} % % \changes{v0.7}{2017/12/12}{原 \cs{fdunewtheorem} 命令更å为 % \cs{new\-the\-orem}。} % % \begin{macro}{\newtheorem} % \changes{v0.9}{2023/02/08}{改用 \cs{DeclareDocumentCommand} 定义。} % 定义新的定ç†çŽ¯å¢ƒã€‚ % \begin{macrocode} \DeclareDocumentCommand \newtheorem { s o m m } { % \end{macrocode} % 默认情况下,由 \cs{newtheorem*} 创建的定ç†å…¶è¯æ¯•符å·ä¸º \cs{QED}, % 而由 \cs{new\-the\-orem} 创建的则ä¸å¸¦è¯æ¯•符å·ã€‚ç¬¦å· \cs{QED} ç”± % \pkg{unicode-math} å®åŒ…æä¾›ã€‚ % \begin{macrocode} \IfBooleanTF {#1} { \tl_set:Nn \l_@@_thm_qed_tl { \ensuremath { \QED } } } { \tl_set:Nn \l_@@_thm_qed_tl { } } % \end{macrocode} % è®¾ç½®é»˜è®¤æ ·å¼ä¸º \opt{plain}。 % \begin{macrocode} % TODO: (2017-12-07) Move to interface \tl_set:Nn \l_@@_thm_style_tl { plain } % \end{macrocode} % 处ç†å¯é€‰å‚数。利用 |fdu/theorem| 键值对设置,并按æ¤ä¿®æ”¹è¯æ¯•符å·ã€ % 定ç†å¤´å—ä½“å’Œå®šç†æ£æ–‡å—体。 % \begin{macrocode} \IfValueT {#2} { \keys_set:nn { fdu / theorem } {#2} } \fdu_thm_set_header_font:V \l_@@_thm_header_font_tl \fdu_thm_set_body_font:V \l_@@_thm_body_font_tl \fdu_thm_set_qed:V \l_@@_thm_qed_tl % \end{macrocode} % \cs{newtheorem} 负责创建编å·å®šç†ï¼Œè€Œ \cs{newtheorem*} % åˆ™è´Ÿè´£åˆ›å»ºæ— ç¼–å·å®šç†ã€‚ä»¥ä¸‹åˆ†è¿™ä¸¤ç§æƒ…况处ç†ã€‚ % \begin{macrocode} \IfBooleanTF {#1} { % \end{macrocode} % 带 |*| çš„ç‰ˆæœ¬åŽŸåˆ™ä¸ŠåªæŽ¥å— \opt{plain} å’Œ \opt{break} ä¸¤ç§æ ·å¼ï¼Œ % å…¶ä½™æ ·å¼å°†è¢«è½¬æ¢æˆè¿™ä¸¤è€…å…¶ä¸ä¹‹ä¸€ã€‚ % \begin{macrocode} \clist_if_in:nVF { plain, break } \l_@@_thm_style_tl { \clist_if_in:NVTF \c_@@_thm_style_plain_clist \l_@@_thm_style_tl { \@@_thm_redefine_style:n { plain } } { \clist_if_in:NVTF \c_@@_thm_style_break_clist \l_@@_thm_style_tl { \@@_thm_redefine_style:n { break } } { \@@_error:nx { unknown-theorem-style } { \l_@@_thm_style_tl } } } } % \end{macrocode} % \pkg{ntheorem} å®åŒ…æä¾›çš„æ— ç¼–å·å®šç†å¸¦æœ‰ |nonumber| å‰ç¼€ï¼Œ % è¿™é‡Œå°†å…¶åŠ ä¸Šã€‚ % \begin{macrocode} \tl_put_left:Nn \l_@@_thm_style_tl { nonumber } \fdu_thm_new_no_number:Vxx \l_@@_thm_style_tl {#3} {#4} } { % \end{macrocode} % ä¸å¸¦ |*| 的版本支æŒä¸å«â€œ|nonumber|â€çš„æ‰€æœ‰å®šç†æ ·å¼ã€‚ % \begin{macrocode} \clist_clear:N \l_@@_tmpa_clist \clist_concat:NNN \l_@@_tmpa_clist \c_@@_thm_style_plain_clist \c_@@_thm_style_break_clist \clist_if_in:NVF \l_@@_tmpa_clist \l_@@_thm_style_tl { \@@_error:nx { unknown-theorem-style } { \l_@@_thm_style_tl } } \fdu_thm_new:VVxx \l_@@_thm_style_tl \l_@@_thm_counter_tl {#3} {#4} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_thm_redefine_style:n} % é‡å®šä¹‰å®šç†æ ·å¼ï¼Œå¹¶ç»™å‡ºè¦å‘Šã€‚ % \begin{macrocode} \cs_new:Npn \@@_thm_redefine_style:n #1 { \@@_warning:nxx { redefine-theorem-style } {#1} { \l_@@_thm_style_tl } \tl_set:Nn \l_@@_thm_style_tl {#1} } % \end{macrocode} % \end{macro} % % æç¤ºä¿¡æ¯ã€‚ % \begin{macrocode} \@@_msg_new:nn { redefine-theorem-style } { Theorem~ style~ "#2"~ will~ be~ redefined~ as~ "#1". } \@@_msg_new:nn { unknown-theorem-style } { Theorem~ style~ "#1"~ is~ unknown. } % \end{macrocode} % % \begin{macro}{\fdu_thm_new:nnnn,\fdu_thm_new:VVxx} % 带编å·çš„定ç†çŽ¯å¢ƒã€‚ % \begin{arguments} % \item æ ·å¼ % \item 计数器 % \item 定ç†çŽ¯å¢ƒåç§° % \item 定ç†å¤´æ–‡å— % \end{arguments} % \begin{macrocode} \cs_new:Npn \fdu_thm_new:nnnn #1#2#3#4 { \@@_thm_ntheorem_style:n {#1} \@@_thm_ntheorem_new:w {#3} {#4} [#2] } \cs_generate_variant:Nn \fdu_thm_new:nnnn { VVxx } % \end{macrocode} % \end{macro} % % \begin{macro}{\fdu_thm_new_no_number:nnn, % \fdu_thm_new_no_number:Vxx} % ä¸å¸¦ç¼–å·çš„定ç†çŽ¯å¢ƒã€‚ % \begin{arguments} % \item æ ·å¼ % \item 定ç†çŽ¯å¢ƒåç§° % \item 定ç†å¤´æ–‡å— % \end{arguments} % \begin{macrocode} \cs_new:Npn \fdu_thm_new_no_number:nnn #1#2#3 { \@@_thm_ntheorem_style:n {#1} \@@_thm_ntheorem_new:w {#2} {#3} } \cs_generate_variant:Nn \fdu_thm_new_no_number:nnn { Vxx } % \end{macrocode} % \end{macro} % % \begin{macro}{\fdu_thm_set_qed:n, % \fdu_thm_set_header_font:n, % \fdu_thm_set_body_font:n, % \fdu_thm_set_qed:V, % \fdu_thm_set_header_font:V, % \fdu_thm_set_body_font:V} % å°è£… \pkg{ntheorem} å®åŒ…æä¾›çš„è‹¥å¹²å‘½ä»¤ï¼Œåˆ†åˆ«ç”¨ä»¥è®¾ç½®è¯æ¯•符å·ã€ % 定ç†å¤´å—ä½“å’Œå®šç†æ£æ–‡å—体。 % \begin{macrocode} \cs_new:Npn \fdu_thm_set_qed:n #1 { \theoremsymbol {#1} } \cs_new:Npn \fdu_thm_set_header_font:n #1 { \theoremheaderfont {#1} } \cs_new:Npn \fdu_thm_set_body_font:n #1 { \theorembodyfont {#1} } \cs_generate_variant:Nn \fdu_thm_set_qed:n { V } \cs_generate_variant:Nn \fdu_thm_set_header_font:n { V } \cs_generate_variant:Nn \fdu_thm_set_body_font:n { V } % \end{macrocode} % \end{macro} % % \subsection{图表绘制;浮动体} % % \changes{v0.3}{2017/07/09}{æ”¯æŒæµ®åŠ¨ä½“ã€‚} % % 分别设置浮动体 \env{figure} å’Œ \env{table} çš„æ ‡é¢˜æ ·å¼ã€‚ % \begin{macrocode} \captionsetup [ figure ] { font = small, labelsep = quad } \captionsetup [ table ] { font = { small, sf }, labelsep = quad } % \end{macrocode} % % \begin{macro}{\thefigure,\thetable} % \changes{v0.7}{2018/01/17}{改为å¯å®Œå…¨å±•开的命令。} % \changes{v0.8}{2021/03/10}{直接调用 \tn{thechapter} 使得附录ä¸çš„å›¾è¡¨ç¼–å·æ£ç¡®æ˜¾ç¤ºã€‚} % é‡å®šä¹‰å›¾è¡¨ç¼–å·ã€‚ % \begin{macrocode} \cs_set:Npn \thefigure { \thechapter - \@@_arabic:n { figure } } \cs_set:Npn \thetable { \thechapter - \@@_arabic:n { table } } % \end{macrocode} % \end{macro} % % \subsection{å°é¢} % % \subsubsection{ä¿¡æ¯å½•å…¥} % % \begin{variable}{\l_@@_info_title_tl, % \l_@@_info_date_tl, % \l_@@_info_author_tl, % \l_@@_info_supervisor_tl, % \l_@@_info_department_tl, % \l_@@_info_major_tl, % \l_@@_info_student_id_tl, % \l_@@_info_school_id_tl, % \l_@@_info_clc_tl, % \l_@@_info_jel_tl, % \l_@@_info_instructors_clist, % \l_@@_info_keywords_clist} % å°é¢æ‰€éœ€çš„ä¸€äº›å—æ®µã€‚ % \begin{macrocode} \clist_map_inline:nn { title, date, author, supervisor, department, major, student_id, school_id, clc, jel } { \tl_new:c { l_@@_info_ #1 _tl } } \clist_new:N \l_@@_info_instructors_clist \clist_new:N \l_@@_info_keywords_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_info_title_en_tl, % \l_@@_info_author_en_tl, % \l_@@_info_supervisor_en_tl, % \l_@@_info_department_en_tl, % \l_@@_info_major_en_tl, % \l_@@_info_keywords_en_clist} % å¯¹åº”çš„è‹±æ–‡å—æ®µã€‚ % \begin{macrocode} \clist_map_inline:nn { title, author, supervisor, department, major } { \tl_new:c { l_@@_info_ #1 _en_tl } } \clist_new:N \l_@@_info_keywords_en_clist % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_info_degree_type_tl} % å¦ä½ç±»åž‹ã€‚ % \begin{macrocode} \tl_new:N \l_@@_info_degree_type_tl % \end{macrocode} % \end{variable} % % \changes{v0.9}{2023/02/12}{åˆ é™¤è®ºæ–‡æ ‡é¢˜ä¸çš„ \tn{\textbackslash} 和汉å—é—´çš„ç©ºæ ¼ã€‚} % % \begin{variable}{\l_@@_info_title_sanitized_tl,\l_@@_info_title_en_sanitized_tl} % 处ç†åŽçš„è®ºæ–‡æ ‡é¢˜ã€‚ % \begin{macrocode} \tl_new:N \l_@@_info_title_sanitized_tl \tl_new:N \l_@@_info_title_en_sanitized_tl % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_set_title:nn} % è®¾ç½®è®ºæ–‡æ ‡é¢˜ï¼Œå¹¶åˆ é™¤å…¶ä¸çš„ |\\| 和汉å—é—´çš„ç©ºæ ¼ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_set_title:nn #1#2 { \tl_set:cn { l_@@_info_ #1 _tl } {#2} \tl_set:cn { l_@@_info_ #1 _sanitized_tl } {#2} \tl_replace_all:cnn { l_@@_info_ #1 _sanitized_tl } { \\ } { ~ } \regex_replace_all:nnc { \s+ } { \ } { l_@@_info_ #1 _sanitized_tl } \regex_replace_all:nnc { ([\x{4e00}-\x{9fff}]) \s+ ([\x{4e00}-\x{9fff}]) } { \1 \2 } { l_@@_info_ #1 _sanitized_tl } } % \end{macrocode} % \end{macro} % % 定义 |fdu/info| 键值类。 % \begin{macrocode} \keys_define:nn { fdu / info } { % \end{macrocode} % % \changes{v0.7}{2018/02/01}{新增 \opt{info/degree} 选项。} % % \begin{macro}{info/degree} % å¦ä½ç±»åž‹ã€‚åªå¯¹ç¡•士论文有效。 % \begin{macrocode} degree .choices:nn = { academic, professional } { \tl_set_eq:NN \l_@@_info_degree_type_tl \l_keys_choice_tl }, degree .value_required:n = true, % \end{macrocode} % \end{macro} % % \begin{macro}{info/title,info/title*} % 论文题目。以下带星å·çš„项目å‡è¡¨ç¤ºç›¸åº”çš„è‹±æ–‡å—æ®µã€‚ % \begin{macrocode} title .code:n = { \@@_set_title:nn { title } {#1} }, title* .code:n = { \@@_set_title:nn { title_en } {#1} }, % \end{macrocode} % \end{macro} % % \begin{macro}{info/date} % è®ºæ–‡å®Œæˆæ—¥æœŸã€‚ % \begin{macrocode} date .tl_set:N = \l_@@_info_date_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/author,info/author*} % 作者姓å。 % \begin{macrocode} author .tl_set:N = \l_@@_info_author_tl, author* .tl_set:N = \l_@@_info_author_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/supervisor,info/supervisor*} % 导师姓å。 % \begin{macrocode} supervisor .tl_set:N = \l_@@_info_supervisor_tl, % supervisor* .tl_set:N = \l_@@_info_supervisor_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/instructors} % 指导å°ç»„æˆå‘˜ã€‚ % \begin{macrocode} instructors .clist_set:N = \l_@@_info_instructors_clist, % \end{macrocode} % \end{macro} % % \begin{macro}{info/department,info/department*} % 院系。 % \begin{macrocode} department .tl_set:N = \l_@@_info_department_tl, % department* .tl_set:N = \l_@@_info_department_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/major,info/major*} % 专业。 % \begin{macrocode} major .tl_set:N = \l_@@_info_major_tl, % major* .tl_set:N = \l_@@_info_major_en_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/student-id} % å¦å·ã€‚ % \begin{macrocode} student-id .tl_set:N = \l_@@_info_student_id_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/school-id} % 妿 ¡ä»£ç 。 % \begin{macrocode} school-id .tl_set:N = \l_@@_info_school_id_tl, % \end{macrocode} % \end{macro} % % \begin{macro}{info/keywords,info/keywords*} % 论文关键è¯ã€‚ % \begin{macrocode} keywords .clist_set:N = \l_@@_info_keywords_clist, keywords* .clist_set:N = \l_@@_info_keywords_en_clist, % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/16}{新增 \opt{info/jel} 选项。} % % \begin{macro}{info/clc,info/jel} % ä¸å›¾åˆ†ç±»å·å’Œ JEL 分类å·ã€‚ % \begin{macrocode} clc .tl_set:N = \l_@@_info_clc_tl, jel .tl_set:N = \l_@@_info_jel_tl } % \end{macrocode} % \end{macro} % % \changes{v0.4}{2017/08/10}{新增 \opt{style/logo} 与 % \opt{style/logo-size} 选项。} % % \begin{variable}{\l_@@_cover_logo_tl,\l_@@_cover_logo_size_clist} % \begin{macrocode} \tl_new:N \l_@@_cover_logo_tl \clist_new:N \l_@@_cover_logo_size_clist % \end{macrocode} % \end{variable} % % \begin{macro}{style/logo,style/logo-size} % æ ¡å图片的文件å和尺寸。 % \begin{macrocode} \keys_define:nn { fdu / style } { logo .tl_set:N = \l_@@_cover_logo_tl, logo-size .clist_set:N = \l_@@_cover_logo_size_clist } % \end{macrocode} % \end{macro} % % \subsubsection{密级} % % \changes{v0.3}{2017/07/04}{新增 \opt{info/secret-level} 与 % \opt{info/secret-year} 选项。} % % \begin{variable}{\l_@@_info_secret_level_tl} % ä¿å˜å½“å‰çš„密级。 % \begin{macrocode} \tl_new:N \l_@@_info_secret_level_tl % \end{macrocode} % \end{variable} % % \begin{macrocode} \keys_define:nn { fdu / info } { % \end{macrocode} % % \begin{macro}{info/secret-level} % \changes{v0.6}{2017/11/11}{ä¸å†ä¾èµ– XITS-Math å—体。} % 密级。\opt{none} è¡¨ç¤ºä¸æ¶‰å¯†ï¼Œ\opt{i}ã€\opt{ii}ã€\opt{iii} 分别为 % ç§˜å¯†ã€æœºå¯†ã€ç»å¯†ã€‚ % \begin{macrocode} secret-level .choices:nn = { none, i, ii, iii } { \tl_set_eq:NN \l_@@_info_secret_level_tl \l_keys_choice_tl }, secret-level .value_required:n = true, % \end{macrocode} % \end{macro} % % \begin{macro}{info/secret-year} % ä¿å¯†å¹´é™ã€‚ % \begin{macrocode} secret-year .tl_set:N = \l_@@_info_secret_year_tl } % \end{macrocode} % \end{macro} % % \subsubsection{定义内部函数} % % \begin{macro}{\@@_spread_box:nn,\@@_spread_box:no} % 分散对é½çš„æ°´å¹³ç›’å。 % \begin{arguments} % \item 宽度 % \item 内容 % \end{arguments} % 利用 \cs{tl_map_inline:nn} 在å—符间æ’å…¥ \tn{hfil};紧éšå…¶åŽçš„ \tn{unskip} % 将会去掉最åŽä¸€ä¸ª \tn{hfil}ã€‚è§ \url{https://tex.stackexchange.com/q/169689}。 % \begin{macrocode} \cs_new_protected:Npn \@@_spread_box:nn #1#2 { \mode_leave_vertical: \hbox_to_wd:nn {#1} { \tl_map_inline:nn {#2} { ##1 \hfil } \unskip } } \cs_generate_variant:Nn \@@_spread_box:nn { no } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_center_box:nn,\@@_center_box:Vn} % å±…ä¸å¯¹é½çš„æ°´å¹³ç›’å。 % \begin{macrocode} \cs_new_protected:Npn \@@_center_box:nn #1#2 { \mode_leave_vertical: \hbox_to_wd:nn {#1} { \hfil #2 \hfil } } \cs_generate_variant:Nn \@@_center_box:nn { Vn } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fixed_width_box:nn} % é™å®½ç›’å(å…许æ¢è¡Œï¼‰ã€‚ % \begin{macrocode} \cs_new:Npn \@@_fixed_width_box:nn #1#2 { \parbox {#1} {#2} } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_fixed_width_center_box:nn} % å±…ä¸å¯¹é½çš„é™å®½ç›’å(å…许æ¢è¡Œï¼‰ã€‚ % \begin{macrocode} \cs_new:Npn \@@_fixed_width_center_box:nn #1#2 { \parbox {#1} { \centering #2 } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_get_text_width:Nn,\@@_get_text_width:NV} % èŽ·å–æ–‡æœ¬å®½åº¦ï¼Œå¹¶å˜å…¥ |dim| åž‹å˜é‡ã€‚ % \begin{arguments} % \item |dim| åž‹å˜é‡ % \item 内容 % \end{arguments} % \begin{macrocode} \cs_new:Npn \@@_get_text_width:Nn #1#2 { \hbox_set:Nn \l_@@_tmpa_box {#2} \dim_set:Nn #1 { \box_wd:N \l_@@_tmpa_box } } \cs_generate_variant:Nn \@@_get_text_width:Nn { NV } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_blank_underline:n} % \changes{v0.4}{2017/08/14}{改用 \tn{rule} 绘制下划线,ä¸å†ä¾èµ– % \pkg{ulem} å®åŒ…。} % 下划线å ä½ç¬¦ã€‚|#1|: 长度。 % \begin{macrocode} \cs_new:Npn \@@_blank_underline:n #1 { \rule [ -0.5 ex ] {#1} { 0.4 pt } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_line_spread:N,\@@_line_spread:n} % 设置行è·ã€‚|#1|: 行è·å€æ•° |fp| å˜é‡ã€‚ % \begin{macrocode} \cs_new:Npn \@@_line_spread:N #1 { \linespread { \fp_use:N #1 } \selectfont } \cs_new:Npn \@@_line_spread:n #1 { \linespread {#1} \selectfont } % \end{macrocode} % \end{macro} % % \subsubsection{å°é¢å„部件} % % \changes{v0.5}{2017/09/19}{使用 \pkg{expl3} 以åŠå†…部函数改写 % å°é¢ï¼Œå‡å°‘对 \LaTeXe{} çš„ä¾èµ–。} % % \begin{macro}{\@@_cover_id:,\@@_cover_id_tabular:n,\@@_cover_id_aux:n} % å³ä¸Šè§’的密级ã€å¦æ ¡ä»£ç å’Œå¦å·ã€‚ % \changes{v0.9a}{2023/05/21}{å°é¢å¯†çº§ã€å¦æ ¡ä»£ç å’Œå¦å·æ”¹ç”¨è¡¨æ ¼å®žçŽ°ã€‚} % \begin{macrocode} \cs_new_protected:Npn \@@_cover_id: { \tl_if_eq:NnTF \l_@@_info_secret_level_tl { none } { \@@_cover_id_tabular:n { } } { \@@_cover_id_tabular:n { \@@_cover_secret: \\ } } } \cs_new_protected:Npn \@@_cover_id_tabular:n #1 { \exp_args:Nnx \begin{tabular} { \c_@@_cover_id_align_tl } #1 \@@_cover_id_aux:n { school_id } \\ \@@_cover_id_aux:n { student_id } \end{tabular} } \cs_new:Npn \@@_cover_id_aux:n #1 { \tl_use:c { c_@@_name_ #1 _tl } & \tl_use:c { l_@@_info_ #1 _tl } } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_cover_id_align_tl} % 密级ã€å¦å·æ 坹齿 ¼å¼ï¼šå·¦å³ä¸¤æ å‡å·¦å¯¹é½ï¼Œä¸é—´ä»¥å†’å·åˆ†éš”,并且ä¸åŠ é—´è·ã€‚ % \begin{macrocode} \tl_const:Nn \c_@@_cover_id_align_tl { l @ { \c_@@_fwid_colon_tl } l @ { } } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_cover_secret:} % å¯†çº§ï¼Œä½¿ç”¨æ— è¡¬çº¿å—体。 % \begin{macrocode} \cs_new:Npn \@@_cover_secret: { \multicolumn { 2 } { l } { \sffamily \c_@@_name_secret_level_tl \c_@@_fwid_colon_tl \prop_item:No \c_@@_secret_prop { \l_@@_info_secret_level_tl } \c_@@_name_secret_star_tl \l_@@_info_secret_year_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_logo:} % æ’å…¥æ ¡åå›¾ç‰‡ã€‚æ ¹æ®å‚æ•° \opt{width} å’Œ \opt{height} 是å¦ä¸ºç©ºä¾æ¬¡ % 判æ–。\cs{l_@@_cover_logo_size_clist} ä¸è¶…è¿‡ä¸¤ä¸ªçš„å‚æ•°å°†è¢«å¿½ç•¥ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_logo: { \clist_pop:NN \l_@@_cover_logo_size_clist \l_@@_tmpa_tl \clist_pop:NNTF \l_@@_cover_logo_size_clist \l_@@_tmpb_tl { \tl_if_empty:NTF \l_@@_tmpa_tl { \includegraphics [ height = \l_@@_tmpb_tl ] } { \includegraphics [ width = \l_@@_tmpa_tl, height = \l_@@_tmpb_tl ] } } { \includegraphics [ width = \l_@@_tmpa_tl ] } { \l_@@_cover_logo_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_type:} % 论文类型。 % \begin{macrocode} \cs_new_protected:Npn \@@_cover_type: { \prop_get:NVN \c_@@_thesis_type_prop \g_@@_thesis_type_tl \l_@@_tmpa_tl \@@_spread_box:no { 0.45 \textwidth } { \l_@@_tmpa_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_degree:} % \changes{v0.7c}{2019/03/12}{å…许åšå£«å¦ä½è®ºæ–‡ä½¿ç”¨å¦ä½ç±»åž‹ã€‚} % å¦ä½ç±»åž‹ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_degree: { \tl_if_eq:NnF \g_@@_thesis_type_tl { bachelor } { \c_@@_fwid_left_paren_tl \prop_item:No \c_@@_degree_type_prop { \l_@@_info_degree_type_tl } \c_@@_fwid_right_paren_tl } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_info:} % \changes{v0.8}{2021/09/21}{调整专业å¦ä½çš„å°é¢ä¿¡æ¯æ 。} % \changes{v0.9}{2023/02/05}{å°é¢ä¿¡æ¯æ æ”¹ç”¨è¡¨æ ¼å®žçŽ°ã€‚} % ä¿¡æ¯æ 。 % \begin{macrocode} \cs_new_protected:Npn \@@_cover_info: { \group_begin: \zihao { 4 } % \end{macrocode} % 专业å¦ä½ä¸Žå¦æœ¯å¦ä½å¯¹åº”çš„å·¦ä¾§å—æ®µæœ‰æ‰€ä¸åŒï¼Œè¿™é‡Œç»Ÿä¸€å˜å…¥ \cs{c_@@_name_major_tl}。 % \begin{macrocode} \tl_if_eq:NnT \l_@@_info_degree_type_tl { professional } { \tl_set_eq:NN \c_@@_name_major_tl \c_@@_name_major_professional_tl } % \end{macrocode} % å°†ä¿¡æ¯æ çš„æ¯ä¸€è¡Œå˜å…¥ |clist| å˜é‡ä¸ã€‚ % \begin{macrocode} \clist_clear:N \l_@@_tmpa_clist \clist_map_inline:nn { department, major, author, supervisor, date } { \clist_gput_right:Nn \l_@@_tmpa_clist { \exp_args:Nx \@@_cover_info_left:n { \tl_use:c { c_@@_name_ ##1 _tl } } & \tl_use:c { l_@@_info_ ##1 _tl } } } % \end{macrocode} % 通过 \env{tabular} 环境输出。 % \changes{v0.9a}{2023/05/07}{å±•å¼€åˆ—æ ¼å¼å‚数以修å¤ä¸Ž \pkg{array} å®åŒ…的兼容性问题。} % \begin{macrocode} \exp_args:Nnx \begin{tabular} { \c_@@_cover_info_align_tl } \clist_use:Nn \l_@@_tmpa_clist { \\ [ 1 ex ] } \end{tabular} \group_end: } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_cover_info_align_tl} % ä¿¡æ¯æ 坹齿 ¼å¼ï¼šå·¦å³ä¸¤æ å‡å±…ä¸ï¼Œä¸é—´ä»¥å†’å·åˆ†éš”。 % \begin{macrocode} \tl_const:Nn \c_@@_cover_info_align_tl { c @ { \c_@@_fwid_colon_tl } c } % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_cover_info_left:n} % ä¿¡æ¯æ 左侧嗿®µã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_cover_info_left:n #1 { \tl_if_eq:NnTF \l_@@_info_degree_type_tl { professional } { \@@_spread_box:nn { 9 em } {#1} } { \@@_spread_box:nn { 6 em } {#1} } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_cover_signature:N} % ç¾å行。 % \begin{macrocode} \cs_new_protected:Npn \@@_cover_signature:N #1 { \clist_map_inline:Nn #1 { ##1 \c_@@_fwid_colon_tl \@@_blank_underline:n { 6 em } \@@_quad: } } % \end{macrocode} % \end{macro} % % \subsubsection{å°é¢æ¨¡æ¿} % % \changes{v0.7}{2018/02/27}{使用 \pkg{xtemplate} 釿ž„å°é¢å¸ƒå±€ã€‚} % % 声明å°é¢å¯¹è±¡ã€‚ä¸éœ€è¦å¸¦å‚数。 % \begin{macrocode} %<@@=fdu_cover> \DeclareObjectType { fdu / cover } { \c_zero_int } % \end{macrocode} % % \begin{macro}{\DeclareCoverTemplate,\fdu_cover_declare_template:nn} % 声明å°é¢æ¨¡æ¿ã€‚ % \begin{arguments} % \item 模æ¿åç§° % \item å°é¢éƒ¨ä»¶åˆ—表,以逗å·åˆ†éš” % \end{arguments} % \begin{macrocode} \NewDocumentCommand \DeclareCoverTemplate { m m } { \fdu_cover_declare_template:nn {#1} {#2} } \cs_new_protected:Npn \fdu_cover_declare_template:nn #1#2 { \tl_set:Nn \l_@@_template_tl {#1} % \end{macrocode} % æž„å»ºæ¨¡æ¿æŽ¥å£ã€‚ % \begin{macrocode} \@@_declare_template_interface:nx {#1} { format : tokenlist, top-skip : skip, bottom-skip : skip, \clist_map_function:nN {#2} \@@_key_type:n } % \end{macrocode} % 声明所用å˜é‡ã€‚ % \begin{macrocode} \tl_new:c { l_@@ / #1 / format_tl } \skip_new:c { l_@@ / #1 / top_skip } \skip_new:c { l_@@ / #1 / bottom_skip } \clist_map_inline:nn {#2} { \tl_new:c { l_@@ / #1 / ##1 / content_tl } \tl_new:c { l_@@ / #1 / ##1 / format_tl } \skip_new:c { l_@@ / #1 / ##1 / bottom_skip } } % \end{macrocode} % 声明模æ¿ä»£ç 。^^A 以下åå—空间为 `fdu_cover' è€Œéž `fdu' % \begin{macrocode} \@@_declare_template_code:nxn {#1} { format = \exp_not:c { l_@@ / #1 / format_tl }, top-skip = \use:c { l_@@ / #1 / top_skip }, bottom-skip = \use:c { l_@@ / #1 / bottom_skip }, \clist_map_function:nN {#2} \@@_key_binding:n } { \AssignTemplateKeys \tl_use:c { l_@@ / #1 / format_tl } \__fdu_vspace:c { l_@@ / #1 / top_skip } \clist_map_inline:nn {#2} { \use:c { @@ / #1 / ####1 / align:n } { \tl_use:c { l_@@ / #1 / ####1 / format_tl } \tl_use:c { l_@@ / #1 / ####1 / content_tl } \par } \__fdu_vspace:c { l_@@ / #1 / ####1 / bottom_skip } } \__fdu_vspace:c { l_@@ / #1 / bottom_skip } } } % \end{macrocode} % \end{macro} % % \begin{variable}{\l_@@_template_tl} % ä¿å˜æ¨¡æ¿å称。 % \begin{macrocode} \tl_new:N \l_@@_template_tl % \end{macrocode} % \end{variable} % % \begin{macro}{\@@_declare_template_interface:nn, % \@@_declare_template_code:nnn, % \@@_declare_template_interface:nx, % \@@_declare_template_code:nxn} % 为了展开的方便,这里需è¦å°è£… \pkg{xtemplate} 的一些函数。 % \begin{macrocode} \cs_new_protected:Npn \@@_declare_template_interface:nn #1#2 { \DeclareTemplateInterface { fdu / cover } {#1} { \c_zero_int } {#2} } \cs_new_protected:Npn \@@_declare_template_code:nnn #1#2#3 { \DeclareTemplateCode { fdu / cover } {#1} { \c_zero_int } {#2} {#3} } \cs_generate_variant:Nn \@@_declare_template_interface:nn { nx } \cs_generate_variant:Nn \@@_declare_template_code:nnn { nxn } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_key_type:n} % \begin{macrocode} \cs_new:Npn \@@_key_type:n #1 { #1 / content : tokenlist, #1 / format : tokenlist, #1 / bottom-skip : skip, #1 / align : choice { left, right, center, normal } = normal, } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_key_binding:n} % \begin{macrocode} \cs_new:Npn \@@_key_binding:n #1 { #1 / content = \exp_not:c { l_@@ / \l_@@_template_tl / #1 / content_tl }, #1 / format = \exp_not:c { l_@@ / \l_@@_template_tl / #1 / format_tl }, #1 / bottom-skip = \exp_not:c { l_@@ / \l_@@_template_tl / #1 / bottom_skip }, #1 / align = { left = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: \flushleft ##1 \endflushleft \group_end: } }, right = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: \flushright ##1 \endflushright \group_end: } }, center = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: \center ##1 \endcenter \group_end: } }, normal = \exp_not:N \cs_set_protected:cpn { @@ / \l_@@_template_tl / #1 / align:n } \exp_not:n {##1} { \exp_not:n { \group_begin: ##1 \group_end: } } }, } %<@@=fdu> % \end{macrocode} % \end{macro} % % \subsubsection{绘制å°é¢} % % \changes{v0.9}{2023/02/18}{为å°é¢æ·»åŠ PDF 页ç 。} % % \begin{macro}{\makecoveri} % 论文å°é¢ï¼ˆå°ä¸€ï¼‰ã€‚ % \begin{macrocode} \NewDocumentCommand \makecoveri { } { \thispagestyle { empty } \tl_set:Nn \thepage { A } \UseInstance { fdu / cover } { cover-i-default } } % \end{macrocode} % \end{macro} % % \begin{macro}{\makecoverii} % \changes{v0.8}{2021/09/21}{\opt{info/instructors} 为空时ä¸å†æ˜¾ç¤ºæŒ‡å¯¼å°ç»„ % æˆå‘˜åå•。} % 指导å°ç»„æˆå‘˜åå•(å°äºŒï¼‰ã€‚ % \begin{macrocode} \NewDocumentCommand \makecoverii { } { \thispagestyle { empty } \tl_set:Nn \thepage { B } \clist_if_empty:NTF \l_@@_info_instructors_clist { \hbox:n { } } { \UseInstance { fdu / cover } { cover-ii-default } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\makecoveriii} % 声明页(å°ä¸‰ï¼‰ã€‚ % \begin{macrocode} \NewDocumentCommand \makecoveriii { } { \cleardoublepage \thispagestyle { empty } \tl_set:Nn \thepage { C } \tl_if_empty:NTF \l_@@_declaration_page_tl { \UseInstance { fdu / cover } { cover-iii-default } } { \includepdf { \l_@@_declaration_page_tl } } } % \end{macrocode} % \end{macro} % % 声明å„å°é¢æ¨¡æ¿ç»„æˆéƒ¨åˆ†ã€‚ % \begin{macrocode} \DeclareCoverTemplate { cover-i } { id, logo, type, degree, title, title-en, info } \DeclareCoverTemplate { cover-ii } { title, name-list } \DeclareCoverTemplate { cover-iii } { originality-decl-name, originality-decl-text, originality-decl-sig, authorization-decl-name, authorization-decl-text, authorization-decl-sig } % \end{macrocode} % % \changes{v0.7d}{2019/03/29}{å°é¢ä¸æ–‡æ ‡é¢˜æ”¹ä¸ºåŠ ç²—å®‹ä½“ï¼ˆå¯èƒ½ä½¿ç”¨ä¼ªç²—)。} % % 定义å°é¢çš„具体é…ç½®å‚æ•°ã€‚ % \begin{macrocode} \DeclareInstance { fdu / cover } { cover-i-default } { cover-i } { %<class-en> format = \@@_line_spread:N \c_@@_line_spread_fp, bottom-skip = 0 pt plus 1.5 fill, id / content = \@@_cover_id:, logo / content = \@@_cover_logo:, type / content = \@@_cover_type:, degree / content = \@@_cover_degree:, title / content = \@@_fixed_width_center_box:nn { 0.9 \textwidth } { \l_@@_info_title_tl }, title-en / content = \@@_fixed_width_center_box:nn { 0.9 \textwidth } { \l_@@_info_title_en_tl }, info / content = \@@_cover_info:, id / format = \zihao { -5 }, type / format = \zihao { 2 }, degree / format = \zihao { 4 }, title / format = \zihao { -2 } \bfseries, title-en / format = \@@_line_spread:n { 1.2 } \zihao { 4 } \bfseries, id / bottom-skip = 0 pt plus 1.6 fill, logo / bottom-skip = 0 pt plus 0.3 fill, type / bottom-skip = -18 pt, degree / bottom-skip = 0 pt plus 0.8 fill, title-en / bottom-skip = 0 pt plus 2.5 fill, id / align = right, logo / align = center, type / align = center, degree / align = center, title / align = center, title-en / align = center, info / align = center, } \DeclareInstance { fdu / cover } { cover-ii-default } { cover-ii } { %<class-en> format = \@@_line_spread:N \c_@@_line_spread_fp, title / content = \@@_spread_box:no { 7 em } { \c_@@_name_instructors_tl }, name-list / content = \clist_use:Nn \l_@@_info_instructors_clist { \par }, title / format = \zihao { 2 } \sffamily, name-list / format = \large, title / align = center, name-list / align = center, } \DeclareInstance { fdu / cover } { cover-iii-default } { cover-iii } { format = %<class> \@@_line_spread:n { 1.8 }, %<class-en> \@@_line_spread:n { 1.8 } \dim_set:Nn \parindent { 2 \ccwd }, top-skip = 0 pt plus 0.2 fill, bottom-skip = 0 pt plus 2.5 fill, originality-decl-name / content = \c_@@_name_orig_decl_tl, originality-decl-text / content = \c_@@_orig_decl_text_tl, originality-decl-sig / content = \@@_cover_signature:N \c_@@_orig_decl_sign_clist, authorization-decl-name / content = \c_@@_name_auth_decl_tl, authorization-decl-text / content = \c_@@_auth_decl_text_tl, authorization-decl-sig / content = \@@_cover_signature:N \c_@@_auth_decl_sign_clist, originality-decl-name / format = \@@_line_spread:n { 1.2 } \zihao { -2 } \bfseries, authorization-decl-name / format = \@@_line_spread:n { 1.2 } \zihao { -2 } \bfseries, originality-decl-name / bottom-skip = 0.4 cm, originality-decl-text / bottom-skip = 0.4 cm, originality-decl-sig / bottom-skip = 0 pt plus 2.5 fill, authorization-decl-name / bottom-skip = 0.4 cm, authorization-decl-text / bottom-skip = 0.4 cm, originality-decl-name / align = center, originality-decl-sig / align = right, authorization-decl-name / align = center, authorization-decl-sig / align = right, } % \end{macrocode} % % \begin{variable}{\l_@@_auto_make_cover_bool,\l_@@_declaration_page_tl} % \begin{macrocode} \bool_new:N \l_@@_auto_make_cover_bool \tl_new:N \l_@@_declaration_page_tl % \end{macrocode} % \end{variable} % % \begin{macro}{style/auto-make-cover} % 是å¦è‡ªåŠ¨ç”Ÿæˆå°é¢ã€‚ % \begin{macrocode} \keys_define:nn { fdu / style } { auto-make-cover .bool_set:N = \l_@@_auto_make_cover_bool, auto-make-cover .default:n = true, % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/09/21}{新增 \opt{style/declaration-page} 选项。} % % \begin{macro}{style/declaration-page} % 设置扫æç‰ˆçš„声明页 PDF 文档。 % \begin{macrocode} declaration-page .code:n = { \tl_set_eq:NN \l_@@_declaration_page_tl \l_keys_value_tl \RequirePackage { pdfpages } }, } % \end{macrocode} % \end{macro} % % 在 \env{document} 开始ä½ç½®æ·»åŠ å°é¢ä»¥åŠæŒ‡å¯¼å°ç»„æˆå‘˜åå•。 % \begin{macrocode} \ctex_after_end_preamble:n { \bool_if:NT \l_@@_auto_make_cover_bool { \begin{titlepage} \makecoveri \newpage \makecoverii \end{titlepage} } } % \end{macrocode} % % 在 \env{document} 结æŸä½ç½®æ·»åŠ å£°æ˜Žé¡µã€‚ % \begin{macrocode} \@@_gadd_ltxhook:nn { enddocument } { \bool_if:NT \l_@@_auto_make_cover_bool { \makecoveriii } } % \end{macrocode} % % \subsection{目录} % % è®¾ç½®ç›®å½•æ ‡é¢˜ã€‚ % \begin{macrocode} \keys_set:nn { ctex } { %<class> contentsname = \c_@@_name_toc_tl, %<class> listfigurename = \c_@@_name_lof_tl, %<class> listtablename = \c_@@_name_lot_tl, % \end{macrocode} % % 设置目录ä¸ç« èŠ‚æ ‡é¢˜çš„æ ·å¼ã€‚ % \begin{macrocode} chapter / tocline = { %<class> \normalfont \sffamily %<class-en> \bfseries \CTEXnumberline {#1} #2 }, section / tocline = { %<class-en> \bfseries \CTEXnumberline {#1} #2 }, subsection / tocline = { %<class> \fdu@kai \CTEXnumberline {#1} #2 } } % \end{macrocode} % % \changes{v0.7e}{2019/05/12}{å¢žåŠ å¯¹æ’图ã€è¡¨æ ¼ç›®å½•的处ç†ã€‚} % % \begin{macro}{\tableofcontents,\listoffigures,\listoftables} % 修改 \cs{tableofcontents}ã€\cs{listoffigures} å’Œ \cs{listoftables} 的定义, % 使得页眉æ£ç¡®æ˜¾ç¤ºï¼Œå¹¶å‡ºçŽ°åœ¨ç›®å½•åŠ PDF 书ç¾ä¸ã€‚æ¥è‡ªäºŽ \LaTeXe{} æ ‡å‡†æ–‡æ¡£ç±» % \file{book.cls}^^A % \footnote{原代ç ä¸åªæœ‰ \cs{tableofcontents} çš„ \cs{@mkboth} 出现在 % \cs{chapter*} å†…éƒ¨ï¼Œè¿™æ˜¯å‡ºäºŽå…¼å®¹æ€§çš„è€ƒè™‘è€Œéž typo。}。 % \begin{macrocode} \@@_patch_cmd:Nnn \tableofcontents { \chapter*{\contentsname \@mkboth{\MakeUppercase\contentsname} {\MakeUppercase\contentsname}} } { \@@_chapter_no_toc:V \contentsname } \@@_patch_cmd:Nnn \listoffigures { \chapter*{\listfigurename} \@mkboth{\MakeUppercase\listfigurename} {\MakeUppercase\listfigurename} } { \@@_chapter:V \listfigurename } \@@_patch_cmd:Nnn \listoftables { \chapter*{\listtablename} \@mkboth{\MakeUppercase\listtablename} {\MakeUppercase\listtablename} } { \@@_chapter:V \listtablename } % \end{macrocode} % \end{macro} % % \begin{macro}[int]{\@starttoc} % 修改 \tn{@starttoc} 的定义以调整英文模æ¿ä¸çš„目录行è·ã€‚ % \begin{macrocode} %<*class-en> \@@_patch_cmd:Nnn \@starttoc { \begingroup } { \begingroup \@@_line_spread:N \c_@@_line_spread_fp } %</class-en> % \end{macrocode} % \end{macro} % % \subsection{摘è¦} % % \begin{environment}{abstract} % \begin{environment}{abstract*} % \changes{v0.7}{2018/03/05}{æ•´ç†ä»£ç 。} % 摘è¦çŽ¯å¢ƒã€‚åœ¨ä¸æ–‡æ¨¡æ¿å®šä¹‰äº†ä¸è‹±æ–‡åŒè¯æ‘˜è¦ï¼Œä½†åœ¨è‹±æ–‡æ¨¡æ¿ä¸åˆ™æ²¡æœ‰å®šä¹‰ä¸æ–‡æ‘˜è¦ã€‚ % \begin{macrocode} \NewDocumentEnvironment { abstract } { } %<class> { \@@_abstract_begin: } { \@@_abstract_end: } %<class-en> { \@@_abstract_en_begin: } { \@@_abstract_en_end: } %<*class> \NewDocumentEnvironment { abstract* } { } { \@@_abstract_en_begin: } { \@@_abstract_en_end: } %</class> % \end{macrocode} % \end{environment} % \end{environment} % % \begin{macro}{\@@_abstract_begin:,\@@_abstract_en_begin:} % 摘è¦é¡µæ ‡é¢˜ã€‚ % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_abstract_begin: { \@@_chapter:V \c_@@_name_abstract_tl } %</class> \cs_new_protected:Npn \@@_abstract_en_begin: { \@@_chapter:V \c_@@_name_abstract_en_tl } % \end{macrocode} % \end{macro} % % \changes{v0.7d}{2019/03/28}{优化关键è¯åˆ—表的显示。} % \changes{v0.8}{2021/12/22}{没有指定 CLC/JEL åˆ†ç±»å·æ—¶ä¸å†æ˜¾ç¤ºã€‚} % % \begin{macro}{\@@_abstract_end:} % æ‘˜è¦æ£æ–‡å®ŒæˆåŽï¼Œè¾“出关键è¯åˆ—表和 CLC/JEL 分类å·ã€‚ % \begin{macrocode} %<*class> \cs_new_protected:Npn \@@_abstract_end: { \@@_keywords:nNn { \sffamily \c_@@_name_keywords_tl \c_@@_fwid_colon_tl } \l_@@_info_keywords_clist { \c_@@_fwid_semicolon_tl } \tl_if_empty:NF \l_@@_info_clc_tl { \@@_clc_jel:nn { \sffamily \c_@@_name_clc_tl \c_@@_fwid_colon_tl } { \l_@@_info_clc_tl } } } %</class> % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_abstract_en_end:} % 英文摘è¦ä¸ï¼Œå¦‚果指定了 JEL 分类å·ï¼Œåˆ™ CLC 分类å·ä¸å†æ˜¾ç¤ºã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_abstract_en_end: { \@@_keywords:nNn { \bfseries \c_@@_name_keywords_en_tl \@@_quad: } \l_@@_info_keywords_en_clist { ; ~ } \tl_if_empty:NTF \l_@@_info_jel_tl { \tl_if_empty:NF \l_@@_info_clc_tl { \@@_clc_jel:nn { \bfseries \c_@@_name_clc_en_tl \@@_quad: } { \l_@@_info_clc_tl } } } { \@@_clc_jel:nn { \bfseries \c_@@_name_jel_en_tl \@@_quad: } { \l_@@_info_jel_tl } } } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_keywords:nNn,\@@_keywords_prevdepth:,\@@_clc_jel:nn} % 关键è¯åˆ—表å‰è¦ç©ºä¸€è¡Œï¼Œä½¿ç”¨æ‚¬æŒ‚缩进;分类å·ä¸ç¼©è¿›ã€‚\tn{parbox} 之åŽçš„é—´è· % 需è¦è°ƒæ•´ï¼Œè§ \url{https://tex.stackexchange.com/a/34982}。 % \begin{macrocode} \cs_new_protected:Npn \@@_keywords:nNn #1#2#3 { \par \mode_leave_vertical: \par \noindent \@@_get_text_width:Nn \l_@@_tmpa_dim {#1} \group_begin: #1 \group_end: \parbox [t] { \dim_eval:n { \textwidth - \l_@@_tmpa_dim } } { \clist_use:Nn #2 {#3} \par \cs_gset:Npx \@@_keywords_prevdepth: { \dim_use:N \tex_prevdepth:D } } } \cs_new_protected:Npn \@@_clc_jel:nn #1#2 { \par \tex_prevdepth:D \@@_keywords_prevdepth: \noindent \group_begin: #1 \group_end: #2 } % \end{macrocode} % \end{macro} % % \subsection{符å·è¡¨} % % \begin{environment}{notation} % \changes{v0.7}{2018/03/05}{æ•´ç†ä»£ç 。} % 符å·è¡¨çŽ¯å¢ƒï¼Œåˆ©ç”¨ \env{longtable} å°è£…。å¯é€‰å‚æ•°ä¸ºè¡¨æ ¼åˆ—æ ¼å¼è¯´æ˜Žç¬¦ã€‚ % \begin{macrocode} \NewDocumentEnvironment { notation } { O { l p { 7.5 cm } } } { \@@_notation_begin: \group_begin: \@@_notation_long_table_setup: \longtable {#1} } { \endlongtable \group_end: } % \end{macrocode} % \end{environment} % % \begin{macro}{\@@_notation_begin:} % 符å·è¡¨é¡µæ ‡é¢˜ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_notation_begin: { %<class> \@@_chapter:V \c_@@_name_notation_tl %<class-en> \@@_chapter:V \c_@@_name_notation_en_tl } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_notation_long_table_setup:} % 调整 \cs{LTpre} å’Œ \cs{LTpost}ï¼Œä»¥åˆ åŽ» \env{longtable} å‰åŽçš„空白。 % 英文模æ¿ä¸è¿˜éœ€è¦è°ƒæ•´è¡¨æ ¼çš„行è·ã€‚æ³¨æ„ \tn{arraystretch} åªæ˜¯ä¸€ä¸ªç®€å• % å®ï¼Œä¸èƒ½ä½¿ç”¨ \cs{fp_set:Nn}。 % \begin{macrocode} \cs_new_protected:Npn \@@_notation_long_table_setup: { %<class-en> \tl_set:Nn \arraystretch { 1.3 } \dim_set_eq:NN \LTpre \c_zero_dim \dim_set_eq:NN \LTpost \c_zero_dim } % \end{macrocode} % \end{macro} % % \subsection{致谢} % % \changes{v0.9}{2023/02/06}{新增致谢环境。} % % \begin{environment}{acknowledgements} % 致谢环境。 % \begin{macrocode} \NewDocumentEnvironment { acknowledgements } { } { \@@_acknowledgements_begin: } { } % \end{macrocode} % \end{environment} % % \begin{macro}{\@@_acknowledgements_begin:} % è‡´è°¢é¡µæ ‡é¢˜ã€‚ % \begin{macrocode} \cs_new_protected:Npn \@@_acknowledgements_begin: { %<class> \@@_chapter:V \c_@@_name_acknowledgements_tl %<class-en> \@@_chapter:V \c_@@_name_acknowledgements_en_tl } % \end{macrocode} % \end{macro} % % \subsection{å‚考文献著录与引用} % % \changes{v0.6}{2017/10/27}{æ”¯æŒ \BibTeX{},以实现å‚考文献的著录与引用。} % \changes{v0.7}{2018/01/25}{æ”¯æŒ \biber{} 与 \pkg{biblatex}。} % \changes{v0.9a}{2023/05/11}{å…è®¸åŒæ—¶ä¸ä½¿ç”¨ \BibTeX{} 与 \pkg{biblatex}。} % % \begin{variable}{\l_@@_bib_backend_tl} % ä¿å˜å‚考文献处ç†ç¨‹åºï¼ˆåŽç«¯ï¼‰ï¼Œé»˜è®¤ä¸ºç©ºï¼Œå³åŒæ—¶ä¸ä½¿ç”¨ \BibTeX{} 与 \pkg{biblatex}。 % \pkg{biblatex}/\biber{}。 % \begin{macrocode} \tl_new:N \l_@@_bib_backend_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_bib_style_tl,\l_@@_bib_gb_style_tl,\l_@@_cite_style_tl} % ä¿å˜å‚考文献åŠå¼•ç”¨æ ·å¼ã€‚ % \begin{macrocode} \tl_new:N \l_@@_bib_style_tl \tl_new:N \l_@@_bib_gb_style_tl \tl_new:N \l_@@_cite_style_tl % \end{macrocode} % \end{variable} % % \begin{variable}{\l_@@_bib_resource_clist} % \changes{v0.8}{2021/03/07}{改用 \texttt{clist} åž‹å˜é‡ï¼Œå…许在 \pkg{biblatex} % ä¸‹ä½¿ç”¨å¤šä¸ªæ•°æ®æºã€‚} % ä¿å˜å‚考文献数æ®åº“列表。 % \begin{macrocode} \clist_new:N \l_@@_bib_resource_clist % \end{macrocode} % \end{variable} % % \changes{v0.6}{2017/10/28}{新增 \opt{style/bib-style} 选项。} % \changes{v0.7}{2018/01/25}{新增 \opt{style/bib-backend}〠% \opt{style/cite-style} å’Œ \opt{style/bib-resource} 选项。} % \changes{v0.8}{2021/09/20}{直接调用 \pkg{gbt7714} å®åŒ…。} % % \begin{macrocode} \keys_define:nn { fdu / style } { % \end{macrocode} % \begin{macro}{style/bib-backend} % å‚考文献åŽç«¯ã€‚ % \begin{macrocode} bib-backend .choice:, bib-backend .value_required:n = true, bib-backend / bibtex .code:n = { \tl_set:Nn \l_@@_bib_backend_tl { bibtex } }, % \end{macrocode} % \changes{v0.8}{2022/01/08}{补充定义 \tn{addbibresource} 命令以兼容 \pkg{biblatex} 的用法。} % 由于 \pkg{biblatex} åœ¨å¯¼è¨€åŒºåŽæ‰è½½å…¥ï¼Œéœ€è¦å•ç‹¬å®šä¹‰æ·»åŠ å‚è€ƒæ–‡çŒ®æ•°æ®æºçš„命令以实现兼容。 % 该命令需è¦åœ¨è½½å…¥å®åŒ…å‰å–消定义。 % \begin{macrocode} bib-backend / biblatex .code:n = { \tl_set:Nn \l_@@_bib_backend_tl { biblatex } \NewDocumentCommand \addbibresource { m } { \clist_gput_right:Nn \l_@@_bib_resource_clist {#1} } }, % \end{macrocode} % \end{macro} % \begin{macro}{style/bib-style} % å‚è€ƒæ–‡çŒ®æ ·å¼ã€‚ % \begin{macrocode} bib-style .choice:, bib-style .value_required:n = true, bib-style / numerical .code:n = { \tl_set:Nn \l_@@_bib_gb_style_tl { numerical } \tl_clear:N \l_@@_bib_style_tl }, bib-style / author-year .code:n = { \tl_set:Nn \l_@@_bib_gb_style_tl { author-year } \tl_clear:N \l_@@_bib_style_tl }, bib-style / unknown .code:n = { \tl_set_eq:NN \l_@@_bib_style_tl \l_keys_value_tl \tl_clear:N \l_@@_bib_gb_style_tl }, % \end{macrocode} % \end{macro} % \begin{macro}{style/cite-style} % \changes{v0.8}{2021/09/17}{å…许在 \BibTeX{} 下使用。} % å¼•ç”¨æ ·å¼ã€‚ % \begin{macrocode} cite-style .tl_set:N = \l_@@_cite_style_tl, % \end{macrocode} % \end{macro} % \begin{macro}{style/bib-resource} % å‚è€ƒæ–‡çŒ®æ•°æ®æºã€‚ % \begin{macrocode} bib-resource .clist_set:N = \l_@@_bib_resource_clist } % \end{macrocode} % \end{macro} % % \changes{v0.8}{2021/03/28}{æ£ç¡®ä½¿ç”¨å¯¼è¨€åŒºæœ«å°¾é’©å。} % % 为了ä¿è¯å¯¼è¨€åŒºä¸çš„设置能起作用,\pkg{gbt774}ã€\pkg{natbib} 或 \pkg{biblatex} % å®åŒ…å‡éœ€è¦åœ¨å¯¼è¨€åŒºæœ«å°¾è½½å…¥ï¼ˆä»åœ¨ \pkg{hyperref} 之å‰ï¼‰ï¼Œå¹¶åšç›¸å…³è®¾ç½®ã€‚ % \begin{macrocode} \ctex_at_end_preamble:n { \tl_if_eq:NnT \l_@@_bib_backend_tl { bibtex } { \tl_if_empty:NTF \l_@@_bib_style_tl { \RequirePackage [ sort & compress ] { gbt7714 } \exp_args:No \bibliographystyle { gbt7714- \l_@@_bib_gb_style_tl } } { \RequirePackage [ sort & compress ] { natbib } \exp_args:No \bibliographystyle { \l_@@_bib_style_tl } } \@@_bibtex_setup: } } % \end{macrocode} % \pkg{biblatex} 会写入 |begindocument/before| é’©åï¼Œå› æ¤éœ€åœ¨å…¶ä¹‹å‰é€šè¿‡ % \texttt{env/doc\-u\-ment/begin} é’©å载入 \pkg{biblatex} å®åŒ…。注æ„这个 % é’©å仅适用于 |\begin{document}| 的写法,对于 |\document| å‘½ä»¤æœ¬èº«æ— æ•ˆã€‚ % \begin{macrocode} \@@_gadd_ltxhook:nn { env/document/begin } { \tl_if_eq:NnT \l_@@_bib_backend_tl { biblatex } { \@@_biblatex_pre_setup: \RequirePackage { biblatex } \@@_biblatex_post_setup: } } % \end{macrocode} % % \changes{v0.7}{2018/01/25}{统一使用 \cs{printbibliography} 命令 % 生æˆå‚考文献列表。} % \changes{v0.7d}{2019/03/23}{使å‚è€ƒæ–‡çŒ®åœ¨ç›®å½•ä¸æ£å¸¸æ˜¾ç¤ºã€‚} % \changes{v0.7e}{2020/08/30}{åŒæ¥ \pkg{gbt7714} v2.0。} % \changes{v0.8}{2021/09/20}{新增ä¸å¸¦ä¸Šæ ‡çš„æ–‡å†…引用命令。} % % \begin{macro}{\@@_bibtex_setup:,\parencite,\printbibliography} % \BibTeX{} 相关设置。 % \begin{macrocode} \cs_new_protected:Npn \@@_bibtex_setup: { % \end{macrocode} % 行内引用命令。这里定义比较ç¹ç,是为了与 \tn{cite} ç‰å‘½ä»¤ä¿æŒä¸€è‡´ã€‚ % \begin{macrocode} \tl_if_eq:VnTF \l_@@_bib_gb_style_tl { numerical } { \exp_args:NNx \DeclareRobustCommand \parencite { \exp_args:No \exp_not:o { \cs:w cite ~ \cs_end: } } \exp_args:Nc \ctex_patch_cmd:Nnn { parencite ~ } { \begingroup } { \begingroup \bibstyle@numbers } } { \cs_set_eq:NN \parencite \cite } % \end{macrocode} % å¼•ç”¨æ ·å¼ã€‚ % \begin{macrocode} \tl_if_empty:NF \l_@@_cite_style_tl { \exp_args:NV \citestyle \l_@@_cite_style_tl } % \end{macrocode} % 使用 \tn{textendash} “\textendashâ€ä½œä¸ºæ•°å—间的连接å·ã€‚ % \begin{macrocode} \ctex_patch_cmd:Nnn \NAT@citexnum { - \NAT@penalty } { \textendash \NAT@penalty } % \end{macrocode} % 修改å‚è€ƒæ–‡çŒ®æ ‡é¢˜ã€‚ % \begin{macrocode} \cs_set:Npn \bibsection { \@@_chapter:V \bibname } % \end{macrocode} % \BibTeX{} 下接å£ä¸Ž \pkg{biblatex} ä¿æŒç»Ÿä¸€ã€‚ % \begin{macrocode} \NewDocumentCommand \printbibliography { o } { \exp_args:NV \bibliography \l_@@_bib_resource_clist \IfValueT {##1} { \@@_warning:nn { invalid-option-in-bibtex } {##1} } } } \@@_msg_new:nn { invalid-option-in-bibtex } { Option(s)~ "#1"~ are~ invalid~ in~ BibTeX. } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_biblatex_pre_setup:,\@@_biblatex_post_setup:} % \pkg{biblatex} 相关设置。 % \begin{macrocode} \cs_new_protected:Npn \@@_biblatex_pre_setup: { \cs_undefine:N \addbibresource \clist_new:N \l_@@_biblatex_options_clist \clist_put_right:Nn \l_@@_biblatex_options_clist { hyperref = manual } % \end{macrocode} % å‚è€ƒæ–‡çŒ®æ ·å¼ã€‚ % \begin{macrocode} \clist_put_right:Nx \l_@@_biblatex_options_clist { style = \tl_if_empty:NTF \l_@@_bib_style_tl { \str_if_eq:VnTF \l_@@_bib_gb_style_tl { numerical } { gb7714-2015 } { gb7714-2015ay } } { \l_@@_bib_style_tl } } % \end{macrocode} % å¼•ç”¨æ ·å¼ã€‚ % \changes{v0.8}{2021/03/09}{æ£ç¡®è°ƒç”¨å¼•ç”¨æ ·å¼ã€‚} % \begin{macrocode} \tl_if_empty:NF \l_@@_cite_style_tl { \clist_put_right:Nx \l_@@_biblatex_options_clist { citestyle = \l_@@_cite_style_tl } } \exp_args:NV \PassOptionsToPackage \l_@@_biblatex_options_clist { biblatex } } \cs_new_protected:Npn \@@_biblatex_post_setup: { \clist_map_function:NN \l_@@_bib_resource_clist \addbibresource \@@_biblatex_allow_url_break: \@@_biblatex_use_en_dash: % \end{macrocode} % 修改å‚è€ƒæ–‡çŒ®æ ‡é¢˜ã€‚ % \begin{macrocode} \defbibheading { bibliography } [ \bibname ] { \@@_chapter:n {##1} } %<*class-en> \exp_args:Nnx \DefineBibliographyStrings { english } { bibliography = { \c_@@_name_bib_en_tl } } %</class-en> } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_biblatex_allow_url_break:} % \pkg{biblatex} 下å…许 URL åœ¨å—æ¯ã€æ•°å—和一些特殊符å·å¤„æ–行。 % \begin{macrocode} \cs_new:Npn \@@_biblatex_allow_url_break: { \int_set_eq:NN \c@biburlucpenalty \c_one_int \int_set_eq:NN \c@biburlnumpenalty \c_one_int \int_set_eq:NN \c@biburllcpenalty \c_one_int } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_biblatex_use_en_dash:} % 使用 \tn{textendash} “\textendashâ€ä½œä¸ºæ•°å—间的连接å·ã€‚ % \begin{macrocode} \cs_new:Npn \@@_biblatex_use_en_dash: { \DefineBibliographyExtras { english } { \cs_set_nopar:Npn \bibrangedash { \textendash \penalty \hyphenpenalty } } \DefineBibliographyExtras { russian } { \cs_set_nopar:Npn \bibrangedash { \textendash \penalty \hyphenpenalty } } } % \end{macrocode} % \end{macro} % % \changes{v0.7}{2018/01/25}{åŒæ¥ \pkg{gbt7714} v1.0,移除有关超链接的é¢å¤–设置。} % \changes{v0.8}{2021/09/20}{ä¸å†å°†è‘—录用符å·ä¿®æ”¹ä¸ºä¸æ–‡æ ‡ç‚¹ç¬¦å·ã€‚} % % \subsection{\pkg{hyperref} 相关é…ç½®} % % \changes{v0.4}{2017/08/13}{新增 \pkg{hyperref} 相关é…置,包括超链接 % æ ·å¼ï¼ˆ\opt{style/hyperlink} 与 \opt{style/hyperlink-color} 选项) % åŠ PDF 元信æ¯ç‰ã€‚} % \changes{v0.7}{2018/01/23}{å°† \pkg{hyperref} 相关é…ç½®ç§»è‡³æ¨¡æ¿æœ«å°¾ï¼Œ % 以å‡å°‘冲çªã€‚} % % \begin{macro}{\hypersetup} % \changes{v0.9}{2023/02/08}{改用 \cs{DeclareDocumentCommand} 定义。} % \begin{macro}{\fdu_hyperref_setup:n} % \pkg{hyperref} å®åŒ…æ˜¯åœ¨å¯¼è¨€åŒºä¹‹åŽæ‰å¼•入的。若è¦åœ¨å¯¼è¨€åŒºä¸ä½¿ç”¨ % \tn{hypersetup} 命令,必须å¦è¡Œå®šä¹‰ã€‚ % \begin{macrocode} \DeclareDocumentCommand \hypersetup { m } { \fdu_hyperref_setup:n {#1} } \cs_new_protected:Npn \fdu_hyperref_setup:n #1 { \clist_gput_right:Nn \g_@@_to_hyperref_clist {#1} } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@_set_hyperlink_color_key:n} % 设置超链接颜色选项。最åŽçš„逗å·ç”¨äºŽç¡®ä¿ \pkg{l3keys} å¯ä»¥æ£ç¡®è§£æžï¼Œä¸èƒ½çœåŽ»ã€‚ % \begin{macrocode} \cs_new:Npn \@@_set_hyperlink_color_key:n #1 { hyperlink-color / \clist_item:nn {#1} {1} .code:n = { \@@_define_hyperlink_color:nnn { \clist_item:nn {#1} {2} } { \clist_item:nn {#1} {3} } { \clist_item:nn {#1} {4} } \fdu_hyperref_setup:n { linkcolor = fdu@link, linkbordercolor = fdu@link, urlcolor = fdu@url, urlbordercolor = fdu@url, citecolor = fdu@cite, citebordercolor = fdu@cite } }, } % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_define_hyperlink_color:nnn} % 定义超链接颜色。 % \begin{macrocode} \cs_new_protected:Npn \@@_define_hyperlink_color:nnn #1#2#3 { \definecolorset { HTML } { fdu@ } { } { link, #1; url, #2; cite, #3 } } % \end{macrocode} % \end{macro} % % \begin{macrocode} \keys_define:nx { fdu / style } { % \end{macrocode} % % \begin{macro}{style/hyperlink} % \changes{v0.8}{2021/12/27}{ä¿®å¤è¾¹æ¡†ä¸æ˜¾ç¤ºçš„问题;ä¸éœ€è¦ä¸º \opt{hidelinks} é€‰é¡¹ä¼ é€’å‚æ•°ã€‚} % è¶…é“¾æŽ¥æ ·å¼ã€‚ % \begin{macrocode} hyperlink .choice:, hyperlink .value_required:n = true, hyperlink / border .code:n = { \fdu_hyperref_setup:n { colorlinks = false } }, hyperlink / color .code:n = { \fdu_hyperref_setup:n { colorlinks = true } }, hyperlink / none .code:n = { \fdu_hyperref_setup:n { hidelinks } }, % \end{macrocode} % \end{macro} % % \begin{macro}{style/hyperlink-color} % \changes{v0.8}{2021/12/27}{移除ä¸å¸¸ç”¨çš„超链接颜色。} % 超链接颜色。 % \begin{macrocode} hyperlink-color .choice:, hyperlink-color .value_required:n = true, \clist_map_function:nN { { classic, FF0000, 0000FF, 00FF00 }, { default, 990000, 0000B2, 007F00 }, { material, E91E63, 009688, 4CAF50 }, { graylevel, 616161, 616161, 616161 }, { prl, 2D3092, 2D3092, 2D3092 } } \@@_set_hyperlink_color_key:n } % \end{macrocode} % \end{macro} % % \changes{v0.6}{2017/10/29}{优化 URL æ–行设置。} % % \begin{macro}{\fdu_allow_url_break:,\@@_add_url_break_points:} % å…许 URL åœ¨å—æ¯ã€æ•°å—和一些特殊符å·å¤„æ–è¡Œã€‚è§ % \url{https://bit.ly/2hhIjLW}。 % \begin{macrocode} \cs_new:Npn \fdu_allow_url_break: { \cs_new:Npn \@@_add_url_break_points: { \tl_map_function:NN \c_@@_url_break_points_tl \do } \@@_appto_cmd:Nn \UrlBreaks { \UrlOrds \@@_add_url_break_points: } } % \end{macrocode} % \end{macro} % % \begin{variable}{\c_@@_url_break_points_tl} % é¢å¤–çš„æ–行ä½ç½®æ˜¯ 26 ä¸ªè‹±æ–‡å—æ¯ï¼ˆå¤§å°å†™ï¼‰ä»¥åŠ 10 个阿拉伯数å—。 % \pkg{url} æä¾›çš„å® \tn{UrlBreaks} 还包å«äº†ç‰¹æ®Šç¬¦å· |*|ã€|-|〠% |~|ã€|'|ã€|"|ã€|-|,也被设置为å…许æ–行。 % \begin{macrocode} \tl_const:Nn \c_@@_url_break_points_tl { abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 } % \end{macrocode} % \end{variable} % % \changes{v0.7e}{2019/04/23}{å¤„ç† \pkg{hyperref} 与 \pkg{unicode-math} % 的兼容性问题。} % % 在导言区末尾引入 \pkg{hyperref} å®åŒ…。 % \begin{macrocode} \ctex_at_end_preamble:n { \RequirePackage { hyperref } % \end{macrocode} % æ¤åŽ \tn{hypersetup} 命令由 \pkg{hyperref} å®åŒ…接管。 % \begin{macrocode} \hypersetup { bookmarksnumbered = true, psdextra = true, unicode = true, % \end{macrocode} % 填写 PDF 元信æ¯ã€‚ % \begin{macrocode} %<*class> pdftitle = \l_@@_info_title_sanitized_tl, pdfauthor = \l_@@_info_author_tl, pdfkeywords = \l_@@_info_keywords_clist, %</class> %<*class-en> pdftitle = \l_@@_info_title_en_sanitized_tl, pdfauthor = \l_@@_info_author_en_tl, pdfkeywords = \l_@@_info_keywords_en_clist, %</class-en> % pdfsubject = , pdfcreator = \c_@@_name_pdf_creator_tl } % \end{macrocode} % 将导言区ä¸é€šè¿‡ \cs{fdu_hyperref_setup:n} è¿›è¡Œçš„è®¾ç½®ä¼ å…¥ \tn{hypersetup}。 % \begin{macrocode} \exp_args:NV \hypersetup \g_@@_to_hyperref_clist % \end{macrocode} % URL æ–行处ç†ã€‚ % \begin{macrocode} \fdu_allow_url_break: % \end{macrocode} % 由于 \pkg{hyperref} 在 \pkg{biblatex} 之åŽè°ƒç”¨ï¼Œæ‰€ä»¥éœ€è¦æ‰‹åЍ开å¯ç›¸å…³åŠŸèƒ½ã€‚ % \begin{macrocode} \tl_if_eq:NnT \l_@@_bib_backend_tl { biblatex } { \BiblatexManualHyperrefOn } } % \end{macrocode} % % 在 PDF å—符串ä¸è®¾ç½® \tn{fdu@kai} 命令为空,以抑制 \pkg{hyperref} çš„è¦å‘Šä¿¡æ¯ã€‚ % \begin{macrocode} \ctex_at_end_package:nn { hyperref } { \pdfstringdefDisableCommands { \cs_set_eq:NN \fdu@kai \prg_do_nothing: \cs_set_eq:NN \quad \c_space_tl \cs_set_eq:NN \qquad \c_space_tl } } % \end{macrocode} % % \subsection{用户接å£} % % \begin{macro}{info,style} % 定义元(meta)键值对。 % \begin{macrocode} \keys_define:nn { fdu } { info .meta:nn = { fdu / info } {#1}, style .meta:nn = { fdu / style } {#1} } % \end{macrocode} % \end{macro} % % 文档类åˆå§‹è®¾ç½®ã€‚ % \begin{macrocode} \keys_set:nn { fdu } { style / font = times, %<class> style / cjk-font = fandol, style / font-size = -4, %<class> style / fullwidth-stop = false, style / auto-make-cover = true, style / logo = { fudan-name.pdf }, style / logo-size = { 0.5 \textwidth }, style / hyperlink = color, style / hyperlink-color = default, style / bib-style = numerical, info / degree = academic, info / secret-level = none, info / school-id = { 10246 }, info / date = { \zhtoday }, %<class> theorem / header-font = { \sffamily }, %<class-en> theorem / header-font = { \bfseries \upshape }, %<class> theorem / body-font = { \fdu@kai }, %<class-en> theorem / body-font = { \itshape }, theorem / counter = { chapter } } % \end{macrocode} % % \begin{macro}{\fdusetup} % 用户设置接å£ã€‚ % \begin{macrocode} \NewDocumentCommand \fdusetup { m } { \keys_set:nn { fdu } {#1} } % \end{macrocode} % \end{macro} % % \begin{environment}{proof} % \begin{environment}{axiom} % \begin{environment}{corollary} % \begin{environment}{definition} % \begin{environment}{example} % \begin{environment}{lemma} % \begin{environment}{theorem} % 模æ¿é¢„定义的常用数å¦çŽ¯å¢ƒã€‚ % å…¶ä¸çš„â€œè¯æ˜Žâ€æ¯”较特殊,它ä¸ç¼–å·ï¼Œä½†ä¼šæ·»åŠ è¯æ¯•符å·ã€‚ % \begin{macrocode} %<*class> \newtheorem* { proof } { \c_@@_name_proof_tl } \newtheorem { axiom } { \c_@@_name_axiom_tl } \newtheorem { corollary } { \c_@@_name_corollary_tl } \newtheorem { definition } { \c_@@_name_definition_tl } \newtheorem { example } { \c_@@_name_example_tl } \newtheorem { lemma } { \c_@@_name_lemma_tl } \newtheorem { theorem } { \c_@@_name_theorem_tl } %</class> %<*class-en> \newtheorem* { proof } { \c_@@_name_proof_en_tl } \newtheorem { axiom } { \c_@@_name_axiom_en_tl } \newtheorem { corollary } { \c_@@_name_corollary_en_tl } \newtheorem { definition } { \c_@@_name_definition_en_tl } \newtheorem { example } { \c_@@_name_example_en_tl } \newtheorem { lemma } { \c_@@_name_lemma_en_tl } \newtheorem { theorem } { \c_@@_name_theorem_en_tl } %</class-en> %</class|class-en> % \end{macrocode} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % \end{environment} % % \subsection{模æ¿å‚æ•°é…置文件} % % \changes{v0.3}{2017/06/27}{åˆ†ç¦»æ–‡æ¡£ç±»ä¸Žå‚æ•°é…置文件。} % % \begin{macrocode} %<*definition> % \end{macrocode} % % \subsubsection{通用é…ç½®} % % \begin{variable}{\c_@@_name_simp_tl,\c_@@_name_trad_tl,\c_@@_name_en_tl} % 妿 ¡å称。 % \begin{macrocode} \tl_const:Nn \c_@@_name_simp_tl { 夿—¦å¤§å¦ } \tl_const:Nn \c_@@_name_trad_tl { å¾©æ—¦å¤§å¸ } \tl_const:Nn \c_@@_name_en_tl { Fudan~ University } % \end{macrocode} % \end{variable} % % å¸¸ç”¨æ ‡ç‚¹ç¬¦å·ï¼Œè§è¡¨~\ref{tab:punctuations}。 % \begin{macrocode} \clist_map_inline:nn { { ideo_comma } { ^^^^3001 }, { ideo_full_stop } { ^^^^3002 }, { fwid_comma } { ^^^^ff0c }, { fwid_full_stop } { ^^^^ff0e }, { fwid_colon } { ^^^^ff1a }, { fwid_semicolon } { ^^^^ff1b }, { fwid_left_paren } { ^^^^ff08 }, { fwid_right_paren } { ^^^^ff09 } } { \@@_define_punct:nn #1 } % \end{macrocode} % % \begin{table}[ht] % \caption{å¸¸ç”¨æ ‡ç‚¹ç¬¦å·} % \label{tab:punctuations} % \centering % \begin{tabular}{cccc} % \toprule % \textbf{䏿–‡åç§°} & % \textbf{英文åç§°} & % \textbf{符å·} & % \textbf{Unicode ç ä½} \\ % \midrule % 䏿–‡é¡¿å· & Ideographic comma & ^^^^3001 & U+3001 \\ % 䏿–‡å¥å· & Ideographic full stop & ^^^^3002 & U+3002 \\ % 䏿–‡é€—å· & Fullwidth comma & ^^^^ff0c & U+FF0C \\ % 全角西文å¥ç‚¹ & Fullwidth full stop & ^^^^ff0e & U+FF0E \\ % 䏿–‡å†’å· & Fullwidth colon & ^^^^ff1a & U+FF1A \\ % 䏿–‡åˆ†å· & Fullwidth semicolon & ^^^^ff1b & U+FF1B \\ % 䏿–‡å·¦åœ†æ‹¬å· & Fullwidth left parenthesis & ^^^^ff08 & U+FF08 \\ % 䏿–‡å³åœ†æ‹¬å· & Fullwidth right parenthesis & ^^^^ff09 & U+FF09 \\ % \bottomrule % \end{tabular} % \end{table} % % \begin{variable}{\c_@@_line_spread_fp} % 行è·å€æ•°ã€‚行è·å€æ•° $k$ 由下å¼ç¡®å®šï¼š % \begin{equation*} % 1.2 \times k \times \qty{12}{bp} = \qty{20}{pt}. % \end{equation*} % å¼ä¸ï¼Œ1.2 是基本行è·ä¸Žæ–‡å—大å°ä¹‹æ¯”,\qty{12}{bp} 是å°å››å·å—的大å°ï¼Œ % \qty{20}{pt} 是行è·å›ºå®šå€¼ã€‚ % \begin{macrocode} \fp_const:Nn \c_@@_line_spread_fp { \dim_ratio:nn { 20 pt } { 12 bp } / 1.2 } % \end{macrocode} % \end{variable} % % \subsubsection{声明页} % % \begin{variable}{\c_@@_orig_decl_text_tl} % 论文独创性声明。 % \begin{macrocode} \tl_const:Nn \c_@@_orig_decl_text_tl { 本人郑é‡å£°æ˜Žï¼šæ‰€å‘ˆäº¤çš„å¦ä½è®ºæ–‡ï¼Œæ˜¯æœ¬äººåœ¨å¯¼å¸ˆçš„æŒ‡å¯¼ä¸‹ï¼Œç‹¬ç«‹è¿›è¡Œç ”ç©¶ 工作所å–å¾—çš„æˆæžœã€‚论文ä¸é™¤ç‰¹åˆ«æ ‡æ³¨çš„内容外,ä¸åŒ…å«ä»»ä½•其他个人或机 构已ç»å‘è¡¨æˆ–æ’°å†™è¿‡çš„ç ”ç©¶æˆæžœã€‚å¯¹æœ¬ç ”ç©¶åšå‡ºé‡è¦è´¡çŒ®çš„ä¸ªäººå’Œé›†ä½“ï¼Œå‡ å·²åœ¨è®ºæ–‡ä¸ä½œäº†æ˜Žç¡®çš„声明并表示了谢æ„。本声明的法律结果由本人承担。 } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_auth_decl_text_tl} % 论文使用授æƒå£°æ˜Žã€‚ % \begin{macrocode} \tl_const:Nn \c_@@_auth_decl_text_tl { æœ¬äººå®Œå…¨äº†è§£å¤æ—¦å¤§å¦æœ‰å…³æ”¶è—和利用åšå£«ã€ç¡•士å¦ä½è®ºæ–‡çš„规定,å³ï¼šå¦ æ ¡æœ‰æƒæ”¶è—ã€ä½¿ç”¨å¹¶å‘国家有关部门或机构é€äº¤è®ºæ–‡çš„å°åˆ·æœ¬å’Œç”µå版本; å…è®¸è®ºæ–‡è¢«æŸ¥é˜…å’Œå€Ÿé˜…ï¼›å¦æ ¡å¯ä»¥å…¬å¸ƒè®ºæ–‡çš„全部或部分内容,å¯ä»¥é‡‡ç”¨å½± å°ã€ç¼©å°æˆ–其它å¤åˆ¶æ‰‹æ®µä¿å˜è®ºæ–‡ã€‚涉密å¦ä½è®ºæ–‡åœ¨è§£å¯†åŽéµå®ˆæ¤è§„定。 } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_orig_decl_sign_clist, % \c_@@_auth_decl_sign_clist} % 声明页ç¾å项目。 % \begin{macrocode} \clist_const:Nn \c_@@_orig_decl_sign_clist { 作者ç¾å, 日期 } \clist_const:Nn \c_@@_auth_decl_sign_clist { 作者ç¾å, 导师ç¾å, 日期 } % \end{macrocode} % \end{variable} % % \subsubsection{æ‚项} % % \begin{variable}{\c_@@_thesis_type_prop,\c_@@_degree_type_prop} % 论文类型与å¦ä½ç±»åž‹ã€‚ % \begin{macrocode} \prop_const_from_keyval:Nn \c_@@_thesis_type_prop { doctor = åšå£«å¦ä½è®ºæ–‡, master = 硕士å¦ä½è®ºæ–‡, bachelor = 本科毕业论文, } \prop_const_from_keyval:Nn \c_@@_degree_type_prop { academic = 妿œ¯å¦ä½, professional = 专业å¦ä½, } % \end{macrocode} % \end{variable} % % \begin{variable}{\c_@@_secret_prop} % 三ç§å¯†çº§ã€‚ % \begin{macrocode} \prop_const_from_keyval:Nn \c_@@_secret_prop { i = 秘密, ii = 机密, iii = ç»å¯†, } % \end{macrocode} % \end{variable} % % \changes{v0.9a}{2023/03/23}{“关键å—â€æ›´æ”¹ä¸ºâ€œå…³é”®è¯â€ã€‚} % % 默认å称。注æ„ç©ºæ ¼æ˜¯å¿½ç•¥æŽ‰çš„ã€‚ % \begin{macrocode} \clist_map_inline:nn { { secret_level } { 密 \qquad 级 }, { secret_star } { \textrm { \bigstar } }, { school_id } { 妿 ¡ä»£ç }, { student_id } { å¦ \qquad å· }, { department } { 院系 }, { major } { 专业 }, { major_professional } { 专业å¦ä½ç±»åˆ«ï¼ˆé¢†åŸŸï¼‰ }, { author } { å§“å }, { supervisor } { 指导教师 }, { date } { å®Œæˆæ—¥æœŸ }, { instructors } { 指导å°ç»„æˆå‘˜ }, { author_sign } { 作者ç¾å }, { supervisor_sign } { 导师ç¾å }, { sign_date } { 日期 }, { toc } { ç›® \quad 录 }, { lof } { æ’图目录 }, { lot } { è¡¨æ ¼ç›®å½• }, { bib_en } { Bibliography }, { pdf_creator } { LaTeX~ with~ fduthesis~ class }, { orig_decl } { \c_@@_name_simp_tl \\ å¦ä½è®ºæ–‡ç‹¬åˆ›æ€§å£°æ˜Ž }, { auth_decl } { \c_@@_name_simp_tl \\ å¦ä½è®ºæ–‡ä½¿ç”¨æŽˆæƒå£°æ˜Ž }, } { \@@_define_name:nn #1 } \clist_map_inline:nn { { abstract } { 摘 \quad è¦ } { Abstract }, { keywords } { å…³é”®è¯ } { Keywords: }, { clc } { ä¸å›¾åˆ†ç±»å· } { CLC~ code: }, { jel } { JEL åˆ†ç±»å· } { JEL~ code: }, { notation } { 符å·è¡¨ } { List~ of~ Symbols }, { acknowledgements } { 致 \quad è°¢ } { Acknowledgements } } { \@@_define_name:nnn #1 } % \end{macrocode} % % 默认定ç†å¤´å称。 % \begin{macrocode} \clist_map_inline:nn { { proof } { è¯æ˜Ž } { Proof }, { axiom } { å…¬ç† } { Axiom }, { corollary } { 推论 } { Corollary }, { definition } { 定义 } { Definition }, { example } { 例 } { Example }, { lemma } { å¼•ç† } { Lemma }, { theorem } { å®šç† } { Theorem } } { \@@_define_name:nnn #1 } % \end{macrocode} % % \begin{variable}{\c_@@_name_major_professional_tl} % \changes{v0.9}{2023/02/05}{处ç†å³æ‹¬å·å¸¦æ¥çš„é—´è·ã€‚} % 处ç†å³æ‹¬å·å¸¦æ¥çš„é—´è·ã€‚ % \begin{macrocode} \tl_put_right:Nn \c_@@_name_major_professional_tl { { \skip_horizontal:n { -0.5 em } } } %</definition> %<@@=> % \end{macrocode} % \end{variable} % % \clearpage % % \end{implementation} %