From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/fduthesis/README.md | 81 + macros/latex/contrib/fduthesis/fduthesis-code.pdf | Bin 0 -> 916050 bytes macros/latex/contrib/fduthesis/fduthesis-doc.dtx | 2156 +++++++ macros/latex/contrib/fduthesis/fduthesis-en.pdf | Bin 0 -> 162728 bytes macros/latex/contrib/fduthesis/fduthesis-logo.dtx | 3537 ++++++++++++ macros/latex/contrib/fduthesis/fduthesis.dtx | 6024 ++++++++++++++++++++ macros/latex/contrib/fduthesis/fduthesis.pdf | Bin 0 -> 410643 bytes .../latex/contrib/fduthesis/fudan-emblem-new.pdf | Bin 0 -> 10688 bytes macros/latex/contrib/fduthesis/fudan-emblem.pdf | Bin 0 -> 15957 bytes macros/latex/contrib/fduthesis/fudan-name.pdf | Bin 0 -> 9952 bytes 10 files changed, 11798 insertions(+) create mode 100644 macros/latex/contrib/fduthesis/README.md create mode 100644 macros/latex/contrib/fduthesis/fduthesis-code.pdf create mode 100644 macros/latex/contrib/fduthesis/fduthesis-doc.dtx create mode 100644 macros/latex/contrib/fduthesis/fduthesis-en.pdf create mode 100644 macros/latex/contrib/fduthesis/fduthesis-logo.dtx create mode 100644 macros/latex/contrib/fduthesis/fduthesis.dtx create mode 100644 macros/latex/contrib/fduthesis/fduthesis.pdf create mode 100644 macros/latex/contrib/fduthesis/fudan-emblem-new.pdf create mode 100644 macros/latex/contrib/fduthesis/fudan-emblem.pdf create mode 100644 macros/latex/contrib/fduthesis/fudan-name.pdf (limited to 'macros/latex/contrib/fduthesis') diff --git a/macros/latex/contrib/fduthesis/README.md b/macros/latex/contrib/fduthesis/README.md new file mode 100644 index 0000000000..563fb4b89d --- /dev/null +++ b/macros/latex/contrib/fduthesis/README.md @@ -0,0 +1,81 @@ +The `fduthesis` Class +===================== + +*LaTeX thesis template for Fudan University, v0.7d* + +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 re­pos­i­tory: . + +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` (on Windows) or `install-linux.sh` (on Linux) + 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–2019 by Xiangdong Zeng . diff --git a/macros/latex/contrib/fduthesis/fduthesis-code.pdf b/macros/latex/contrib/fduthesis/fduthesis-code.pdf new file mode 100644 index 0000000000..6848703e9a Binary files /dev/null and b/macros/latex/contrib/fduthesis/fduthesis-code.pdf differ diff --git a/macros/latex/contrib/fduthesis/fduthesis-doc.dtx b/macros/latex/contrib/fduthesis/fduthesis-doc.dtx new file mode 100644 index 0000000000..6952003bca --- /dev/null +++ b/macros/latex/contrib/fduthesis/fduthesis-doc.dtx @@ -0,0 +1,2156 @@ +% \iffalse meta-comment +% +% Copyright (C) 2017--2019 by Xiangdong Zeng +% +% 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. +% +% \fi +% +% \EnableImplementation +% +% \begin{implementation} +% +%^^A 代码部分的页边距 +% \newgeometry{ +% left = 2.25 in, +% right = 1.00 in, +% top = 1.25 in, +% bottom = 1.00 in, +% marginpar = 2.25 in +% } +% +% \subsection{模板文档样式 \cls{fdudoc}} +% +% \changes{v0.4}{2017/07/29}{在 \cls{ctxdoc} 的基础上完成 +% \cls{fdudoc} 文档类,用于模板手册的编写。} +% +% 编写 \LaTeX{} 宏包文档,传统上会采用 \pkg{doc} 宏包或 +% \cls{ltxdoc} 文档类。而对于使用 \LaTeX3 开发的宏包,\cls{l3doc} +% 文档类将是一个更好的选择。\CTeX{} 宏集所附带的 +% \href{https://github.com/CTeX-org/ctex-kit/blob/master/tool/ctxdoc.cls}^^A +% {\cls{ctxdoc}} 文档类,则在 \cls{l3doc} 的基础上进行了一些修正, +% 特别是重新实现了 \env{macrocode} 环境,使之能更好地应用于中文 +% 文档。\cls{ctxdoc} 的主要功能如下: +% +% \begin{itemize} +% \item 注释使用灰色、倾斜字体,以便与一般代码区分; +% \item 模块、名字空间等使用彩色标注,并添加超链接; +% \item 自动更新行号宽度; +% \item 边注中的长命令使用盒子进行缩放,防止溢出; +% \item 修订记录中将显示修改日期; +% \item 添加中文支持。 +% \end{itemize} +% +% 然而,\cls{ctxdoc} 主要供内部使用,代码较为混乱和随意。 +% 本模板的文档样式(\cls{fdudoc})为适应具体需求,对其代码 +% 进行了整理,添加了相关注释,并做了一些改动: +% +% \begin{itemize} +% \item 允许模块标记 |<*|\meta{module}|>| 和 +% || 出现在行号左侧; +% \item 不再以直立、倾斜字体区分不同嵌套层次的模块; +% \item 调整索引中版本号的排序方式; +% \item 新增一系列实用命令; +% \item 修改文档字体、配色等。 +% \end{itemize} +% +% 本文档样式的核心代码主要来自 \cls{ctxdoc} 文档类 v2.4.10。 +% 在此,本人要向原开发者 +% \href{https://github.com/CTeX-org/}{CTEX.ORG} +% 团队表示由衷的感谢。 +% +% 以下为 \cls{fdudoc} 的具体实现。 +% +% \subsubsection{载入宏包、文档类} +% +% \begin{macrocode} +%<*doc> +\ExplSyntaxOff +% \end{macrocode} +% +% 无需载入 \pkg{thumbpdf}。 +% \begin{macrocode} +\@namedef{ver@thumbpdf.sty}{9999/99/99} +% \end{macrocode} +% +% 关闭 \pkg{xparse} 中的命令声明信息。 +% \begin{macrocode} +\PassOptionsToPackage{log-declarations = false}{xparse} +% \end{macrocode} +% +% 载入宏包和文档类。 +% \begin{macrocode} +\LoadClass[a4paper, full]{l3doc} +\RequirePackage[UTF8, heading, sub3section, fontset = none]{ctex} +% \end{macrocode} +% 与 \pkg{hypdoc}(由 \cls{l3doc} 调用)冲突,导致脚注超链接 +% 无法正常跳转。暂时禁用。 +% \begin{macrocode} +% \RequirePackage[stable, bottom]{footmisc} +\RequirePackage{% + caption, + geometry, + graphicx, + listings, + makecell, + siunitx, + tabularx, + threeparttable, + unicode-math, + xcolor, + xcolor-material, + xunicode, + zref-base +} +% \end{macrocode} +% +% \subsubsection{\env{macrocode} 环境} +% +% \paragraph{继承的代码} +% +% \begin{macro}[int]{\macro@code} +% 在 \pkg{doc} 宏包中,\env{macrocode} 环境的核心功能由命令 +% \tn{macro@code} 负责实现,而 \tn{xmacro@code} 只用来结束 +% \env{macrocode} 环境。但在 \cls{l3doc} 以及 \cls{ctxdoc} 中, +% \tn{xmacro\-@\-code} 则基本接管了 \tn{macro@code} 的功能。 +% 后者此时只起辅助作用。 +% \begin{macrocode} +\def\macro@code{% +% \end{macrocode} +% 调整前后间距,禁止 \env{macrocode} 环境前的分页。 +% \begin{macrocode} + \topsep \MacrocodeTopsep + \@beginparpenalty \predisplaypenalty +% \end{macrocode} +% 将列表前后的附加垂直空白设为 0。根据 \cls{ctxdoc} 修改。 +% \begin{macrocode} + \partopsep \z@skip +% \if@inlabel\leavevmode\fi +% \end{macrocode} +% 构建 \env{trivlist} 环境,设置段间距为 0。 +% 之后修改字体,并调节左右间距。\tn{MacroIndent} 会根据代码行数 +% 更新,具体细节见后文。 +% \tn{macro@font} 用来在不同模块见切换字体。本文档类不使用 +% \tn{AltMacroFont},因此这里改用 \tn{MacroFont} 代替。 +% \begin{macrocode} + \trivlist \parskip \z@ \item[]% +% \macro@font + \MacroFont + \leftskip\@totalleftmargin \advance\leftskip\MacroIndent + \rightskip\z@ \parindent\z@ \parfillskip\@flushglue +% \end{macrocode} +% 按照 \LaTeXe{} 中 \tn{verbatim} 环境中定义 \tn{par},使得空行 +% 可以原样输出,否则空行会被吃掉。 +% \begin{macrocode} + \blank@linefalse \def\par{\ifblank@line + \leavevmode\fi + \blank@linetrue\@@par + \penalty\interlinepenalty} +% \end{macrocode} +% \tn{obeylines} 将把回车符 |^^M| 变成 \tn{par}。 +% 接下来将所有特殊符号的类别码设为 12,即“其他”类。 +% \begin{macrocode} + \obeylines + \let\do\do@noligs \verbatim@nolig@list + \let\do\@makeother \dospecials +% \end{macrocode} +% 相当于退出 |\begin{list}| 和 |\begin{minipage}|。 +% \begin{macrocode} + \global\@newlistfalse + \global\@minipagefalse +% \end{macrocode} +% 初始化交叉引用功能。 +% \begin{macrocode} + \init@crossref} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<@@=fdudoc> +\ExplSyntaxOn +% \end{macrocode} +% +% \begin{variable}{\l_@@_tmpa_tl,\l_@@_tmpb_tl} +% 临时变量。 +% \begin{macrocode} +\tl_new:N \l_@@_tmpa_tl +\tl_new:N \l_@@_tmpb_tl +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_patch_cmd:Nnn,\@@_preto_cmd:Nn,\@@_appto_cmd:Nn} +% 补丁工具。 +% \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 \@@_preto_cmd:Nn #1#2 + { + \ctex_preto_cmd:NnnTF #1 { } {#2} + { } { \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} +% +% \paragraph{代码行处理} +% +% \begin{macro}[int]{\xmacro@code,\sxmacro@code} +% 重新实现 \env{macrocode} 与 \env{macrocode*} 环境的核心功能, +% 将对代码逐行处理。后者会将空格显示为“\verb*| |”。 +% \begin{macrocode} +\cs_set_protected_nopar:Npn \xmacro@code + { \@@_marco_code:w } +\cs_set_protected_nopar:Npn \sxmacro@code + { + \fontspec_print_visible_spaces: + \xmacro@code + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_marco_code:w} +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_marco_code:w + { +% \end{macrocode} +% 根据 \tn{codeline@index} 是否为 |true| 选择是否显示行号。 +% \begin{macrocode} + \ifcodeline@index + \@@_marco_code_every_par:n { \@@_code_line_no: } + \else: + \@@_marco_code_every_par:n { } + \fi: +% \end{macrocode} +% 设置代码段结束标记为“\verb*|% \end{macrocode}^^M|”。 +% \begin{macrocode} + \@@_make_finish_tag:x { \@currenvir } +% \end{macrocode} +% 开始 \env{macrocode}。 +% \begin{macrocode} + \@@_macro_code_start:w + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_marco_code_every_par:n} +% 在每段之前插入内容。这里每段即相当于每行。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_marco_code_every_par:n #1 + { + \everypar + { + \everypar {#1} + \if@inlabel + \global \@inlabelfalse \@noparlistfalse + \llap { \box \@labels \hskip \leftskip } + \fi + #1 + } + } +% \end{macrocode} +% \end{macro} +% +% 设置 \tn{endlinechar} 为 $-1$,表示行末不插入任何字符 +% (实际上相当于在行尾插入注释符 |%|)。 +% \begin{macrocode} +\group_begin: + \int_set:Nn \tex_endlinechar:D { -1 } +% \end{macrocode} +% +% \begin{variable}{\c_@@_active_space_tl} +% 活动字符类的空格(ASCII 码为 32)。 +% \begin{macrocode} + \use:n + { + \char_set_catcode_active:n { 32 } + \tl_const:Nn \c_@@_active_space_tl + } + { } +\group_end: +% \end{macrocode} +% \end{variable} +% +% ASCII 码 13 是回车符 |^^M|。将其设置为活动字符。 +% \begin{macrocode} +\group_begin: + \char_set_catcode_active:n { 13 } +% \end{macrocode} +% +% \begin{macro}{\@@_make_finish_tag:n,\@@_make_finish_tag:x} +% \env{macrocode} 结尾标记。展开后变成 +% “\verb*|% \end{#1}^^M|”。 +% \begin{macrocode} + \cs_new_protected:Npx \@@_make_finish_tag:n #1 + { + \tl_set:Nn \exp_not:N \l_@@_macro_code_finish_tl + { + \c_percent_str + \prg_replicate:nn { 4 } + { \exp_not:o { \c_@@_active_space_tl } } + \exp_not:o { \active@escape@char } end + \c_left_brace_str #1 \c_right_brace_str + \exp_not:N ^^M + } + } + \cs_generate_variant:Nn \@@_make_finish_tag:n { x } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_macro_code_start:w} +% 开始代码环境。此命令主要是为了防止 |\begin{macrocode}| +% 后出现多余的空行。 +% \begin{macrocode} + \cs_new_protected:Npn \@@_macro_code_start:w #1 + { + \str_if_eq:nnTF {#1} { ^^M } + { \@@_macro_code_read_line:w } + { \@@_macro_code_read_line:w #1 } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_macro_code_read_line:w} +% 逐行读取代码,并连同行尾回车符一并存入 +% \cs{l_@@_macro_code_line_tl}。如果该行与结束标记 +% “\verb*|% \end{macrocode}^^M|”相同,则结束此 +% \env{macrocode};否则继续处理该行代码。 +% \begin{macrocode} + \cs_new_protected:Npn \@@_macro_code_read_line:w #1 ^^M + { + \tl_set:Nn \l_@@_macro_code_line_tl { #1 ^^M } + \tl_if_eq:NNTF + \l_@@_macro_code_line_tl \l_@@_macro_code_finish_tl + { \exp_args:Nx \end { \@currenvir } } + { + \@@_macro_code_process_line: + \@@_macro_code_read_line:w + } + } +% \end{macrocode} +% \end{macro} +% +% \changes{v0.4}{2017/08/09}{[\pkg{fdudoc}] 修复 \cls{ctxdoc} +% 文档类 v2.4.10 之前版本中行距偏小的问题,见 ctex-kit +% \href{https://github.com/CTeX-org/ctex-kit/issues/303}{\#~303}。} +% +% \begin{macro}{\@@_swap_cr:,\@@_swap_cr_aux:w} +% 把 \cs{l_@@_macro_code_line_tl} 中的回车符 |^^M| 挪到外面。 +% \begin{macrocode} + \cs_new_protected:Npn \@@_swap_cr: + { + \exp_after:wN + \@@_swap_cr_aux:w \l_@@_macro_code_line_tl + } + \cs_new_protected:Npn \@@_swap_cr_aux:w #1 ^^M + { + \group_insert_after:N ^^M + \tl_set:Nn \l_@@_macro_code_line_tl {#1} + } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\c_@@_active_cr_tl} +% 活动字符类的回车符。 +% \begin{macrocode} + \tl_const:Nn \c_@@_active_cr_tl { ^^M } +\group_end: +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\l_@@_macro_code_line_tl, +% \l_@@_macro_code_finish_tl, +% \g_@@_macro_code_verbatim_stop_tl} +% 分别用来存储代码行、\env{macrocode} 结束标记以及抄录停止标记。 +% \begin{macrocode} +\tl_new:N \l_@@_macro_code_line_tl +\tl_new:N \l_@@_macro_code_finish_tl +\tl_new:N \g_@@_macro_code_verbatim_stop_tl +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_process_normal_line:} +% 普通代码行根据开头字符分别处理。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_process_normal_line: + { + \str_case_e:nnF + { \str_head:N \l_@@_macro_code_line_tl } + { +% \end{macrocode} +% 以 |%| 开头的行先由 \cs{tl_tail:N} 去掉 |%|,之后再检查 |<|。 +% \begin{macrocode} + { \c_percent_str } + { + \@@_check_angle:x + { \tl_tail:N \l_@@_macro_code_line_tl } + } +% \end{macrocode} +% 以 |#| 开头的行按注释的格式输出。 +% \begin{macrocode} + { \c_hash_str } + { \@@_output_comment_line: } + } +% \end{macrocode} +% 其余正常输出。 +% \begin{macrocode} + { \@@_output_line: } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_process_verbatim_line:} +% 处理抄录代码行(不检查 |%| 与 |<|)。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_process_verbatim_line: + { +% \end{macrocode} +% 将该行与抄录停止标记进行比较。 +% \begin{macrocode} + \tl_if_eq:NNTF \l_@@_macro_code_line_tl + \g_@@_macro_code_verbatim_stop_tl +% \end{macrocode} +% 若相同,则结束抄录环境,清空抄录停止标记,并输出该标记; +% \begin{macrocode} + { + \tl_gclear:N \g_@@_macro_code_verbatim_stop_tl + \cs_gset_eq:NN \@@_macro_code_process_line: + \@@_process_normal_line: + \@@_output_module:nn + { \color { verb@guard } } + { + \@@_swap_cr: + \@@_module_pop:n { \l_@@_macro_code_line_tl } + } + } +% \end{macrocode} +% 否则直接输出抄录代码。 +% \begin{macrocode} + { \tl_use:N \l_@@_macro_code_line_tl } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_macro_code_process_line:} +% 处理代码行。该命令的作用如下: +% \begin{itemize} +% \item 正常情况下,等同于 \cs{@@_process_normal_line:}; +% \item 在 \cs{DontCheckModules} 之后,等价于 +% \cs{@@_output_line:},即不检查模块标记,直接输出; +% \item 在抄录环境中,等价于 \cs{@@_process_verbatim_line:}, +% 此时将不再特殊处理以 |%| 开头的代码行。 +% \end{itemize} +% \begin{macrocode} +\cs_new_eq:NN \@@_macro_code_process_line: + \@@_process_normal_line: +% \end{macrocode} +% \end{macro} +% +% \paragraph{模块标记处理} +% +% \begin{macro}{\CheckModules,\DontCheckModules} +% 选择是否检查模块标记。这两个命令在 \pkg{doc} 宏包中已有定义, +% 此处重新声明。 +% \begin{macrocode} +\DeclareDocumentCommand \CheckModules { } + { + \cs_set_eq:NN \@@_macro_code_process_line: + \@@_process_normal_line: + } +\DeclareDocumentCommand \DontCheckModules { } + { + \cs_set_eq:NN \@@_macro_code_process_line: + \@@_output_line: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_check_angle:n,\@@_check_angle:x} +% 检查第一个字符是否是 |<|。若是,则检查模块;否则立刻输出改行。 +% 该函数的参数不带 |%|。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_check_angle:n #1 + { + \str_if_eq:eeTF { \str_head:n {#1} } { < } + { \@@_check_module:x { \tl_tail:n {#1} } } + { \@@_output_comment_line: } + } +\cs_generate_variant:Nn \@@_check_angle:n { x } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_check_module:n,\@@_check_module:x} +% 检查紧跟 |<| 之后的字符。共有四种情况: +% \begin{itemize} +% \item |*|:模块开始(|%<*|\meta{module}|>|); +% \item |/|:模块结束(|%|); +% \item |@|:名字空间(|%<@@=|\meta{namespace}|>|); +% \item |<|:抄录环境开始(|%<<|\meta{end-tag})。 +% \end{itemize} +% 若不是这几种情况,则为单独一行的独立模块 +% (|%<|\meta{module}|>|)。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_check_module:n #1 + { + \str_case_e:nnF { \str_head:n {#1} } + { + { * } { \@@_module_star:w } + { / } { \@@_module_slash:w } + { @ } { \@@_module_at:w } + { < } { \@@_module_verb:w } + } + { \@@_module_pm:w } +% \end{macrocode} +% 参数 |#1| 将被上面几个 |:w| 型函数吃掉。 +% \begin{macrocode} + #1 \q_stop + } +\cs_generate_variant:Nn \@@_check_module:n { x } +% \end{macrocode} +% \end{macro} +% +% 设置 |>| 为活动字符。 +% \begin{macrocode} +\group_begin: + \char_set_catcode_active:N \> +% \end{macrocode} +% +% \begin{macro}{\@@_module_star:w} +% 模块开始标记。 +% \begin{arguments} +% \item |*|\meta{module} +% \item 之后的代码 +% \end{arguments} +% \begin{macrocode} + \cs_new_protected:Npn \@@_module_star:w #1 > #2 \q_stop + { +% \end{macrocode} +% 临时变量 \cs{l_@@_tmp_tl} 保存 |<*|\meta{module}|>| +% 之后的部分,即真实代码。 +% \begin{macrocode} + \tl_set:Nn \l_@@_tmpa_tl {#2} +% \end{macrocode} +% 判断该行是否为空(只含一个回车符 |^^M|)。 +% \begin{macrocode} + \tl_if_eq:NNTF \l_@@_tmpa_tl \c_@@_active_cr_tl +% \end{macrocode} +% 若是,则将 |<|\meta{module}|>| 放在行号的右侧; +% \begin{macrocode} + { + \@@_output_module:nn + { \@@_star_color: } + { + \@@_module_push:n + { \@@_module_angle:n {#1} } + } + } +% \end{macrocode} +% 否则放在左侧,并输出相应代码。 +% \begin{macrocode} + { + \@@_output_module_left:nn + { \@@_star_color: } + { + \@@_module_push:n + { \@@_module_angle:n {#1} } + } + } + \@@_output_line:n {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_slash:w} +% 模块结束标记。结构与 \cs{@@_module_star:w} 相同。 +% \begin{arguments} +% \item |/|\meta{module} +% \item 之后的代码 +% \end{arguments} +% \begin{macrocode} + \cs_new_protected:Npn \@@_module_slash:w #1 > #2 \q_stop + { + \tl_set:Nn \l_@@_tmpa_tl {#2} + \tl_if_eq:NNTF \l_@@_tmpa_tl \c_@@_active_cr_tl + { + \@@_output_module:nn + { \@@_slash_color: } + { + \@@_module_pop:n + { \@@_module_angle:n {#1} } + } + } + { + \@@_output_module_left:nn + { \@@_slash_color: } + { + \@@_module_pop:n + { \@@_module_angle:n {#1} } + } + } + \@@_output_line:n {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_at:w} +% 名字空间。 +% \begin{arguments} +% \item 名字空间的名称(不含 |@@=|) +% \item 之后的代码 +% \end{arguments} +% \begin{macrocode} + \cs_new_protected:Npn \@@_module_at:w @ @ = #1 > #2 \q_stop + { + \@@_output_module:nn + { \color { at@guard } } + { \@@_module_angle:n { @ @ = #1 } } +% \end{macrocode} +% 设置名字空间为 |#1|。\cls{l3doc} 中将名字空间称为 +% “模块”(module),注意不要混淆。 +% \begin{macrocode} + \tl_gset:Nn \g__codedoc_module_name_tl {#1} + \@@_output_line:n {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_verb:w} +% 抄录开始。|#1|: |<|\meta{end-tag},只有一个 |<|。 +% \meta{end-tag} 的最后会带有一个回车符 |^^M|。 +% \begin{macrocode} + \cs_new_protected:Npn \@@_module_verb:w #1 \q_stop + { +% \end{macrocode} +% 重定义 \cs{@@_macro_code_process_line:},用以输出抄录行。 +% \begin{macrocode} + \cs_gset_eq:NN \@@_macro_code_process_line: + \@@_process_verbatim_line: +% \end{macrocode} +% 设置抄录停止标记。用 \cs{tl_tail:n} 去掉开头的 |<|。 +% \begin{macrocode} + \tl_gset:Nx \g_@@_macro_code_verbatim_stop_tl + { \c_percent_str \tl_tail:n {#1} } +% \end{macrocode} +% 输出 |%<<|\meta{end-tag}。 +% \begin{macrocode} + \@@_output_module:nn + { \color { verb@guard } } + { + \@@_swap_cr: + \@@_module_push:n { \l_@@_macro_code_line_tl } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_pm:w} +% 处理单独一行的模块。|<|\meta{module}|>| 放在行号的左侧。 +% \begin{arguments} +% \item \meta{module} +% \item 之后的代码 +% \end{arguments} +% \begin{macrocode} + \cs_new_protected:Npn \@@_module_pm:w #1 > #2 \q_stop + { + \@@_output_module_left:nn + { \@@_pm_color: } + { \@@_module_angle:n {#1} } + \@@_output_line:n {#2} + } +\group_end: +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_output_line:n,\@@_output_line:} +% 输出代码行。参数将被存入 \cs{l_@@_macro_code_line_tl}, +% 再由不带参数的版本调用。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_output_line:n #1 + { + \tl_set:Nn \l_@@_macro_code_line_tl {#1} +% \end{macrocode} +% 若为空行(只含一个 |^^M|),则直接输出(换行)。 +% \begin{macrocode} + \tl_if_eq:NNTF + \l_@@_macro_code_line_tl \c_@@_active_cr_tl + { \tl_use:N \l_@@_macro_code_line_tl } + { +% \end{macrocode} +% 检查开头是否为 |%|,据此分别处理。 +% \begin{macrocode} + \str_if_eq:eeTF + { \str_head:N \l_@@_macro_code_line_tl } { \c_percent_str } + { \@@_output_comment_line: } { \@@_output_line: } + } + } +\cs_new_protected_nopar:Npn \@@_output_line: + { + \tex_noindent:D +% \end{macrocode} +% 此处将把 |@@| 替换为相应的名字空间。 +% \begin{macrocode} + \@@_replace_at_at:N \l_@@_macro_code_line_tl + \tl_use:N \l_@@_macro_code_line_tl + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_output_comment_line:} +% 输出注释代码行。用灰色、斜体显示。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_output_comment_line: + { + \tex_noindent:D + \group_begin: + \__fdudoc_swap_cr: + \color { code@gray } \slshape \@@_output_line: + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_replace_at_at:N, +% \@@_replace_at_at_aux:Nn,\@@_replace_at_at_aux:No} +% 把 |@@| 替换为相应的名字空间。其名称存放在全局变量 +% \cs{g__codedoc_module_name_tl} 中。 +% 它为空时(|%<@@=>|),不做替换。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_replace_at_at:N #1 + { + \tl_if_empty:NF \g__codedoc_module_name_tl + { \@@_replace_at_at_aux:No #1 \g__codedoc_module_name_tl } + } +\cs_new_protected:Npn \@@_replace_at_at_aux:Nn #1#2 + { +% \end{macrocode} +% 以下代码分别对应两种名字空间的替换: +% \begin{itemize} +% \item 内部变量:|\|\meta{type}|_@@_|\meta{name} $\to$ +% |\|\meta{type}|__|\meta{namespace}|_|\meta{name}; +% \item 内部函数:|\@@_|\meta{name}” $\to$ +% |\__|\meta{namespace}|_|\meta{name}”)。 +% \end{itemize} +% \begin{macrocode} + \tl_replace_all:Nnn #1 { _ @ @ } { _ _ #2 } + \tl_replace_all:Nnn #1 { @ @ } { _ _ #2 } + } +\cs_generate_variant:Nn \@@_replace_at_at_aux:Nn { No } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_push:n, +% \@@_module_push_aux:nn,\@@_module_push_aux:on} +% 将模块名压入栈中。此处的栈主要用来处理模块名(包括抄录标记) +% 之间的超链接。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_module_push:n + { \@@_module_push_aux:on { \int_use:N \c@HD@hypercount } } +\cs_new_protected:Npn \@@_module_push_aux:nn #1 + { + \seq_gpush:Nn \g_@@_module_dest_seq {#1} + \hypersetup { hidelinks } + \exp_args:Nx \hdclindex + { \zref@extractdefault { HD.#1 } { guard@end } { 1 } } { } + } +\cs_generate_variant:Nn \@@_module_push_aux:nn { on } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_pop:n, +% \@@_module_pop_aux:nn,\@@_module_pop_aux:on} +% 将模块名释放出栈。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_module_pop:n + { + \seq_gpop:NNTF \g_@@_module_dest_seq \l_@@_tmpa_tl + { \@@_module_pop_aux:on { \l_@@_tmpa_tl } } + { \BOOM \use:n } + } +\cs_new_protected:Npn \@@_module_pop_aux:nn #1 + { + \zref@labelbylist { HD.#1 } { fdudoc } + \hypersetup { hidelinks } + \hdclindex {#1} { } + } +\cs_generate_variant:Nn \@@_module_pop_aux:nn { on } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\g_@@_module_dest_seq} +% 存放模块名的序列(栈)。 +% \begin{macrocode} +\seq_new:N \g_@@_module_dest_seq +% \end{macrocode} +% \end{variable} +% +% 处理行号超链接。使用 \pkg{zref} 宏包。 +% \begin{macrocode} +\zref@newlist { fdudoc } +\zref@newprop { guard@end } [ 1 ] + { \int_eval:n { \c@HD@hypercount - 1 } } +\zref@addprop { fdudoc } { guard@end } +% \end{macrocode} +% +% \paragraph{格式处理} +% +% \begin{macro}{\MacroFont} +% 代码部分的字体。 +% \begin{macrocode} +\cs_set_protected:Npn \MacroFont + { + \linespread { 1.05 } + \small \ttfamily \mdseries \upshape + \@@_verb_addon: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_output_module:nn,\@@_output_module_left:nn} +% 输出模块名(分行内和行号左侧两种)。 +% \begin{arguments} +% \item 颜色等样式 +% \item 模块名 +% \end{arguments} +% \begin{macrocode} +\cs_new_protected:Npn \@@_output_module:nn #1#2 + { + \tex_noindent:D + \group_begin: + #1 + \footnotesize \normalfont \sffamily #2 + \group_end: + } +\cs_new_protected:Npn \@@_output_module_left:nn #1#2 + { + \tex_noindent:D + \hbox_overlap_left:n + { + \@@_output_module:nn {#1} {#2} + \skip_horizontal:n { \leftskip + \smallskipamount } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_star_color:,\@@_slash_color:,\@@_pm_color:} +% 选择模块标记的颜色。模块标记的颜色会根据嵌套层次而改变。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_star_color: + { + \seq_gpop:NNTF \g_@@_star_color_seq \current@color + { \set@color } + { \@@_select_color: } + \seq_gpush:No \g_@@_slash_color_seq { \current@color } + } +\cs_new_protected_nopar:Npn \@@_slash_color: + { + \seq_gpop:NNTF \g_@@_slash_color_seq \current@color + { + \set@color + \seq_gpush:No \g_@@_star_color_seq { \current@color } + } +% TODO: 需要报错:star 与 slash 没有匹配 + { \BOOM } + } +\cs_new_protected_nopar:Npn \@@_pm_color: + { + \seq_get:NNTF \g_@@_star_color_seq \current@color + { \set@color } + { + \@@_select_color: + \seq_gpush:No \g_@@_star_color_seq { \current@color } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\g_@@_star_color_seq,\g_@@_slash_color_seq} +% 存放模块标记颜色的序列。 +% \begin{macrocode} +\seq_new:N \g_@@_star_color_seq +\seq_new:N \g_@@_slash_color_seq +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_select_color:} +% \begin{macro}[int]{guard@series} +% 设置模块标记的色系。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_select_color: + { \color { guard@series!!+ } } +\definecolorseries { guard@series } + { cmyk } { last } { blue } { purple } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 设置色系的增量大小。可选参数 |3| 意味着基色(blue)与 +% 末色(purple)之间将等分为三份。该数字比嵌套最大深度小 1。 +% \begin{macrocode} +\resetcolorseries [ 3 ] { guard@series } +% \end{macrocode} +% +% \begin{macro}[int]{verb@guard,at@guard,code@gray} +% 设置颜色。 +% \begin{macrocode} +\definecolor { verb@guard } { named } { MaterialLime600 } +\definecolor { at@guard } { named } { MaterialPink } +\definecolor { code@gray } { named } { MaterialGrey } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_module_angle:n} +% 输出“$\langle\cdots\rangle$”。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_module_angle:n #1 + { < #1 > } +% { \textlangle #1 \textrangle } +% { \ensuremath \langle #1 \ensuremath \rangle } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_code_line_no:} +% 行号。设置为阿拉伯数字。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_code_line_no: + { + \int_gincr:N \c@CodelineNo + \hbox_overlap_left:n + { + \hbox_to_wd:nn + { \MacroIndent } + { + \HD@target + \tex_hss:D \@@_code_line_no_style: + \theCodelineNo \enspace + } + \tex_kern:D \@totalleftmargin + } + } +\tl_set:Nn \theCodelineNo { \arabic { CodelineNo } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_code_line_no_style:} +% 行号格式。 +% \begin{macrocode} +\cs_new_protected_nopar:Npn \@@_code_line_no_style: + { \color { code@gray } \normalfont \sffamily \tiny } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\HD@SetMacroIndent} +% 设置代码缩进(行号一栏的宽度)。该命令会写进 |.aux| 辅助文件, +% 以便在二次编译时确定最大行号宽度。 +% \begin{macrocode} +\cs_set_protected:Npn \HD@SetMacroIndent #1 + { + \group_begin: + \settowidth \MacroIndent + { + \@@_code_line_no_style: + \prg_replicate:nn { \tl_count:n {#1} } { 0 } + \enspace + } + \dim_gset_eq:NN \MacroIndent \MacroIndent + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\env{function} 环境} +% +% \begin{macro}{\@@_verb_addon:, +% \@@_disable_ecglue:, +% \@@_plain_punct_style:} +% \begin{macro}[int]{\meta@font@select} +% 调整文字间距,以便于让 CJK 字符占的宽度等于西文等宽字体中两个 +% 空格的宽度。需要按编译情况分别定义。 +% \begin{macrocode} +\sys_if_engine_xetex:TF + { + \cs_set_eq:NN \@@_verb_addon: \xeCJKVerbAddon + \cs_set:Nn \@@_plain_punct_style: + { \xeCJKsetup { PunctStyle = plain } } + \cs_set:Nn \@@_disable_ecglue: + { \xeCJKsetup { CJKecglue } } + \@@_appto_cmd:Nn \meta@font@select + { \mode_if_inner:T { \@@_disable_ecglue: } } + } + { + \cs_set_eq:NN \@@_verb_addon: \prg_do_nothing: + \cs_set_eq:NN \@@_plain_punct_style: \prg_do_nothing: + \cs_set:Nn \@@_disable_ecglue: + { \ltjsetparameter { autoxspacing = false } } + \@@_appto_cmd:Nn \meta@font@select + { \@@_disable_ecglue: } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{environment}{function} +% \begin{macro}{\@@_fix_previous_depth:} +% 调整 \env{function} 环境前后间距。 +% \begin{macrocode} +\BeforeBeginEnvironment { function } + { \par \nointerlineskip } +\AtEndEnvironment { function } + { + \par + \cs_gset:Nx \@@_fix_previous_depth: + { \prevdepth = \the \prevdepth \space } + } +\AfterEndEnvironment { function } + { \@@_fix_previous_depth: } +% \end{macrocode} +% \end{macro} +% \end{environment} +% +% \begin{environment}{syntax} +% \begin{environment}{fdusyntax} +% 在 \env{syntax} 和 \env{fdusyntax} 环境前设置若干活动字符。 +% \texttt{\textbar} 用于分隔多个选项,无需倾斜;|| 表示选项, +% |(xxx)| 表示默认选项。原来的括号用宏保存,并且使用直立字体。 +% \env{syntax} 环境另需要额外调整行距、标点样式及字符间距。 +% \begin{macrocode} +\AtBeginEnvironment { syntax } + { + \linespread { 1.2 } + \@@_plain_punct_style: + \@@_disable_ecglue: +% \char_set_catcode_active:N | +% \char_set_catcode_active:N ( +% \char_set_active_eq:NN | \orbar +% \char_set_active_eq:NN ( \defaultval@aux + } +\AtBeginEnvironment { fdusyntax } + { + \cs_set:Npn \lparen { \textup { ( } } + \cs_set:Npn \rparen { \textup { ) } } + \char_set_catcode_active:N | + \char_set_catcode_active:N < + \char_set_catcode_active:N ( + \char_set_active_eq:NN | \orbar + \char_set_active_eq:NN < \syntaxopt@aux + \char_set_active_eq:NN ( \defaultval@aux + } +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \subsubsection{修订记录索引项} +% +% \begin{macro}{\@@_ltx_changes:nnn} +% 保存 \pkg{doc} 中 \tn{changes@} 的定义。 +% \begin{macrocode} +\cs_new_eq:NN \@@_ltx_changes:nnn \changes@ +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\changes@} +% \changes{v0.4}{2017/07/30}{调整索引排序方式。} +% 重定义 \tn{changes@},在版本号一行显示修改日期。 +% \begin{macrocode} +\cs_set_protected:Npn \changes@ #1#2 + { + \@@_save_version_date:nn {#1} {#2} + \@@_ltx_changes:nnn {#1} {#2} + } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\g_@@_version_date_prop} +% 存放版本号与对应的修改日期。 +% key = 版本号,value = \{ 开始日期,结束日期 \}。 +% 开始日期与结束日期可以相同。 +% \begin{macrocode} +\prop_new:N \g_@@_version_date_prop +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_save_version_date:nn} +% |nn| 版本最终将被 \tn{changes@} 调用。 +% \begin{arguments} +% \item 版本号 +% \item 日期 +% \end{arguments} +% 它们分别对应 \tn{change} 的前两个参数(第三个是说明文字)。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_save_version_date:nn #1#2 + { + \prop_get:NnNTF \g_@@_version_date_prop + {#1} \l_@@_tmpa_tl + { +% \end{macrocode} +% \cs{l_@@_tmp_tl} 相当于两个参数(开始日期、结束日期), +% 因此需要提前展开。 +% \begin{macrocode} + \exp_after:wN + \@@_save_version_date_aux:nnnn \l_@@_tmpa_tl + {#2} {#1} + } + { \@@_save_version_date_aux:nnn {#1} {#2} {#2} } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_save_version_date_aux:nnnn} +% \begin{arguments} +% \item 原开始日期 +% \item 原结束日期(显然应有 |#1| < |#2|) +% \item 新读入的日期 +% \item 版本号 +% \end{arguments} +% 如果 |#3| < |#1|,则读入日期 |#3|、|#2|; +% 如果 |#3| > |#2|,则读入日期 |#1|、|#3|。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_save_version_date_aux:nnnn #1#2#3#4 + { + \@@_if_date_later:nnTF {#1} {#3} + { \@@_save_version_date_aux:nnn {#4} {#3} {#2} } + { + \@@_if_date_later:nnT {#3} {#2} + { \@@_save_version_date_aux:nnn {#4} {#1} {#3} } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_save_version_date_aux:nnn} +% 将版本号和日期存入 \cs{g_@@_version_date_prop}。 +% \begin{arguments} +% \item 版本号 +% \item 开始日期 +% \item 结束日期 +% \end{arguments} +% \begin{macrocode} +\cs_new_protected:Npn \@@_save_version_date_aux:nnn #1#2#3 + { \prop_gput:Nnn \g_@@_version_date_prop {#1} { {#2} {#3} } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[TF]{\@@_if_date_later:nn} +% \begin{macro}{\@@_parse_date:w} +% 比较两个日期。如果 |#1| 在 |#2| 之后,则为 |true|;反之为 |false|。 +% 日期的格式为 YYYY/MM/DD。比较方法是直接将日期化成 8 位数字, +% 所以月、日前的 0 不可以省略。 +% \begin{macrocode} +\prg_new_conditional:Npnn \@@_if_date_later:nn #1#2 { TF, T } + { + \if_int_compare:w + \@@_parse_date:w #1 / / / 0 \q_stop > + \@@_parse_date:w #2 / / / 0 \q_stop \exp_stop_f: + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new:Npn \@@_parse_date:w #1/#2/#3/ #4 \q_stop + { #1#2#3 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}[int]{\CTEX@versionitem} +% 版本条目标签。如果版本号不在 \cs{g_@@_version_date_prop} 的 +% key 里面,则利用未定义的 \cs{BOOM} 报错。 +% \begin{macrocode} +\cs_new_protected:Npn \CTEX@versionitem #1 \efill + { + \@idxitem + \prop_get:NnNTF \g_@@_version_date_prop + {#1} \l_@@_tmpa_tl + { + \exp_after:wN + \@@_print_version_date:nnn \l_@@_tmpa_tl + {#1} + } + { \BOOM } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_print_version_date:nnn} +% 输出版本号和日期。如果开始日期和结束日期相同,则只输出一项。 +% \begin{arguments} +% \item 开始日期 +% \item 结束日期 +% \item 版本号 +% \end{arguments} +% \begin{macrocode} +\cs_new_protected:Npn \@@_print_version_date:nnn #1#2#3 + { + \noindent + \Hy@raisedlink { \belowpdfbookmark {#3} { HD.#3 } } + \textbf {#3} \hfill + \hbox:n + { + \footnotesize + \str_if_eq:nnTF {#1} {#2} + { ( #1 ) } { ( #1 ~ -- ~ #2 ) } + } + \par \nopagebreak + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\HDorg@theglossary} +% 该命令由 \pkg{hypdoc} 宏包定义,用于存放标准文档类 \cls{book} +% 中定义的 \tn{theindex} 命令。 +% 此处的补丁将在版本号一行最后加上修改日期。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \HDorg@theglossary + { \let \item \@idxitem } + { \let \item \CTEX@versionitem } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@wrglossary} +% 该命令由 \LaTeXe{} 内核定义,又由 \pkg{hypdoc} 宏包作了修改。 +% 此处的补丁使得修订记录条目的页码能够指向对应行。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \@wrglossary + { hdpindex } + { + \ifnum \c@HD@hypercount = \z@ + hdpindex + \else + hdclindex { \the \c@HD@hypercount } + \fi + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{命令补丁} +% +% \paragraph{\LaTeXe{} 补丁} +% +% \begin{macro}[int]{\@addtocurcol} +% 调整浮动体、代码等与文字的间距。 +% 见 \url{http://tex.stackexchange.com/a/40896}。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \@addtocurcol + { \vskip \intextsep } + { + \edef \save@first@penalty { \the \lastpenalty } \unpenalty + \ifnum \lastpenalty = \@M + \unpenalty + \else + \penalty \save@first@penalty \relax + \fi + \ifnum \outputpenalty < -\@Mii + \addvspace\intextsep + \vskip\parskip + \else + \addvspace\intextsep + \fi + } +\ctex_patch_cmd:Nnn \@addtocurcol + { + \vskip \intextsep + \ifnum \outputpenalty < -\@Mii + \vskip -\parskip + \fi + } + { + \ifnum \outputpenalty < -\@Mii + \aftergroup \vskip \aftergroup \intextsep + \aftergroup \nointerlineskip + \else + \vskip \intextsep + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@getpen} +% 将换行或换页的最大罚值由 \num{10000} 改为 \num{10001}。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \@getpen { \@M } { \@Mi } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\l@section,\l@subsection} +% 修改目录条目的缩进。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \l@section { 2.5em } { 1.5em } +\ctex_patch_cmd:Nnn \l@subsection { 2.5em } { 1.5em } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@thehead} +% 修改页眉,禁用 \tn{MakeUppercase}。 +% \begin{macrocode} +\@@_preto_cmd:Nn \@thehead + { \cs_set_eq:cN { MakeUppercase \space } \@iden } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\thebibliography} +% \begin{macro}[int]{\HDorg@thebibliography} +% 参考文献一节需要编号。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \HDorg@thebibliography + { \section* } { \section } +\cs_set_eq:NN \thebibliography \HDorg@thebibliography +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\GlossaryParms} +% 修改修订记录中的一些缩进。 +% \begin{macrocode} +\@@_appto_cmd:Nn \GlossaryParms + { + \raggedcolumns + \cs_set_eq:NN \Hy@writebookmark \HDorg@writebookmark + \cs_set:Npn \@idxitem { \par \hangindent 2em } + \cs_set:Npn \subitem { \@idxitem \hspace* { 1em } } + \cs_set:Npn \subsubitem { \@idxitem \hspace* { 2em } } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\HoLogo@LaTeXe} +% 由于使用了 \pkg{unicode-math},需要额外修改 \pkg{hologo} 中的 +% \tn{LaTeXe} 命令,以使粗体正常显示。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \HoLogo@LaTeXe + { \hbox { \HOLOGO@MathSetup 2 $ _{ \textstyle \varepsilon } $ } } + { + \hbox + { + \mathsurround 0pt \relax + 2 + \if b \expandafter \@car \f@series \@nil + $ _{ \textstyle \symbf { \varepsilon } } $ + \else + $ _{ \textstyle \varepsilon } $ + \fi + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\SpecialMainEnvIndex} +% 索引汉化。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \SpecialMainEnvIndex + { (environment) } { ~ 环境 } +\ctex_patch_cmd:Nnn \SpecialMainEnvIndex + { environments: } { 环境: } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\HDorg@SpecialEnvIndex} +% \pkg{hypdoc} 宏包重新定义了 \tn{SpecialEnvIndex} 命令,因此需要 +% 修改内部定义。 +% \begin{macrocode} +\ctex_patch_cmd:Nnn \HDorg@SpecialEnvIndex + { (environment) } { ~ 环境 } +\ctex_patch_cmd:Nnn \HDorg@SpecialEnvIndex + { environments: } { 环境: } +% \end{macrocode} +% \end{macro} +% +% \paragraph{\cls{l3doc} 补丁} +% +% \begin{macrocode} +%<@@=codedoc> +% \end{macrocode} +% +% \begin{macro}{\list} +% \cls{l3doc} 会设置列表环境中 \tn{listparindent} |=| \tn{z@}, +% 这里将其恢复。 +% \begin{macrocode} +\cs_set_eq:NN \list \@@_oldlist:nn +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_function_descr_start:w} +% 抑制首段的 \tn{parskip}。 +% \begin{macrocode} +\__fdudoc_patch_cmd:Nnn \@@_function_descr_start:w + { \noindent } + { \skip_vertical:n { -\parskip } \noindent } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_function_assemble:} +% 在 \cls{l3doc} 中,\env{function} 环境里的 \env{syntax} 和 +% \env{descr} 盒子中间存在一段 \tn{med\-skip\-amount} 的距离。 +% 但是如果 \env{syntax} 盒子为空(未使用 \env{syntax} 环境), +% 就会显得不好看。此时通过把 \tn{medskipamount} 设置为零来修正。 +% 若盒子非空,则把 \tn{parskip} 还回去。 +% \begin{macrocode} +\__fdudoc_preto_cmd:Nn \@@_function_assemble: + { + \box_if_empty:NTF \g_@@_syntax_box + { \skip_zero:N \medskipamount } + { \skip_add:Nn \medskipamount { \parskip } } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_typeset_functions:} +% 调整 \env{function} 环境的字体。 +% \begin{macrocode} +\__fdudoc_patch_cmd:Nnn \@@_typeset_functions: + { \small \ttfamily } { \footnotesize \ttfamily } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_typeset_functions:,\@@_macro_init:, +% \@@_macro_dump:} +% 左侧边注的函数列表采用单倍行距。 +% \begin{macrocode} +\__fdudoc_preto_cmd:Nn \@@_typeset_functions: + { \MacroFont } +\__fdudoc_patch_cmd:Nnn \@@_macro_init: + { \hbox:n } { \MacroFont \hbox:n } +\__fdudoc_patch_cmd:Nnn \@@_macro_dump: + { \hbox_unpack_drop:N } { \MacroFont \hbox_unpack_drop:N } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_meta_original:n} +% 改用文本模式显示尖括号。 +% \begin{macrocode} +\__fdudoc_patch_cmd:Nnn \@@_meta_original:n + { \ensuremath \langle } { \textlangle } +\__fdudoc_patch_cmd:Nnn \@@_meta_original:n + { \ensuremath \rangle } { \textrangle } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_macro_end_style:n} +% 禁止显示 \env{macro} 环境最后的 “(\emph{End definition for ...})”。 +% \begin{macrocode} +\cs_set_eq:NN \@@_macro_end_style:n \use_none:n +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_typeset_TF:} +% 关闭 |TF| 上的超链接,并且保证颜色与函数主体一致。 +% \begin{macrocode} +\cs_set_protected:Npn \@@_typeset_TF: + { + \group_begin: + \exp_args:No \@@_if_macro_internal:nT \l_@@_tmpa_tl + { \color [ gray ] { 0.5 } } + \itshape TF + \makebox [ 0 pt ] [ r ] + { + \color { red } + \underline { \phantom { \itshape TF } \kern -0.1 em } + } + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_macro_typeset_one:nN} +% 在 \env{macro} 环境的侧边栏中,\cls{l3doc} 根据命令的长短,分别用 +% 普通字体和紧缩字体输出。然而很长的命令还是会超出页边。这里用缩放 +% 盒子的手段使得长命令也可正常显示。 +% \begin{macrocode} +\cs_set_protected:Npn \@@_macro_typeset_one:nN #1#2 + { + \vbox_set:Nn \l_@@_macro_box + { + \MacroFont + \vbox_unpack_drop:N \l_@@_macro_box + \hbox_set:Nn \l_tmpa_box + { \@@_print_macroname:nN {#1} #2 } +% \end{macrocode} +% \tn{marginparwidth} 和 \tn{marginparsep} 分别是边注的宽度及其到 +% 版心的距离,\tn{la\-bel\-sep} 则是编号盒子右端与条目首行文本之间 +% 的距离。 +% \begin{macrocode} + \dim_set:Nn \l_tmpa_dim + { \marginparwidth - \labelsep - \marginparsep } + \dim_compare:nNnT { \box_wd:N \l_tmpa_box } > \l_tmpa_dim + { + \box_resize_to_wd_and_ht:Nnn \l_tmpa_box + { \l_tmpa_dim } { \box_ht:N \l_tmpa_box } + } + \hbox_overlap_left:n + { + \box_use:N \l_tmpa_box + \skip_horizontal:n { \marginparsep - \labelsep } + } + } + \int_incr:N \l_@@_macro_int + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_print_macroname:nN} +% 该函数不再需要根据命令的长短切换字体。 +% \begin{macrocode} +\cs_set_protected:Npn \@@_print_macroname:nN #1#2 + { + \strut + \@@_get_hyper_target:xN + { + \exp_not:n {#1} + \bool_if:NT #2 { \tl_to_str:n {TF} } + } + \l_@@_tmpa_tl + \cs_if_exist:cTF { r@ \l_@@_tmpa_tl } + { \exp_args:NNo \label@hyperref [ \l_@@_tmpa_tl ] } + { \use:n } + { + \tl_set:Nn \l_@@_tmpa_tl {#1} +% \end{macrocode} +% 命令中的空格改用“\textvisiblespace”显示。 +% \begin{macrocode} + \tl_replace_all:Non \l_@@_tmpa_tl + { \c_catcode_other_space_tl } + { \fontspec_visible_space: } + \@@_macroname_prefix:o \l_@@_tmpa_tl + \@@_macroname_suffix:N #2 + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_special_index_module:nnnnN} +% 索引汉化。 +% \begin{macrocode} +\cs_set_protected:Npn \@@_special_index_module:nnnnN #1#2#3#4#5 + { + \use:x + { + \exp_not:n { \@@_special_index_aux:nnnnnnn {#1} {#2} } + \tl_if_empty:nTF {#3} + { { } { } { } { } } + { + \str_if_eq:eeTF {#3} { TeX } + { + { TeX~ and~ LaTeX2e } + { \string \TeX{}~ 和~ \string \LaTeXe{} } + } + { {#3} { \string \pkg {#3} } } + \bool_if:NTF #5 + { { commands~ internal } { ~ 内部命令: } } + { { commands } { ~ 命令: } } + } + } + {#4} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_special_index_aux:nnnnnnn} +% 该函数在 \cls{l3doc} 中本来只有 6 个参数。这里增加了一个,用来辅助 +% 排序。 +% \begin{arguments} +% \item 键(即宏名称字符串,用来排序) +% \item 宏名称 +% \item 索引头排序字符串(排序) +% \item 索引头文字 +% \item 索引头后缀字符串(排序,新增) +% \item 索引头后缀文字 +% \item 索引类型(\opt{main}/\opt{usage} 等) +% \end{arguments} +% \begin{macrocode} +\cs_new_protected:Npn \@@_special_index_aux:nnnnnnn #1#2#3#4#5#6#7 + { + \tl_set:Nn \l_@@_index_escaped_key_tl {#1} + \@@_quote_special_char:N \l_@@_index_escaped_key_tl + \@@_special_index_set:Nn + \l_@@_index_escaped_macro_tl {#2} + \str_if_eq:onTF { \@currenvir } { macrocode } + { \codeline@wrindex } + { + \str_case:nnF {#7} + { + { main } { \codeline@wrindex } + { usage } { \index } + } + { \HD@target \index } + } + { + \tl_if_empty:nF { #3 #4 #5 #6 } + { #3 #5 \actualchar #4 #6 \levelchar } + \l_@@_index_escaped_key_tl + \actualchar + { + \token_to_str:N \verbatim@font \c_space_tl + \l_@@_index_escaped_macro_tl + } + \encapchar + hdclindex { \the \c@HD@hypercount } {#7} + } + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{杂项} +% +% \begin{macro}{\StopSpecialIndexModule, +% \@@_special_index_module:nnnnN} +% 不对 \cs{cs} 和 \cs{tn} 等编索引。用于目录、索引等。 +% \begin{macrocode} +\DeclareDocumentCommand \StopSpecialIndexModule { } + { + \cs_set_eq:NN + \@@_special_index_module:nnnnN \use_none:nnnnn + } +\tl_map_inline:nn { \actualchar \encapchar \levelchar } + { \exp_args:Nx \DoNotIndex { \bslash \tl_to_str:N #1 } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\meta} +% 重定义 \cs{meta} 命令,需要禁用中文、西文之间的空格。 +% \begin{macrocode} +\RenewDocumentCommand \meta { m } + { + \group_begin: + \sys_if_engine_xetex:T { \xeCJKsetup { CJKecglue = { } } } + \@@_meta:n {#1} + \group_end: + } +% \end{macrocode} +% \end{macro} +% +% 重定向 \cls{l3doc} 中的一些提示信息。 +% \begin{macrocode} +\msg_redirect_name:nnn { l3doc } { foreign-internal } { log } +\msg_redirect_name:nnn { l3doc } { print-changes-howto } { log } +\msg_redirect_name:nnn { l3doc } { print-index-howto } { log } +% \end{macrocode} +% +% \begin{macrocode} +%<@@=> +\ExplSyntaxOff +% \end{macrocode} +% +% \subsubsection{排版样式设置} +% +% 目录中禁止对 \cs{cs} 和 \cs{tn} 等的索引。 +% \begin{macrocode} +\AtBeginDocument{% + \addtocontents{toc}{\StopSpecialIndexModule}} +% \end{macrocode} +% +% 设置 PDF 字符串中的命令替换。 +% \begin{macrocode} +\pdfstringdefDisableCommands{% + \let\path\meta + \let\opt\@firstofone} +% \end{macrocode} +% +% \begin{macro}[int]{\@multitoc@starttoc,\@starttoc} +% 目录分栏,相当于调用 \pkg{multitoc} 宏包。 +% \begin{macrocode} +\let\@multitoc@starttoc\@starttoc +\renewcommand*\@starttoc[1]{% + \begin{multicols}{2}% + \@multitoc@starttoc{#1}% + \end{multicols}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\@makefntext} +% 调整脚注文本缩进。 +% \begin{macrocode} +\renewcommand\@makefntext[1]{\parindent 0em\noindent\@makefnmark~#1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\IndexLayout,\indexname} +% 调整索引外观。 +% \begin{macrocode} +\IndexPrologue{% + \section{\indexname}% + \textit{意大利体的数字表示对应索引项出现的页码; + 带下划线的数字表示定义对应索引项的代码行号; + 其他则表示使用对应索引项的代码行号.}} +\def\IndexLayout{% + \newgeometry{% + left = 0.85 in, + right = 0.85 in, + top = 1.25 in, + bottom = 1.00 in}% + \setlength\IndexMin{0.5\textheight}% + \ctexset{section/numbering=false}% + \StopSpecialIndexModule} +\def\indexname{代码索引} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\usage} +% 控制“描述对应索引项的页码”样式。在 \pkg{doc} 宏包中的定义为 +% \tn{textit}。 +% \begin{macrocode} +% \def\usage#1{\textsf{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\glossaryname} +% 调整修订记录外观。 +% \begin{macrocode} +\GlossaryPrologue{\section{\glossaryname}} +\def\glossaryname{修订记录} +% \end{macrocode} +% \end{macro} +% +% \changes{v0.7c}{2019/02/08}{修改宏包手册主要字体。} +% +% 西文字体。为兼容 macOS,系统字体需使用字体名,而 \TeXLive{} +% 中的字体需使用文件名。 +% \begin{macrocode} +\setmainfont{libertinusserif}[% + Extension = .otf, + UprightFont = *-regular, + BoldFont = *-bold, + ItalicFont = *-italic, + BoldItalicFont = *-bolditalic, + Scale = 1.1] +\setsansfont{IBMPlexSansCondensed}[% + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-Bold, + ItalicFont = *-Italic, + BoldItalicFont = *-BoldItalic] +\setmonofont{Iosevka Slab}[% + UprightFont = * Light, + BoldFont = * Semibold, + Scale = MatchLowercase] +\setmathfont{libertinusmath-regular.otf} +% \end{macrocode} +% +% 中文字体。 +% \begin{macrocode} +\setCJKmainfont{Source Han Serif SC}[% + ItalicFont = FZKai-Z03, + RawFeature = +fwid] +\setCJKsansfont{Source Han Sans SC}[% + ItalicFont = *, + RawFeature = +fwid] +\setCJKmonofont{Source Han Sans SC}[% + UprightFont = * Normal, + BoldFont = * Bold, + AutoFakeSlant = 0.1763, % = tan(10 deg) + Scale = 0.8903, + RawFeature = +fwid] +% \end{macrocode} +% +% 版式排版格式。 +% \begin{macrocode} +\ctexset{% + section/name = {第,节}, + section/format+ = \raggedright, + paragraph/runin = false, + paragraph/numbering = false, + punct = kaiming} +\setcounter{secnumdepth}{4} +\setcounter{tocdepth}{3} +\pagestyle{plain} +% \end{macrocode} +% +% 单位设置(\pkg{siunitx} 宏包)。 +% \begin{macrocode} +\sisetup{% + number-math-rm = \ensuremath, + inter-unit-product = \ensuremath{{}\cdot{}}, + group-digits = true, + group-minimum-digits = 4, + group-separator = \text{~}, + range-phrase = \symbol{"FF5E}, + separate-uncertainty = true} +% \end{macrocode} +% +% 超链接设置(\pkg{hyperref} 宏包)。 +% \begin{macrocode} +\hypersetup{% + bookmarksdepth = 4, + bookmarksnumbered = true, + colorlinks = true, + citecolor = MaterialGreen, + linkcolor = MaterialPink, + urlcolor = MaterialIndigo} +% \end{macrocode} +% +% 浮动体标题设置(\pkg{caption} 宏包)。 +% \begin{macrocode} +\captionsetup{labelsep = quad, labelfont+ = bf} +% \end{macrocode} +% +% 设置标准列表环境样式。 +% \begin{macrocode} +\setlist{noitemsep, topsep=\smallskipamount} +\setlist[1]{labelindent=\parindent} +\setlist[enumerate]{leftmargin=*} +\setlist[itemize]{leftmargin=*} +% \end{macrocode} +% +% \begin{environment}{optdesc} +% 用于描述各选项。设置条目间距为 \tn{marginparsep},与 +% \cls{l3doc} 一致。 +% \begin{macrocode} +\newlist{optdesc}{description}{3} +\setlist[optdesc]{% + font=\mdseries\small\ttfamily, align=right, + listparindent=\parindent, + labelsep=\marginparsep, labelindent=-\marginparsep, + leftmargin=*} +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{tablenotes} +% \begin{variable}{tpt@id} +% 重新定义 \pkg{threeparttable} 包的 \env{tablenotes} 环境, +% 用于表格的注释。 +% \begin{macrocode} +\renewlist{tablenotes}{description}{1} +\setlist[tablenotes]{% + format=\normalfont\tnote@item, align=right, + listparindent=\parindent, labelindent=\tabcolsep, + leftmargin=*, rightmargin=\tabcolsep, + after=\@noparlisttrue} +\AtBeginEnvironment{tablenotes}{% + \setlength\parindent{2\ccwd}% + \normalfont\footnotesize} +\AtBeginEnvironment{threeparttable}{% + \stepcounter{tpt@id}% + \edef\curr@tpt@id{tpt@\arabic{tpt@id}}} +\newcounter{tpt@id} +% \end{macrocode} +% \end{variable} +% \end{environment} +% +% \begin{macro}[int]{\tnote@item,\TPTtagStyle} +% 为 \tn{tnote} 增加超链接。 +% \begin{macrocode} +\def\tnote@item#1{% + \Hy@raisedlink{\hyper@anchor{\curr@tpt@id-#1}}#1} +\def\TPTtagStyle#1{\hyperlink{\curr@tpt@id-#1}{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\UrlAlphabet,\UrlDigits} +% 网址断行。\tn{UrlOrds}、\tn{UrlAlphabet} 和 \tn{UrlDigits} +% 分别记录了特殊符号、字母和数字,把它们依次附加在 \pkg{url} 宏包 +% 提供的命令 \tn{UrlBreaks} 之后,即可允许在这些位置处断行。与 +% \cs{fdu_allow_url_break:} 的原理是相同的。 +% \begin{macrocode} +\def\UrlAlphabet{% + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j% + \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t% + \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D% + \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N% + \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X% + \do\Y\do\Z} +\def\UrlDigits{% + \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} +\g@addto@macro\UrlBreaks{\UrlOrds} +\g@addto@macro\UrlBreaks{\UrlAlphabet} +\g@addto@macro\UrlBreaks{\UrlDigits} +% \end{macrocode} +% \end{macro} +% +% 不对下列各项添加索引。 +% \begin{macrocode} +\DoNotIndex{\begin,\end, + \a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m, + \n,\o,\p,\q,\r,\s,\t,\u,\v,\w,\x,\y,\z, + \A,\B,\C,\D,\E,\F,\G,\H,\I,\J,\K,\L,\M, + \N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z, + \0,\1,\2,\3,\4,\5,\6,\7,\8,\9} +% \end{macrocode} +% +% 启用索引、交叉引用、历史记录。 +% \begin{macrocode} +\EnableCrossrefs +\CodelineIndex +\RecordChanges +% \end{macrocode} +% +% \subsubsection{文档层命令} +% +% \begin{macro}{\exptarget,\rexptarget,\expstar,\rexpstar, +% \__codedoc_typeset_exp:,\__codedoc_typeset_rexp:} +% 部分命令之后的特殊符号($\symbol{"263A}$ 或 $\symbol{"263B}$),表明其不同用法。 +% 这里的“exp”和“rexp”分别源自 \LaTeX3 中的“expandable” +% 和“restricted-expandable”。 +% \begin{macrocode} +\newcommand*\exptarget{\Hy@raisedlink{\hypertarget{expstar}{}}} +\newcommand*\rexptarget{\Hy@raisedlink{\hypertarget{rexpstar}{}}} +\newcommand*\expstar{\hyperlink{expstar}{$\symbol{"263B}$}} +\newcommand*\rexpstar{\hyperlink{rexpstar}{$\symbol{"263A}$}} +\ExplSyntaxOn +\cs_set_eq:NN \__codedoc_typeset_exp: \expstar +\cs_set_eq:NN \__codedoc_typeset_rexp: \rexpstar +\ExplSyntaxOff +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\marg,\oarg,\parg} +% 几种命令参数: +% \begin{itemize} +% \item 必选参数:|{|\meta{arg}|}|; +% \item 可选参数:|[|\meta{arg}|]|; +% \item 图形参数:|(|\meta{arg}|)|。 +% \end{itemize} +% \begin{macrocode} +\renewcommand*\marg[1]{\{\meta{#1}\}} +\renewcommand*\oarg[1]{[\meta{#1}]} +\renewcommand*\parg[1]{(\meta{#1})} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\opt} +% 选项名。 +% \begin{macrocode} +\DeclareDocumentCommand\opt{m}{\texttt{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\kvopt} +% \meta{key} |=| \meta{value} 型选项。 +% \begin{macrocode} +\DeclareDocumentCommand\kvopt{mm} + {\texttt{#1\breakablethinspace=\breakablethinspace#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\breakablethinspace} +% 允许换行的细间距。 +% \begin{macrocode} +\def\breakablethinspace{\hskip 0.16667em\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\syntaxopt,\defaultval} +% \begin{macro}[int]{\syntaxopt@aux,\defaultval@aux} +% \env{syntax} 中的选项及命令选项。 +% |aux| 结尾的两个命令用于定义利用 |<>| 和 |()| 的简写形式。 +% \begin{macrocode} +\def\syntaxopt#1{\textit{#1}} +\def\defaultval#1{\textbf{\textup{#1}}} +\def\syntaxopt@aux#1>{\syntaxopt{#1}} +\def\defaultval@aux#1){\defaultval{#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\orbar,\TF,\TTF,\TFF} +% \env{syntax} 中的选项分隔符,以及 \opt{true} 或 \opt{false} +% 选项的几种快捷方式。 +% \begin{macrocode} +\def\orbar{\textup{\textbar}} +\def\TF{true\orbar false} +\def\TTF{\defaultval{true}\orbar false} +\def\TFF{true\orbar\defaultval{false}} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{arguments} +% 放在 \env{macro} 环境中,用于描述对应命令的参数。 +% \cls{l3doc} 中的定义 \opt{labelsep} 设置不太合理,会使标签被覆盖, +% 这里重新定义。 +% \begin{macrocode} +\DeclareDocumentEnvironment{arguments}{} + {\enumerate[% + label={\texttt{\#\arabic*:~}}, labelsep=0pt, nolistsep]}% + {\endenumerate} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\TeX,\LaTeX,\LaTeXe, +% \pdfTeX,\pdfLaTeX,\XeTeX,\XeLaTeX,\LuaTeX,\LuaLaTeX, +% \AmSLaTeX,\TeXLive,\MiKTeX,\BibTeX,\biber,\TikZ} +% \TeX{} 相关标志。 +% \begin{macrocode} +\def\TeX{\hologo{TeX}} +\def\LaTeX{\hologo{LaTeX}} +\def\LaTeXe{\hologo{LaTeXe}} +\def\pdfTeX{\hologo{pdfTeX}} +\def\pdfLaTeX{\hologo{pdfLaTeX}} +\def\XeTeX{\hologo{XeTeX}} +\def\XeLaTeX{\hologo{XeLaTeX}} +\def\LuaTeX{\hologo{LuaTeX}} +\def\LuaLaTeX{\hologo{LuaLaTeX}} +\def\AmSLaTeX{\hologo{AmSLaTeX}} +\def\TeXLive{\TeX\ Live} +\def\MiKTeX{\hologo{MiKTeX}} +\def\BibTeX{\hologo{BibTeX}} +\def\BibTeX{\hologo{BibTeX}} +\def\biber{\hologo{biber}} +% \end{macrocode} +% 该定义来自 \file{pgfmanual-en-macros.tex}。 +% \begin{macrocode} +\def\TikZ{Ti\emph{k}Z} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cs,\tn} +% \begin{macro}[int]{\codedoc@cs,\codedoc@tn} +% 控制序列。 +%^^A Colors are used for debug. +% \begin{macrocode} +% \let\codedoc@cs=\cs +% \let\codedoc@tn=\tn +% \renewcommand*\cs[2][]{% +% \textcolor{MaterialIndigo}{\codedoc@cs[#1]{#2}}} +% \renewcommand*\tn[2][]{% +% \textcolor{MaterialPink}{\codedoc@tn[#1]{#2}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\file,\env,\pkg,\cls} +% 文件、环境、宏包、文档类。 +% \begin{macrocode} +% \renewcommand*\file[1]{% +% \textcolor{MaterialGrey900}{\texttt{#1}}} +\renewcommand*\env[1]{\textbf{\texttt{#1}}} +% \renewcommand*\pkg[1]{\textsf{#1}} +% \renewcommand*\cls[1]{\textit{\textsf{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bashcmd} +% Bash 中的命令。 +% \begin{macrocode} +\newcommand*\bashcmd[1]{\texttt{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\scite} +% 位于上标的文献引用。 +% \begin{macrocode} +\newcommand*\scite[1]{\textsuperscript{\cite{#1}}} +% \end{macrocode} +% \end{macro} +% +% \paragraph{示例代码环境} +% +% \pkg{listings} 宏包中连字符 |-| 原本以数学模式输出,此处改为普通文本。 +% 见 \url{https://tex.stackexchange.com/a/33188}。 +% \begin{macrocode} +\lst@CCPutMacro\lst@ProcessOther {"2D}{\lst@ttfamily{-{}}{-{}}} +\@empty\z@\@empty +% \end{macrocode} +% +% \changes{v0.5}{2017/09/05}{[\pkg{fdudoc}] 移除 \pkg{listings} +% 关键字定义文件。} +% +% 定义几种代码样式。 +% \begin{macro}[int]{style@base} +% \begin{macrocode} +\lstdefinestyle{style@base} + { + basewidth = 0.5 em, + gobble = 3, + lineskip = 2 pt, + frame = l, + framerule = 1 pt, + framesep = 0 pt, + escapeinside = {(*}{*)}, + basicstyle = \small\ttfamily\color{MaterialGrey900}, + keywordstyle = \bfseries\color{MaterialIndigo}, + commentstyle = \itshape\color{MaterialGrey600}, + stringstyle = \color{MaterialRed}, + backgroundcolor = \color{MaterialGrey50} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{style@shell} +% \begin{macrocode} +\lstdefinestyle{style@shell} + { + style = style@base, + rulecolor = \color{MaterialPink}, + language = bash, + alsoletter = {-}, + emphstyle = \color{MaterialGreen800} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{style@latex} +% \begin{macrocode} +\lstdefinestyle{style@latex} + { + style = style@base, + rulecolor = \color{MaterialIndigo}, + language = [LaTeX]TeX, + alsoletter = {*, -}, + texcsstyle = *\color{MaterialDeepOrange}, + emphstyle = [1]\color{MaterialGreen800}, + emphstyle = [2]\color{MaterialTeal} + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{style@syntax} +% \begin{macrocode} +\lstdefinestyle{style@syntax} + { + basewidth = 0.5 em, + gobble = 6, + escapeinside = {(*}{*)}, + language = [LaTeX]TeX, + alsoletter = {*, -}, + basicstyle = \footnotesize\ttfamily\color{MaterialGrey900}, + keywordstyle = \bfseries\color{MaterialIndigo}, + commentstyle = \itshape\color{MaterialGrey600}, + texcsstyle = *\color{MaterialDeepOrange}, + emphstyle = [1]\color{MaterialGreen800}, + emphstyle = [2]\color{MaterialTeal} + } +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{shellexample} +% \begin{environment}{latexexample} +% Shell 和 \LaTeX{} 示例代码。 +% \begin{macrocode} +\lstnewenvironment{shellexample}[1][]{% + \lstset{style=style@shell, #1}}{} +\lstnewenvironment{latexexample}[1][]{% + \lstset{style=style@latex, #1}}{} +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \begin{environment}{fdusyntax} +% 语法说明。用于代替 \cls{l3doc} 中的 \env{syntax} 环境。 +% \begin{macrocode} +\lstnewenvironment{fdusyntax}[1][]{% + \lstset{style=style@syntax, #1}\vspace{-1.8ex}}{} +% +% \end{macrocode} +% \end{environment} +% +% \changes{v0.7c}{2019/03/15}{不再附带 \pkg{latexmk} 配置文件。} +% +% \clearpage +% +% \end{implementation} +% diff --git a/macros/latex/contrib/fduthesis/fduthesis-en.pdf b/macros/latex/contrib/fduthesis/fduthesis-en.pdf new file mode 100644 index 0000000000..abbd146003 Binary files /dev/null and b/macros/latex/contrib/fduthesis/fduthesis-en.pdf differ diff --git a/macros/latex/contrib/fduthesis/fduthesis-logo.dtx b/macros/latex/contrib/fduthesis/fduthesis-logo.dtx new file mode 100644 index 0000000000..46edb6afca --- /dev/null +++ b/macros/latex/contrib/fduthesis/fduthesis-logo.dtx @@ -0,0 +1,3537 @@ +% \iffalse meta-comment +% +% Copyright (C) 2017--2019 by Xiangdong Zeng +% +% 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. +% +% \fi +% +% \EnableImplementation +% +% \begin{implementation} +% +%^^A 代码部分的页边距 +% \newgeometry{ +% left = 2.25 in, +% right = 1.00 in, +% top = 1.25 in, +% bottom = 1.00 in, +% marginpar = 2.25 in +% } +% +% \subsection{视觉识别系统 \pkg{fdulogo}} +% +% \changes{v0.5}{2017/08/30}{将视觉识别系统移入 \pkg{fdulogo} +% 宏包,并添加重修版校徽。} +% +% 本宏包附属于 \cls{fduthesis},利用 \TikZ{} 宏包绘制复旦大学 +% 校名、校徽与校训,并提供标准色以供参考。 +% +% \begin{macrocode} +%<@@=fdulogo> +%<*logo> +\RequirePackage { luatex85 } +\RequirePackage { xcolor, tikz } +\RequirePackage { xparse } +% \end{macrocode} +% +% \subsubsection{用户接口} +% +% \begin{macro}{\fduname} +% 复旦大学校名(復旦大學),由毛泽东题写。原始图片来源: +% \url{http://www.fudan.edu.cn/2016/channels/view/74/}。 +% \begin{macrocode} +%\NewDocumentCommand \fduname { O { } } +% { \@@_tikz:nx { \fdulogo@name } { \c_@@_default_arg_tl, #1 } } +% + new +% - original +\NewDocumentCommand \fduname { t+ t- O { } } + { + \@@_tikz:nx + { + \IfBooleanTF {#1} + { \fdulogo@name@new } + { + \IfBooleanTF {#2} + { \fdulogo@name@original } { \fdulogo@name } + } + } + { \c_@@_default_arg_tl, #3 } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fduemblem} +% 复旦大学校徽。第一个可选参数(加号)用于选择是否使用重修版本 +% 的图案,第二个(星号)用于选择是否选用阴文图案。原始图片来源: +% \url{http://www.fudan.edu.cn/2016/channels/view/74/}。 +% 重修版本的核心图案来自江湾永久校址奠基石(来源: +% \url{http://www.fda.fudan.edu.cn/zphc/list.htm}),字体使用 +% FreeSerif Bold。 +% \begin{macrocode} +\NewDocumentCommand \fduemblem { t+ s O { } } + { + \@@_tikz:nx + { + \IfBooleanTF {#1} + { + \IfBooleanTF {#2} + { \fdulogo@emblem@new@reversed } { \fdulogo@emblem@new } + } + { + \IfBooleanTF {#2} + { \fdulogo@emblem@reversed } { \fdulogo@emblem } + } + } + { \c_@@_default_arg_tl, #3 } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\fdumotto} +% 复旦大学校训:博學而篤志,切問而近思(简体:博学而笃志, +% 切问而近思),由马相伯题写。原始图片来源: +% \url{http://www.fudan.edu.cn/2016/channels/view/74/}。 +% \begin{macrocode} +\NewDocumentCommand \fdumotto { O { } } + { \@@_tikz:nx { \fdulogo@motto } { \c_@@_default_arg_tl, #1 } } +% \end{macrocode} +% \end{macro} +% +% \begin{variable}{\c_@@_default_arg_tl} +% 默认参数。 +% \begin{macrocode} +\tl_const:Nn \c_@@_default_arg_tl { x = 1 pt, y = 1 pt } +% \end{macrocode} +% \end{variable} +% +% \begin{macro}{\@@_tikz:nn,\@@_tikz:nx} +% 对 \env{tikzpicture} 环境的封装。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_tikz:nn #1#2 + { + \begin{tikzpicture} [#2] + #1 + \end{tikzpicture} + } +\cs_generate_variant:Nn \@@_tikz:nn { nx } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{FudanBlue,FudanRed} +% 标准色(复旦蓝、复旦红)。 +% \begin{macrocode} +\definecolor { FudanBlue } { HTML } { 0E419C } +\definecolor { FudanRed } { HTML } { C80000 } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{MaterialGrey} +% Google Material 颜色系列。 +% \begin{macrocode} +\definecolor { MaterialGrey } { HTML } { 9E9E9E } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{内部命令} +% +% \begin{macrocode} +%<@@=> +\ExplSyntaxOff +% \end{macrocode} +% +% \begin{macro}[int]{\fdulogo@name, +% \fdulogo@name@original, +% \fdulogo@name@new} +% 各版本校名。 +% \begin{macrocode} +\def\fdulogo@name{% + \fill \fdulogo@name@fu + \fdulogo@name@dan + \fdulogo@name@da + \fdulogo@name@xue;} +\def\fdulogo@name@original{% + \fill \fdulogo@name@original@fu + \fdulogo@name@original@dan + \fdulogo@name@original@da + \fdulogo@name@original@xue;} +\def\fdulogo@name@new{% + \fill \fdulogo@name@new@fu + \fdulogo@name@new@dan + \fdulogo@name@new@da + \fdulogo@name@new@xue;} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\fdulogo@emblem, +% \fdulogo@emblem@reversed, +% \fdulogo@emblem@text, +% \fdulogo@emblem@year} +% 校徽。 +% \begin{macrocode} +\def\fdulogo@emblem{% + \fill \fdulogo@emblem@kernel + \fdulogo@emblem@text + \fdulogo@emblem@year + \fdulogo@emblem@ring@inner@i + \fdulogo@emblem@ring@inner@ii + \fdulogo@emblem@ring@outer@i + \fdulogo@emblem@ring@outer@ii;} +\def\fdulogo@emblem@reversed{% + \fill \fdulogo@emblem@text + \fdulogo@emblem@year; + \fill[even odd rule] + \fdulogo@emblem@kernel + \fdulogo@emblem@ring@inner@i + \fdulogo@emblem@ring@outer@i + \fdulogo@emblem@ring@outer@ii;} +\def\fdulogo@emblem@text{% + \fdulogo@emblem@F + \fdulogo@emblem@U@i + \fdulogo@emblem@D + \fdulogo@emblem@A + \fdulogo@emblem@N@i + \fdulogo@emblem@U@ii + \fdulogo@emblem@N@ii + \fdulogo@emblem@I@i + \fdulogo@emblem@V + \fdulogo@emblem@E + \fdulogo@emblem@R + \fdulogo@emblem@S + \fdulogo@emblem@I@ii + \fdulogo@emblem@T + \fdulogo@emblem@Y} +\def\fdulogo@emblem@year{% + \fdulogo@emblem@one + \fdulogo@emblem@nine + \fdulogo@emblem@zero + \fdulogo@emblem@five} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\fdulogo@emblem@new, +% \fdulogo@emblem@new@reversed, +% \fdulogo@emblem@new@text, +% \fdulogo@emblem@new@year} +% 校徽(重修版)。 +% \begin{macrocode} +\def\fdulogo@emblem@new{% + \fill \fdulogo@emblem@new@kernel + \fdulogo@emblem@new@text + \fdulogo@emblem@new@year; + \fill[even odd rule] + \fdulogo@emblem@new@ring@inner@i + \fdulogo@emblem@new@ring@inner@ii + \fdulogo@emblem@new@ring@outer@i + \fdulogo@emblem@new@ring@outer@ii;} +\def\fdulogo@emblem@new@reversed{% + \fill \fdulogo@emblem@new@text + \fdulogo@emblem@new@year; + \fill[even odd rule] + \fdulogo@emblem@new@kernel + \fdulogo@emblem@new@ring@inner@i + \fdulogo@emblem@new@ring@outer@i + \fdulogo@emblem@new@ring@outer@ii;} +\def\fdulogo@emblem@new@text{% + \fdulogo@emblem@new@F + \fdulogo@emblem@new@U@i + \fdulogo@emblem@new@D + \fdulogo@emblem@new@A + \fdulogo@emblem@new@N@i + \fdulogo@emblem@new@U@ii + \fdulogo@emblem@new@N@ii + \fdulogo@emblem@new@I@i + \fdulogo@emblem@new@V + \fdulogo@emblem@new@E + \fdulogo@emblem@new@R + \fdulogo@emblem@new@S + \fdulogo@emblem@new@I@ii + \fdulogo@emblem@new@T + \fdulogo@emblem@new@Y} +\def\fdulogo@emblem@new@year{% + \fdulogo@emblem@new@one + \fdulogo@emblem@new@nine + \fdulogo@emblem@new@zero + \fdulogo@emblem@new@five} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\fdulogo@motto, +% \fdulogo@motto@i, +% \fdulogo@motto@ii} +% 校训。 +% \begin{macrocode} +\def\fdulogo@motto{% + \fill \fdulogo@motto@i + \fdulogo@motto@ii;} +\def\fdulogo@motto@i{% + \fdulogo@motto@bo + \fdulogo@motto@xue + \fdulogo@motto@er@i + \fdulogo@motto@du + \fdulogo@motto@zhi} +\def\fdulogo@motto@ii{% + \fdulogo@motto@qie + \fdulogo@motto@wen + \fdulogo@motto@er@ii + \fdulogo@motto@jin + \fdulogo@motto@si} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[int]{\fduthesis@cover} +% \cls{fduthesis} 用户手册的封面图案。内部使用。 +% \begin{macrocode} +\def\fduthesis@cover{% + \hspace{1.5cm} + \begin{tikzpicture}[x=1pt, y=1pt, scale=1.1, color=MaterialGrey] + \useasboundingbox ( 100, -140) rectangle ( 800, 800); + \fdulogo@emblem@new + \end{tikzpicture} + \begin{tikzpicture}[x=1pt, y=1pt] + \useasboundingbox ( 750, -150) rectangle (1350, 850); + \fill \fdulogo@motto@i; + \end{tikzpicture} + \begin{tikzpicture}[x=1pt, y=1pt] + \useasboundingbox (1280, 10) rectangle (1880, 1210); + \fill \fdulogo@motto@ii; + \end{tikzpicture} + \hspace*{-42.5cm}} +% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{生成文件} +% +% 以下两个文件用于生成各图案。 +% \DoNotIndex{\FIG,\BG} +% \begin{macrocode} +%<*(ex-logo|cover)> +%\documentclass{article} +%\documentclass{standalone} +\usepackage{fdulogo} +%<*ex-logo> +\usetikzlibrary{backgrounds,external} +\tikzexternalize[prefix=fudan-] +\let\FIG=\tikzsetnextfilename +\def\BG#1{color=white, show background rectangle, + background rectangle/.style={#1}} +% +\begin{document} +% \end{macrocode} +% +% 校名。 +% \begin{macrocode} +%<*ex-logo> +\FIG{name-black} \fduname +\FIG{name-blue} \fduname[color=FudanBlue] +\FIG{name-red} \fduname[color=FudanRed] +% \end{macrocode} +% +% 校徽。 +% \begin{macrocode} +\FIG{emblem-a-black} \fduemblem +\FIG{emblem-a-blue} \fduemblem[color=FudanBlue] +\FIG{emblem-a-red} \fduemblem[color=FudanRed] +\FIG{emblem-b-black} \fduemblem* +\FIG{emblem-b-blue} \fduemblem*[color=FudanBlue] +\FIG{emblem-b-red} \fduemblem*[color=FudanRed] +% \end{macrocode} +% +% 校徽(重修版)。 +% \begin{macrocode} +\FIG{emblem-new-a-black} \fduemblem+ +\FIG{emblem-new-a-blue} \fduemblem+[color=FudanBlue] +\FIG{emblem-new-a-red} \fduemblem+[color=FudanRed] +\FIG{emblem-new-b-black} \fduemblem+* +\FIG{emblem-new-b-blue} \fduemblem+*[color=FudanBlue] +\FIG{emblem-new-b-red} \fduemblem+*[color=FudanRed] +\FIG{emblem-new-a-reversed-black} \fduemblem+[\BG{fill}] +\FIG{emblem-new-a-reversed-blue} \fduemblem+[\BG{fill=FudanBlue}] +\FIG{emblem-new-a-reversed-red} \fduemblem+[\BG{fill=FudanRed}] +\FIG{emblem-new-b-reversed-black} \fduemblem+*[\BG{fill}] +\FIG{emblem-new-b-reversed-blue} \fduemblem+*[\BG{fill=FudanBlue}] +\FIG{emblem-new-b-reversed-red} \fduemblem+*[\BG{fill=FudanRed}] +% \end{macrocode} +% +% 校训。 +% \begin{macrocode} +\FIG{motto} \fdumotto +\FIG{motto-reversed} \fdumotto[\BG{fill}] +% +% \end{macrocode} +% +% \cls{fduthesis} 封面。 +% \begin{macrocode} +%<*cover> +\makeatletter +\fduthesis@cover +\makeatother +% +% \end{macrocode} +% +% \begin{macrocode} +\end{document} +% +% \end{macrocode} +% +% \subsubsection{路径} +% +% 各图案的路径均使用 Bézier 曲线生成。曲线的具体数据参见源代码, +% 此处从略。 +% +% \clearpage +% +% \end{implementation} +% +% \DisableImplementation +% +% \begin{implementation} +% +% \paragraph{校名} +% +% 复。 +% \begin{macrocode} +%<*logo> +\def\fdulogo@name@fu{% + ( 86.7942, 309.2300) + .. controls ( 90.5275, 306.4300) and ( 95.2742, 304.1366) .. ( 96.8075, 299.3766) + .. controls ( 100.0742, 292.9500) and ( 100.7409, 285.6966) .. ( 101.0875, 278.6033) + .. controls ( 97.5809, 266.5100) and ( 89.4742, 256.6300) .. ( 83.2742, 245.8700) + .. controls ( 76.7942, 235.8433) and ( 70.7809, 225.5100) .. ( 64.2209, 215.5366) + .. controls ( 62.2475, 212.8833) and ( 62.1809, 209.4833) .. ( 61.4475, 206.3766) + .. controls ( 66.4475, 207.6300) and ( 71.0075, 205.0833) .. ( 75.6875, 203.8033) + .. controls ( 77.3142, 200.6566) and ( 78.7809, 197.4166) .. ( 80.5542, 194.3366) + .. controls ( 80.1942, 188.6033) and ( 77.7142, 183.3233) .. ( 74.7275, 178.5233) + .. controls ( 68.7009, 167.3100) and ( 62.8609, 155.9900) .. ( 56.7542, 144.8166) + .. controls ( 54.8742, 140.9233) and ( 54.1942, 136.6033) .. ( 52.9142, 132.5100) + .. controls ( 54.6075, 129.1233) and ( 56.9942, 126.0833) .. ( 58.5009, 122.6166) + .. controls ( 59.6609, 116.9766) and ( 61.0875, 111.2700) .. ( 60.5275, 105.4566) + .. controls ( 59.1542, 78.2566) and ( 58.2209, 51.0166) .. ( 56.6875, 23.8300) + .. controls ( 54.5275, 19.4433) and ( 53.5675, 12.8033) .. ( 47.7542, 12.0300) + .. controls ( 42.1009, 14.5100) and ( 39.0342, 20.0966) .. ( 37.2342, 25.7100) + .. controls ( 36.2475, 37.2300) and ( 41.3675, 48.0033) .. ( 42.1542, 59.3500) + .. controls ( 43.3142, 69.3366) and ( 41.5942, 79.3766) .. ( 41.4742, 89.3900) + .. controls ( 41.7275, 92.8700) and ( 39.8342, 95.8166) .. ( 38.2075, 98.7100) + .. controls ( 36.5942, 98.2166) and ( 34.9809, 97.7366) .. ( 33.3542, 97.2433) + .. controls ( 28.5409, 89.8300) and ( 23.4075, 82.6300) .. ( 18.5409, 75.2566) + .. controls ( 16.6209, 75.7633) and ( 14.6742, 76.1500) .. ( 12.8075, 76.8166) + .. controls ( 12.0742, 78.9366) and ( 11.0209, 81.4300) .. ( 12.5409, 83.4566) + .. controls ( 20.9409, 99.4300) and ( 29.6342, 115.2300) .. ( 38.1942, 131.1100) + .. controls ( 42.9409, 140.4566) and ( 48.5942, 149.3633) .. ( 52.6875, 159.0033) + .. controls ( 55.2875, 168.0433) and ( 60.4075, 176.5100) .. ( 59.7942, 186.2033) + .. controls ( 54.7675, 185.9366) and ( 51.8342, 181.2300) .. ( 47.5675, 179.1633) + .. controls ( 44.7142, 181.4300) and ( 41.8742, 183.7100) .. ( 39.0475, 186.0166) + .. controls ( 40.8475, 191.2700) and ( 41.7809, 196.9233) .. ( 44.8609, 201.6566) + .. controls ( 52.8209, 215.0433) and ( 60.7409, 228.4566) .. ( 68.7809, 241.8033) + .. controls ( 74.7142, 252.7900) and ( 83.6609, 262.9900) .. ( 83.8475, 276.1233) + .. controls ( 83.0609, 284.1766) and ( 81.9542, 292.1900) .. ( 81.0875, 300.2433) + .. controls ( 82.9409, 303.2700) and ( 84.8209, 306.2833) .. ( 86.7942, 309.2300) + ( 143.7142, 60.9633) + .. controls ( 144.8742, 59.8566) and ( 146.0609, 58.7766) .. ( 147.2609, 57.7233) + .. controls ( 149.3809, 57.3500) and ( 151.5409, 57.9900) .. ( 153.6609, 58.1100) + .. controls ( 154.4609, 59.6566) and ( 155.2742, 61.2033) .. ( 156.0875, 62.7500) + .. controls ( 152.8742, 64.4566) and ( 149.3942, 65.5500) .. ( 145.8875, 66.4700) + .. controls ( 145.1675, 64.6433) and ( 144.4342, 62.8033) .. ( 143.7142, 60.9633) + ( 144.9142, 141.6700) + .. controls ( 143.5409, 139.9633) and ( 143.7942, 137.7100) .. ( 143.5275, 135.6700) + .. controls ( 146.1275, 135.7233) and ( 148.4209, 137.0966) .. ( 150.0742, 139.0300) + .. controls ( 154.6342, 143.3366) and ( 153.2209, 150.2166) .. ( 154.3675, 155.7900) + .. controls ( 151.3142, 151.0166) and ( 148.1409, 146.3233) .. ( 144.9142, 141.6700) + ( 139.8342, 253.5633) + .. controls ( 153.1675, 263.9233) and ( 166.9809, 273.6566) .. ( 180.1942, 284.1766) + .. controls ( 184.7409, 283.1900) and ( 188.9809, 281.0700) .. ( 192.2475, 277.7100) + .. controls ( 182.2342, 263.0566) and ( 165.9009, 254.7500) .. ( 153.8475, 242.0966) + .. controls ( 146.9675, 233.0033) and ( 139.4075, 224.4166) .. ( 132.6742, 215.2166) + .. controls ( 126.6342, 204.7900) and ( 121.2209, 194.0033) .. ( 115.5009, 183.3900) + .. controls ( 113.8875, 181.0433) and ( 113.8609, 178.2033) .. ( 113.8475, 175.4433) + .. controls ( 120.2475, 184.6166) and ( 126.1942, 194.0966) .. ( 132.5409, 203.3100) + .. controls ( 140.5809, 217.0166) and ( 152.3809, 229.5633) .. ( 167.9942, 234.2566) + .. controls ( 172.1942, 231.6300) and ( 176.0075, 228.2166) .. ( 178.4875, 223.8833) + .. controls ( 178.0342, 208.0433) and ( 170.7275, 193.6433) .. ( 166.2475, 178.7100) + .. controls ( 159.5542, 161.0033) and ( 159.4875, 141.6966) .. ( 154.9142, 123.4700) + .. controls ( 152.0075, 118.1366) and ( 151.2075, 111.0433) .. ( 145.1942, 108.1500) + .. controls ( 142.2209, 112.7233) and ( 137.6209, 115.5633) .. ( 132.3009, 116.5766) + .. controls ( 129.0609, 111.8966) and ( 125.3409, 107.5100) .. ( 122.4742, 102.5900) + .. controls ( 120.1009, 96.5766) and ( 117.7009, 90.3100) .. ( 118.2609, 83.7100) + .. controls ( 126.6075, 88.8700) and ( 134.9942, 93.9500) .. ( 143.2875, 99.2033) + .. controls ( 149.0342, 101.9766) and ( 155.0342, 104.2300) .. ( 160.8475, 106.8966) + .. controls ( 165.3675, 109.0166) and ( 171.9675, 109.1500) .. ( 174.7409, 104.2566) + .. controls ( 180.1409, 99.0700) and ( 179.0609, 91.2700) .. ( 179.2609, 84.4700) + .. controls ( 176.3409, 77.2566) and ( 172.1275, 70.4566) .. ( 170.9142, 62.6433) + .. controls ( 177.9942, 55.1233) and ( 184.7675, 47.1366) .. ( 193.6875, 41.6833) + .. controls ( 194.3409, 38.9500) and ( 195.1809, 36.1766) .. ( 194.7142, 33.3233) + .. controls ( 192.9409, 33.1233) and ( 191.1809, 32.9233) .. ( 189.4209, 32.7100) + .. controls ( 185.2742, 35.5233) and ( 180.1409, 37.2033) .. ( 177.1409, 41.4166) + .. controls ( 173.5942, 46.1633) and ( 168.6609, 49.5233) .. ( 163.8209, 52.8166) + .. controls ( 161.2209, 47.7900) and ( 157.3009, 43.5900) .. ( 152.3409, 40.8300) + .. controls ( 145.8742, 45.2833) and ( 139.7142, 50.2300) .. ( 134.7275, 56.3500) + .. controls ( 132.9275, 59.2300) and ( 132.1409, 62.5900) .. ( 130.9409, 65.7366) + .. controls ( 132.4742, 69.5633) and ( 134.5942, 73.1233) .. ( 137.2475, 76.2700) + .. controls ( 143.8875, 74.4700) and ( 150.4742, 72.5233) .. ( 157.1142, 70.7366) + .. controls ( 160.5809, 73.3633) and ( 164.7542, 75.8966) .. ( 166.1809, 80.2566) + .. controls ( 168.0075, 85.7366) and ( 170.2075, 91.0566) .. ( 172.3409, 96.4300) + .. controls ( 169.0609, 96.7766) and ( 165.7409, 98.0033) .. ( 162.4609, 97.5900) + .. controls ( 155.7409, 94.6833) and ( 148.9542, 91.7900) .. ( 142.8475, 87.7233) + .. controls ( 137.5275, 84.1766) and ( 131.2475, 81.9633) .. ( 126.7675, 77.2433) + .. controls ( 121.8475, 72.3766) and ( 116.7542, 67.6566) .. ( 111.8875, 62.7233) + .. controls ( 106.6209, 55.9900) and ( 101.4609, 49.1500) .. ( 96.4875, 42.2033) + .. controls ( 93.5409, 36.4166) and ( 90.7009, 30.5766) .. ( 87.4209, 24.9633) + .. controls ( 83.8742, 26.4433) and ( 79.1942, 28.0433) .. ( 78.4609, 32.3500) + .. controls ( 80.4875, 37.9633) and ( 83.3942, 43.2166) .. ( 85.6075, 48.7500) + .. controls ( 87.5142, 54.0433) and ( 92.4875, 57.3633) .. ( 95.1142, 62.2566) + .. controls ( 96.7542, 65.4166) and ( 98.5409, 68.4833) .. ( 100.0875, 71.6833) + .. controls ( 102.4075, 76.5100) and ( 102.5809, 82.0700) .. ( 105.1275, 86.8033) + .. controls ( 109.4475, 94.0833) and ( 113.9275, 101.2700) .. ( 118.0875, 108.6300) + .. controls ( 121.1142, 116.9233) and ( 125.2342, 124.8166) .. ( 127.6742, 133.3100) + .. controls ( 127.4075, 142.2166) and ( 125.8609, 151.1366) .. ( 127.3542, 160.0433) + .. controls ( 126.9542, 166.3766) and ( 130.6875, 171.6033) .. ( 133.5942, 176.8833) + .. controls ( 135.0342, 179.4166) and ( 138.3142, 179.6433) .. ( 140.7675, 180.6166) + .. controls ( 145.4075, 173.8700) and ( 150.7809, 167.6833) .. ( 155.8742, 161.2833) + .. controls ( 154.0075, 168.7500) and ( 157.6609, 175.6966) .. ( 159.0209, 182.8833) + .. controls ( 161.9675, 195.1900) and ( 167.3809, 207.0700) .. ( 167.0475, 219.9633) + .. controls ( 164.4742, 219.7633) and ( 161.6475, 220.4566) .. ( 159.3409, 219.0300) + .. controls ( 154.6342, 216.4300) and ( 149.4475, 214.2566) .. ( 146.0742, 209.8700) + .. controls ( 141.9675, 204.5500) and ( 136.8609, 200.0166) .. ( 133.0875, 194.4433) + .. controls ( 126.7809, 180.7633) and ( 120.6475, 166.8966) .. ( 117.1542, 152.1766) + .. controls ( 111.5409, 136.2966) and ( 108.6342, 119.4300) .. ( 100.7275, 104.4300) + .. controls ( 99.1809, 102.6700) and ( 96.7542, 101.9766) .. ( 94.7942, 100.7633) + .. controls ( 93.0742, 102.0433) and ( 91.3542, 103.3233) .. ( 89.6209, 104.5900) + .. controls ( 88.0609, 110.3900) and ( 84.3275, 116.4566) .. ( 86.7409, 122.5233) + .. controls ( 92.4875, 139.1100) and ( 97.7142, 155.8700) .. ( 103.4742, 172.4433) + .. controls ( 111.6475, 187.4166) and ( 119.7675, 202.4166) .. ( 127.8875, 217.4166) + .. controls ( 139.8475, 232.6966) and ( 152.0475, 247.8300) .. ( 163.9275, 263.1900) + .. controls ( 153.6609, 255.1633) and ( 145.2075, 245.0166) .. ( 135.3809, 236.4700) + .. controls ( 130.4742, 233.8433) and ( 124.7275, 232.6300) .. ( 120.5275, 228.7633) + .. controls ( 115.0742, 223.9233) and ( 109.7809, 218.8966) .. ( 104.1542, 214.2566) + .. controls ( 101.8609, 217.1100) and ( 99.0475, 219.7900) .. ( 97.9542, 223.3900) + .. controls ( 96.0609, 230.8833) and ( 96.8209, 239.1233) .. ( 100.5009, 245.9633) + .. controls ( 104.3409, 255.2833) and ( 108.8875, 264.2833) .. ( 112.6342, 273.6433) + .. controls ( 113.7542, 277.2166) and ( 116.7409, 279.4966) .. ( 119.5009, 281.7633) + .. controls ( 121.5675, 280.5900) and ( 123.7409, 279.5633) .. ( 125.6342, 278.1100) + .. controls ( 128.2742, 274.7633) and ( 129.7009, 270.6966) .. ( 131.1809, 266.7633) + .. controls ( 129.2609, 259.3766) and ( 126.9009, 252.0833) .. ( 125.5675, 244.5500) + .. controls ( 131.0075, 246.4033) and ( 135.1809, 250.3766) .. ( 139.8342, 253.5633)} +% \end{macrocode} +% +% 旦。 +% \begin{macrocode} +\def\fdulogo@name@dan{% + ( 318.2875, 86.5233) + .. controls ( 328.1942, 87.0033) and ( 337.1409, 91.8166) .. ( 346.1142, 95.5900) + .. controls ( 351.2075, 94.9366) and ( 356.2075, 93.6966) .. ( 360.8342, 91.4166) + .. controls ( 361.5942, 89.1100) and ( 362.3409, 86.7900) .. ( 363.1142, 84.4700) + .. controls ( 357.7809, 79.7900) and ( 350.7009, 78.4700) .. ( 344.0742, 76.6700) + .. controls ( 343.5142, 77.6433) and ( 342.4209, 79.5900) .. ( 341.8742, 80.5633) + .. controls ( 332.2609, 77.5633) and ( 322.4475, 75.2700) .. ( 312.8209, 72.3233) + .. controls ( 306.6875, 70.8433) and ( 301.5409, 66.9766) .. ( 296.4875, 63.3900) + .. controls ( 292.7409, 58.6300) and ( 291.0075, 52.1233) .. ( 285.5009, 48.8700) + .. controls ( 279.9809, 44.6566) and ( 272.3009, 47.8033) .. ( 268.4475, 52.7500) + .. controls ( 266.5142, 56.8433) and ( 264.1542, 60.8033) .. ( 262.7275, 65.1100) + .. controls ( 262.9675, 67.8033) and ( 263.5142, 70.4566) .. ( 263.9675, 73.1233) + .. controls ( 267.0875, 73.3900) and ( 270.2342, 73.5366) .. ( 273.3275, 74.0833) + .. controls ( 288.4742, 77.6433) and ( 303.1142, 83.0966) .. ( 318.2875, 86.5233) + ( 347.6075, 212.4166) + .. controls ( 352.2075, 214.7100) and ( 357.2609, 212.5766) .. ( 362.0475, 212.1233) + .. controls ( 363.8475, 209.9233) and ( 365.6075, 207.6966) .. ( 367.2875, 205.3900) + .. controls ( 364.4475, 193.9233) and ( 356.3142, 184.7500) .. ( 353.1142, 173.4166) + .. controls ( 350.1942, 164.2700) and ( 347.5142, 155.0433) .. ( 344.2342, 146.0166) + .. controls ( 342.4875, 141.5366) and ( 342.5009, 136.6833) .. ( 341.7409, 132.0033) + .. controls ( 340.5542, 124.5900) and ( 339.3675, 117.1633) .. ( 338.1809, 109.7366) + .. controls ( 336.3142, 108.5633) and ( 334.4342, 107.3900) .. ( 332.5942, 106.1766) + .. controls ( 329.9142, 108.3766) and ( 326.8742, 110.3900) .. ( 325.3542, 113.6166) + .. controls ( 323.5142, 117.2433) and ( 321.7009, 121.0966) .. ( 317.7942, 122.8833) + .. controls ( 314.3542, 120.2833) and ( 311.0475, 117.4833) .. ( 307.3809, 115.2033) + .. controls ( 303.0875, 121.1500) and ( 307.5009, 127.8833) .. ( 309.5275, 133.7633) + .. controls ( 308.3275, 143.0566) and ( 300.7942, 151.8300) .. ( 304.5542, 161.3766) + .. controls ( 305.9542, 164.1233) and ( 308.5275, 166.0966) .. ( 310.3942, 168.5233) + .. controls ( 313.0075, 167.0166) and ( 315.7675, 165.7100) .. ( 318.1675, 163.8433) + .. controls ( 322.4742, 158.4833) and ( 326.2075, 152.2966) .. ( 327.1142, 145.3500) + .. controls ( 327.9409, 140.3500) and ( 328.7142, 135.3233) .. ( 329.5942, 130.3233) + .. controls ( 330.3409, 130.5500) and ( 331.8342, 131.0033) .. ( 332.5942, 131.2166) + .. controls ( 335.8342, 146.3766) and ( 340.4342, 161.2033) .. ( 343.7009, 176.3500) + .. controls ( 345.0475, 181.0700) and ( 345.9009, 185.9366) .. ( 347.6475, 190.5366) + .. controls ( 350.0075, 194.9366) and ( 353.0742, 199.0700) .. ( 353.8075, 204.1500) + .. controls ( 347.3275, 204.9100) and ( 341.3275, 201.8700) .. ( 335.7809, 198.9366) + .. controls ( 331.4742, 196.4566) and ( 326.5009, 195.1233) .. ( 322.7009, 191.7900) + .. controls ( 315.1942, 185.5633) and ( 307.6075, 179.4566) .. ( 300.1942, 173.1233) + .. controls ( 296.4742, 170.2433) and ( 294.8075, 165.6966) .. ( 291.9942, 162.0566) + .. controls ( 292.4742, 156.1100) and ( 295.6209, 150.9900) .. ( 297.8742, 145.6433) + .. controls ( 299.8075, 137.3766) and ( 302.0075, 127.7633) .. ( 297.0609, 120.1500) + .. controls ( 295.7942, 117.4033) and ( 293.9409, 115.0166) .. ( 291.9675, 112.7633) + .. controls ( 289.5009, 118.0966) and ( 285.5542, 123.2966) .. ( 286.2875, 129.4966) + .. controls ( 286.8475, 138.2033) and ( 284.6342, 146.7100) .. ( 283.4475, 155.2700) + .. controls ( 286.8342, 162.6166) and ( 286.6742, 170.9366) .. ( 288.9409, 178.6300) + .. controls ( 291.6742, 180.8833) and ( 293.7009, 183.8833) .. ( 296.5409, 186.0033) + .. controls ( 306.4609, 191.5633) and ( 316.1275, 197.5633) .. ( 325.9942, 203.2166) + .. controls ( 333.2742, 206.0966) and ( 340.3009, 209.6166) .. ( 347.6075, 212.4166)} +% \end{macrocode} +% +% 大。 +% \begin{macrocode} +\def\fdulogo@name@da{% + ( 500.5275, 206.5900) + .. controls ( 503.9409, 220.1500) and ( 500.1275, 234.4166) .. ( 504.0342, 247.9233) + .. controls ( 511.0742, 246.5500) and ( 517.4475, 242.0700) .. ( 519.5542, 234.9766) + .. controls ( 516.8342, 217.6700) and ( 512.2475, 200.7233) .. ( 509.4475, 183.4300) + .. controls ( 505.9809, 167.8166) and ( 503.0075, 152.0966) .. ( 499.8609, 136.4166) + .. controls ( 505.7542, 140.2033) and ( 512.0209, 143.4166) .. ( 517.8075, 147.3766) + .. controls ( 519.2075, 148.7366) and ( 519.9809, 150.5900) .. ( 521.0342, 152.2033) + .. controls ( 519.7809, 156.3233) and ( 518.8875, 160.7766) .. ( 522.3275, 164.0966) + .. controls ( 528.0475, 164.0700) and ( 533.7542, 164.0833) .. ( 539.4609, 164.0700) + .. controls ( 541.2475, 162.1766) and ( 544.2875, 160.4433) .. ( 542.7675, 157.4033) + .. controls ( 541.9409, 149.9500) and ( 534.7542, 146.4833) .. ( 529.5142, 142.3500) + .. controls ( 520.1009, 136.2966) and ( 510.2209, 131.0033) .. ( 500.8075, 124.9366) + .. controls ( 503.7142, 118.3233) and ( 507.7009, 112.2833) .. ( 510.8475, 105.7766) + .. controls ( 515.5142, 95.1766) and ( 524.4075, 87.4033) .. ( 531.7275, 78.6700) + .. controls ( 538.3009, 74.0566) and ( 544.9942, 69.5500) .. ( 551.8875, 65.3766) + .. controls ( 556.2742, 63.4833) and ( 560.4475, 61.1100) .. ( 564.1275, 58.0300) + .. controls ( 558.1009, 53.8166) and ( 550.7142, 52.7633) .. ( 543.9809, 50.1633) + .. controls ( 539.6609, 48.5500) and ( 534.9275, 48.3500) .. ( 530.3809, 48.5100) + .. controls ( 520.7409, 51.4833) and ( 513.1009, 59.2433) .. ( 509.7275, 68.7233) + .. controls ( 504.2475, 85.4033) and ( 500.0209, 102.4433) .. ( 494.6609, 119.1633) + .. controls ( 491.6609, 110.8433) and ( 488.3809, 102.6166) .. ( 485.6475, 94.2033) + .. controls ( 481.3542, 87.8966) and ( 477.1809, 81.4700) .. ( 472.7542, 75.2433) + .. controls ( 465.7809, 65.4966) and ( 454.3409, 59.7766) .. ( 442.6209, 58.2300) + .. controls ( 439.5142, 58.6833) and ( 436.4342, 59.3900) .. ( 433.4875, 60.4833) + .. controls ( 430.7809, 61.7366) and ( 429.9275, 64.8566) .. ( 428.5142, 67.2166) + .. controls ( 434.0742, 68.1500) and ( 439.7409, 68.5633) .. ( 445.2609, 69.8433) + .. controls ( 455.0075, 73.6033) and ( 464.2075, 79.9900) .. ( 469.1809, 89.4166) + .. controls ( 473.3675, 98.0166) and ( 479.9009, 105.6033) .. ( 481.1275, 115.4033) + .. controls ( 475.2342, 113.8300) and ( 470.8475, 109.4300) .. ( 466.1809, 105.7900) + .. controls ( 460.7942, 100.0566) and ( 457.0342, 91.6300) .. ( 448.4609, 90.1500) + .. controls ( 445.5142, 95.3233) and ( 444.7142, 101.3100) .. ( 443.6742, 107.0700) + .. controls ( 446.9275, 106.2700) and ( 450.1942, 105.5100) .. ( 453.4742, 104.7900) + .. controls ( 462.6075, 111.7233) and ( 470.7142, 120.1100) .. ( 480.9009, 125.5633) + .. controls ( 485.8209, 128.0433) and ( 487.5809, 133.6966) .. ( 488.7942, 138.6566) + .. controls ( 493.1409, 161.2300) and ( 496.2209, 184.0033) .. ( 500.5275, 206.5900)} +% \end{macrocode} +% +% 学。 +% \begin{macrocode} +\def\fdulogo@name@xue{% + ( 747.6209, 258.3633) + .. controls ( 750.1542, 256.2166) and ( 752.7409, 254.1500) .. ( 755.3809, 252.1366) + .. controls ( 750.8475, 243.3366) and ( 742.2609, 238.2300) .. ( 734.4742, 232.6566) + .. controls ( 736.2075, 230.4033) and ( 737.9809, 228.1900) .. ( 739.7942, 226.0033) + .. controls ( 743.2742, 226.8166) and ( 746.7675, 227.5500) .. ( 750.2875, 228.2300) + .. controls ( 751.4609, 225.4033) and ( 752.6475, 222.5766) .. ( 753.8609, 219.7633) + .. controls ( 750.6209, 213.2433) and ( 748.5409, 206.2700) .. ( 746.7809, 199.2300) + .. controls ( 748.2209, 197.7100) and ( 749.6742, 196.1766) .. ( 751.1409, 194.6700) + .. controls ( 760.7142, 211.4700) and ( 769.8875, 228.4966) .. ( 779.4742, 245.2966) + .. controls ( 773.4209, 244.2433) and ( 767.2875, 243.8966) .. ( 761.1942, 243.2433) + .. controls ( 760.4742, 248.0033) and ( 766.5809, 249.3633) .. ( 769.6075, 251.8700) + .. controls ( 775.0609, 251.7100) and ( 782.1675, 254.0566) .. ( 786.1542, 249.1233) + .. controls ( 787.1542, 247.9633) and ( 788.0609, 246.7100) .. ( 788.9942, 245.4700) + .. controls ( 786.2609, 234.0700) and ( 778.4209, 225.0566) .. ( 772.8875, 214.9900) + .. controls ( 768.5942, 208.5100) and ( 764.7409, 201.7500) .. ( 760.5542, 195.2166) + .. controls ( 758.1675, 190.2966) and ( 756.4475, 185.0700) .. ( 754.0742, 180.1366) + .. controls ( 759.4475, 179.9500) and ( 764.8342, 179.3366) .. ( 770.2209, 179.4700) + .. controls ( 776.1942, 180.5500) and ( 781.9009, 182.8433) .. ( 787.9942, 183.3100) + .. controls ( 792.4209, 184.2566) and ( 796.3275, 181.1633) .. ( 800.3142, 179.7233) + .. controls ( 800.4742, 177.7366) and ( 800.6475, 175.7500) .. ( 800.8342, 173.7633) + .. controls ( 790.9409, 167.7366) and ( 782.1942, 159.3100) .. ( 770.6475, 156.4966) + .. controls ( 756.9409, 154.1766) and ( 743.3675, 151.1233) .. ( 729.7009, 148.5366) + .. controls ( 723.9809, 147.2566) and ( 717.7275, 145.3500) .. ( 714.5942, 139.9366) + .. controls ( 723.3142, 140.3500) and ( 731.9275, 145.4700) .. ( 740.6075, 142.3366) + .. controls ( 742.2342, 139.5633) and ( 743.8209, 136.7500) .. ( 745.3809, 133.9233) + .. controls ( 743.5409, 131.4833) and ( 742.0342, 128.8033) .. ( 740.2075, 126.3633) + .. controls ( 735.4875, 121.7900) and ( 729.5409, 118.8033) .. ( 723.7275, 115.8566) + .. controls ( 728.0209, 114.0033) and ( 732.6209, 115.6433) .. ( 737.0609, 115.8566) + .. controls ( 744.5809, 116.2700) and ( 752.0342, 117.3633) .. ( 759.5275, 118.1500) + .. controls ( 762.9275, 116.2833) and ( 766.2875, 114.3500) .. ( 769.4875, 112.1366) + .. controls ( 770.5542, 108.4966) and ( 771.6075, 104.8566) .. ( 772.6609, 101.2166) + .. controls ( 771.2209, 98.2300) and ( 769.1142, 95.6700) .. ( 766.2875, 93.9100) + .. controls ( 756.0209, 97.3900) and ( 745.1675, 96.3500) .. ( 734.5275, 96.3766) + .. controls ( 729.9542, 95.9633) and ( 725.6342, 94.2300) .. ( 721.1809, 93.1766) + .. controls ( 717.2475, 83.4700) and ( 718.5409, 72.9100) .. ( 717.8342, 62.7100) + .. controls ( 717.2475, 53.7500) and ( 722.6475, 43.7100) .. ( 716.0475, 35.9100) + .. controls ( 712.0742, 35.3633) and ( 708.0342, 33.5233) .. ( 704.0475, 34.8566) + .. controls ( 697.9409, 36.3500) and ( 691.6609, 37.2700) .. ( 685.7142, 39.3766) + .. controls ( 678.3275, 44.6700) and ( 670.2075, 49.5366) .. ( 665.3809, 57.5233) + .. controls ( 673.5275, 53.4166) and ( 681.4742, 48.7100) .. ( 690.2875, 46.1500) + .. controls ( 694.5275, 44.6166) and ( 698.9542, 46.3233) .. ( 703.2209, 46.8833) + .. controls ( 704.3542, 49.8433) and ( 705.7809, 52.7100) .. ( 706.6609, 55.7633) + .. controls ( 707.9809, 66.8433) and ( 706.1809, 78.2700) .. ( 709.1542, 89.1366) + .. controls ( 708.7275, 89.6566) and ( 707.8609, 90.6966) .. ( 707.4342, 91.2166) + .. controls ( 695.2475, 90.3766) and ( 683.7409, 85.9100) .. ( 673.2209, 79.8966) + .. controls ( 667.5409, 76.2300) and ( 660.6209, 76.0433) .. ( 654.2875, 74.2300) + .. controls ( 648.3809, 73.2300) and ( 643.4875, 77.6566) .. ( 639.8209, 81.6966) + .. controls ( 638.1542, 84.5900) and ( 637.0075, 87.7366) .. ( 635.5809, 90.7500) + .. controls ( 641.1542, 95.8300) and ( 649.0609, 94.8300) .. ( 655.9142, 96.5366) + .. controls ( 669.0742, 99.9766) and ( 682.1675, 103.7100) .. ( 695.2475, 107.5366) + .. controls ( 700.0075, 109.0833) and ( 706.2209, 108.8433) .. ( 709.2475, 113.4833) + .. controls ( 713.5675, 119.8566) and ( 721.4475, 123.1100) .. ( 724.1809, 130.6433) + .. controls ( 717.1942, 130.8833) and ( 710.5409, 128.1633) .. ( 703.7409, 127.0033) + .. controls ( 700.9675, 129.3366) and ( 700.4609, 132.9633) .. ( 699.6742, 136.2833) + .. controls ( 702.4475, 139.2433) and ( 705.1675, 142.2833) .. ( 708.1542, 145.0433) + .. controls ( 713.6342, 149.9100) and ( 720.6609, 152.3500) .. ( 727.2342, 155.3500) + .. controls ( 731.5675, 157.0700) and ( 731.9275, 162.2433) .. ( 732.6742, 166.1633) + .. controls ( 723.4609, 167.7766) and ( 714.1409, 164.7233) .. ( 705.9675, 160.6300) + .. controls ( 700.0342, 157.6833) and ( 693.8209, 155.3900) .. ( 687.8209, 152.5900) + .. controls ( 684.7942, 153.4966) and ( 682.0875, 155.1233) .. ( 679.5809, 157.0300) + .. controls ( 680.3809, 167.7633) and ( 682.6875, 178.5100) .. ( 681.4209, 189.3100) + .. controls ( 680.7942, 193.8166) and ( 681.8609, 198.2566) .. ( 682.7809, 202.6433) + .. controls ( 683.5009, 202.2433) and ( 684.9542, 201.4566) .. ( 685.6742, 201.0566) + .. controls ( 687.3675, 198.4166) and ( 689.3409, 195.9766) .. ( 691.3542, 193.5766) + .. controls ( 694.0475, 194.4033) and ( 696.8342, 195.0166) .. ( 699.3942, 196.2166) + .. controls ( 701.2475, 198.0966) and ( 702.4475, 200.4700) .. ( 704.1142, 202.4966) + .. controls ( 709.3142, 207.0300) and ( 715.4742, 210.3766) .. ( 722.0475, 212.4700) + .. controls ( 724.1542, 214.6300) and ( 726.1542, 216.8833) .. ( 728.1009, 219.1900) + .. controls ( 727.8609, 220.8566) and ( 727.6209, 222.5233) .. ( 727.4075, 224.1900) + .. controls ( 723.1809, 223.2433) and ( 719.7809, 220.5633) .. ( 716.8209, 217.5500) + .. controls ( 716.1675, 224.2833) and ( 713.4609, 231.1633) .. ( 716.0609, 237.8166) + .. controls ( 718.9542, 236.7900) and ( 721.8875, 235.8966) .. ( 724.8609, 235.0700) + .. controls ( 732.7409, 242.5233) and ( 743.1542, 247.9633) .. ( 747.6209, 258.3633) + ( 696.8209, 220.1633) + .. controls ( 700.3675, 219.0033) and ( 703.2475, 216.6300) .. ( 705.6475, 213.8166) + .. controls ( 704.3275, 210.6300) and ( 703.1142, 207.3900) .. ( 702.1542, 204.0700) + .. controls ( 700.6475, 203.2700) and ( 699.1409, 202.4566) .. ( 697.6342, 201.6433) + .. controls ( 696.6075, 203.3766) and ( 695.5675, 205.0833) .. ( 694.5542, 206.8033) + .. controls ( 695.3142, 211.2566) and ( 696.0609, 215.7100) .. ( 696.8209, 220.1633) + ( 749.1142, 167.7766) + .. controls ( 747.6342, 165.0700) and ( 746.1009, 162.3766) .. ( 744.6342, 159.6700) + .. controls ( 755.0075, 160.1366) and ( 764.7942, 163.6566) .. ( 774.5809, 166.8566) + .. controls ( 778.2875, 167.8166) and ( 780.3542, 171.2966) .. ( 782.9942, 173.7633) + .. controls ( 771.4475, 174.4566) and ( 759.5675, 172.9766) .. ( 749.1142, 167.7766) + ( 742.7142, 179.9633) + .. controls ( 740.7409, 176.0566) and ( 747.1542, 179.8833) .. ( 742.7142, 179.9633) + ( 713.8342, 188.1633) + .. controls ( 711.3409, 184.9366) and ( 709.3275, 181.2566) .. ( 706.1809, 178.5766) + .. controls ( 699.6342, 177.6300) and ( 692.4875, 178.6566) .. ( 687.6075, 183.4700) + .. controls ( 687.6742, 177.4966) and ( 687.6209, 171.5233) .. ( 687.6475, 165.5366) + .. controls ( 699.6742, 169.1100) and ( 711.8875, 172.0033) .. ( 723.9809, 175.3766) + .. controls ( 721.9142, 176.5633) and ( 719.8475, 177.7500) .. ( 717.7942, 178.9366) + .. controls ( 718.1675, 181.5633) and ( 718.5275, 184.1900) .. ( 718.8875, 186.8166) + .. controls ( 717.1942, 187.2700) and ( 715.5142, 187.7100) .. ( 713.8342, 188.1633) + ( 741.0075, 214.8566) + .. controls ( 737.1675, 207.4166) and ( 733.7275, 199.5366) .. ( 734.2342, 190.9633) + .. controls ( 735.3275, 190.3366) and ( 736.4342, 189.6966) .. ( 737.5542, 189.0700) + .. controls ( 738.1275, 193.4566) and ( 738.3009, 197.9100) .. ( 739.3142, 202.2166) + .. controls ( 740.4875, 206.2966) and ( 743.3409, 210.6166) .. ( 741.0075, 214.8566) + ( 701.9942, 258.2033) + .. controls ( 704.9409, 255.9766) and ( 708.6875, 254.5500) .. ( 711.0475, 251.6833) + .. controls ( 711.5675, 247.7366) and ( 712.6342, 242.9633) .. ( 709.4875, 239.8166) + .. controls ( 703.0875, 233.8700) and ( 696.6875, 227.9100) .. ( 690.4742, 221.7766) + .. controls ( 689.7275, 223.4433) and ( 688.9942, 225.1100) .. ( 688.2742, 226.7633) + .. controls ( 691.9942, 232.8166) and ( 695.0609, 239.2300) .. ( 698.5409, 245.4166) + .. controls ( 700.2342, 249.4966) and ( 700.8742, 253.9366) .. ( 701.9942, 258.2033) + ( 654.7142, 137.1500) + .. controls ( 658.2875, 146.2433) and ( 659.6875, 156.5900) .. ( 667.1142, 163.6033) + .. controls ( 667.8075, 160.2700) and ( 668.8342, 157.0033) .. ( 669.2609, 153.6300) + .. controls ( 668.4075, 150.5766) and ( 666.8075, 147.8033) .. ( 665.8475, 144.7900) + .. controls ( 665.3542, 140.6033) and ( 665.6875, 136.3633) .. ( 665.7275, 132.1500) + .. controls ( 664.0609, 130.1233) and ( 662.0209, 128.4566) .. ( 659.5675, 127.4700) + .. controls ( 657.8875, 130.6700) and ( 656.2475, 133.8833) .. ( 654.7142, 137.1500)} +% \end{macrocode} +% +% \paragraph{校名(毛泽东原版)} +% +% 复。 +% \begin{macrocode} +\def\fdulogo@name@original@fu{% + ( 63.7187, 348.5068) + .. controls ( 60.4345, 350.4238) and ( 55.1425, 360.9033) .. ( 55.1425, 365.4902) + .. controls ( 55.1425, 367.7783) and ( 54.5781, 370.0000) .. ( 53.8876, 370.4267) + .. controls ( 52.0273, 371.5761) and ( 52.3505, 376.2568) .. ( 55.0390, 387.0869) + .. controls ( 57.9892, 398.9746) and ( 59.3242, 421.2656) .. ( 59.4433, 460.6738) + .. controls ( 59.5136, 483.6279) and ( 59.1660, 490.8095) .. ( 57.9667, 491.2089) + .. controls ( 57.1044, 491.4970) and ( 56.0781, 490.6962) .. ( 55.6855, 489.4316) + .. controls ( 53.8339, 483.4589) and ( 49.7734, 476.0205) .. ( 46.3623, 472.3515) + .. controls ( 40.4824, 466.0283) and ( 27.6064, 449.6054) .. ( 27.5683, 448.3818) + .. controls ( 27.5507, 447.7753) and ( 25.7001, 445.1054) .. ( 23.4570, 442.4492) + .. controls ( 21.2138, 439.7919) and ( 17.7470, 435.6035) .. ( 15.7529, 433.1406) + .. controls ( 13.7587, 430.6767) and ( 11.2587, 428.8291) .. ( 10.1962, 429.0341) + .. controls ( 7.1943, 429.6123) and ( 6.1728, 435.7353) .. ( 8.0849, 441.6943) + .. controls ( 9.0175, 444.5986) and ( 10.1367, 449.6435) .. ( 10.5732, 452.9062) + .. controls ( 11.0097, 456.1679) and ( 11.8369, 459.1279) .. ( 12.4121, 459.4833) + .. controls ( 12.9873, 459.8388) and ( 15.8300, 465.0761) .. ( 18.7294, 471.1210) + .. controls ( 21.6289, 477.1660) and ( 25.9257, 485.0312) .. ( 28.2783, 488.5986) + .. controls ( 30.6298, 492.1669) and ( 32.5546, 495.4589) .. ( 32.5546, 495.9150) + .. controls ( 32.5546, 496.3720) and ( 34.4414, 499.6640) .. ( 36.7470, 503.2324) + .. controls ( 54.8505, 531.2480) and ( 61.8486, 544.5488) .. ( 76.0195, 577.8828) + .. controls ( 84.0869, 596.8603) and ( 88.1699, 609.4833) .. ( 86.2412, 609.4833) + .. controls ( 84.2617, 609.4833) and ( 77.5195, 605.1582) .. ( 76.4853, 603.2255) + .. controls ( 74.3144, 599.1699) and ( 67.1699, 595.6796) .. ( 61.0410, 595.6796) + .. controls ( 56.1933, 595.6796) and ( 54.9560, 596.2089) .. ( 52.9873, 599.1298) + .. controls ( 47.7968, 606.8281) and ( 47.2285, 608.9013) .. ( 48.8974, 614.0566) + .. controls ( 51.0605, 620.7402) and ( 54.8066, 627.9716) .. ( 56.7324, 629.1806) + .. controls ( 58.8642, 630.5175) and ( 61.8818, 635.3535) .. ( 68.2509, 647.6376) + .. controls ( 71.1484, 653.2246) and ( 76.0781, 662.3134) .. ( 79.2060, 667.8349) + .. controls ( 85.9501, 679.7392) and ( 97.4296, 699.6835) .. ( 99.0693, 702.3447) + .. controls ( 99.7070, 703.3798) and ( 101.3164, 706.4863) .. ( 102.6445, 709.2470) + .. controls ( 103.9736, 712.0078) and ( 107.3671, 718.5019) .. ( 110.1865, 723.6777) + .. controls ( 115.6513, 733.7138) and ( 116.8476, 740.9736) .. ( 113.4951, 743.7568) + .. controls ( 112.4599, 744.6152) and ( 111.6132, 746.1044) .. ( 111.6132, 747.0644) + .. controls ( 111.6132, 748.0244) and ( 111.1289, 749.7910) .. ( 110.5371, 750.9892) + .. controls ( 109.9453, 752.1875) and ( 108.6113, 754.8623) .. ( 107.5712, 756.9326) + .. controls ( 106.5322, 759.0029) and ( 105.3457, 762.8896) .. ( 104.9345, 765.5683) + .. controls ( 103.9853, 771.7617) and ( 107.1162, 786.8242) .. ( 110.4873, 792.2783) + .. controls ( 112.6621, 795.7978) and ( 113.8027, 796.4589) .. ( 117.6757, 796.4423) + .. controls ( 123.5791, 796.4179) and ( 124.3876, 795.8017) .. ( 127.9365, 788.6191) + .. controls ( 129.5556, 785.3398) and ( 131.3291, 782.6582) .. ( 131.8769, 782.6582) + .. controls ( 133.2851, 782.6582) and ( 138.6689, 770.5615) .. ( 140.2548, 763.8349) + .. controls ( 141.6250, 758.0244) and ( 140.5087, 743.3037) .. ( 138.4179, 739.6113) + .. controls ( 137.8242, 738.5625) and ( 135.6250, 735.8193) .. ( 133.5312, 733.5146) + .. controls ( 131.4375, 731.2109) and ( 128.9482, 727.4384) .. ( 127.9990, 725.1328) + .. controls ( 127.0498, 722.8261) and ( 124.0996, 717.5781) .. ( 121.4433, 713.4687) + .. controls ( 118.7871, 709.3593) and ( 114.5478, 702.2109) .. ( 112.0224, 697.5830) + .. controls ( 109.4970, 692.9550) and ( 107.0449, 688.8867) .. ( 106.5722, 688.5410) + .. controls ( 106.1005, 688.1962) and ( 103.8623, 684.5253) .. ( 101.5986, 680.3847) + .. controls ( 99.3349, 676.2431) and ( 95.6318, 669.4667) .. ( 93.3681, 665.3251) + .. controls ( 83.6328, 647.5078) and ( 75.5703, 630.7490) .. ( 76.4667, 630.1943) + .. controls ( 77.0000, 629.8652) and ( 78.7724, 630.6289) .. ( 80.4072, 631.8916) + .. controls ( 83.6494, 634.3974) and ( 94.4062, 638.3457) .. ( 97.9912, 638.3457) + .. controls ( 101.7519, 638.3457) and ( 108.7685, 630.2607) .. ( 109.6279, 624.9375) + .. controls ( 110.4746, 619.6953) and ( 109.8320, 608.5390) .. ( 108.6142, 607.3203) + .. controls ( 108.1933, 606.8994) and ( 107.8486, 604.9677) .. ( 107.8486, 603.0273) + .. controls ( 107.8486, 599.7431) and ( 102.0507, 587.4033) .. ( 98.5000, 583.1298) + .. controls ( 97.6396, 582.0947) and ( 96.5654, 580.4013) .. ( 96.1123, 579.3652) + .. controls ( 95.6591, 578.3300) and ( 93.6162, 574.6601) .. ( 91.5712, 571.2089) + .. controls ( 88.0849, 565.3251) and ( 82.5166, 554.2861) .. ( 77.9619, 544.2285) + .. controls ( 76.8681, 541.8134) and ( 75.2792, 538.9892) .. ( 74.4316, 537.9541) + .. controls ( 73.5839, 536.9189) and ( 71.7558, 533.4228) .. ( 70.3681, 530.1855) + -- ( 67.8447, 524.2988) + -- ( 73.4033, 521.0419) + .. controls ( 77.1738, 518.8320) and ( 79.1962, 516.6904) .. ( 79.6914, 514.3798) + .. controls ( 80.0937, 512.5068) and ( 81.2099, 508.9980) .. ( 82.1728, 506.5820) + .. controls ( 86.5839, 495.5126) and ( 87.6708, 487.7197) .. ( 86.3554, 476.5888) + .. controls ( 85.6542, 470.6542) and ( 84.3349, 463.8212) .. ( 83.4248, 461.4062) + .. controls ( 79.3779, 450.6718) and ( 76.4365, 405.2714) .. ( 78.9306, 392.0546) + .. controls ( 80.9570, 381.3125) and ( 81.1181, 361.3896) .. ( 79.1933, 359.4648) + .. controls ( 78.3886, 358.6611) and ( 77.7314, 356.9609) .. ( 77.7314, 355.6875) + .. controls ( 77.7314, 354.4130) and ( 76.3447, 351.9853) .. ( 74.6503, 350.2910) + .. controls ( 71.4482, 347.0888) and ( 67.3076, 346.4130) .. ( 63.7187, 348.5068) + -- cycle + ( 121.3378, 363.6250) + .. controls ( 118.4638, 365.2988) and ( 115.5087, 371.1171) .. ( 115.1513, 375.8027) + .. controls ( 114.8017, 380.3916) and ( 119.9746, 390.4814) .. ( 123.6982, 392.4746) + .. controls ( 125.4375, 393.4052) and ( 130.4707, 402.0556) .. ( 137.4248, 416.0673) + .. controls ( 143.4648, 428.2353) and ( 149.6513, 439.8847) .. ( 151.1718, 441.9550) + .. controls ( 152.6923, 444.0253) and ( 156.7666, 451.0839) .. ( 160.2246, 457.6416) + .. controls ( 163.6826, 464.1982) and ( 167.8085, 471.8212) .. ( 169.3925, 474.5820) + .. controls ( 172.3759, 479.7802) and ( 188.9492, 512.9023) .. ( 195.0781, 525.9150) + -- ( 198.5683, 533.3271) + -- ( 195.9511, 541.6015) + .. controls ( 188.5712, 564.9355) and ( 189.0019, 585.9726) .. ( 197.1015, 597.7753) + .. controls ( 202.0546, 604.9931) and ( 207.8789, 606.9218) .. ( 213.7558, 603.2900) + .. controls ( 218.9550, 600.0761) and ( 226.5000, 591.0585) .. ( 229.0039, 585.0654) + .. controls ( 231.2138, 579.7753) and ( 230.3710, 572.2500) .. ( 226.7636, 565.0566) + .. controls ( 225.4121, 562.3623) and ( 223.5273, 557.9492) .. ( 222.5742, 555.2480) + .. controls ( 221.6210, 552.5468) and ( 219.6689, 548.6904) .. ( 218.2353, 546.6777) + .. controls ( 215.7900, 543.2431) and ( 215.7500, 542.7666) .. ( 217.5820, 538.9042) + .. controls ( 219.7304, 534.3779) and ( 225.2773, 527.9150) .. ( 227.0136, 527.9150) + .. controls ( 227.6210, 527.9150) and ( 228.4677, 529.7500) .. ( 228.8935, 531.9931) + .. controls ( 229.3203, 534.2363) and ( 230.2138, 538.3310) .. ( 230.8798, 541.0917) + .. controls ( 232.5839, 548.1601) and ( 238.0087, 582.7109) .. ( 239.6464, 596.9345) + .. controls ( 240.4013, 603.4912) and ( 241.7695, 611.6787) .. ( 242.6865, 615.1298) + .. controls ( 243.6035, 618.5810) and ( 245.0283, 625.0751) .. ( 245.8525, 629.5615) + .. controls ( 246.6767, 634.0478) and ( 248.1083, 641.3886) .. ( 249.0351, 645.8750) + .. controls ( 252.2812, 661.6015) and ( 252.6083, 667.8359) .. ( 250.3076, 670.1367) + .. controls ( 247.7714, 672.6728) and ( 246.9531, 672.7070) .. ( 241.6767, 670.5019) + .. controls ( 236.2041, 668.2158) and ( 228.7421, 661.5556) .. ( 224.9863, 655.6054) + .. controls ( 223.3173, 652.9619) and ( 220.5400, 650.1552) .. ( 218.8144, 649.3691) + .. controls ( 213.0771, 646.7558) and ( 199.5488, 626.3496) .. ( 189.8740, 605.7187) + .. controls ( 187.4472, 600.5419) and ( 183.5625, 592.3535) .. ( 181.2412, 587.5224) + .. controls ( 178.9208, 582.6914) and ( 174.2080, 570.8320) .. ( 170.7685, 561.1699) + .. controls ( 158.1699, 525.7753) and ( 153.7880, 509.1025) .. ( 154.1757, 498.0234) + .. controls ( 154.5546, 487.1591) and ( 152.3115, 483.7128) .. ( 145.2041, 484.2392) + .. controls ( 140.7119, 484.5712) and ( 139.5087, 485.3554) .. ( 135.9492, 490.2685) + .. controls ( 133.6992, 493.3740) and ( 131.8203, 496.7177) .. ( 131.7744, 497.6992) + .. controls ( 131.7285, 498.6796) and ( 130.8408, 500.4218) .. ( 129.8017, 501.5703) + .. controls ( 127.9267, 503.6416) and ( 128.6152, 508.4580) .. ( 131.5966, 514.1259) + .. controls ( 133.5039, 517.7539) and ( 136.5722, 529.8681) .. ( 138.5859, 541.7187) + .. controls ( 141.5419, 559.1220) and ( 145.0478, 573.0263) .. ( 150.7675, 590.0322) + .. controls ( 156.3212, 606.5429) and ( 170.8408, 636.9462) .. ( 179.1259, 649.4140) + .. controls ( 182.0244, 653.7773) and ( 184.3964, 657.6123) .. ( 184.3964, 657.9384) + .. controls ( 184.3964, 658.2636) and ( 184.9638, 659.2119) .. ( 185.6582, 660.0449) + .. controls ( 186.3515, 660.8789) and ( 189.5498, 665.5136) .. ( 192.7646, 670.3457) + .. controls ( 201.0341, 682.7724) and ( 208.4853, 691.3623) .. ( 230.8671, 714.2666) + .. controls ( 256.5087, 740.5078) and ( 263.9902, 748.6582) .. ( 263.1806, 749.4677) + .. controls ( 260.4433, 752.2050) and ( 217.0244, 714.2587) .. ( 217.0234, 709.1279) + .. controls ( 217.0234, 707.6347) and ( 209.1914, 701.2744) .. ( 202.4902, 697.3251) + .. controls ( 199.5615, 695.5996) and ( 193.2314, 690.5175) .. ( 188.4228, 686.0312) + .. controls ( 183.6142, 681.5449) and ( 175.8994, 674.8007) .. ( 171.2792, 671.0449) + .. controls ( 166.6582, 667.2880) and ( 162.0712, 662.6542) .. ( 161.0849, 660.7480) + .. controls ( 159.8359, 658.3330) and ( 157.9570, 657.0312) .. ( 154.8896, 656.4550) + .. controls ( 152.4677, 656.0009) and ( 150.1777, 655.1289) .. ( 149.7988, 654.5166) + .. controls ( 148.2412, 651.9970) and ( 145.3828, 653.7207) .. ( 142.8027, 658.7373) + .. controls ( 140.9335, 662.3720) and ( 139.8974, 667.0683) .. ( 139.5498, 673.4824) + .. controls ( 139.0849, 682.0546) and ( 139.5058, 684.1816) .. ( 144.2656, 697.3251) + .. controls ( 147.1396, 705.2626) and ( 150.2011, 714.2978) .. ( 151.0693, 717.4033) + .. controls ( 151.9365, 720.5097) and ( 154.0625, 725.8740) .. ( 155.7939, 729.3251) + .. controls ( 157.5244, 732.7763) and ( 160.8564, 741.3818) .. ( 163.1982, 748.4501) + .. controls ( 167.3398, 760.9492) and ( 167.5585, 761.2998) .. ( 171.2207, 761.2929) + .. controls ( 176.0166, 761.2861) and ( 176.8701, 760.6884) .. ( 182.3017, 753.5498) + .. controls ( 190.4697, 742.8154) and ( 192.2460, 738.1162) .. ( 191.2802, 729.7939) + .. controls ( 190.8095, 725.7373) and ( 189.9150, 722.1044) .. ( 189.2929, 721.7197) + .. controls ( 188.6708, 721.3349) and ( 188.1435, 719.7832) .. ( 188.1210, 718.2705) + .. controls ( 188.1005, 716.7587) and ( 187.2705, 714.4501) .. ( 186.2792, 713.1406) + .. controls ( 185.2880, 711.8310) and ( 184.7841, 710.2626) .. ( 185.1591, 709.6562) + .. controls ( 185.5341, 709.0498) and ( 184.3613, 706.7324) .. ( 182.5537, 704.5078) + .. controls ( 176.2597, 696.7617) and ( 170.6162, 688.5410) .. ( 171.5927, 688.5410) + .. controls ( 172.5136, 688.5410) and ( 177.8388, 693.0654) .. ( 188.1914, 702.6455) + .. controls ( 192.5410, 706.6689) and ( 207.4589, 719.7226) .. ( 212.5458, 723.9550) + .. controls ( 226.7460, 735.7705) and ( 234.7490, 742.5771) .. ( 238.7802, 746.2666) + .. controls ( 241.4199, 748.6816) and ( 245.9335, 752.1787) .. ( 248.8115, 754.0371) + .. controls ( 251.6884, 755.8955) and ( 255.5439, 758.5781) .. ( 257.3789, 759.9980) + .. controls ( 259.2138, 761.4179) and ( 261.0595, 762.5800) .. ( 261.4824, 762.5800) + .. controls ( 261.9042, 762.5800) and ( 264.4677, 763.9804) .. ( 267.1796, 765.6914) + .. controls ( 269.8906, 767.4033) and ( 274.3437, 769.1611) .. ( 277.0742, 769.5976) + .. controls ( 281.2587, 770.2666) and ( 282.2548, 769.9882) .. ( 283.4130, 767.8232) + .. controls ( 285.1201, 764.6337) and ( 285.1845, 759.3916) .. ( 283.5556, 756.3476) + .. controls ( 282.8779, 755.0810) and ( 274.2666, 746.5683) .. ( 264.4189, 737.4306) + .. controls ( 236.8994, 711.8955) and ( 233.5156, 708.6523) .. ( 221.7294, 696.5058) + .. controls ( 215.6904, 690.2822) and ( 210.7490, 684.6142) .. ( 210.7490, 683.9101) + .. controls ( 210.7490, 683.2060) and ( 209.1777, 681.2783) .. ( 207.2578, 679.6250) + .. controls ( 202.0390, 675.1337) and ( 183.5908, 644.7089) .. ( 172.3320, 622.0253) + .. controls ( 164.8525, 606.9560) and ( 154.1376, 572.4765) .. ( 154.3955, 564.3066) + .. controls ( 154.5195, 560.4033) and ( 159.4882, 570.7187) .. ( 166.9404, 590.3505) + .. controls ( 179.9580, 624.6455) and ( 195.5937, 650.8427) .. ( 211.2441, 664.5820) + .. controls ( 221.0693, 673.2070) and ( 236.7929, 683.2783) .. ( 244.4101, 685.8251) + .. controls ( 249.2539, 687.4453) and ( 259.8808, 685.6884) .. ( 262.2089, 682.8828) + .. controls ( 265.0830, 679.4199) and ( 265.0908, 663.5078) .. ( 262.2236, 653.4042) + .. controls ( 259.5097, 643.8427) and ( 258.5136, 639.9707) .. ( 253.0253, 617.6396) + .. controls ( 246.7910, 592.2773) and ( 244.6474, 581.0888) .. ( 244.7304, 574.3457) + .. controls ( 244.7792, 570.3388) and ( 242.9199, 559.8564) .. ( 240.2968, 549.3505) + .. controls ( 237.3984, 537.7431) and ( 235.8564, 528.7470) .. ( 235.9951, 524.2529) + .. controls ( 236.2636, 515.5292) and ( 232.5380, 504.7851) .. ( 227.8417, 500.7460) + -- ( 224.3984, 497.7841) + -- ( 218.8144, 501.6259) + .. controls ( 215.2558, 504.0742) and ( 212.0908, 507.7177) .. ( 210.0869, 511.6718) + .. controls ( 208.3574, 515.0839) and ( 206.4023, 517.8759) .. ( 205.7412, 517.8759) + .. controls ( 204.2958, 517.8759) and ( 200.2373, 509.2109) .. ( 198.3154, 502.0224) + .. controls ( 197.5527, 499.1689) and ( 196.0849, 496.1357) .. ( 195.0546, 495.2802) + .. controls ( 194.0244, 494.4257) and ( 193.1816, 493.0390) .. ( 193.1816, 492.2001) + .. controls ( 193.1816, 491.3613) and ( 190.6035, 485.3603) .. ( 187.4511, 478.8642) + .. controls ( 176.0371, 455.3359) and ( 174.5761, 452.0292) .. ( 175.1708, 451.0673) + .. controls ( 175.5029, 450.5302) and ( 179.0117, 452.5800) .. ( 182.9667, 455.6240) + .. controls ( 186.9228, 458.6679) and ( 192.2509, 462.0322) .. ( 194.8076, 463.1005) + .. controls ( 197.3642, 464.1689) and ( 199.4560, 465.6357) .. ( 199.4560, 466.3613) + .. controls ( 199.4560, 467.0869) and ( 200.5166, 467.6806) .. ( 201.8125, 467.6806) + .. controls ( 203.1083, 467.6806) and ( 204.8535, 468.5058) .. ( 205.6904, 469.5136) + .. controls ( 206.5273, 470.5224) and ( 208.3828, 471.7197) .. ( 209.8144, 472.1738) + .. controls ( 211.2451, 472.6279) and ( 215.0058, 474.8535) .. ( 218.1718, 477.1191) + .. controls ( 226.6582, 483.1943) and ( 245.3232, 492.5048) .. ( 254.8427, 495.4121) + .. controls ( 271.0996, 500.3769) and ( 277.7939, 497.3447) .. ( 279.3369, 484.3193) + .. controls ( 280.3896, 475.4277) and ( 275.7705, 459.1787) .. ( 266.4531, 438.9951) + .. controls ( 263.7792, 433.2021) and ( 263.6015, 432.0722) .. ( 265.1748, 430.8378) + .. controls ( 282.7666, 417.0439) and ( 292.2167, 410.1445) .. ( 294.5136, 409.4208) + .. controls ( 296.0673, 408.9316) and ( 297.4042, 407.8632) .. ( 297.4853, 407.0468) + .. controls ( 297.5673, 406.2314) and ( 297.7744, 403.8691) .. ( 297.9472, 401.7988) + .. controls ( 298.1191, 399.7275) and ( 298.6835, 396.7636) .. ( 299.2001, 395.2099) + .. controls ( 300.0253, 392.7304) and ( 299.7119, 392.3867) .. ( 296.6250, 392.3867) + .. controls ( 290.6464, 392.3867) and ( 282.8457, 397.1640) .. ( 275.8261, 405.1240) + .. controls ( 272.1279, 409.3183) and ( 268.8203, 413.1386) .. ( 268.4746, 413.6142) + .. controls ( 266.6044, 416.1943) and ( 258.3535, 421.3466) .. ( 257.2177, 420.6445) + .. controls ( 256.4873, 420.1933) and ( 254.8076, 417.7451) .. ( 253.4833, 415.2031) + .. controls ( 250.1953, 408.8906) and ( 242.1611, 400.7851) .. ( 235.8378, 397.4013) + .. controls ( 231.6357, 395.1523) and ( 228.4111, 396.6767) .. ( 219.2968, 405.2226) + .. controls ( 205.1884, 418.4492) and ( 201.6474, 425.8037) .. ( 204.4218, 436.1074) + .. controls ( 206.0703, 442.2314) and ( 211.5292, 445.7070) .. ( 221.5488, 447.0136) + .. controls ( 227.3857, 447.7744) and ( 233.3994, 446.0888) .. ( 249.3583, 439.2177) + .. controls ( 252.2500, 437.9726) and ( 266.0332, 469.8496) .. ( 267.9326, 482.1718) + .. controls ( 269.0634, 489.5146) and ( 267.2861, 490.5273) .. ( 257.3164, 488.2246) + .. controls ( 246.9472, 485.8291) and ( 232.6816, 478.5859) .. ( 216.8574, 467.6835) + .. controls ( 208.7568, 462.1025) and ( 192.7851, 448.6933) .. ( 190.1689, 445.2773) + .. controls ( 188.7695, 443.4501) and ( 186.7568, 441.1083) .. ( 185.6972, 440.0722) + .. controls ( 184.6367, 439.0371) and ( 181.2890, 435.3671) .. ( 178.2578, 431.9160) + .. controls ( 175.2265, 428.4648) and ( 169.5791, 422.2412) .. ( 165.7089, 418.0849) + .. controls ( 156.6582, 408.3662) and ( 143.5576, 389.1601) .. ( 142.4257, 383.9511) + .. controls ( 141.2187, 378.3964) and ( 133.4042, 366.8457) .. ( 129.1552, 364.3349) + .. controls ( 125.1210, 361.9521) and ( 124.3330, 361.8808) .. ( 121.3388, 363.6250) + -- cycle + ( 240.4843, 420.3164) + .. controls ( 245.4355, 427.6318) and ( 245.3349, 428.1669) .. ( 238.4580, 431.1250) + .. controls ( 225.2060, 436.8261) and ( 216.6250, 435.6982) .. ( 219.3847, 428.6171) + .. controls ( 220.8486, 424.8632) and ( 228.1435, 417.9160) .. ( 231.4550, 417.1220) + .. controls ( 236.5566, 415.8994) and ( 237.7900, 416.3359) .. cycle + ( 210.8183, 574.7900) + .. controls ( 212.4023, 581.8710) and ( 210.9570, 587.5849) .. ( 207.8408, 586.5585) + .. controls ( 206.2021, 586.0195) and ( 205.1494, 574.3193) .. ( 206.3203, 569.6562) + .. controls ( 207.4140, 565.2968) and ( 209.1328, 567.2587) .. cycle} +% \end{macrocode} +% +% 旦。 +% \begin{macrocode} +\def\fdulogo@name@original@dan{% + ( 319.2978, 425.6777) + .. controls ( 316.5371, 426.6718) and ( 314.1982, 427.4941) .. ( 314.1005, 427.5048) + .. controls ( 314.0019, 427.5156) and ( 313.5791, 428.8916) .. ( 313.1591, 430.5644) + .. controls ( 312.7392, 432.2363) and ( 311.0673, 435.2011) .. ( 309.4433, 437.1523) + .. controls ( 307.2539, 439.7822) and ( 306.4658, 442.3232) .. ( 306.3945, 446.9746) + .. controls ( 306.2812, 454.4550) and ( 308.2353, 457.9169) .. ( 313.8671, 460.2138) + .. controls ( 316.1630, 461.1503) and ( 318.7304, 462.7900) .. ( 319.5712, 463.8574) + .. controls ( 320.8925, 465.5341) and ( 321.1054, 465.4033) .. ( 321.1396, 462.8896) + .. controls ( 321.1718, 460.4746) and ( 321.6582, 460.1201) .. ( 324.0029, 460.8007) + .. controls ( 337.7177, 464.7763) and ( 344.6855, 467.1533) .. ( 346.2773, 468.3994) + .. controls ( 348.2480, 469.9414) and ( 356.8476, 473.0244) .. ( 360.0810, 473.3476) + .. controls ( 363.5185, 473.6914) and ( 367.6103, 475.3642) .. ( 367.6103, 476.4257) + .. controls ( 367.6103, 477.0019) and ( 371.0400, 477.8710) .. ( 375.2304, 478.3574) + .. controls ( 379.9208, 478.9013) and ( 383.1083, 479.9140) .. ( 383.5214, 480.9902) + .. controls ( 383.8906, 481.9521) and ( 385.3154, 482.7392) .. ( 386.6884, 482.7392) + .. controls ( 388.0615, 482.7392) and ( 390.6826, 483.5585) .. ( 392.5146, 484.5595) + .. controls ( 397.3085, 487.1796) and ( 410.1279, 490.5087) .. ( 411.6943, 489.5410) + .. controls ( 412.4267, 489.0878) and ( 414.5957, 489.8789) .. ( 416.5156, 491.2988) + .. controls ( 418.5839, 492.8281) and ( 421.0566, 493.6044) .. ( 422.5849, 493.2050) + .. controls ( 424.0029, 492.8339) and ( 428.4482, 493.7597) .. ( 432.4648, 495.2626) + .. controls ( 436.4814, 496.7656) and ( 440.8964, 498.2636) .. ( 442.2763, 498.5927) + .. controls ( 443.6572, 498.9208) and ( 446.8447, 499.7939) .. ( 449.3593, 500.5332) + .. controls ( 459.2617, 503.4414) and ( 473.3349, 496.3613) .. ( 473.3349, 488.4716) + .. controls ( 473.3349, 483.8603) and ( 471.1064, 481.7968) .. ( 465.1064, 480.8515) + .. controls ( 455.5791, 479.3496) and ( 442.7822, 475.0976) .. ( 442.0498, 473.1894) + .. controls ( 441.5449, 471.8730) and ( 440.3046, 471.5410) .. ( 437.8847, 472.0722) + .. controls ( 435.5341, 472.5888) and ( 434.2226, 472.2685) .. ( 433.7617, 471.0664) + .. controls ( 433.1894, 469.5761) and ( 423.9970, 463.9160) .. ( 422.1494, 463.9160) + .. controls ( 421.8193, 463.9160) and ( 422.2431, 465.0263) .. ( 423.0908, 466.3837) + .. controls ( 423.9384, 467.7402) and ( 427.3320, 470.1328) .. ( 430.6308, 471.6992) + .. controls ( 433.9306, 473.2656) and ( 436.6298, 475.2001) .. ( 436.6298, 475.9990) + .. controls ( 436.6298, 476.7978) and ( 437.4765, 477.7763) .. ( 438.5117, 478.1728) + .. controls ( 439.5478, 478.5703) and ( 440.3945, 479.5380) .. ( 440.3945, 480.3242) + .. controls ( 440.3945, 481.1855) and ( 439.5224, 481.4013) .. ( 438.1982, 480.8681) + .. controls ( 436.9902, 480.3808) and ( 432.4912, 479.5302) .. ( 428.1992, 478.9775) + .. controls ( 420.8281, 478.0283) and ( 406.4062, 473.3974) .. ( 398.5673, 469.4638) + .. controls ( 396.6132, 468.4824) and ( 394.1865, 467.6806) .. ( 393.1738, 467.6806) + .. controls ( 392.1611, 467.6806) and ( 388.9951, 466.5507) .. ( 386.1376, 465.1708) + .. controls ( 383.2802, 463.7900) and ( 380.0605, 462.6367) .. ( 378.9824, 462.6064) + .. controls ( 377.9042, 462.5781) and ( 374.7636, 461.1708) .. ( 372.0029, 459.4824) + .. controls ( 369.2421, 457.7939) and ( 365.8115, 455.8935) .. ( 364.3789, 455.2587) + .. controls ( 362.9472, 454.6250) and ( 360.8359, 452.6718) .. ( 359.6875, 450.9189) + .. controls ( 358.5390, 449.1669) and ( 355.6376, 446.8017) .. ( 353.2392, 445.6640) + .. controls ( 350.8417, 444.5263) and ( 348.5458, 442.5429) .. ( 348.1376, 441.2578) + .. controls ( 347.7294, 439.9726) and ( 345.0263, 437.0771) .. ( 342.1308, 434.8242) + .. controls ( 339.2353, 432.5722) and ( 336.3847, 429.9550) .. ( 335.7968, 429.0087) + .. controls ( 334.7763, 427.3671) and ( 327.3623, 423.6982) .. ( 325.2988, 423.8144) + .. controls ( 324.7587, 423.8466) and ( 322.0585, 424.6826) .. cycle + ( 415.2949, 521.2421) + .. controls ( 415.2939, 521.8066) and ( 414.0234, 523.7656) .. ( 412.4716, 525.5957) + .. controls ( 410.9199, 527.4267) and ( 406.3144, 532.9501) .. ( 402.2382, 537.8701) + .. controls ( 398.1611, 542.7910) and ( 394.4912, 546.6523) .. ( 394.0810, 546.4521) + .. controls ( 389.8281, 544.3691) and ( 381.4082, 538.3232) .. ( 381.3857, 537.3359) + .. controls ( 381.3671, 536.6406) and ( 377.9853, 533.0712) .. ( 373.8642, 529.4033) + .. controls ( 365.7919, 522.2177) and ( 365.2246, 523.8359) .. ( 372.6259, 532.9345) + .. controls ( 375.1533, 536.0400) and ( 379.4140, 542.1757) .. ( 382.0947, 546.5693) + -- ( 386.9697, 554.5566) + -- ( 383.3955, 561.0009) + .. controls ( 371.1005, 583.1689) and ( 370.1201, 585.7314) .. ( 370.1201, 595.7177) + .. controls ( 370.1201, 609.5302) and ( 372.8642, 611.1503) .. ( 384.7451, 604.3525) + .. controls ( 388.8574, 602.0000) and ( 394.4375, 597.0087) .. ( 398.9501, 591.6484) + .. controls ( 410.9628, 577.3779) and ( 415.2675, 565.4941) .. ( 410.8603, 558.7685) + .. controls ( 409.1503, 556.1591) and ( 408.9873, 555.0546) .. ( 410.1425, 553.9003) + .. controls ( 412.0410, 552.0019) and ( 414.0000, 554.7304) .. ( 414.0097, 559.2871) + .. controls ( 414.0136, 561.0126) and ( 415.1083, 565.8125) .. ( 416.4423, 569.9541) + .. controls ( 417.7773, 574.0947) and ( 420.6787, 583.6953) .. ( 422.8896, 591.2871) + .. controls ( 428.1640, 609.3964) and ( 435.3603, 630.5166) .. ( 442.3437, 648.3847) + .. controls ( 448.2597, 663.5214) and ( 450.4130, 672.2275) .. ( 448.2412, 672.2275) + .. controls ( 447.5458, 672.2275) and ( 446.2958, 671.4082) .. ( 445.4648, 670.4072) + .. controls ( 444.6337, 669.4052) and ( 441.3173, 668.1953) .. ( 438.0957, 667.7187) + .. controls ( 433.0722, 666.9755) and ( 415.9150, 659.3427) .. ( 414.0419, 657.0175) + .. controls ( 413.6962, 656.5898) and ( 408.8964, 653.3017) .. ( 403.3750, 649.7109) + .. controls ( 397.8535, 646.1201) and ( 390.2304, 640.3369) .. ( 386.4345, 636.8593) + .. controls ( 382.6376, 633.3818) and ( 377.5556, 628.7265) .. ( 375.1396, 626.5146) + .. controls ( 367.3935, 619.4218) and ( 361.8623, 615.7998) .. ( 357.4667, 614.9384) + .. controls ( 347.3837, 612.9648) and ( 344.0810, 606.7646) .. ( 345.5927, 592.6455) + .. controls ( 346.2294, 586.6962) and ( 347.3085, 583.3525) .. ( 349.3886, 580.8798) + .. controls ( 357.6210, 571.0966) and ( 361.7832, 554.2304) .. ( 358.8720, 542.4482) + .. controls ( 353.4013, 520.3105) and ( 351.4619, 518.8955) .. ( 344.5126, 531.9648) + .. controls ( 341.8271, 537.0156) and ( 341.5449, 538.9179) .. ( 341.9218, 549.4023) + .. controls ( 342.3574, 561.4921) and ( 340.2324, 576.2607) .. ( 337.0078, 583.5527) + .. controls ( 334.1416, 590.0341) and ( 333.7705, 591.7919) .. ( 335.0937, 592.6093) + .. controls ( 335.7832, 593.0361) and ( 337.1455, 592.7236) .. ( 338.1210, 591.9140) + .. controls ( 342.5576, 588.2324) and ( 343.1953, 594.2929) .. ( 340.5273, 614.7910) + .. controls ( 339.9306, 619.3750) and ( 340.3457, 621.9453) .. ( 342.3544, 626.0849) + .. controls ( 345.1796, 631.9101) and ( 345.8798, 632.4570) .. ( 359.9794, 639.8652) + .. controls ( 365.2119, 642.6152) and ( 370.0576, 645.3115) .. ( 370.7480, 645.8593) + .. controls ( 376.1210, 650.1191) and ( 423.3105, 672.5322) .. ( 434.1201, 675.9589) + .. controls ( 450.5595, 681.1689) and ( 456.0761, 681.8339) .. ( 462.0791, 679.3251) + .. controls ( 466.0400, 677.6708) and ( 466.7470, 676.7871) .. ( 466.7470, 673.4941) + .. controls ( 466.7470, 671.3593) and ( 465.0273, 665.9335) .. ( 462.9248, 661.4365) + .. controls ( 460.8222, 656.9394) and ( 457.4599, 648.8095) .. ( 455.4541, 643.3691) + .. controls ( 453.4482, 637.9287) and ( 450.3544, 630.6103) .. ( 448.5791, 627.1064) + .. controls ( 446.8037, 623.6025) and ( 443.9121, 616.0859) .. ( 442.1542, 610.4033) + .. controls ( 440.3964, 604.7207) and ( 438.1884, 597.8125) .. ( 437.2480, 595.0517) + .. controls ( 434.3066, 586.4208) and ( 425.3359, 549.3056) .. ( 425.3359, 545.7714) + .. controls ( 425.3359, 543.2763) and ( 421.6914, 523.2187) .. ( 421.0371, 522.1103) + .. controls ( 420.5351, 521.2607) and ( 415.2958, 520.4687) .. cycle + ( 388.3437, 583.7851) + .. controls ( 382.5791, 591.8632) and ( 380.1591, 593.6923) .. ( 380.1591, 589.9697) + .. controls ( 380.1591, 586.7412) and ( 383.9306, 580.2763) .. ( 388.7685, 575.2099) + .. controls ( 392.8916, 570.8935) and ( 393.3750, 570.6816) .. ( 393.7402, 573.0410) + .. controls ( 393.9833, 574.6132) and ( 391.8339, 578.8945) .. cycle} +% \end{macrocode} +% +% 大。 +% \begin{macrocode} +\def\fdulogo@name@original@da{% + ( 632.3828, 446.7656) + .. controls ( 622.5283, 451.5029) and ( 618.4785, 456.6845) .. ( 616.0380, 467.6806) + .. controls ( 615.0996, 471.9091) and ( 609.2675, 486.2031) .. ( 602.8417, 500.0214) + .. controls ( 601.1503, 503.6601) and ( 599.7656, 507.7158) .. ( 599.7656, 509.0341) + .. controls ( 599.7656, 510.3525) and ( 596.9423, 518.6220) .. ( 593.4912, 527.4111) + .. controls ( 586.7197, 544.6562) and ( 586.2617, 546.8935) .. ( 589.0263, 549.1875) + .. controls ( 590.4794, 550.3945) and ( 591.3232, 550.1152) .. ( 593.3144, 547.7724) + .. controls ( 597.7050, 542.6074) and ( 612.7236, 522.1816) .. ( 620.4716, 510.8378) + .. controls ( 629.6787, 497.3574) and ( 638.2832, 487.7587) .. ( 641.1611, 487.7587) + .. controls ( 642.3437, 487.7587) and ( 644.6259, 486.0439) .. ( 646.2314, 483.9482) + .. controls ( 647.8378, 481.8525) and ( 651.9296, 478.7421) .. ( 655.3242, 477.0371) + .. controls ( 661.8212, 473.7744) and ( 683.9677, 467.6806) .. ( 689.3300, 467.6806) + .. controls ( 691.0625, 467.6806) and ( 692.8281, 467.1152) .. ( 693.2548, 466.4257) + .. controls ( 693.6816, 465.7353) and ( 695.1269, 465.1708) .. ( 696.4658, 465.1708) + .. controls ( 698.1943, 465.1708) and ( 698.9023, 464.3037) .. ( 698.9023, 462.1865) + .. controls ( 698.9023, 458.3867) and ( 696.1435, 456.1035) .. ( 691.0166, 455.6591) + .. controls ( 688.7968, 455.4667) and ( 681.3339, 454.4423) .. ( 674.4316, 453.3837) + .. controls ( 667.5292, 452.3242) and ( 659.5107, 451.4365) .. ( 656.6113, 451.4121) + .. controls ( 653.6298, 451.3867) and ( 650.9052, 450.6464) .. ( 650.3369, 449.7089) + .. controls ( 649.5332, 448.3798) and ( 639.4472, 443.5361) .. ( 638.3281, 443.9414) + .. controls ( 638.1689, 443.9990) and ( 635.4941, 445.2695) .. cycle + ( 496.2373, 448.9541) + .. controls ( 479.6962, 450.5019) and ( 478.0410, 451.0771) .. ( 478.0410, 455.2734) + .. controls ( 478.0410, 458.7822) and ( 478.2382, 458.8964) .. ( 484.2890, 458.8964) + .. controls ( 494.1474, 458.8964) and ( 514.1533, 465.6093) .. ( 519.5810, 470.7382) + .. controls ( 527.7900, 478.4960) and ( 546.3144, 501.7636) .. ( 550.9013, 510.0781) + .. controls ( 554.6816, 516.9326) and ( 565.1533, 544.1220) .. ( 564.3300, 544.9453) + .. controls ( 563.4492, 545.8261) and ( 547.2187, 535.0283) .. ( 538.3994, 527.6933) + .. controls ( 525.3037, 516.8037) and ( 515.6875, 506.8515) .. ( 515.6875, 504.1884) + .. controls ( 515.6875, 502.8212) and ( 514.3144, 500.1181) .. ( 512.6367, 498.1816) + .. controls ( 509.6484, 494.7324) and ( 509.5126, 494.7041) .. ( 506.0527, 496.7753) + .. controls ( 500.6611, 500.0019) and ( 498.2792, 512.2998) .. ( 502.2734, 516.2929) + .. controls ( 503.9550, 517.9755) and ( 504.5849, 518.0244) .. ( 506.2958, 516.6054) + .. controls ( 508.7910, 514.5341) and ( 513.3173, 516.8486) .. ( 522.0527, 524.6640) + .. controls ( 529.6005, 531.4179) and ( 531.0126, 532.5263) .. ( 546.1201, 543.5625) + .. controls ( 553.1943, 548.7294) and ( 561.2988, 554.6660) .. ( 564.1298, 556.7539) + .. controls ( 569.9980, 561.0820) and ( 570.1572, 561.5517) .. ( 577.9648, 597.5615) + .. controls ( 584.8300, 629.2246) and ( 586.9716, 644.9052) .. ( 588.4189, 674.1103) + .. controls ( 589.1376, 688.6035) and ( 590.2744, 706.6015) .. ( 590.9453, 714.1044) + .. controls ( 591.9648, 725.5039) and ( 591.8623, 728.1806) .. ( 590.3183, 730.3837) + .. controls ( 587.9892, 733.7089) and ( 587.9482, 738.7968) .. ( 590.2265, 741.9111) + .. controls ( 591.8593, 744.1455) and ( 592.5312, 744.2011) .. ( 599.9511, 742.7255) + .. controls ( 605.9921, 741.5244) and ( 608.7617, 740.2324) .. ( 611.3876, 737.3925) + .. controls ( 614.9140, 733.5791) and ( 615.1044, 730.8125) .. ( 612.2880, 724.3056) + .. controls ( 611.6904, 722.9248) and ( 610.2568, 715.8662) .. ( 609.1015, 708.6191) + .. controls ( 607.9472, 701.3720) and ( 606.2294, 690.6435) .. ( 605.2861, 684.7763) + .. controls ( 604.3417, 678.9101) and ( 603.6250, 670.1572) .. ( 603.6923, 665.3251) + .. controls ( 603.8808, 651.9794) and ( 599.1054, 623.3896) .. ( 593.5273, 604.4638) + .. controls ( 587.9189, 585.4316) and ( 584.6064, 571.8359) .. ( 585.5791, 571.8359) + .. controls ( 585.9355, 571.8359) and ( 588.2861, 573.4101) .. ( 590.8007, 575.3339) + .. controls ( 595.6123, 579.0146) and ( 606.5830, 585.7197) .. ( 616.0791, 590.7851) + .. controls ( 619.1845, 592.4414) and ( 624.4023, 595.6318) .. ( 627.6738, 597.8750) + .. controls ( 630.9453, 600.1181) and ( 634.1591, 601.9541) .. ( 634.8154, 601.9541) + .. controls ( 635.4716, 601.9541) and ( 636.3681, 602.5341) .. ( 636.8066, 603.2431) + .. controls ( 637.8388, 604.9150) and ( 633.4511, 608.4746) .. ( 625.1191, 612.7246) + .. controls ( 617.2500, 616.7392) and ( 616.5166, 620.3007) .. ( 623.6396, 619.9111) + .. controls ( 626.0380, 619.7792) and ( 634.7773, 619.3222) .. ( 643.0595, 618.8945) + .. controls ( 651.3417, 618.4677) and ( 659.3261, 617.8740) .. ( 660.8027, 617.5761) + .. controls ( 665.6210, 616.6035) and ( 665.4443, 613.2607) .. ( 660.3369, 608.7460) + .. controls ( 657.7363, 606.4482) and ( 655.0908, 604.5439) .. ( 654.4589, 604.5156) + .. controls ( 653.3681, 604.4658) and ( 646.1669, 599.8320) .. ( 601.0800, 570.1640) + -- ( 581.6894, 557.4052) + -- ( 578.2109, 548.6210) + .. controls ( 576.2968, 543.7890) and ( 572.1328, 533.0605) .. ( 568.9550, 524.7783) + .. controls ( 563.4970, 510.5498) and ( 559.1699, 502.1572) .. ( 548.2490, 484.6210) + .. controls ( 542.0810, 474.7177) and ( 534.3271, 461.6035) .. ( 532.1142, 457.3330) + .. controls ( 531.1406, 455.4550) and ( 529.1640, 453.5595) .. ( 527.7216, 453.1210) + .. controls ( 526.2792, 452.6835) and ( 524.1386, 451.4814) .. ( 522.9638, 450.4511) + .. controls ( 520.4082, 448.2089) and ( 510.2705, 447.6406) .. cycle} +% \end{macrocode} +% +% 学。 +% \begin{macrocode} +\def\fdulogo@name@original@xue{% + ( 859.9462, 361.5869) + .. controls ( 857.7607, 362.5371) and ( 855.7080, 363.0507) .. ( 855.3837, 362.7265) + .. controls ( 853.8916, 361.2343) and ( 832.1875, 365.2773) .. ( 827.5283, 367.9150) + .. controls ( 824.7675, 369.4785) and ( 820.8144, 371.1298) .. ( 818.7441, 371.5849) + .. controls ( 814.5322, 372.5117) and ( 810.7656, 374.1992) .. ( 791.7636, 383.6689) + .. controls ( 773.4511, 392.7949) and ( 756.0244, 404.7509) .. ( 758.0625, 406.7900) + .. controls ( 758.5966, 407.3242) and ( 772.4179, 400.8740) .. ( 774.8232, 398.9677) + .. controls ( 777.2548, 397.0410) and ( 800.0771, 388.0917) .. ( 813.0966, 383.9599) + .. controls ( 828.4384, 379.0908) and ( 849.4228, 376.2177) .. ( 855.8945, 378.0996) + -- ( 860.1552, 379.3388) + -- ( 859.8203, 393.7060) + .. controls ( 859.3164, 415.3574) and ( 856.8242, 456.8144) .. ( 855.9267, 458.4892) + .. controls ( 854.9560, 460.2998) and ( 837.3593, 454.7207) .. ( 830.4912, 450.4257) + .. controls ( 828.0087, 448.8730) and ( 825.1162, 447.6025) .. ( 824.0634, 447.6025) + .. controls ( 823.0107, 447.6025) and ( 821.8242, 446.7548) .. ( 821.4277, 445.7197) + .. controls ( 821.0302, 444.6845) and ( 819.5576, 443.8378) .. ( 818.1562, 443.8378) + .. controls ( 816.7539, 443.8378) and ( 815.6064, 443.1162) .. ( 815.6064, 442.2343) + .. controls ( 815.6064, 441.3525) and ( 810.1005, 437.7529) .. ( 803.3710, 434.2343) + .. controls ( 786.6523, 425.4951) and ( 784.1806, 424.2441) .. ( 779.8427, 422.3300) + .. controls ( 777.7714, 421.4169) and ( 774.0683, 419.3847) .. ( 771.6132, 417.8144) + .. controls ( 766.0869, 414.2822) and ( 755.1582, 413.1093) .. ( 750.4921, 415.5478) + .. controls ( 746.3808, 417.6962) and ( 741.5625, 422.7500) .. ( 736.6806, 430.0332) + .. controls ( 733.3593, 434.9873) and ( 733.0986, 435.9882) .. ( 734.5537, 438.1904) + .. controls ( 735.8554, 440.1621) and ( 738.0654, 440.8437) .. ( 744.8505, 441.3681) + .. controls ( 753.9287, 442.0703) and ( 767.1630, 446.4082) .. ( 779.8017, 452.8242) + .. controls ( 783.9208, 454.9150) and ( 789.1044, 456.7939) .. ( 791.3212, 457.0000) + .. controls ( 794.9130, 457.3339) and ( 802.8613, 461.4062) .. ( 799.9208, 461.4062) + .. controls ( 799.2685, 461.4062) and ( 799.9677, 462.2695) .. ( 801.4736, 463.3242) + .. controls ( 803.1396, 464.4912) and ( 805.4218, 464.9394) .. ( 807.2968, 464.4697) + .. controls ( 809.6064, 463.8896) and ( 810.7226, 464.3339) .. ( 811.7412, 466.2373) + .. controls ( 812.4892, 467.6347) and ( 814.0888, 468.8017) .. ( 815.2949, 468.8291) + .. controls ( 819.8984, 468.9326) and ( 823.2294, 469.7812) .. ( 824.6611, 471.2138) + .. controls ( 825.4794, 472.0312) and ( 827.4648, 472.7001) .. ( 829.0742, 472.7001) + .. controls ( 830.6835, 472.7001) and ( 834.0283, 473.5468) .. ( 836.5058, 474.5820) + .. controls ( 838.9833, 475.6171) and ( 842.0019, 476.4648) .. ( 843.2138, 476.4648) + .. controls ( 844.4257, 476.4648) and ( 846.0927, 477.2792) .. ( 846.9189, 478.2744) + .. controls ( 847.7451, 479.2695) and ( 850.2138, 480.2578) .. ( 852.4062, 480.4707) + .. controls ( 855.7832, 480.7978) and ( 856.4550, 481.4238) .. ( 856.8144, 484.5791) + .. controls ( 857.2656, 488.5478) and ( 862.0068, 495.2529) .. ( 870.1855, 503.4873) + .. controls ( 878.4355, 511.7929) and ( 887.1357, 521.8330) .. ( 887.1357, 523.0478) + .. controls ( 887.1357, 523.6728) and ( 885.0175, 523.2919) .. ( 882.4296, 522.2011) + .. controls ( 865.0791, 514.8906) and ( 855.0830, 512.4111) .. ( 841.6679, 512.0908) + .. controls ( 834.2597, 511.9150) and ( 827.9033, 512.2500) .. ( 827.5410, 512.8359) + .. controls ( 825.0546, 516.8583) and ( 834.7304, 527.3525) .. ( 848.9355, 536.0410) + .. controls ( 872.5839, 550.5058) and ( 891.0488, 558.1162) .. ( 915.9726, 563.6728) + .. controls ( 937.9951, 568.5830) and ( 964.7958, 579.8984) .. ( 975.9189, 588.9814) + .. controls ( 983.2890, 595.0009) and ( 982.8359, 596.0996) .. ( 973.4091, 595.0625) + .. controls ( 962.0449, 593.8125) and ( 930.1123, 588.2060) .. ( 926.4716, 586.8212) + .. controls ( 924.7626, 586.1718) and ( 921.9355, 585.6396) .. ( 920.1894, 585.6396) + .. controls ( 918.4433, 585.6396) and ( 913.1767, 584.4736) .. ( 908.4843, 583.0488) + .. controls ( 899.9658, 580.4619) and ( 899.9501, 580.4482) .. ( 896.6240, 573.0371) + .. controls ( 890.3193, 558.9892) and ( 881.4707, 552.6191) .. ( 883.2324, 563.3964) + .. controls ( 883.3203, 563.9316) and ( 882.7470, 566.9277) .. ( 881.9599, 570.0546) + .. controls ( 880.8320, 574.5312) and ( 880.0957, 575.5644) .. ( 878.4980, 574.9082) + .. controls ( 877.3818, 574.4492) and ( 874.4921, 573.5107) .. ( 872.0771, 572.8212) + .. controls ( 869.6611, 572.1328) and ( 862.6025, 569.1259) .. ( 856.3906, 566.1396) + .. controls ( 850.1787, 563.1533) and ( 839.5781, 558.4052) .. ( 832.8320, 555.5888) + .. controls ( 826.0869, 552.7724) and ( 815.1669, 547.9277) .. ( 808.5664, 544.8222) + .. controls ( 797.6845, 539.7041) and ( 796.2529, 539.3261) .. ( 793.2226, 540.7734) + .. controls ( 786.2568, 544.1015) and ( 789.9345, 552.0595) .. ( 799.1591, 553.6181) + .. controls ( 801.9160, 554.0839) and ( 810.8388, 557.0097) .. ( 818.9873, 560.1191) + .. controls ( 836.3183, 566.7343) and ( 871.1201, 578.7656) .. ( 876.2841, 579.9277) + .. controls ( 879.6445, 580.6835) and ( 879.8115, 581.0195) .. ( 879.0097, 585.3828) + .. controls ( 877.7978, 591.9804) and ( 875.8417, 593.4570) .. ( 875.8417, 587.7734) + .. controls ( 875.8417, 583.9667) and ( 875.3896, 583.1298) .. ( 873.3320, 583.1298) + .. controls ( 871.9511, 583.1298) and ( 870.8222, 583.5576) .. ( 870.8222, 584.0791) + .. controls ( 870.8222, 584.6005) and ( 869.0214, 585.8242) .. ( 866.8212, 586.7978) + .. controls ( 863.5742, 588.2353) and ( 861.5224, 588.2968) .. ( 855.9267, 587.1230) + .. controls ( 845.7187, 584.9814) and ( 845.1533, 587.5312) .. ( 855.1357, 590.6894) + .. controls ( 861.8408, 592.8115) and ( 862.4755, 594.2402) .. ( 858.8349, 599.0136) + .. controls ( 857.1455, 601.2285) and ( 855.7636, 603.3984) .. ( 855.7636, 603.8359) + .. controls ( 855.7636, 605.1064) and ( 849.2841, 613.2480) .. ( 848.2734, 613.2480) + .. controls ( 847.7685, 613.2480) and ( 844.1982, 608.5019) .. ( 840.3378, 602.7021) + .. controls ( 833.2685, 592.0791) and ( 824.7119, 581.8750) .. ( 822.8740, 581.8750) + .. controls ( 822.3281, 581.8750) and ( 821.8808, 583.5488) .. ( 821.8808, 585.5937) + .. controls ( 821.8808, 588.2441) and ( 823.2646, 590.6757) .. ( 826.7001, 594.0634) + .. controls ( 829.3515, 596.6777) and ( 834.2500, 603.2568) .. ( 837.5859, 608.6845) + -- ( 843.6523, 618.5537) + -- ( 840.6103, 620.8925) + .. controls ( 838.9365, 622.1787) and ( 837.1435, 623.2431) .. ( 836.6259, 623.2587) + .. controls ( 834.7148, 623.3154) and ( 835.7675, 627.0302) .. ( 838.3857, 629.4697) + .. controls ( 840.9277, 631.8378) and ( 841.2900, 631.8671) .. ( 844.5205, 629.9589) + .. controls ( 846.4091, 628.8427) and ( 848.7753, 628.2460) .. ( 849.7792, 628.6308) + .. controls ( 850.7832, 629.0156) and ( 856.0537, 634.8886) .. ( 861.4921, 641.6816) + .. controls ( 866.9306, 648.4736) and ( 872.1015, 654.7773) .. ( 872.9833, 655.6894) + .. controls ( 875.5976, 658.3935) and ( 874.8876, 659.3046) .. ( 869.0117, 660.7841) + .. controls ( 860.1054, 663.0273) and ( 857.3457, 662.5126) .. ( 850.3759, 657.3125) + .. controls ( 846.7822, 654.6308) and ( 842.5195, 652.0351) .. ( 840.9033, 651.5439) + .. controls ( 835.7929, 649.9931) and ( 838.2041, 654.8964) .. ( 844.1699, 658.1875) + .. controls ( 847.0947, 659.8007) and ( 849.4892, 661.6435) .. ( 849.4892, 662.2822) + .. controls ( 849.4892, 662.9208) and ( 846.3828, 663.4433) .. ( 842.5869, 663.4433) + .. controls ( 835.7421, 663.4433) and ( 835.6845, 663.4755) .. ( 835.6845, 667.2392) + .. controls ( 835.6845, 670.2187) and ( 836.4267, 671.3222) .. ( 839.1357, 672.3720) + .. controls ( 842.4033, 673.6376) and ( 853.2587, 673.1093) .. ( 857.5117, 671.4775) + .. controls ( 858.7666, 670.9960) and ( 861.3046, 672.5205) .. ( 864.5576, 675.7099) + .. controls ( 867.3544, 678.4511) and ( 871.4189, 682.0361) .. ( 873.5898, 683.6767) + .. controls ( 890.8730, 696.7343) and ( 897.1748, 702.7265) .. ( 897.1748, 706.0996) + .. controls ( 897.1748, 710.6279) and ( 901.3623, 711.9609) .. ( 904.7968, 708.5263) + .. controls ( 909.1591, 704.1640) and ( 907.9541, 700.2519) .. ( 901.1923, 696.8261) + .. controls ( 893.7861, 693.0732) and ( 876.6660, 680.3652) .. ( 871.0878, 674.4804) + -- ( 866.9619, 670.1269) + -- ( 874.7207, 666.2812) + -- ( 882.4794, 662.4365) + -- ( 887.5058, 666.0771) + .. controls ( 893.1787, 670.1865) and ( 896.1015, 670.6113) .. ( 898.9677, 667.7460) + .. controls ( 901.8320, 664.8808) and ( 901.4472, 658.3007) .. ( 897.5244, 643.0595) + -- ( 894.0537, 629.5781) + -- ( 897.1035, 621.0986) + .. controls ( 902.7265, 605.4677) and ( 900.2685, 599.8505) .. ( 885.4394, 594.4404) + .. controls ( 882.7138, 593.4462) and ( 882.0791, 592.6152) .. ( 882.7773, 590.9560) + .. controls ( 883.2812, 589.7578) and ( 883.9687, 587.5068) .. ( 884.3056, 585.9541) + .. controls ( 885.1201, 582.1992) and ( 890.0908, 582.1992) .. ( 893.8154, 585.9541) + .. controls ( 895.3554, 587.5068) and ( 901.3554, 599.5068) .. ( 907.1474, 612.6201) + .. controls ( 912.9404, 625.7333) and ( 919.0888, 639.0039) .. ( 920.8105, 642.1103) + .. controls ( 927.4179, 654.0302) and ( 929.0996, 656.9658) .. ( 937.3466, 670.9726) + .. controls ( 948.2617, 689.5097) and ( 952.0039, 698.1718) .. ( 950.2841, 700.9199) + .. controls ( 948.2871, 704.1103) and ( 943.3750, 704.0205) .. ( 933.3613, 700.6103) + .. controls ( 923.2431, 697.1650) and ( 909.6972, 693.5488) .. ( 907.0322, 693.5820) + .. controls ( 901.1621, 693.6542) and ( 938.3847, 709.4511) .. ( 945.4882, 709.9013) + .. controls ( 952.8808, 710.3701) and ( 954.8691, 709.8330) .. ( 956.8310, 706.8378) + .. controls ( 958.6474, 704.0664) and ( 958.6474, 703.2148) .. ( 956.8349, 697.1123) + .. controls ( 954.9199, 690.6611) and ( 939.8642, 661.9316) .. ( 931.6289, 649.0117) + .. controls ( 927.9404, 643.2265) and ( 918.5078, 624.1748) .. ( 918.5078, 622.5107) + .. controls ( 918.5078, 621.8417) and ( 907.2167, 597.7626) .. ( 904.6103, 592.8720) + .. controls ( 901.6191, 587.2617) and ( 902.9716, 587.2021) .. ( 922.3652, 592.0996) + .. controls ( 942.4111, 597.1601) and ( 965.8681, 600.7509) .. ( 979.5800, 600.8554) + .. controls ( 986.2460, 600.9072) and ( 988.3535, 600.4296) .. ( 990.3750, 598.4082) + -- ( 992.8857, 595.8974) + -- ( 990.2851, 591.7099) + .. controls ( 986.5478, 585.6914) and ( 978.9980, 578.9824) .. ( 972.4677, 575.8779) + .. controls ( 951.8281, 566.0634) and ( 944.1455, 563.7490) .. ( 895.9199, 552.8183) + .. controls ( 875.5029, 548.1904) and ( 859.4863, 540.1650) .. ( 848.9199, 529.2666) + .. controls ( 843.2080, 523.3750) and ( 843.7802, 523.2089) .. ( 857.6455, 526.7285) + .. controls ( 863.1669, 528.1298) and ( 874.1787, 529.6015) .. ( 882.1162, 529.9990) + .. controls ( 896.3076, 530.7089) and ( 896.5947, 530.6689) .. ( 899.4365, 527.5986) + .. controls ( 903.1230, 523.6132) and ( 903.2421, 521.1093) .. ( 900.0810, 514.0322) + .. controls ( 897.0097, 507.1572) and ( 887.7187, 499.8359) .. ( 878.6464, 497.1416) + .. controls ( 870.7539, 494.7978) and ( 862.0371, 488.5439) .. ( 862.0371, 485.2255) + .. controls ( 862.0371, 482.9873) and ( 862.6269, 482.7900) .. ( 867.3710, 483.4384) + .. controls ( 870.3037, 483.8398) and ( 875.0908, 485.0175) .. ( 878.0078, 486.0556) + .. controls ( 880.9248, 487.0937) and ( 883.8935, 487.5839) .. ( 884.6044, 487.1435) + .. controls ( 885.3164, 486.7041) and ( 886.2431, 487.2441) .. ( 886.6650, 488.3437) + .. controls ( 887.1660, 489.6484) and ( 888.2734, 490.0761) .. ( 889.8535, 489.5742) + .. controls ( 891.1855, 489.1513) and ( 893.0966, 489.4873) .. ( 894.1005, 490.3203) + .. controls ( 895.1416, 491.1845) and ( 897.4951, 491.5214) .. ( 899.5781, 491.1054) + .. controls ( 902.0449, 490.6113) and ( 903.7480, 490.9990) .. ( 904.8271, 492.2998) + .. controls ( 905.9716, 493.6787) and ( 907.6318, 493.9980) .. ( 910.6787, 493.4267) + .. controls ( 913.4121, 492.9140) and ( 915.6416, 493.2167) .. ( 916.9130, 494.2714) + .. controls ( 918.0009, 495.1757) and ( 920.0761, 496.0068) .. ( 921.5234, 496.1181) + .. controls ( 922.9707, 496.2304) and ( 927.9970, 496.6679) .. ( 932.6933, 497.0898) + .. controls ( 937.5419, 497.5253) and ( 943.4179, 497.2685) .. ( 946.2880, 496.4960) + .. controls ( 950.5859, 495.3388) and ( 951.7197, 494.2841) .. ( 953.8574, 489.4531) + .. controls ( 955.3623, 486.0488) and ( 956.0664, 482.5576) .. ( 955.6113, 480.7451) + .. controls ( 955.1806, 479.0302) and ( 955.4052, 477.7197) .. ( 956.1308, 477.7197) + .. controls ( 958.7851, 477.7197) and ( 957.2763, 473.9687) .. ( 954.3232, 473.2275) + .. controls ( 952.6259, 472.8017) and ( 950.5322, 471.6025) .. ( 949.6689, 470.5634) + .. controls ( 945.5595, 465.6113) and ( 939.1972, 466.1250) .. ( 924.2705, 472.6132) + .. controls ( 917.5117, 475.5507) and ( 908.3144, 475.3681) .. ( 897.1748, 472.0751) + .. controls ( 894.0683, 471.1572) and ( 890.1152, 470.1406) .. ( 888.3906, 469.8164) + .. controls ( 879.7187, 468.1845) and ( 868.6953, 464.6953) .. ( 866.7431, 462.9638) + .. controls ( 864.2519, 460.7548) and ( 863.8935, 450.7460) .. ( 865.8789, 438.8173) + .. controls ( 866.5107, 435.0214) and ( 867.5664, 426.2685) .. ( 868.2246, 419.3671) + .. controls ( 868.8837, 412.4648) and ( 870.9599, 401.1708) .. ( 872.8388, 394.2695) + .. controls ( 877.9130, 375.6347) and ( 877.9716, 372.8085) .. ( 873.4365, 365.7207) + .. controls ( 869.2724, 359.2128) and ( 867.0009, 358.5175) .. cycle + ( 891.8671, 576.6201) + .. controls ( 892.1406, 577.4404) and ( 891.4697, 578.1103) .. ( 890.3769, 578.1103) + .. controls ( 889.2841, 578.1103) and ( 888.3906, 577.2167) .. ( 888.3906, 576.1240) + .. controls ( 888.3906, 573.9082) and ( 891.0917, 574.2939) .. cycle + ( 874.9306, 601.4609) + .. controls ( 873.2265, 615.7216) and ( 872.0917, 634.7187) .. ( 872.7216, 638.4462) + .. controls ( 873.1542, 641.0097) and ( 873.0458, 643.3798) .. ( 872.4794, 643.7138) + .. controls ( 871.9130, 644.0478) and ( 867.7255, 639.4150) .. ( 863.1748, 633.4189) + .. controls ( 853.7236, 620.9667) and ( 853.7255, 621.0458) .. ( 862.6591, 611.3652) + .. controls ( 865.8437, 607.9140) and ( 869.3906, 603.5322) .. ( 870.5410, 601.6279) + .. controls ( 872.8398, 597.8203) and ( 875.3769, 597.7246) .. cycle + ( 888.3154, 605.0439) + .. controls ( 894.6455, 609.0390) and ( 895.3037, 611.5156) .. ( 891.8476, 618.3330) + .. controls ( 888.0751, 625.7744) and ( 888.1044, 638.3427) .. ( 891.9199, 649.5332) + .. controls ( 894.8027, 657.9882) and ( 895.4882, 664.6982) .. ( 893.4687, 664.6982) + .. controls ( 890.0390, 664.6982) and ( 885.6953, 661.2636) .. ( 883.3261, 656.6787) + .. controls ( 881.8603, 653.8427) and ( 879.5341, 649.5449) .. ( 878.1562, 647.1298) + .. controls ( 875.9248, 643.2187) and ( 875.7216, 641.1474) .. ( 876.3007, 628.2099) + .. controls ( 877.0380, 611.7304) and ( 879.0341, 601.9541) .. ( 881.6621, 601.9541) + .. controls ( 882.6298, 601.9541) and ( 885.6230, 603.3447) .. cycle + ( 760.3574, 503.1308) + .. controls ( 759.0263, 506.0644) and ( 757.9316, 509.8759) .. ( 757.9248, 511.6015) + .. controls ( 757.8925, 520.3115) and ( 769.6572, 552.4189) .. ( 774.7480, 557.5097) + .. controls ( 777.3837, 560.1455) and ( 777.2109, 558.1542) .. ( 774.1230, 550.3203) + .. controls ( 772.1250, 545.2490) and ( 771.3232, 539.3105) .. ( 770.5751, 524.0312) + .. controls ( 769.8300, 508.7939) and ( 769.1240, 503.5527) .. ( 767.4814, 501.0458) + .. controls ( 764.5371, 496.5517) and ( 763.1611, 496.9541) .. cycle + ( 787.3212, 554.5810) + .. controls ( 786.4121, 556.9658) and ( 787.3837, 620.5800) .. ( 788.3447, 621.5410) + .. controls ( 789.6826, 622.8789) and ( 791.7636, 616.0781) .. ( 791.7714, 610.3427) + .. controls ( 791.7744, 607.4541) and ( 792.6220, 599.4931) .. ( 793.6533, 592.6513) + .. controls ( 797.0976, 569.7998) and ( 795.6972, 553.0126) .. ( 790.3466, 553.0126) + .. controls ( 789.0126, 553.0126) and ( 787.6513, 553.7187) .. cycle + ( 805.2324, 584.0712) + .. controls ( 802.1093, 587.5371) and ( 801.3720, 592.7802) .. ( 803.1083, 599.1806) + .. controls ( 803.9902, 602.4316) and ( 804.9482, 605.3701) .. ( 805.2363, 605.7099) + .. controls ( 805.5253, 606.0507) and ( 807.3525, 604.3798) .. ( 809.2978, 601.9960) + .. controls ( 813.6728, 596.6357) and ( 814.1035, 596.9228) .. ( 824.0458, 611.7929) + .. controls ( 828.0322, 617.7548) and ( 831.6855, 623.1865) .. ( 832.1660, 623.8642) + .. controls ( 832.6464, 624.5419) and ( 833.4072, 624.7285) .. ( 833.8574, 624.2783) + .. controls ( 834.3066, 623.8281) and ( 831.4179, 617.3505) .. ( 827.4365, 609.8837) + .. controls ( 823.4560, 602.4160) and ( 818.8994, 593.8427) .. ( 817.3105, 590.8310) + .. controls ( 812.2558, 581.2451) and ( 809.2802, 579.5800) .. cycle + ( 805.5673, 619.6240) + .. controls ( 805.5673, 620.3261) and ( 806.4199, 622.5498) .. ( 807.4609, 624.5634) + .. controls ( 808.6738, 626.9082) and ( 809.2382, 630.9101) .. ( 809.0302, 635.6904) + .. controls ( 808.8505, 639.7958) and ( 809.1093, 643.5595) .. ( 809.6035, 644.0546) + .. controls ( 810.0986, 644.5488) and ( 813.6953, 643.4423) .. ( 817.5986, 641.5937) + -- ( 824.6943, 638.2343) + -- ( 823.8730, 632.9570) + .. controls ( 822.9101, 626.7626) and ( 820.1318, 624.1855) .. ( 815.1748, 624.8896) + .. controls ( 812.3994, 625.2841) and ( 811.3154, 624.7597) .. ( 810.2988, 622.5283) + .. controls ( 808.9218, 619.5058) and ( 805.5673, 617.4462) .. cycle + ( 785.4892, 643.8544) + .. controls ( 785.4892, 644.8134) and ( 787.9101, 648.9082) .. ( 790.8701, 652.9521) + .. controls ( 801.2392, 667.1250) and ( 810.7919, 685.3535) .. ( 813.1943, 695.5517) + .. controls ( 814.9306, 702.9228) and ( 815.9335, 705.1835) .. ( 817.4853, 705.2216) + .. controls ( 819.7021, 705.2763) and ( 823.3242, 698.9609) .. ( 824.0097, 693.8457) + .. controls ( 825.4511, 683.0986) and ( 824.3291, 681.1855) .. ( 805.5244, 662.3212) + .. controls ( 795.8857, 652.6523) and ( 787.9990, 644.1494) .. ( 787.9990, 643.4257) + .. controls ( 787.9990, 642.7021) and ( 787.4345, 642.1103) .. ( 786.7441, 642.1103) + .. controls ( 786.0537, 642.1103) and ( 785.4892, 642.8955) .. cycle} +% \end{macrocode} +% +% \paragraph{校名(重修版)} +% +% 复。 +% \begin{macrocode} +\def\fdulogo@name@new@fu{% + ( 55.0390, 387.0869) + .. controls ( 57.9895, 398.9746) and ( 59.3242, 421.2656) .. ( 59.4433, 460.6738) + .. controls ( 59.5163, 484.5095) and ( 57.7684, 496.1414) .. ( 55.6855, 489.4316) + .. controls ( 53.8339, 483.4589) and ( 49.7734, 476.0205) .. ( 46.3623, 472.3515) + .. controls ( 31.1615, 456.0046) and ( 26.3968, 446.2864) .. ( 15.7529, 433.1406) + .. controls ( 9.5617, 425.4911) and ( 4.5521, 430.6845) .. ( 8.0849, 441.6943) + .. controls ( 13.6228, 458.9399) and ( 18.9023, 474.3809) .. ( 28.2783, 488.5986) + .. controls ( 44.9066, 513.8311) and ( 60.5305, 541.4483) .. ( 76.0195, 577.8828) + .. controls ( 84.0869, 596.8603) and ( 88.1699, 609.4833) .. ( 86.2412, 609.4833) + .. controls ( 76.5818, 609.4833) and ( 73.8409, 595.6796) .. ( 61.0410, 595.6796) + .. controls ( 50.3699, 595.6796) and ( 47.2025, 608.8211) .. ( 48.8974, 614.0566) + .. controls ( 54.4324, 631.1588) and ( 68.1855, 648.3813) .. ( 79.2060, 667.8349) + .. controls ( 94.2228, 694.3416) and ( 98.8544, 702.8741) .. ( 110.1865, 723.6777) + .. controls ( 122.1487, 745.6462) and ( 107.8188, 746.7762) .. ( 104.9345, 765.5683) + .. controls ( 103.5975, 774.2918) and ( 107.4349, 796.4862) .. ( 117.6757, 796.4423) + .. controls ( 128.7291, 796.3966) and ( 137.2404, 776.6205) .. ( 140.2548, 763.8349) + .. controls ( 143.2233, 751.2460) and ( 139.0235, 739.5603) .. ( 133.5312, 733.5146) + .. controls ( 116.9963, 715.3215) and ( 105.2681, 687.0973) .. ( 93.3681, 665.3251) + .. controls ( 83.6328, 647.5078) and ( 75.5703, 630.7490) .. ( 76.4667, 630.1943) + .. controls ( 77.3392, 629.6558) and ( 94.9170, 638.3457) .. ( 97.9912, 638.3457) + .. controls ( 125.3575, 638.3457) and ( 99.1470, 586.3046) .. ( 96.1123, 579.3652) + .. controls ( 89.4190, 564.0746) and ( 76.5780, 544.0366) .. ( 68.5863, 526.0000) + .. controls ( 67.9618, 524.5904) and ( 68.5232, 523.9042) .. ( 68.9999, 523.6301) + .. controls ( 73.1350, 521.2523) and ( 78.9204, 517.9777) .. ( 79.6914, 514.3798) + .. controls ( 83.3602, 497.3000) and ( 90.2348, 479.4761) .. ( 83.4248, 461.4062) + .. controls ( 79.3779, 450.6718) and ( 76.4365, 405.2714) .. ( 78.9306, 392.0546) + .. controls ( 82.7074, 372.0329) and ( 80.5146, 338.7081) .. ( 63.7187, 348.5068) + .. controls ( 53.5652, 354.4334) and ( 51.2609, 371.8675) .. cycle + ( 129.1552, 364.3349) + .. controls ( 113.7450, 355.2328) and ( 114.2706, 383.4133) .. ( 123.6982, 392.4746) + .. controls ( 128.2277, 396.8281) and ( 149.1023, 439.1372) .. ( 151.1718, 441.9550) + .. controls ( 154.8792, 447.0030) and ( 166.1628, 468.9529) .. ( 169.3925, 474.5820) + .. controls ( 173.7258, 482.1323) and ( 191.9586, 519.2902) .. ( 198.5683, 533.3271) + .. controls ( 191.4936, 555.6943) and ( 187.2401, 583.4053) .. ( 197.1015, 597.7753) + .. controls ( 211.4228, 618.6445) and ( 237.9139, 587.2907) .. ( 226.7636, 565.0566) + .. controls ( 223.7394, 559.0278) and ( 221.9125, 551.8403) .. ( 218.2353, 546.6777) + .. controls ( 213.6543, 540.2435) and ( 223.8166, 527.9150) .. ( 227.0136, 527.9150) + .. controls ( 233.0836, 527.9150) and ( 239.8272, 604.3686) .. ( 242.6865, 615.1298) + .. controls ( 244.9560, 623.6713) and ( 255.4766, 664.9677) .. ( 250.3076, 670.1367) + .. controls ( 234.1576, 686.2866) and ( 192.8189, 611.6179) .. ( 181.2412, 587.5224) + .. controls ( 178.9208, 582.6914) and ( 174.2080, 570.8320) .. ( 170.7685, 561.1699) + .. controls ( 158.1699, 525.7753) and ( 153.7880, 509.1025) .. ( 154.1757, 498.0234) + .. controls ( 154.7645, 481.1422) and ( 143.0623, 480.4507) .. ( 135.9492, 490.2685) + .. controls ( 123.8279, 506.9984) and ( 134.2462, 516.1795) .. ( 138.5859, 541.7187) + .. controls ( 145.1713, 580.4892) and ( 160.4837, 621.3605) .. ( 179.1259, 649.4140) + .. controls ( 195.6117, 674.2315) and ( 199.1401, 681.7989) .. ( 230.8671, 714.2666) + .. controls ( 256.5087, 740.5078) and ( 263.9902, 748.6582) .. ( 263.1806, 749.4677) + .. controls ( 258.0824, 754.5659) and ( 167.3067, 665.7151) .. ( 161.0849, 660.7480) + .. controls ( 151.4535, 653.0588) and ( 140.3734, 658.2870) .. ( 139.5498, 673.4824) + .. controls ( 139.0082, 683.4698) and ( 148.6950, 708.9102) .. ( 151.0693, 717.4033) + .. controls ( 154.1772, 728.5364) and ( 158.7776, 735.1072) .. ( 163.1982, 748.4501) + .. controls ( 169.0726, 766.1786) and ( 173.1305, 765.6032) .. ( 182.3017, 753.5498) + .. controls ( 190.4697, 742.8154) and ( 192.2460, 738.1162) .. ( 191.2802, 729.7939) + .. controls ( 190.1589, 720.1301) and ( 171.5927, 688.5410) .. ( 171.5927, 688.5410) + .. controls ( 172.5136, 688.5410) and ( 177.8388, 693.0654) .. ( 188.1914, 702.6455) + .. controls ( 200.0776, 713.6404) and ( 231.4099, 739.5211) .. ( 238.7802, 746.2666) + .. controls ( 243.8325, 750.8889) and ( 278.2404, 777.4924) .. ( 283.4130, 767.8232) + .. controls ( 285.1201, 764.6337) and ( 285.1845, 759.3916) .. ( 283.5556, 756.3476) + .. controls ( 282.8779, 755.0810) and ( 274.2666, 746.5683) .. ( 264.4189, 737.4306) + .. controls ( 236.8994, 711.8955) and ( 233.5156, 708.6523) .. ( 221.7294, 696.5058) + .. controls ( 212.7452, 687.2470) and ( 205.7109, 678.1240) .. ( 198.7333, 66.8000) + .. controls ( 190.7900, 656.4755) and ( 182.9210, 643.3594) .. ( 172.3320, 622.0253) + .. controls ( 164.8525, 606.9560) and ( 154.1376, 572.4765) .. ( 154.3955, 564.3066) + .. controls ( 154.5195, 560.4033) and ( 159.4882, 570.7187) .. ( 166.9404, 590.3505) + .. controls ( 185.2140, 638.4926) and ( 205.3883, 672.7778) .. ( 244.4101, 685.8251) + .. controls ( 249.2539, 687.4453) and ( 259.8808, 685.6884) .. ( 262.2089, 682.8828) + .. controls ( 265.0830, 679.4199) and ( 265.0908, 663.5078) .. ( 262.2236, 653.4042) + .. controls ( 260.0426, 645.7203) and ( 245.6604, 580.0308) .. ( 244.7304, 574.3457) + .. controls ( 243.4658, 566.6151) and ( 235.7631, 531.7710) .. ( 235.9951, 524.2529) + .. controls ( 236.3220, 513.6341) and ( 232.9531, 505.6026) .. ( 226.7422, 500.0000) + .. controls ( 225.5997, 498.9694) and ( 223.4661, 498.4973) .. ( 222.0000, 499.4394) + .. controls ( 213.6905, 504.7787) and ( 212.8672, 506.1857) .. ( 210.0869, 511.6718) + .. controls ( 208.3574, 515.0839) and ( 206.4023, 517.8759) .. ( 205.7412, 517.8759) + .. controls ( 202.2991, 517.8759) and ( 190.6275, 485.4098) .. ( 187.4511, 478.8642) + .. controls ( 174.1759, 451.4995) and ( 169.1477, 444.9884) .. ( 182.9667, 455.6240) + .. controls ( 203.2746, 471.2497) and ( 229.5269, 487.6807) .. ( 254.8427, 495.4121) + .. controls ( 293.2283, 507.1350) and ( 278.5836, 465.2726) .. ( 266.4531, 438.9951) + .. controls ( 263.7792, 433.2021) and ( 263.6015, 432.0722) .. ( 265.1748, 430.8378) + .. controls ( 282.7666, 417.0439) and ( 292.2167, 410.1445) .. ( 294.5136, 409.4208) + .. controls ( 299.3315, 407.9037) and ( 297.4554, 400.4573) .. ( 299.2001, 395.2099) + .. controls ( 300.0253, 392.7304) and ( 299.7119, 392.3867) .. ( 296.6250, 392.3867) + .. controls ( 288.1453, 392.3867) and ( 273.8219, 406.2578) .. ( 268.4746, 413.6142) + .. controls ( 266.6044, 416.1943) and ( 258.3535, 421.3466) .. ( 257.2177, 420.6445) + .. controls ( 256.4873, 420.1933) and ( 254.8076, 417.7451) .. ( 253.4833, 415.2031) + .. controls ( 250.1953, 408.8906) and ( 242.1611, 400.7851) .. ( 235.8378, 397.4013) + .. controls ( 231.6357, 395.1523) and ( 228.4111, 396.6767) .. ( 219.2968, 405.2226) + .. controls ( 201.3337, 422.0630) and ( 193.7961, 443.3944) .. ( 221.5488, 447.0136) + .. controls ( 227.3857, 447.7744) and ( 233.3994, 446.0888) .. ( 249.3583, 439.2177) + .. controls ( 252.2500, 437.9726) and ( 266.0332, 469.8496) .. ( 267.9326, 482.1718) + .. controls ( 269.0634, 489.5146) and ( 267.2861, 490.5273) .. ( 257.3164, 488.2246) + .. controls ( 240.4992, 484.3394) and ( 201.2412, 459.7346) .. ( 190.1689, 445.2773) + .. controls ( 178.7371, 430.3513) and ( 146.2938, 401.7530) .. ( 142.4257, 383.9511) + .. controls ( 141.2187, 378.3964) and ( 133.4042, 366.8457) .. cycle + ( 240.4843, 420.3164) + .. controls ( 245.4355, 427.6318) and ( 245.3349, 428.1669) .. ( 238.4580, 431.1250) + .. controls ( 199.7665, 447.7705) and ( 229.4978, 404.0855) .. cycle + ( 206.3203, 569.6562) + .. controls ( 208.4865, 561.0221) and ( 216.0378, 589.2583) .. ( 207.8408, 586.5585) + .. controls ( 206.2021, 586.0195) and ( 205.1494, 574.3193) .. cycle} +% \end{macrocode} +% +% 旦。 +% \begin{macrocode} +\def\fdulogo@name@new@dan{% + ( 440.3945, 480.3242) + .. controls ( 440.3945, 493.9969) and ( 342.6972, 435.2649) .. ( 342.1308, 434.8242) + .. controls ( 334.0659, 428.5518) and ( 331.4774, 421.2875) .. ( 319.2978, 425.6777) + .. controls ( 313.6807, 427.7004) and ( 306.5464, 437.0606) .. ( 306.3945, 446.9746) + .. controls ( 306.1996, 459.8458) and ( 314.2750, 457.1341) .. ( 319.5712, 463.8574) + .. controls ( 320.8925, 465.5341) and ( 321.1054, 465.4033) .. ( 321.1396, 462.8896) + .. controls ( 321.1718, 460.4746) and ( 321.6582, 460.1201) .. ( 324.0029, 460.8007) + .. controls ( 363.4345, 472.2310) and ( 405.8435, 487.7403) .. ( 449.3593, 500.5332) + .. controls ( 459.2617, 503.4414) and ( 473.3349, 496.3613) .. ( 473.3349, 488.4716) + .. controls ( 473.3349, 483.8603) and ( 471.1064, 481.7968) .. ( 465.1064, 480.8515) + .. controls ( 440.0788, 476.9060) and ( 444.5980, 471.6216) .. ( 424.0000, 464.3716) + .. controls ( 421.5870, 463.5223) and ( 421.5125, 463.8563) .. ( 423.0908, 466.3837) + .. controls ( 425.8137, 470.7410) and ( 440.3945, 474.8715) .. cycle + ( 386.9697, 554.5566) + .. controls ( 376.6975, 573.0775) and ( 370.1201, 587.3956) .. ( 370.1201, 595.7177) + .. controls ( 370.1201, 609.5302) and ( 372.8642, 611.1503) .. ( 384.7451, 604.3525) + .. controls ( 397.6452, 596.9727) and ( 417.7923, 569.3470) .. ( 410.8603, 558.7685) + .. controls ( 406.8251, 552.6108) and ( 414.1201, 550.7666) .. ( 415.0097, 559.2871) + .. controls ( 416.0322, 569.0742) and ( 419.4716, 579.5505) .. ( 422.8896, 591.2871) + .. controls ( 428.1640, 609.3964) and ( 435.3603, 630.5166) .. ( 442.3437, 648.3847) + .. controls ( 448.2597, 663.5214) and ( 450.4130, 672.2275) .. ( 448.2412, 672.2275) + .. controls ( 432.8061, 672.2275) and ( 414.3667, 656.8592) .. ( 403.3750, 649.7109) + .. controls ( 392.6486, 642.7352) and ( 383.3332, 634.0160) .. ( 375.1396, 626.5146) + .. controls ( 367.3935, 619.4218) and ( 361.8623, 615.7998) .. ( 357.4667, 614.9384) + .. controls ( 347.3837, 612.9648) and ( 344.0810, 606.7646) .. ( 345.5927, 592.6455) + .. controls ( 346.2294, 586.6962) and ( 347.3085, 583.3525) .. ( 349.3886, 580.8798) + .. controls ( 357.6210, 571.0966) and ( 361.7832, 554.2304) .. ( 358.8720, 542.4482) + .. controls ( 353.4013, 520.3105) and ( 351.4619, 518.8955) .. ( 344.5126, 531.9648) + .. controls ( 341.8271, 537.0156) and ( 341.5449, 538.9179) .. ( 341.9218, 549.4023) + .. controls ( 342.3574, 561.4921) and ( 340.2324, 576.2607) .. ( 337.0078, 583.5527) + .. controls ( 333.9066, 590.5655) and ( 333.5168, 595.7347) .. ( 338.1210, 591.9140) + .. controls ( 347.6700, 583.9899) and ( 337.1957, 615.4540) .. ( 342.3544, 626.0849) + .. controls ( 345.1796, 631.9101) and ( 345.8798, 632.4570) .. ( 359.9794, 639.8652) + .. controls ( 373.6076, 647.0277) and ( 413.7152, 669.4904) .. ( 434.1201, 675.9589) + .. controls ( 450.0799, 681.0169) and ( 466.7470, 684.8132) .. ( 466.7470, 673.4941) + .. controls ( 466.7470, 665.0127) and ( 458.5812, 651.8508) .. ( 455.4541, 643.3691) + .. controls ( 449.5969, 627.4829) and ( 443.0128, 611.9750) .. ( 437.2480, 595.0517) + .. controls ( 434.3066, 586.4208) and ( 425.3359, 549.3056) .. ( 425.3359, 545.7714) + .. controls ( 425.3359, 543.2763) and ( 421.6914, 523.2187) .. ( 421.0371, 522.1103) + .. controls ( 417.4489, 516.0369) and ( 406.8234, 532.3358) .. ( 402.2382, 537.8701) + .. controls ( 398.1611, 542.7910) and ( 394.4912, 546.6523) .. ( 394.0810, 546.4521) + .. controls ( 381.0716, 540.0803) and ( 383.5794, 538.0502) .. ( 373.8642, 529.4033) + .. controls ( 365.7919, 522.2177) and ( 365.2246, 523.8359) .. ( 372.6259, 532.9345) + .. controls ( 377.2491, 538.6153) and ( 382.7885, 547.7060) .. cycle + ( 393.7402, 573.0410) + .. controls ( 393.9372, 574.3148) and ( 380.1591, 598.6663) .. ( 380.1591, 589.9697) + .. controls ( 380.1591, 586.7412) and ( 383.9306, 580.2763) .. ( 388.7685, 575.2099) + .. controls ( 392.8916, 570.8935) and ( 393.3750, 570.6816) .. cycle} +% \end{macrocode} +% +% 大。 +% \begin{macrocode} +\def\fdulogo@name@new@da{% + ( 689.3300, 467.6806) + .. controls ( 692.0732, 467.6265) and ( 698.9023, 465.2232) .. ( 698.9023, 462.1865) + .. controls ( 698.9023, 453.2264) and ( 666.9692, 451.4993) .. ( 656.6113, 451.4121) + .. controls ( 650.6810, 451.3616) and ( 642.6827, 443.3644) .. ( 638.3281, 443.9414) + .. controls ( 625.8084, 445.6001) and ( 618.8730, 454.9070) .. ( 616.0380, 467.6806) + .. controls ( 615.0996, 471.9091) and ( 609.2675, 486.2031) .. ( 602.8417, 500.0214) + .. controls ( 600.1004, 505.9188) and ( 585.6732, 546.4052) .. ( 589.0263, 549.1875) + .. controls ( 596.0000, 544.0000) and ( 658.2679, 468.2930) .. cycle + ( 478.0410, 455.2734) + .. controls ( 478.0410, 458.7822) and ( 478.2382, 458.8964) .. ( 484.2890, 458.8964) + .. controls ( 494.1474, 458.8964) and ( 514.1533, 465.6093) .. ( 519.5810, 470.7382) + .. controls ( 527.7900, 478.4960) and ( 546.3144, 501.7636) .. ( 550.9013, 510.0781) + .. controls ( 554.6816, 516.9326) and ( 565.1533, 544.1220) .. ( 564.3300, 544.9453) + .. controls ( 563.4492, 545.8261) and ( 547.2187, 535.0283) .. ( 538.3994, 527.6933) + .. controls ( 525.3037, 516.8037) and ( 515.6875, 506.8515) .. ( 515.6875, 504.1884) + .. controls ( 515.6875, 499.8336) and ( 510.6558, 494.0197) .. ( 506.0527, 496.7753) + .. controls ( 500.6611, 500.0019) and ( 498.2792, 512.2998) .. ( 502.2734, 516.2929) + .. controls ( 503.9550, 517.9755) and ( 504.5849, 518.0244) .. ( 506.2958, 516.6054) + .. controls ( 508.7910, 514.5341) and ( 513.3173, 516.8486) .. ( 522.0527, 524.6640) + .. controls ( 528.0462, 530.0271) and ( 554.5837, 549.7136) .. ( 564.1298, 556.7539) + .. controls ( 576.9433, 566.2046) and ( 587.1237, 647.9745) .. ( 588.4189, 674.1103) + .. controls ( 589.1376, 688.6035) and ( 590.2744, 706.6015) .. ( 590.9453, 714.1044) + .. controls ( 591.9648, 725.5039) and ( 591.8623, 728.1806) .. ( 590.3183, 730.3837) + .. controls ( 587.9892, 733.7089) and ( 587.9482, 738.7968) .. ( 590.2265, 741.9111) + .. controls ( 593.9345, 746.9852) and ( 609.2742, 739.6781) .. ( 611.3876, 737.3925) + .. controls ( 617.6537, 730.6163) and ( 611.0457, 720.8148) .. ( 609.1015, 708.6191) + .. controls ( 606.8052, 694.2020) and ( 603.4859, 680.1258) .. ( 603.6923, 665.3251) + .. controls ( 603.8808, 651.9794) and ( 599.1054, 623.3896) .. ( 593.5273, 604.4638) + .. controls ( 587.9189, 585.4316) and ( 584.6064, 571.8359) .. ( 585.5791, 571.8359) + .. controls ( 585.9355, 571.8359) and ( 588.2861, 573.4101) .. ( 590.8007, 575.3339) + .. controls ( 598.5688, 581.2763) and ( 617.0611, 590.5981) .. ( 627.6738, 597.8750) + .. controls ( 637.5055, 604.6163) and ( 642.0950, 604.0655) .. ( 625.1191, 612.7246) + .. controls ( 603.5489, 623.7291) and ( 650.5666, 619.6409) .. ( 660.8027, 617.5761) + .. controls ( 670.7346, 615.5712) and ( 659.0000, 608.0000) .. ( 654.4589, 604.5156) + .. controls ( 628.0000, 584.0000) and ( 614.5406, 579.0209) .. ( 583.0000, 558.2675) + .. controls ( 581.9864, 557.6007) and ( 581.6212, 557.2352) .. ( 581.1341, 556.0000) + .. controls ( 571.0688, 530.4789) and ( 564.0389, 509.9755) .. ( 548.2490, 484.6210) + .. controls ( 537.3892, 467.1846) and ( 533.6349, 459.8094) .. ( 522.9638, 450.4511) + .. controls ( 519.0514, 447.0186) and ( 478.0410, 447.5572) .. cycle} +% \end{macrocode} +% +% 学。 +% \begin{macrocode} +\def\fdulogo@name@new@xue{% + ( 866.9619, 670.1269) + .. controls ( 872.1341, 667.5631) and ( 877.3066, 664.9996) .. ( 882.4794, 662.4365) + .. controls ( 897.1636, 673.0723) and ( 904.9638, 671.9636) .. ( 897.5244, 643.0595) + .. controls ( 892.0676, 621.8633) and ( 910.3840, 603.5410) .. ( 885.4394, 594.4404) + .. controls ( 879.0342, 592.1041) and ( 885.2172, 577.2860) .. ( 893.8154, 585.9541) + .. controls ( 897.5953, 589.7651) and ( 918.1269, 637.2683) .. ( 920.8105, 642.1103) + .. controls ( 925.8907, 651.2752) and ( 953.6300, 695.5733) .. ( 950.2841, 700.9199) + .. controls ( 946.3859, 707.1475) and ( 908.5359, 693.5632) .. ( 907.0322, 693.5820) + .. controls ( 903.4746, 693.6258) and ( 948.9630, 718.8494) .. ( 956.8310, 706.8378) + .. controls ( 958.6474, 704.0664) and ( 958.6474, 703.2148) .. ( 956.8349, 697.1123) + .. controls ( 954.9199, 690.6611) and ( 939.8642, 661.9316) .. ( 931.6289, 649.0117) + .. controls ( 917.4050, 626.7024) and ( 917.3557, 616.7870) .. ( 904.6103, 592.8720) + .. controls ( 901.6191, 587.2617) and ( 902.9716, 587.2021) .. ( 922.3652, 592.0996) + .. controls ( 942.4111, 597.1601) and ( 965.8681, 600.7509) .. ( 979.5800, 600.8554) + .. controls (1006.2410, 601.0624) and ( 980.8352, 579.8558) .. ( 972.4677, 575.8779) + .. controls ( 951.8281, 566.0634) and ( 944.1455, 563.7490) .. ( 895.9199, 552.8183) + .. controls ( 875.5029, 548.1904) and ( 859.4863, 540.1650) .. ( 848.9199, 529.2666) + .. controls ( 843.2080, 523.3750) and ( 843.7802, 523.2089) .. ( 857.6455, 526.7285) + .. controls ( 872.2212, 530.4278) and ( 910.6040, 537.5911) .. ( 900.0810, 514.0322) + .. controls ( 897.0097, 507.1572) and ( 887.7187, 499.8359) .. ( 878.6464, 497.1416) + .. controls ( 870.7539, 494.7978) and ( 863.0371, 488.5439) .. ( 863.0371, 485.2255) + .. controls ( 863.0371, 485.2255) and ( 947.3786, 504.0948) .. ( 953.8574, 489.4531) + .. controls ( 962.5270, 469.8408) and ( 947.0187, 462.7251) .. ( 924.2705, 472.6132) + .. controls ( 914.7527, 476.7498) and ( 899.4143, 471.8888) .. ( 888.3906, 469.8164) + .. controls ( 873.8373, 467.0778) and ( 866.6132, 465.4492) .. ( 864.8242, 461.0000) + .. controls ( 863.2480, 457.0791) and ( 864.3739, 447.8594) .. ( 865.8789, 438.8173) + .. controls ( 868.0575, 425.7284) and ( 869.2750, 407.3598) .. ( 872.8388, 394.2695) + .. controls ( 877.9130, 375.6347) and ( 877.9716, 372.8085) .. ( 873.4365, 365.7207) + .. controls ( 869.2724, 359.2128) and ( 867.0009, 358.5175) .. ( 859.9462, 361.5869) + .. controls ( 827.5201, 375.6846) and ( 821.4643, 368.8674) .. ( 791.7636, 383.6689) + .. controls ( 773.4511, 392.7949) and ( 756.0244, 404.7509) .. ( 758.0625, 406.7900) + .. controls ( 758.5966, 407.3242) and ( 772.4179, 400.8740) .. ( 774.8232, 398.9677) + .. controls ( 785.1163, 390.8118) and ( 831.3897, 376.7914) .. ( 853.9999, 378.3438) + .. controls ( 858.3950, 378.6456) and ( 860.1896, 378.1501) .. ( 860.0654, 382.9999) + .. controls ( 859.4822, 405.7672) and ( 857.8050, 454.9841) .. ( 855.9267, 458.4892) + .. controls ( 852.1312, 465.5686) and ( 771.6132, 417.8144) .. ( 771.6132, 417.8144) + .. controls ( 754.9244, 407.1476) and ( 744.3724, 418.5578) .. ( 736.6806, 430.0332) + .. controls ( 730.8985, 438.6579) and ( 733.8836, 440.5205) .. ( 744.8505, 441.3681) + .. controls ( 781.3750, 444.1931) and ( 821.0000, 475.0000) .. ( 855.4062, 483.4707) + .. controls ( 856.7646, 483.8046) and ( 856.7910, 485.2587) .. ( 856.8144, 486.5791) + .. controls ( 856.8769, 490.0722) and ( 862.0068, 495.2529) .. ( 870.1855, 503.4873) + .. controls ( 878.4355, 511.7929) and ( 887.1357, 521.8330) .. ( 887.1357, 523.0478) + .. controls ( 887.1357, 523.6728) and ( 885.0175, 523.2919) .. ( 882.4296, 522.2011) + .. controls ( 865.0791, 514.8906) and ( 855.0830, 512.4111) .. ( 841.6679, 512.0908) + .. controls ( 834.2597, 511.9150) and ( 827.9033, 512.2500) .. ( 827.5410, 512.8359) + .. controls ( 825.0546, 516.8583) and ( 834.7304, 527.3525) .. ( 848.9355, 536.0410) + .. controls ( 872.5839, 550.5058) and ( 891.0488, 558.1162) .. ( 915.9726, 563.6728) + .. controls ( 937.9951, 568.5830) and ( 964.7958, 579.8984) .. ( 975.9189, 588.9814) + .. controls ( 983.2890, 595.0009) and ( 982.8359, 596.0996) .. ( 973.4091, 595.0625) + .. controls ( 949.3745, 592.4188) and ( 924.0128, 587.7639) .. ( 908.4843, 583.0488) + .. controls ( 899.9658, 580.4619) and ( 899.9501, 580.4482) .. ( 896.6240, 573.0371) + .. controls ( 890.3193, 558.9892) and ( 881.4707, 552.6191) .. ( 883.2324, 563.3964) + .. controls ( 883.6320, 565.8299) and ( 883.1162, 576.9833) .. ( 880.4980, 575.9082) + .. controls ( 858.6269, 566.9150) and ( 830.4409, 555.1138) .. ( 808.5664, 544.8222) + .. controls ( 797.6845, 539.7041) and ( 796.2529, 539.3261) .. ( 793.2226, 540.7734) + .. controls ( 786.2568, 544.1015) and ( 789.9345, 552.0595) .. ( 799.1591, 553.6181) + .. controls ( 801.9160, 554.0839) and ( 810.8388, 557.0097) .. ( 818.9873, 560.1191) + .. controls ( 836.3183, 566.7343) and ( 871.1201, 578.7656) .. ( 876.2841, 579.9277) + .. controls ( 879.6445, 580.6835) and ( 879.8115, 581.0195) .. ( 879.0097, 585.3828) + .. controls ( 877.7978, 591.9804) and ( 875.8417, 593.4570) .. ( 875.8417, 587.7734) + .. controls ( 875.8417, 583.9667) and ( 875.3896, 583.1298) .. ( 873.3320, 583.1298) + .. controls ( 871.9511, 583.1298) and ( 870.8222, 583.5576) .. ( 870.8222, 584.0791) + .. controls ( 870.8222, 587.6404) and ( 861.1080, 588.2099) .. ( 855.9267, 587.1230) + .. controls ( 845.7187, 584.9814) and ( 845.1533, 587.5312) .. ( 855.1357, 590.6894) + .. controls ( 865.6679, 594.0227) and ( 853.8306, 613.2480) .. ( 848.2734, 613.2480) + .. controls ( 847.7685, 613.2480) and ( 844.1982, 608.5019) .. ( 840.3378, 602.7021) + .. controls ( 833.2685, 592.0791) and ( 824.7119, 581.8750) .. ( 822.8740, 581.8750) + .. controls ( 822.3281, 581.8750) and ( 821.8808, 583.5488) .. ( 821.8808, 585.5937) + .. controls ( 821.8808, 588.2441) and ( 823.2646, 590.6757) .. ( 826.7001, 594.0634) + .. controls ( 831.8747, 599.1656) and ( 839.0208, 611.0189) .. ( 843.6523, 618.5537) + .. controls ( 839.5013, 621.7452) and ( 831.6608, 623.2039) .. ( 838.3857, 629.4697) + .. controls ( 842.8114, 633.5928) and ( 845.6252, 627.0387) .. ( 849.7792, 628.6308) + .. controls ( 851.8094, 629.4089) and ( 871.6414, 654.3014) .. ( 872.9833, 655.6894) + .. controls ( 875.5976, 658.3935) and ( 874.8876, 659.3046) .. ( 869.0117, 660.7841) + .. controls ( 860.1054, 663.0273) and ( 857.3457, 662.5126) .. ( 850.3759, 657.3125) + .. controls ( 846.7822, 654.6308) and ( 842.5195, 652.0351) .. ( 840.9033, 651.5439) + .. controls ( 830.5901, 648.4143) and ( 849.4892, 662.0866) .. ( 849.4892, 662.2822) + .. controls ( 849.4892, 662.9208) and ( 846.3828, 663.4433) .. ( 842.5869, 663.4433) + .. controls ( 835.7421, 663.4433) and ( 835.6845, 663.4755) .. ( 835.6845, 667.2392) + .. controls ( 835.6845, 675.0414) and ( 850.2865, 674.2498) .. ( 857.5117, 671.4775) + .. controls ( 860.4374, 670.3550) and ( 871.3424, 681.9783) .. ( 873.5898, 683.6767) + .. controls ( 890.8730, 696.7343) and ( 897.1748, 702.7265) .. ( 897.1748, 706.0996) + .. controls ( 897.1748, 710.6279) and ( 901.3623, 711.9609) .. ( 904.7968, 708.5263) + .. controls ( 909.1591, 704.1640) and ( 907.9541, 700.2519) .. ( 901.1923, 696.8261) + .. controls ( 890.8471, 691.5839) and ( 874.3538, 677.9265) .. cycle + ( 888.3906, 576.1240) + .. controls ( 888.3906, 571.7533) and ( 894.7409, 578.1103) .. ( 890.3769, 578.1103) + .. controls ( 889.2841, 578.1103) and ( 888.3906, 577.2167) .. cycle + ( 874.9306, 601.4609) + .. controls ( 873.2265, 615.7216) and ( 872.0917, 634.7187) .. ( 872.7216, 638.4462) + .. controls ( 874.6299, 649.7538) and ( 868.3526, 640.2413) .. ( 863.1748, 633.4189) + .. controls ( 853.7236, 620.9667) and ( 853.7255, 621.0458) .. ( 862.6591, 611.3652) + .. controls ( 865.8437, 607.9140) and ( 869.3906, 603.5322) .. ( 870.5410, 601.6279) + .. controls ( 872.8398, 597.8203) and ( 875.3769, 597.7246) .. cycle + ( 888.3154, 605.0439) + .. controls ( 894.6455, 609.0390) and ( 895.3037, 611.5156) .. ( 891.8476, 618.3330) + .. controls ( 888.0751, 625.7744) and ( 888.1044, 638.3427) .. ( 891.9199, 649.5332) + .. controls ( 894.8027, 657.9882) and ( 895.4882, 664.6982) .. ( 893.4687, 664.6982) + .. controls ( 886.1028, 664.6982) and ( 881.4064, 652.8263) .. ( 878.1562, 647.1298) + .. controls ( 874.2248, 640.2391) and ( 877.1219, 601.9541) .. ( 881.6621, 601.9541) + .. controls ( 882.6298, 601.9541) and ( 885.6230, 603.3447) .. cycle + ( 767.4814, 501.0458) + .. controls ( 762.0969, 492.8272) and ( 757.9420, 507.2428) .. ( 757.9248, 511.6015) + .. controls ( 757.8925, 520.3115) and ( 769.6572, 552.4189) .. ( 774.7480, 557.5097) + .. controls ( 777.3837, 560.1455) and ( 777.2109, 558.1542) .. ( 774.1230, 550.3203) + .. controls ( 773.0663, 547.6383) and ( 769.0537, 503.4455) .. cycle + ( 787.3212, 554.5810) + .. controls ( 786.4121, 556.9658) and ( 787.3837, 620.5800) .. ( 788.3447, 621.5410) + .. controls ( 788.3447, 621.5410) and ( 803.6477, 553.0126) .. ( 790.3466, 553.0126) + .. controls ( 789.0126, 553.0126) and ( 787.6513, 553.7187) .. cycle + ( 817.3105, 590.8310) + .. controls ( 805.5565, 568.5402) and ( 796.1662, 595.0102) .. ( 805.2363, 605.7099) + .. controls ( 805.5253, 606.0507) and ( 807.3525, 604.3798) .. ( 809.2978, 601.9960) + .. controls ( 813.6728, 596.6357) and ( 814.1035, 596.9228) .. ( 824.0458, 611.7929) + .. controls ( 827.9590, 617.6453) and ( 832.5091, 625.6266) .. ( 833.8574, 624.2783) + .. controls ( 835.3276, 622.8048) and ( 818.0093, 592.1556) .. cycle + ( 805.5673, 619.6240) + .. controls ( 805.5673, 623.9644) and ( 809.3582, 628.1528) .. ( 809.0302, 635.6904) + .. controls ( 808.5672, 646.2700) and ( 809.2222, 645.5608) .. ( 817.5986, 641.5937) + .. controls ( 825.7117, 637.7526) and ( 826.1018, 623.3375) .. ( 815.1748, 624.8896) + .. controls ( 811.9062, 625.3542) and ( 805.5673, 616.8618) .. cycle + ( 785.4892, 643.8544) + .. controls ( 785.4892, 644.8134) and ( 787.9101, 648.9082) .. ( 790.8701, 652.9521) + .. controls ( 801.2392, 667.1250) and ( 810.7919, 685.3535) .. ( 813.1943, 695.5517) + .. controls ( 814.9306, 702.9228) and ( 815.9335, 705.1835) .. ( 817.4853, 705.2216) + .. controls ( 819.7021, 705.2763) and ( 823.3242, 698.9609) .. ( 824.0097, 693.8457) + .. controls ( 825.4511, 683.0986) and ( 824.3291, 681.1855) .. ( 805.5244, 662.3212) + .. controls ( 795.8857, 652.6523) and ( 787.9990, 644.1494) .. ( 787.9990, 643.4257) + .. controls ( 787.9990, 642.7021) and ( 787.4345, 642.1103) .. ( 786.7441, 642.1103) + .. controls ( 786.0537, 642.1103) and ( 785.4892, 642.8955) .. cycle} +% \end{macrocode} +% +% \paragraph{校徽} +% +% 核心图案。 +% \begin{macrocode} +\def\fdulogo@emblem@kernel{% + ( 351.0257, 574.5394) + .. controls ( 353.3190, 587.1927) and ( 370.0657, 593.5527) .. ( 380.6523, 586.9527) + .. controls ( 386.0123, 582.3127) and ( 389.5190, 574.9927) .. ( 388.2257, 567.8194) + .. controls ( 386.6657, 555.0861) and ( 380.5723, 543.5794) .. ( 377.0657, 531.3794) + .. controls ( 375.6923, 525.8327) and ( 379.8257, 521.4461) .. ( 382.7590, 517.2994) + .. controls ( 419.9723, 519.7127) and ( 457.0923, 523.6194) .. ( 494.3990, 524.8194) + .. controls ( 505.8123, 525.8194) and ( 517.3190, 525.2194) .. ( 528.6923, 524.0594) + .. controls ( 539.0523, 523.2994) and ( 548.6790, 513.8594) .. ( 547.8657, 503.1794) + .. controls ( 547.2257, 497.1127) and ( 542.4657, 490.8994) .. ( 535.8657, 491.1261) + .. controls ( 523.4923, 491.0061) and ( 511.2923, 493.7927) .. ( 498.9323, 494.0994) + .. controls ( 478.7723, 495.8327) and ( 458.5190, 495.7261) .. ( 438.3190, 495.0194) + .. controls ( 427.3457, 493.9794) and ( 416.1323, 494.2061) .. ( 405.5723, 490.6061) + .. controls ( 398.2657, 488.0861) and ( 390.4657, 486.5261) .. ( 383.9057, 482.2461) + .. controls ( 379.8523, 479.5794) and ( 376.1457, 475.1127) .. ( 376.9723, 469.9394) + .. controls ( 378.2257, 458.7127) and ( 386.9590, 449.3127) .. ( 386.1590, 437.7127) + .. controls ( 383.6923, 424.5127) and ( 378.0123, 412.2194) .. ( 374.4523, 399.3127) + .. controls ( 371.0657, 387.4994) and ( 370.1057, 375.1794) .. ( 368.2390, 363.0727) + .. controls ( 367.6657, 356.9661) and ( 366.5590, 350.9127) .. ( 366.3457, 344.7661) + .. controls ( 363.4923, 318.5527) and ( 365.8923, 292.1794) .. ( 366.3190, 265.9127) + .. controls ( 366.5857, 249.0594) and ( 367.5057, 232.2194) .. ( 369.0790, 215.4461) + .. controls ( 369.7990, 204.2461) and ( 372.1723, 193.2194) .. ( 372.8923, 182.0194) + .. controls ( 372.6257, 175.8061) and ( 371.3857, 167.5128) .. ( 364.6257, 165.1928) + .. controls ( 358.5990, 163.6328) and ( 350.9457, 163.6461) .. ( 346.7190, 168.9661) + .. controls ( 338.1323, 178.7794) and ( 337.7190, 192.4861) .. ( 335.7723, 204.7261) + .. controls ( 331.2523, 230.4061) and ( 330.9057, 256.5527) .. ( 331.1590, 282.5527) + .. controls ( 288.6790, 280.9127) and ( 245.6657, 283.0594) .. ( 203.8257, 274.0994) + .. controls ( 200.0257, 273.4327) and ( 195.3857, 270.8727) .. ( 192.3457, 274.6461) + .. controls ( 185.4923, 281.7394) and ( 184.8790, 292.2061) .. ( 182.3057, 301.2594) + .. controls ( 185.7323, 303.2461) and ( 188.9990, 305.7261) .. ( 192.9857, 306.4594) + .. controls ( 217.5457, 311.7927) and ( 242.7590, 313.0594) .. ( 267.8123, 313.2727) + .. controls ( 289.3323, 313.9261) and ( 310.8790, 315.9261) .. ( 332.4257, 314.5794) + .. controls ( 332.6390, 354.8194) and ( 336.2257, 396.3661) .. ( 353.9057, 433.1261) + .. controls ( 355.4523, 435.0194) and ( 353.7990, 436.6461) .. ( 352.6523, 438.1527) + .. controls ( 344.6123, 431.4994) and ( 339.7590, 422.0727) .. ( 335.7723, 412.6194) + .. controls ( 331.2923, 401.5394) and ( 322.9590, 391.6861) .. ( 322.2523, 379.3261) + .. controls ( 320.6123, 363.9394) and ( 319.0657, 347.0194) .. ( 308.1457, 335.0061) + .. controls ( 294.8657, 321.7127) and ( 275.3590, 317.8861) .. ( 257.2523, 317.3127) + .. controls ( 244.5723, 317.0194) and ( 231.3857, 315.2461) .. ( 219.1723, 319.5927) + .. controls ( 199.0657, 326.6727) and ( 183.3990, 345.4194) .. ( 180.6257, 366.6327) + .. controls ( 176.8257, 393.4994) and ( 177.6923, 421.2461) .. ( 185.0790, 447.4327) + .. controls ( 187.3190, 454.1927) and ( 188.8257, 462.3127) .. ( 195.3323, 466.3794) + .. controls ( 225.9990, 487.4994) and ( 267.7990, 488.0594) .. ( 300.9190, 472.3927) + .. controls ( 312.3457, 465.7927) and ( 313.7723, 451.1527) .. ( 315.3857, 439.3794) + .. controls ( 318.6790, 442.3661) and ( 320.0257, 446.6861) .. ( 322.1323, 450.4727) + .. controls ( 330.9990, 465.6327) and ( 344.7457, 477.1527) .. ( 354.6390, 491.4861) + .. controls ( 353.3057, 493.3661) and ( 350.9057, 494.1927) .. ( 349.0657, 495.4994) + .. controls ( 339.7190, 486.9127) and ( 328.7057, 479.1527) .. ( 315.8123, 477.4327) + .. controls ( 308.2923, 476.0594) and ( 300.8123, 482.2594) .. ( 300.0523, 489.7127) + .. controls ( 300.2923, 493.8861) and ( 303.3857, 496.9127) .. ( 305.7590, 500.0594) + .. controls ( 316.6657, 513.4994) and ( 329.5457, 525.3927) .. ( 338.8790, 540.0861) + .. controls ( 345.3190, 550.5794) and ( 348.1057, 562.7261) .. ( 351.0257, 574.5394) + ( 211.9990, 380.1527) + .. controls ( 213.4123, 369.3527) and ( 216.9057, 357.4994) .. ( 226.4257, 351.1261) + .. controls ( 238.3190, 346.0994) and ( 251.6923, 345.4061) .. ( 264.3723, 347.0461) + .. controls ( 269.6657, 347.2194) and ( 275.1723, 348.2994) .. ( 279.4923, 351.5394) + .. controls ( 289.1057, 358.7661) and ( 292.7323, 371.9394) .. ( 290.8523, 383.4594) + .. controls ( 264.7057, 389.2861) and ( 238.0390, 383.6061) .. ( 211.9990, 380.1527) + ( 220.8523, 442.3794) + .. controls ( 211.5323, 434.3527) and ( 209.4657, 421.2594) .. ( 209.3857, 409.6061) + .. controls ( 235.9990, 409.1394) and ( 262.6123, 411.5394) .. ( 289.2123, 412.6727) + .. controls ( 289.9590, 420.8994) and ( 289.9990, 429.5127) .. ( 286.9323, 437.3261) + .. controls ( 284.6923, 443.0727) and ( 279.7457, 448.1527) .. ( 273.4257, 449.0327) + .. controls ( 266.3190, 450.2594) and ( 259.0657, 450.3261) .. ( 251.9057, 451.0194) + .. controls ( 241.1457, 450.6727) and ( 229.5723, 449.2861) .. ( 220.8523, 442.3794) + ( 450.5457, 484.5261) + .. controls ( 463.8790, 485.1927) and ( 477.2390, 484.5927) .. ( 490.5857, 484.9127) + .. controls ( 506.9990, 486.1261) and ( 524.7857, 485.0861) .. ( 538.9057, 475.7261) + .. controls ( 546.7723, 470.1794) and ( 548.8523, 459.5394) .. ( 547.1457, 450.5661) + .. controls ( 546.1590, 446.0727) and ( 545.1190, 440.9394) .. ( 541.0390, 438.1661) + .. controls ( 528.7857, 428.2327) and ( 512.1457, 427.3927) .. ( 497.0523, 427.3527) + .. controls ( 466.0257, 428.5661) and ( 434.8523, 425.2461) .. ( 403.9190, 428.8727) + .. controls ( 397.6257, 429.8461) and ( 392.7057, 435.0594) .. ( 390.7857, 440.9527) + .. controls ( 388.5323, 447.2727) and ( 388.2790, 454.1527) .. ( 388.6123, 460.7927) + .. controls ( 390.0790, 469.0727) and ( 397.1857, 474.9794) .. ( 404.3323, 478.6061) + .. controls ( 418.8790, 485.1261) and ( 435.2123, 482.0727) .. ( 450.5457, 484.5261) + ( 415.5990, 458.2727) + .. controls ( 412.7323, 456.5394) and ( 413.4923, 452.8461) .. ( 413.2523, 450.0327) + .. controls ( 414.8123, 448.9261) and ( 416.3323, 447.4327) .. ( 418.3990, 447.4194) + .. controls ( 447.3723, 446.7527) and ( 476.3323, 448.0861) .. ( 505.2923, 448.9661) + .. controls ( 510.4257, 449.3394) and ( 515.2390, 451.2727) .. ( 520.0123, 453.0594) + .. controls ( 519.6257, 456.4594) and ( 518.3857, 459.7394) .. ( 515.6657, 461.9394) + .. controls ( 487.7057, 462.5794) and ( 459.7190, 462.0861) .. ( 431.7857, 460.8194) + .. controls ( 426.3590, 460.5261) and ( 420.4123, 461.3127) .. ( 415.5990, 458.2727) + ( 434.0123, 419.4594) + .. controls ( 450.5857, 421.1261) and ( 467.2790, 420.3127) .. ( 483.8790, 421.3527) + .. controls ( 500.8390, 422.5927) and ( 517.8523, 420.9127) .. ( 534.5723, 418.0861) + .. controls ( 542.1057, 417.0327) and ( 547.4657, 410.4194) .. ( 549.7190, 403.5527) + .. controls ( 552.3857, 395.3394) and ( 553.1990, 385.8461) .. ( 548.9190, 378.0327) + .. controls ( 544.6523, 370.4994) and ( 536.9723, 364.7261) .. ( 528.2390, 363.7927) + .. controls ( 491.7723, 359.7527) and ( 454.9990, 362.1794) .. ( 418.4257, 360.0861) + .. controls ( 411.4657, 358.7127) and ( 403.9457, 360.2194) .. ( 398.4123, 364.7527) + .. controls ( 389.1857, 372.1127) and ( 385.2123, 385.1394) .. ( 388.1323, 396.4861) + .. controls ( 389.5990, 400.7261) and ( 392.9857, 403.8861) .. ( 395.9323, 407.1394) + .. controls ( 400.7723, 412.3261) and ( 407.0257, 416.5394) .. ( 414.2123, 417.4461) + .. controls ( 420.7990, 418.1661) and ( 427.3590, 419.3261) .. ( 434.0123, 419.4594) + ( 434.3590, 393.2327) + .. controls ( 427.4923, 392.4727) and ( 420.3057, 393.4194) .. ( 413.7190, 390.9927) + .. controls ( 413.3190, 390.0327) and ( 412.5190, 388.1127) .. ( 412.1323, 387.1527) + .. controls ( 413.1190, 385.6594) and ( 413.7590, 383.4061) .. ( 415.8790, 383.2061) + .. controls ( 424.2257, 380.8061) and ( 432.8657, 383.4061) .. ( 441.3457, 383.3394) + .. controls ( 465.4523, 385.1927) and ( 489.6390, 385.5794) .. ( 513.7590, 387.1527) + .. controls ( 517.5190, 387.0594) and ( 519.9723, 390.4061) .. ( 521.5057, 393.4194) + .. controls ( 509.7323, 396.5394) and ( 497.4523, 395.4327) .. ( 485.4657, 394.7527) + .. controls ( 468.4257, 394.4727) and ( 451.4123, 393.2061) .. ( 434.3590, 393.2327) + ( 409.9323, 351.6727) + .. controls ( 434.3723, 354.7127) and ( 459.0523, 354.6327) .. ( 483.6257, 355.9127) + .. controls ( 485.8257, 350.4861) and ( 483.7590, 344.6861) .. ( 479.9590, 340.5927) + .. controls ( 476.7723, 336.7127) and ( 472.7590, 333.4594) .. ( 470.6657, 328.7661) + .. controls ( 481.2923, 329.6461) and ( 491.8390, 331.3527) .. ( 502.5057, 331.6594) + .. controls ( 510.1990, 333.9127) and ( 513.4523, 342.0194) .. ( 519.0390, 346.9794) + .. controls ( 523.0657, 349.8061) and ( 527.8923, 353.3527) .. ( 533.0790, 351.5527) + .. controls ( 540.7723, 348.7527) and ( 544.7190, 339.0327) .. ( 542.3990, 331.4327) + .. controls ( 536.5323, 309.7261) and ( 530.5990, 287.9927) .. ( 522.9190, 266.8594) + .. controls ( 511.7857, 262.2194) and ( 499.5057, 266.0194) .. ( 487.8923, 265.2461) + .. controls ( 483.3457, 264.7394) and ( 478.3990, 265.4994) .. ( 474.3057, 263.0727) + .. controls ( 474.2390, 261.3661) and ( 474.3457, 259.6594) .. ( 474.6523, 257.9661) + .. controls ( 478.5190, 242.3527) and ( 481.2523, 226.4727) .. ( 485.9857, 211.0861) + .. controls ( 487.0657, 204.0061) and ( 487.6790, 196.0594) .. ( 484.2523, 189.5127) + .. controls ( 476.3190, 184.7127) and ( 465.8523, 189.3527) .. ( 460.8923, 196.4194) + .. controls ( 451.4390, 210.8061) and ( 446.5857, 227.6194) .. ( 443.3457, 244.3661) + .. controls ( 442.2257, 249.0727) and ( 441.6657, 254.0727) .. ( 438.8523, 258.1527) + .. controls ( 419.9990, 259.4727) and ( 405.9323, 243.3794) .. ( 387.7323, 241.7127) + .. controls ( 379.3990, 242.1927) and ( 375.1723, 251.8861) .. ( 376.6923, 259.2461) + .. controls ( 377.2657, 264.1527) and ( 381.2390, 267.6327) .. ( 385.1057, 270.1794) + .. controls ( 391.3057, 273.8061) and ( 398.4123, 275.2727) .. ( 405.1590, 277.5127) + .. controls ( 415.7190, 280.6061) and ( 426.2257, 284.9261) .. ( 437.3990, 284.6861) + .. controls ( 437.4257, 291.2327) and ( 437.5457, 297.8061) .. ( 436.7057, 304.3261) + .. controls ( 418.0657, 303.9394) and ( 402.1857, 292.1927) .. ( 383.9190, 289.9527) + .. controls ( 379.9323, 289.3927) and ( 376.6123, 292.6994) .. ( 375.4257, 296.2194) + .. controls ( 373.7190, 301.0861) and ( 374.1323, 306.8727) .. ( 376.9323, 311.2727) + .. controls ( 384.6657, 317.8994) and ( 395.1723, 320.0594) .. ( 405.0790, 320.7661) + .. controls ( 417.1723, 322.0727) and ( 429.9457, 321.6994) .. ( 441.0257, 327.4994) + .. controls ( 440.7457, 329.1261) and ( 440.4923, 330.7661) .. ( 440.2523, 332.3794) + .. controls ( 429.3723, 333.8327) and ( 417.8257, 328.4327) .. ( 407.4790, 333.6994) + .. controls ( 400.0657, 337.2461) and ( 401.4657, 350.7127) .. ( 409.9323, 351.6727) + ( 470.3857, 306.4994) + .. controls ( 470.2257, 300.0861) and ( 470.1323, 293.6461) .. ( 470.4390, 287.2327) + .. controls ( 479.9190, 288.6327) and ( 489.9723, 287.1794) .. ( 499.0657, 290.4194) + .. controls ( 502.7457, 295.7661) and ( 502.4523, 302.5927) .. ( 502.7857, 308.7927) + .. controls ( 491.9323, 310.0594) and ( 481.1723, 307.2461) .. ( 470.3857, 306.4994)} +% \end{macrocode} +% +% 文字“FUDAN UNIVERSITY”。 +% \begin{macrocode} +\def\fdulogo@emblem@F{% + ( 85.7057, 304.0061) + .. controls ( 90.0790, 311.5927) and ( 100.0657, 314.2461) .. ( 108.0923, 311.6461) + .. controls ( 103.8257, 301.6994) and ( 107.8257, 290.8461) .. ( 112.1723, 281.6861) + .. controls ( 119.4123, 280.1927) and ( 126.0657, 284.4594) .. ( 132.9590, 285.8861) + .. controls ( 137.9457, 286.4594) and ( 139.2790, 291.7794) .. ( 141.2123, 295.5394) + .. controls ( 142.1457, 295.5394) and ( 144.0123, 295.5261) .. ( 144.9457, 295.5261) + .. controls ( 148.4923, 287.1927) and ( 154.5323, 279.3527) .. ( 153.9190, 269.8327) + .. controls ( 149.8923, 270.8861) and ( 145.5990, 272.0727) .. ( 141.4790, 270.8594) + .. controls ( 125.8923, 265.4327) and ( 110.1723, 260.4061) .. ( 94.4657, 255.3527) + .. controls ( 89.0123, 253.6861) and ( 84.7190, 249.7127) .. ( 80.7057, 245.8194) + .. controls ( 73.7457, 252.0594) and ( 70.8790, 261.2594) .. ( 68.0523, 269.8727) + .. controls ( 64.5057, 280.9661) and ( 57.4790, 291.3394) .. ( 58.2257, 303.4461) + .. controls ( 62.1990, 305.3261) and ( 65.9857, 307.8194) .. ( 70.3057, 308.8327) + .. controls ( 74.5723, 304.0594) and ( 71.8257, 297.2861) .. ( 71.2790, 291.7127) + .. controls ( 72.8790, 283.5527) and ( 77.3057, 276.2727) .. ( 80.7057, 268.7661) + .. controls ( 88.2123, 270.8594) and ( 96.0790, 272.4861) .. ( 102.6790, 276.8327) + .. controls ( 102.7057, 283.0461) and ( 99.1190, 288.3661) .. ( 97.5323, 294.1927) + .. controls ( 95.9723, 299.6194) and ( 90.1323, 301.5127) .. ( 85.7057, 304.0061)} +\def\fdulogo@emblem@U@i{% + ( 50.9990, 392.9661) + .. controls ( 54.6790, 390.9927) and ( 58.0523, 387.8461) .. ( 62.4923, 387.9527) + .. controls ( 76.3190, 388.5127) and ( 90.1457, 389.1394) .. ( 103.9723, 389.6994) + .. controls ( 110.1857, 389.1261) and ( 117.3590, 390.0994) .. ( 122.4257, 385.6594) + .. controls ( 129.6523, 379.6061) and ( 131.5457, 369.5927) .. ( 131.6390, 360.6194) + .. controls ( 131.1990, 353.8594) and ( 131.2923, 346.5927) .. ( 127.7857, 340.5394) + .. controls ( 126.0123, 337.3527) and ( 122.7590, 335.1394) .. ( 119.1590, 334.5261) + .. controls ( 101.3057, 331.4594) and ( 83.0790, 332.1527) .. ( 65.1723, 329.5794) + .. controls ( 61.1990, 328.3661) and ( 57.7323, 324.1394) .. ( 53.2523, 325.9127) + .. controls ( 51.4257, 332.4461) and ( 51.8123, 339.3527) .. ( 53.0390, 345.9527) + .. controls ( 74.4257, 345.6994) and ( 95.8390, 346.4727) .. ( 117.0790, 348.9794) + .. controls ( 119.7190, 350.1127) and ( 120.9323, 353.2327) .. ( 121.7190, 355.8327) + .. controls ( 123.2790, 362.0861) and ( 121.6257, 368.7261) .. ( 119.0657, 374.4727) + .. controls ( 117.1057, 378.7261) and ( 111.8123, 378.7527) .. ( 107.8257, 378.6461) + .. controls ( 92.1590, 378.2594) and ( 76.4790, 377.8461) .. ( 60.8657, 376.5127) + .. controls ( 58.5990, 373.0727) and ( 56.3057, 366.7527) .. ( 51.0390, 368.6594) + .. controls ( 50.6257, 369.1394) and ( 49.8257, 370.1127) .. ( 49.4123, 370.5927) + .. controls ( 47.9323, 378.0061) and ( 46.7857, 386.1794) .. ( 50.9990, 392.9661)} +\def\fdulogo@emblem@D{% + ( 64.0257, 473.6194) + .. controls ( 78.0257, 477.2727) and ( 92.6790, 474.6194) .. ( 106.4523, 471.2194) + .. controls ( 111.2123, 469.9394) and ( 116.3323, 469.2861) .. ( 120.4923, 466.4327) + .. controls ( 127.2790, 462.2727) and ( 131.2123, 454.5394) .. ( 132.1990, 446.8061) + .. controls ( 133.4123, 440.4061) and ( 130.6523, 434.2327) .. ( 129.9057, 427.9661) + .. controls ( 128.5590, 418.8727) and ( 127.7857, 408.8061) .. ( 121.3323, 401.6327) + .. controls ( 114.6923, 407.5394) and ( 105.4257, 407.8327) .. ( 97.1057, 409.1794) + .. controls ( 80.6790, 411.9127) and ( 63.9323, 417.9127) .. ( 47.2257, 413.4327) + .. controls ( 48.1723, 428.7261) and ( 50.4123, 443.8994) .. ( 52.5723, 459.0594) + .. controls ( 53.5990, 465.3927) and ( 57.5857, 471.7527) .. ( 64.0257, 473.6194) + ( 67.2123, 459.9394) + .. controls ( 60.7990, 452.1794) and ( 60.0790, 441.6861) .. ( 58.8923, 432.1127) + .. controls ( 78.5723, 427.7127) and ( 98.4390, 424.2327) .. ( 118.2257, 420.3527) + .. controls ( 119.9457, 426.5661) and ( 122.2123, 432.8061) .. ( 122.0257, 439.3527) + .. controls ( 121.9457, 443.0727) and ( 121.2390, 447.2061) .. ( 118.1457, 449.6461) + .. controls ( 107.4390, 459.3794) and ( 92.2790, 460.7261) .. ( 78.5323, 462.0061) + .. controls ( 74.7590, 461.8861) and ( 69.9990, 463.2861) .. ( 67.2123, 459.9394)} +\def\fdulogo@emblem@A{% + ( 107.3857, 530.4194) + .. controls ( 111.0523, 526.0994) and ( 114.8123, 521.8594) .. ( 118.7190, 517.7661) + .. controls ( 120.5857, 520.4461) and ( 122.4390, 523.1394) .. ( 124.2657, 525.8461) + .. controls ( 118.6790, 527.4994) and ( 113.0257, 528.9394) .. ( 107.3857, 530.4194) + ( 89.7057, 544.5527) + .. controls ( 91.7457, 545.1661) and ( 93.8923, 544.6994) .. ( 95.9323, 544.4194) + .. controls ( 115.5590, 540.8861) and ( 134.8657, 535.7927) .. ( 154.5190, 532.4994) + .. controls ( 160.1057, 531.4461) and ( 167.2523, 533.0061) .. ( 170.8790, 527.4861) + .. controls ( 168.5857, 523.0861) and ( 165.6123, 519.1127) .. ( 162.4390, 515.3261) + .. controls ( 157.3323, 519.8594) and ( 150.5323, 521.3927) .. ( 144.0257, 522.6994) + .. controls ( 139.3590, 516.2994) and ( 134.7857, 509.8194) .. ( 130.2923, 503.2861) + .. controls ( 132.7990, 500.3661) and ( 135.0257, 497.2194) .. ( 137.5990, 494.3394) + .. controls ( 140.8657, 490.4861) and ( 146.4390, 490.7661) .. ( 150.5190, 488.1794) + .. controls ( 145.5323, 481.4461) and ( 143.0790, 472.2861) .. ( 135.0257, 468.3261) + .. controls ( 120.8390, 493.6861) and ( 101.4790, 515.5394) .. ( 85.1457, 539.4461) + .. controls ( 86.5857, 541.2061) and ( 87.9990, 543.0327) .. ( 89.7057, 544.5527)} +\def\fdulogo@emblem@N@i{% + ( 153.3190, 624.6327) + .. controls ( 156.0657, 630.3527) and ( 161.9457, 633.6861) .. ( 167.5990, 635.9794) + .. controls ( 179.5590, 618.6327) and ( 194.9723, 604.1261) .. ( 208.7723, 588.3127) + .. controls ( 212.8657, 584.1794) and ( 219.0523, 578.9394) .. ( 215.4390, 572.4994) + .. controls ( 210.5723, 572.8061) and ( 206.0123, 574.6194) .. ( 201.3590, 575.8727) + .. controls ( 183.0790, 581.1794) and ( 165.2657, 588.1661) .. ( 146.6123, 592.0994) + .. controls ( 156.6390, 580.5527) and ( 168.8390, 571.2327) .. ( 179.4257, 560.2461) + .. controls ( 183.3057, 555.9394) and ( 189.8257, 557.6727) .. ( 194.9190, 556.2727) + .. controls ( 192.3990, 547.7527) and ( 184.1990, 542.2861) .. ( 177.1590, 537.5261) + .. controls ( 172.3857, 539.6727) and ( 172.6657, 546.3927) .. ( 168.7057, 549.5127) + .. controls ( 157.0523, 560.0727) and ( 146.0790, 571.3261) .. ( 134.6123, 582.0861) + .. controls ( 131.5723, 585.2461) and ( 126.9057, 585.1794) .. ( 122.9323, 586.1261) + -- ( 119.8523, 589.0861) + .. controls ( 124.6657, 596.4861) and ( 131.6923, 601.9927) .. ( 137.3990, 608.6327) + .. controls ( 154.6523, 603.6327) and ( 171.9057, 598.6327) .. ( 189.2657, 594.0061) + .. controls ( 183.4123, 601.8327) and ( 175.7057, 608.0461) .. ( 169.0390, 615.1661) + .. controls ( 165.2657, 619.1794) and ( 159.4123, 617.5661) .. ( 154.5590, 618.0461) + .. controls ( 152.3723, 619.2861) and ( 152.8657, 622.5527) .. ( 153.3190, 624.6327)} +\def\fdulogo@emblem@U@ii{% + ( 258.7723, 689.0461) + .. controls ( 263.0390, 694.2061) and ( 270.2123, 695.8861) .. ( 276.6257, 694.8861) + .. controls ( 276.5990, 690.7527) and ( 275.3323, 686.4861) .. ( 276.5190, 682.4194) + .. controls ( 282.1190, 665.8861) and ( 289.7457, 649.9394) .. ( 293.0257, 632.6994) + .. controls ( 294.2123, 626.4727) and ( 291.6657, 619.0061) .. ( 285.5857, 616.3261) + .. controls ( 278.6657, 613.1527) and ( 271.4390, 610.2327) .. ( 263.8123, 609.3661) + .. controls ( 254.5723, 608.2327) and ( 245.3590, 614.2994) .. ( 241.8657, 622.7527) + .. controls ( 236.7857, 634.6327) and ( 232.0923, 646.6861) .. ( 227.0657, 658.5794) + .. controls ( 224.8790, 664.1394) and ( 217.6923, 665.9927) .. ( 216.4390, 672.1261) + .. controls ( 224.4257, 675.7927) and ( 232.4790, 680.0994) .. ( 241.5323, 680.0194) + .. controls ( 240.3723, 674.6594) and ( 235.9590, 669.3394) .. ( 238.6657, 663.7527) + .. controls ( 244.2923, 650.9927) and ( 248.9723, 637.7794) .. ( 255.5057, 625.4194) + .. controls ( 257.4923, 621.3794) and ( 262.1057, 619.0327) .. ( 266.5457, 619.4594) + .. controls ( 273.7190, 620.0861) and ( 280.2923, 623.9527) .. ( 285.2257, 629.0594) + .. controls ( 285.7990, 636.0994) and ( 282.4123, 642.4594) .. ( 280.0257, 648.8461) + .. controls ( 275.8657, 658.9261) and ( 272.3590, 669.2861) .. ( 267.8657, 679.2327) + .. controls ( 266.0657, 683.5927) and ( 260.8123, 684.9127) .. ( 258.7723, 689.0461)} +\def\fdulogo@emblem@N@ii{% + ( 345.5723, 707.9927) + .. controls ( 351.0390, 715.4461) and ( 361.0257, 712.2461) .. ( 368.8123, 712.5661) + .. controls ( 367.3457, 708.0727) and ( 363.9990, 704.1261) .. ( 363.8390, 699.2861) + .. controls ( 365.0790, 679.7394) and ( 367.5590, 660.2594) .. ( 368.0523, 640.6594) + .. controls ( 368.6390, 636.8461) and ( 362.5457, 633.1927) .. ( 360.3457, 637.1661) + .. controls ( 349.1990, 652.4061) and ( 338.9057, 668.2461) .. ( 328.1590, 683.7661) + .. controls ( 326.0790, 686.4861) and ( 324.1990, 690.8327) .. ( 320.0657, 690.0994) + .. controls ( 319.4123, 685.9661) and ( 319.4390, 681.7527) .. ( 320.2123, 677.6327) + .. controls ( 322.0923, 666.8727) and ( 322.5323, 655.9394) .. ( 324.1723, 645.1527) + .. controls ( 325.5857, 640.7261) and ( 329.9723, 638.2061) .. ( 332.1457, 634.1927) + .. controls ( 326.2790, 628.9527) and ( 317.9457, 628.9794) .. ( 310.5590, 628.4994) + .. controls ( 305.8523, 632.8594) and ( 311.2790, 638.3127) .. ( 311.1723, 643.3794) + .. controls ( 310.5323, 656.7394) and ( 307.9457, 669.8994) .. ( 306.6257, 683.1927) + .. controls ( 306.2523, 686.6194) and ( 306.7590, 690.3394) .. ( 304.9457, 693.4461) + .. controls ( 302.8523, 697.0061) and ( 300.1723, 700.2594) .. ( 298.9857, 704.2994) + .. controls ( 306.0790, 706.5927) and ( 314.3057, 709.8194) .. ( 321.5057, 706.3261) + .. controls ( 335.5590, 694.5394) and ( 342.1323, 675.9394) .. ( 356.9057, 664.8994) + .. controls ( 356.9590, 675.9661) and ( 354.5057, 686.8727) .. ( 354.1457, 697.9394) + .. controls ( 353.7457, 702.8594) and ( 348.6523, 704.8994) .. ( 345.5723, 707.9927)} +\def\fdulogo@emblem@I@i{% + ( 393.6390, 711.8461) + .. controls ( 401.7857, 713.5661) and ( 410.4257, 711.1261) .. ( 418.2257, 708.4994) + .. controls ( 419.4923, 706.9661) and ( 420.7990, 704.4994) .. ( 418.9990, 702.8061) + .. controls ( 417.3457, 700.1527) and ( 413.2790, 699.4994) .. ( 412.6123, 696.2327) + .. controls ( 410.3057, 680.8861) and ( 409.2657, 665.3527) .. ( 406.7457, 650.0194) + .. controls ( 407.1590, 644.2061) and ( 412.5723, 639.6727) .. ( 411.4257, 633.5794) + .. controls ( 402.9057, 634.0994) and ( 393.8790, 633.5527) .. ( 385.9590, 637.2461) + .. controls ( 382.2390, 642.7927) and ( 392.0123, 645.0727) .. ( 392.1857, 650.4594) + .. controls ( 394.4657, 666.6861) and ( 395.2123, 683.0861) .. ( 397.1590, 699.3394) + .. controls ( 396.6790, 703.5794) and ( 388.9990, 707.7927) .. ( 393.6390, 711.8461)} +\def\fdulogo@emblem@V{% + ( 441.7857, 703.5661) + .. controls ( 448.4923, 702.3527) and ( 455.2790, 701.2461) .. ( 461.7190, 698.9527) + .. controls ( 463.4523, 698.2727) and ( 465.3990, 697.7127) .. ( 466.4523, 696.0194) + .. controls ( 466.9057, 691.7794) and ( 462.9723, 688.8727) .. ( 461.1857, 685.3927) + .. controls ( 460.7990, 673.5527) and ( 460.7990, 661.6994) .. ( 461.1590, 649.8594) + .. controls ( 460.8390, 646.9261) and ( 463.1057, 644.7394) .. ( 464.7190, 642.5927) + .. controls ( 473.7857, 651.9394) and ( 480.6257, 663.1261) .. ( 488.5057, 673.4461) + .. controls ( 491.7990, 677.5927) and ( 488.8523, 683.2994) .. ( 491.6390, 687.6327) + .. controls ( 498.5590, 687.1794) and ( 507.4123, 686.3527) .. ( 511.0257, 679.4461) + .. controls ( 503.1990, 674.8327) and ( 496.6123, 668.4727) .. ( 491.5057, 660.9661) + .. controls ( 480.9990, 647.3794) and ( 471.6923, 632.7527) .. ( 459.5323, 620.5261) + .. controls ( 456.6790, 622.1661) and ( 453.6523, 623.4327) .. ( 450.5723, 624.5394) + .. controls ( 448.9590, 641.1261) and ( 447.4390, 657.7127) .. ( 445.8257, 674.2994) + .. controls ( 445.0790, 679.4594) and ( 445.3457, 684.7661) .. ( 443.8523, 689.7927) + .. controls ( 442.5190, 694.2727) and ( 441.5323, 698.8727) .. ( 441.7857, 703.5661)} +\def\fdulogo@emblem@E{% + ( 526.9857, 668.5927) + .. controls ( 530.1723, 669.2194) and ( 532.6523, 666.8061) .. ( 535.0923, 665.1927) + .. controls ( 547.4523, 655.9661) and ( 561.4923, 649.2861) .. ( 573.9990, 640.2727) + .. controls ( 578.8523, 635.7794) and ( 575.1323, 627.0727) .. ( 569.2123, 625.3794) + .. controls ( 565.7323, 639.4194) and ( 550.8390, 644.2327) .. ( 539.9057, 651.0861) + .. controls ( 535.2257, 646.2194) and ( 529.5723, 641.7261) .. ( 527.1590, 635.2194) + .. controls ( 529.5190, 629.5261) and ( 535.8790, 627.3394) .. ( 540.7723, 624.3127) + .. controls ( 546.3323, 620.1794) and ( 553.4923, 625.5794) .. ( 559.1990, 622.0061) + .. controls ( 557.1057, 614.0461) and ( 552.8790, 605.2461) .. ( 544.4123, 602.6461) + .. controls ( 542.4923, 612.7527) and ( 533.6257, 619.4861) .. ( 524.8390, 623.5927) + .. controls ( 521.8790, 625.2327) and ( 519.1323, 622.4327) .. ( 517.5323, 620.2061) + .. controls ( 514.9057, 616.4727) and ( 511.8790, 612.8194) .. ( 510.4923, 608.4061) + .. controls ( 509.5990, 605.4727) and ( 511.3057, 602.6194) .. ( 513.6523, 600.9661) + .. controls ( 519.4257, 596.4994) and ( 525.1857, 591.8061) .. ( 531.9457, 588.9127) + .. controls ( 536.9857, 588.8594) and ( 541.7990, 590.7661) .. ( 546.7323, 591.6327) + .. controls ( 550.6390, 583.8861) and ( 541.3323, 575.3261) .. ( 533.6657, 578.1261) + .. controls ( 521.4257, 583.3527) and ( 511.6123, 592.6327) .. ( 500.4923, 599.7261) + .. controls ( 495.6390, 603.1927) and ( 489.4657, 605.9527) .. ( 487.4257, 612.0327) + .. controls ( 495.8523, 615.5794) and ( 501.0390, 623.4327) .. ( 505.3990, 631.0594) + .. controls ( 511.7723, 642.0994) and ( 521.2790, 651.5661) .. ( 524.6257, 664.1527) + .. controls ( 525.1190, 665.7661) and ( 525.3190, 667.6861) .. ( 526.9857, 668.5927)} +\def\fdulogo@emblem@R{% + ( 594.5323, 624.3394) + .. controls ( 604.3590, 620.1527) and ( 610.2923, 610.8461) .. ( 618.5457, 604.5127) + .. controls ( 626.9190, 597.4461) and ( 634.3057, 587.9927) .. ( 635.5190, 576.7661) + .. controls ( 636.3857, 567.0194) and ( 628.4390, 557.5261) .. ( 618.6390, 556.8461) + .. controls ( 612.8123, 556.0594) and ( 607.1990, 559.8594) .. ( 601.4657, 557.9127) + .. controls ( 599.1323, 548.6994) and ( 595.3723, 539.6061) .. ( 596.0257, 529.8994) + .. controls ( 596.5590, 525.0194) and ( 590.2390, 525.3794) .. ( 587.1590, 526.6994) + .. controls ( 579.6390, 528.6727) and ( 576.2923, 538.7661) .. ( 580.5190, 545.0994) + .. controls ( 584.2657, 550.6727) and ( 587.9457, 556.5661) .. ( 589.0523, 563.3261) + .. controls ( 589.6523, 567.8061) and ( 587.4257, 572.0327) .. ( 584.8257, 575.5127) + .. controls ( 584.0257, 575.3527) and ( 582.4123, 575.0461) .. ( 581.6123, 574.8861) + .. controls ( 576.8390, 570.5794) and ( 571.6790, 566.5394) .. ( 567.9590, 561.2194) + .. controls ( 567.2657, 557.9127) and ( 567.8657, 553.5794) .. ( 564.8657, 551.3127) + .. controls ( 561.9590, 550.6327) and ( 560.1723, 553.5394) .. ( 558.3057, 555.2194) + .. controls ( 554.7323, 559.5927) and ( 550.7723, 563.6594) .. ( 547.3990, 568.1794) + .. controls ( 545.8790, 569.6994) and ( 546.4257, 571.9661) .. ( 546.2123, 573.8594) + .. controls ( 549.8257, 575.8994) and ( 554.0390, 574.8194) .. ( 557.9457, 575.4461) + .. controls ( 561.5190, 577.1527) and ( 563.7057, 580.5927) .. ( 566.3723, 583.3661) + .. controls ( 574.1457, 591.1794) and ( 581.6923, 599.2061) .. ( 589.5723, 606.9127) + .. controls ( 594.5057, 611.3527) and ( 593.1323, 618.4861) .. ( 594.5323, 624.3394) + ( 592.6523, 585.5394) + .. controls ( 591.5323, 581.9394) and ( 593.8523, 578.4061) .. ( 596.1057, 575.7794) + .. controls ( 598.3057, 573.4727) and ( 600.4257, 570.7794) .. ( 603.5323, 569.6861) + .. controls ( 612.7057, 566.6461) and ( 624.4790, 576.0061) .. ( 621.1057, 585.8061) + .. controls ( 617.5857, 591.1127) and ( 613.2257, 596.5394) .. ( 606.9723, 598.6461) + .. controls ( 601.4923, 595.1527) and ( 596.3857, 590.8994) .. ( 592.6523, 585.5394)} +\def\fdulogo@emblem@S{% + ( 638.2390, 535.6594) + .. controls ( 644.6257, 539.8727) and ( 653.1857, 542.0994) .. ( 660.4390, 538.8061) + .. controls ( 669.2257, 534.8594) and ( 674.8790, 525.9661) .. ( 676.8657, 516.7794) + .. controls ( 677.5990, 511.8861) and ( 677.7857, 506.9261) .. ( 678.5723, 502.0327) + .. controls ( 679.2523, 497.0861) and ( 683.1723, 493.0594) .. ( 682.6523, 487.8727) + .. controls ( 676.7057, 483.3394) and ( 669.7190, 479.6194) .. ( 661.9990, 480.0994) + .. controls ( 660.6923, 487.2461) and ( 669.3990, 491.0461) .. ( 669.3723, 497.9261) + .. controls ( 669.9990, 507.0194) and ( 667.6123, 516.1394) .. ( 663.4123, 524.1661) + .. controls ( 660.9990, 528.6327) and ( 654.8923, 529.9661) .. ( 650.8923, 526.8327) + .. controls ( 645.6923, 512.7527) and ( 649.1990, 497.6061) .. ( 650.6657, 483.1794) + .. controls ( 651.4390, 478.1261) and ( 648.9857, 473.1394) .. ( 645.3990, 469.7394) + .. controls ( 634.1323, 460.9794) and ( 616.0523, 463.8194) .. ( 607.4923, 475.0727) + .. controls ( 599.9857, 484.6994) and ( 597.9723, 497.7661) .. ( 599.8523, 509.6061) + .. controls ( 597.1723, 510.6861) and ( 594.4923, 511.7261) .. ( 591.8390, 512.8194) + .. controls ( 591.8257, 514.4727) and ( 591.8123, 516.1261) .. ( 591.8123, 517.7794) + .. controls ( 599.2523, 521.7261) and ( 606.3590, 526.5794) .. ( 614.5057, 528.9927) + .. controls ( 618.4923, 530.5127) and ( 621.7057, 524.5527) .. ( 618.7723, 521.7927) + .. controls ( 615.5190, 517.8194) and ( 610.4123, 514.4194) .. ( 610.3057, 508.7794) + .. controls ( 609.9323, 501.5661) and ( 609.5990, 493.8061) .. ( 613.1323, 487.2461) + .. controls ( 615.3857, 482.8194) and ( 620.0123, 479.4194) .. ( 625.0390, 479.2461) + .. controls ( 630.0123, 480.0194) and ( 632.8523, 485.4327) .. ( 633.1323, 490.0461) + .. controls ( 632.7190, 499.3661) and ( 629.9990, 508.5127) .. ( 630.4523, 517.8861) + .. controls ( 630.4523, 524.4461) and ( 632.3990, 531.8994) .. ( 638.2390, 535.6594)} +\def\fdulogo@emblem@I@ii{% + ( 693.1723, 460.6594) + .. controls ( 695.3990, 458.8994) and ( 698.1457, 457.0861) .. ( 698.3990, 453.9661) + .. controls ( 700.2123, 444.2594) and ( 703.6390, 434.8194) .. ( 704.1057, 424.8861) + .. controls ( 702.4257, 424.3527) and ( 700.7723, 423.8061) .. ( 699.1323, 423.2461) + .. controls ( 696.7190, 426.1661) and ( 694.9323, 430.2594) .. ( 690.8657, 431.1127) + .. controls ( 676.3323, 429.4727) and ( 662.2523, 425.2727) .. ( 647.7857, 423.2194) + .. controls ( 642.4390, 422.3127) and ( 636.8390, 421.9261) .. ( 632.0790, 419.0461) + .. controls ( 631.1723, 414.6861) and ( 630.9857, 409.2861) .. ( 626.5457, 406.8994) + .. controls ( 625.2790, 407.8861) and ( 623.5457, 408.5261) .. ( 622.9057, 410.1261) + .. controls ( 618.8123, 419.7527) and ( 617.7457, 430.2727) .. ( 615.8523, 440.4727) + .. controls ( 615.1990, 444.1127) and ( 616.4523, 449.7927) .. ( 621.0657, 449.7661) + .. controls ( 626.4657, 447.9394) and ( 625.8257, 440.5127) .. ( 630.8123, 438.1261) + .. controls ( 649.2123, 441.1527) and ( 667.6257, 444.2194) .. ( 685.8790, 447.9661) + .. controls ( 691.0923, 449.8194) and ( 691.1323, 456.3394) .. ( 693.1723, 460.6594)} +\def\fdulogo@emblem@T{% + ( 687.1190, 391.4061) + .. controls ( 692.1857, 396.4461) and ( 700.1590, 398.4327) .. ( 706.6123, 394.8194) + .. controls ( 706.7857, 374.2594) and ( 705.1990, 353.7527) .. ( 703.8257, 333.2594) + .. controls ( 700.3457, 329.0994) and ( 694.3057, 327.6461) .. ( 689.3723, 329.9661) + .. controls ( 688.7723, 331.2861) and ( 686.8123, 333.1261) .. ( 688.6523, 334.4061) + .. controls ( 693.0390, 338.8727) and ( 696.0790, 344.7527) .. ( 696.2123, 351.1127) + .. controls ( 676.7590, 354.2594) and ( 656.9857, 354.7927) .. ( 637.3057, 354.5394) + .. controls ( 634.5590, 351.7927) and ( 633.6123, 346.7927) .. ( 629.3323, 345.8061) + .. controls ( 626.4790, 344.9794) and ( 624.8390, 348.1394) .. ( 624.6390, 350.4994) + .. controls ( 623.1857, 359.3794) and ( 623.4657, 368.6194) .. ( 625.8523, 377.3127) + .. controls ( 626.3190, 378.9794) and ( 627.9323, 379.8194) .. ( 629.1190, 380.8994) + .. controls ( 632.8523, 378.8861) and ( 634.8123, 374.5527) .. ( 638.8390, 373.0861) + .. controls ( 652.4390, 371.2594) and ( 666.1723, 370.5661) .. ( 679.8523, 369.6061) + .. controls ( 683.9190, 369.2061) and ( 688.1857, 368.0727) .. ( 692.1057, 369.7927) + .. controls ( 696.7190, 371.0594) and ( 698.6123, 377.1394) .. ( 696.2257, 381.0594) + .. controls ( 694.0657, 385.2061) and ( 690.0923, 387.9127) .. ( 687.1190, 391.4061)} +\def\fdulogo@emblem@Y{% + ( 617.5723, 308.6727) + .. controls ( 618.3323, 308.6594) and ( 619.8523, 308.6327) .. ( 620.6123, 308.6327) + .. controls ( 623.3857, 305.3794) and ( 624.4123, 301.1527) .. ( 625.5857, 297.1527) + .. controls ( 633.5457, 294.4327) and ( 641.9457, 290.2994) .. ( 650.5323, 292.6727) + .. controls ( 660.3990, 294.8861) and ( 670.3723, 296.6327) .. ( 680.2257, 298.9394) + .. controls ( 686.9190, 299.9661) and ( 690.8523, 306.4327) .. ( 697.3057, 308.0861) + .. controls ( 698.0657, 299.2861) and ( 694.9057, 290.9127) .. ( 692.1323, 282.7394) + .. controls ( 691.7590, 281.2461) and ( 690.8390, 280.2194) .. ( 689.3723, 279.6461) + .. controls ( 686.7457, 280.4994) and ( 685.1723, 282.8727) .. ( 683.3990, 284.8061) + .. controls ( 673.7990, 282.8861) and ( 664.2390, 280.7127) .. ( 654.8523, 277.8994) + .. controls ( 662.0790, 271.4594) and ( 667.3990, 262.5261) .. ( 676.5990, 258.6061) + .. controls ( 678.6790, 257.5394) and ( 681.4790, 257.6327) .. ( 683.1723, 255.9927) + .. controls ( 684.9057, 248.5127) and ( 682.7990, 238.6727) .. ( 674.8923, 235.5127) + .. controls ( 669.4657, 249.7127) and ( 655.4657, 257.2461) .. ( 646.8657, 269.0994) + .. controls ( 641.2390, 276.1661) and ( 631.8923, 278.0194) .. ( 623.5323, 279.7261) + .. controls ( 617.9590, 280.9261) and ( 613.1990, 272.4727) .. ( 607.8523, 276.9261) + .. controls ( 608.4123, 285.4061) and ( 611.2790, 293.4727) .. ( 613.2257, 301.6861) + .. controls ( 613.7723, 304.4994) and ( 615.4657, 306.8061) .. ( 617.5723, 308.6727)} +% \end{macrocode} +% +% 年份“1905”。 +% \begin{macrocode} +\def\fdulogo@emblem@one{% + ( 210.6390, 174.6328) + .. controls ( 216.6790, 175.2194) and ( 221.8123, 178.8728) .. ( 227.5590, 180.5661) + .. controls ( 232.1590, 177.8061) and ( 236.7057, 174.5661) .. ( 239.3723, 169.7528) + .. controls ( 238.1457, 166.8861) and ( 236.7723, 164.0328) .. ( 234.8390, 161.5528) + .. controls ( 221.7723, 143.9661) and ( 209.1723, 126.0461) .. ( 196.1857, 108.4061) + .. controls ( 194.7723, 106.5661) and ( 193.4790, 104.5661) .. ( 191.7190, 103.0061) + .. controls ( 187.9723, 101.5261) and ( 184.5590, 104.4861) .. ( 181.9857, 106.8194) + .. controls ( 179.3590, 109.2594) and ( 175.5057, 112.1394) .. ( 177.2657, 116.2194) + .. controls ( 185.8123, 129.9661) and ( 196.3323, 142.3794) .. ( 204.8657, 156.1528) + .. controls ( 200.2657, 159.9128) and ( 195.4123, 163.5794) .. ( 191.8790, 168.4194) + .. controls ( 191.9990, 173.0728) and ( 195.0257, 177.9128) .. ( 199.6390, 179.3261) + .. controls ( 203.2523, 177.6594) and ( 206.6790, 175.3394) .. ( 210.6390, 174.6328)} +\def\fdulogo@emblem@nine{% + ( 293.6123, 125.2861) + .. controls ( 287.6657, 121.8861) and ( 283.0923, 113.2861) .. ( 287.5457, 106.9928) + .. controls ( 291.9590, 100.0994) and ( 301.3590, 98.6728) .. ( 308.6790, 100.9928) + .. controls ( 313.3857, 103.2061) and ( 316.6790, 108.6594) .. ( 315.7590, 113.8728) + .. controls ( 314.1857, 118.3261) and ( 309.6390, 120.5528) .. ( 305.8923, 122.8994) + .. controls ( 302.1990, 124.7928) and ( 297.7457, 127.0594) .. ( 293.6123, 125.2861) + ( 283.2123, 137.6194) + .. controls ( 289.8123, 139.9261) and ( 297.0923, 139.3128) .. ( 303.8657, 138.1261) + .. controls ( 314.9723, 136.0461) and ( 326.2390, 129.2728) .. ( 330.0523, 118.1128) + .. controls ( 332.9457, 105.1394) and ( 328.8523, 92.0861) .. ( 324.6523, 79.8861) + .. controls ( 321.9057, 69.6861) and ( 312.9590, 62.3928) .. ( 303.4923, 58.5928) + .. controls ( 296.4123, 55.4994) and ( 288.4123, 57.0728) .. ( 281.2523, 59.0461) + .. controls ( 270.1723, 62.3394) and ( 260.7057, 71.6194) .. ( 258.7857, 83.2194) + .. controls ( 258.1457, 88.3261) and ( 261.0257, 92.8861) .. ( 265.1190, 95.6728) + .. controls ( 271.7457, 93.3928) and ( 272.3857, 85.7794) .. ( 275.5857, 80.5528) + .. controls ( 281.0123, 73.1661) and ( 292.1990, 70.1528) .. ( 300.3190, 74.8328) + .. controls ( 303.6123, 76.6594) and ( 306.4790, 80.1261) .. ( 306.4390, 84.0461) + .. controls ( 296.2257, 85.0994) and ( 285.0257, 86.7528) .. ( 277.2657, 94.0994) + .. controls ( 271.2657, 100.6461) and ( 266.1057, 110.1794) .. ( 269.7323, 119.1261) + .. controls ( 272.4257, 126.2328) and ( 275.6923, 134.4461) .. ( 283.2123, 137.6194)} +\def\fdulogo@emblem@zero{% + ( 411.0123, 111.8861) + .. controls ( 404.3857, 109.9928) and ( 402.0923, 102.6061) .. ( 401.3590, 96.4994) + .. controls ( 400.6523, 86.9394) and ( 400.8923, 76.6061) .. ( 406.0123, 68.1528) + .. controls ( 408.3057, 64.6994) and ( 411.5057, 61.2328) .. ( 415.7857, 60.4861) + .. controls ( 424.7190, 58.9261) and ( 433.3590, 66.5528) .. ( 434.5323, 75.2328) + .. controls ( 435.4390, 84.8461) and ( 432.8390, 94.4594) .. ( 429.0257, 103.2061) + .. controls ( 425.8923, 109.5394) and ( 418.0790, 114.5128) .. ( 411.0123, 111.8861) + ( 405.7457, 127.8328) + .. controls ( 415.9457, 129.4728) and ( 427.9990, 129.8861) .. ( 436.0390, 122.2461) + .. controls ( 447.9590, 108.7661) and ( 453.1323, 90.0994) .. ( 451.8123, 72.3394) + .. controls ( 450.1990, 58.2194) and ( 438.7990, 43.9394) .. ( 423.7323, 43.9128) + .. controls ( 411.9323, 44.1661) and ( 398.7190, 47.6728) .. ( 391.7323, 57.9528) + .. controls ( 384.5190, 68.4728) and ( 383.8257, 81.6728) .. ( 382.7723, 93.9528) + .. controls ( 382.5057, 108.2861) and ( 390.7190, 124.6728) .. ( 405.7457, 127.8328)} +\def\fdulogo@emblem@five{% + ( 521.8657, 172.0994) + .. controls ( 529.1590, 177.1794) and ( 539.8257, 165.4061) .. ( 533.5590, 158.8461) + .. controls ( 531.3723, 156.0594) and ( 528.2657, 154.1261) .. ( 525.1057, 152.5928) + .. controls ( 518.2257, 149.3528) and ( 511.3057, 146.1794) .. ( 504.4923, 142.7928) + .. controls ( 505.8923, 138.4861) and ( 507.3990, 134.2061) .. ( 509.2923, 130.0861) + .. controls ( 513.6923, 132.5794) and ( 518.3190, 134.8461) .. ( 521.9323, 138.4861) + .. controls ( 531.2523, 148.7528) and ( 549.7323, 147.0728) .. ( 557.6657, 135.9394) + .. controls ( 564.5457, 127.1528) and ( 566.2257, 114.9128) .. ( 563.0523, 104.3394) + .. controls ( 560.7590, 96.3661) and ( 554.1857, 90.7528) .. ( 547.6390, 86.1661) + .. controls ( 536.7190, 79.1394) and ( 521.1057, 79.3794) .. ( 511.0923, 87.9661) + .. controls ( 506.9457, 92.1528) and ( 511.5457, 97.8728) .. ( 515.2257, 100.5128) + .. controls ( 522.3190, 102.4061) and ( 528.7323, 95.7128) .. ( 535.8923, 98.1261) + .. controls ( 541.6657, 101.1528) and ( 546.2523, 106.0461) .. ( 549.1723, 111.8461) + .. controls ( 550.7457, 119.7928) and ( 545.4923, 128.7661) .. ( 537.2790, 130.0861) + .. controls ( 532.5057, 130.9394) and ( 529.1590, 126.7661) .. ( 525.8257, 124.1128) + .. controls ( 519.3457, 118.0061) and ( 511.3857, 113.8328) .. ( 503.5590, 109.7661) + .. controls ( 496.5723, 123.3928) and ( 487.8123, 136.4061) .. ( 484.2123, 151.4994) + .. controls ( 496.5457, 158.7661) and ( 509.2790, 165.2994) .. ( 521.8657, 172.0994)} +% \end{macrocode} +% +% 内环。 +% \begin{macrocode} +\def\fdulogo@emblem@ring@inner@i{% + ( 361.2523, 616.4994) + .. controls ( 394.6523, 618.0727) and ( 428.6390, 615.1261) .. ( 460.3323, 603.9394) + .. controls ( 533.4257, 578.2061) and ( 592.3857, 515.3127) .. ( 612.7723, 440.4727) + .. controls ( 618.5057, 421.0461) and ( 619.8390, 400.6994) .. ( 620.9190, 380.5794) + .. controls ( 621.3190, 350.9794) and ( 617.4790, 321.1127) .. ( 607.5323, 293.1261) + .. controls ( 581.7857, 222.3527) and ( 521.5990, 164.8461) .. ( 449.2923, 143.3661) + .. controls ( 411.3057, 132.4728) and ( 370.7457, 131.2061) .. ( 331.9323, 138.1394) + .. controls ( 299.9057, 143.8994) and ( 269.0657, 156.4061) .. ( 242.4123, 175.1261) + .. controls ( 198.4923, 205.7127) and ( 163.4790, 250.2861) .. ( 147.8923, 301.8194) + .. controls ( 138.9857, 331.2061) and ( 135.8790, 362.2594) .. ( 138.0657, 392.8461) + .. controls ( 139.7723, 425.3661) and ( 148.5323, 457.4594) .. ( 163.3057, 486.4727) + .. controls ( 189.2523, 536.1261) and ( 232.1590, 577.0994) .. ( 283.8257, 599.1661) + .. controls ( 308.2657, 609.6861) and ( 334.6657, 615.4994) .. ( 361.2523, 616.4994)} +\def\fdulogo@emblem@ring@inner@ii{% + ( 349.8523, 596.9127) + .. controls ( 326.6923, 594.1527) and ( 303.9457, 587.7394) .. ( 282.8657, 577.7527) + .. controls ( 223.7857, 548.7661) and ( 176.7190, 493.7127) .. ( 161.7857, 429.1127) + .. controls ( 149.9990, 378.2194) and ( 154.9057, 323.1261) .. ( 178.0923, 276.0727) + .. controls ( 192.5323, 247.3661) and ( 213.4657, 222.1261) .. ( 238.0923, 201.5927) + .. controls ( 263.2523, 180.5794) and ( 293.2257, 165.3794) .. ( 325.1590, 157.9128) + .. controls ( 375.0390, 145.8728) and ( 429.0523, 150.9528) .. ( 475.5323, 172.8461) + .. controls ( 499.7190, 184.5527) and ( 521.5457, 200.9127) .. ( 540.1857, 220.2327) + .. controls ( 557.5323, 238.2994) and ( 572.4923, 258.8861) .. ( 582.8257, 281.7794) + .. controls ( 605.9857, 332.5127) and ( 608.9457, 391.8461) .. ( 592.0923, 444.8994) + .. controls ( 582.5457, 475.5661) and ( 565.7190, 503.8327) .. ( 543.5590, 527.0594) + .. controls ( 521.8257, 550.6061) and ( 495.2523, 569.8461) .. ( 465.6523, 582.2461) + .. controls ( 449.9857, 588.8194) and ( 433.3990, 592.8461) .. ( 416.7990, 596.2594) + .. controls ( 394.6657, 599.4327) and ( 372.0390, 599.4861) .. ( 349.8523, 596.9127)} +% \end{macrocode} +% +% 外环。 +% \begin{macrocode} +\def\fdulogo@emblem@ring@outer@i{% + ( 368.5723, 736.6194) + -- ( 390.8923, 736.6194) + .. controls ( 400.3723, 735.3127) and ( 409.9857, 735.6061) .. ( 419.4523, 734.2727) + .. controls ( 471.6657, 729.0194) and ( 522.8523, 712.1394) .. ( 567.2523, 684.0061) + .. controls ( 616.4523, 652.6861) and ( 658.3857, 609.8594) .. ( 688.4523, 559.8727) + .. controls ( 704.7990, 532.3927) and ( 717.4523, 502.6461) .. ( 725.1857, 471.5927) + .. controls ( 732.3457, 444.2594) and ( 735.5057, 416.0861) .. ( 737.1723, 387.9394) + -- ( 737.1723, 364.2194) + .. controls ( 736.3990, 358.6061) and ( 736.1190, 352.9527) .. ( 735.8390, 347.2994) + .. controls ( 731.3857, 289.0061) and ( 713.0523, 231.3661) .. ( 680.2390, 182.7527) + .. controls ( 638.5857, 120.4861) and ( 578.7057, 69.6728) .. ( 508.5990, 42.4861) + .. controls ( 471.4657, 28.0461) and ( 431.7323, 21.3261) .. ( 392.0657, 19.2861) + -- ( 362.0123, 19.2861) + .. controls ( 301.0123, 21.7928) and ( 240.0390, 38.7928) .. ( 188.5990, 72.1528) + .. controls ( 137.7190, 104.4461) and ( 94.5323, 148.8994) .. ( 64.2790, 201.0594) + .. controls ( 39.8123, 242.9394) and ( 25.4523, 290.4194) .. ( 20.7057, 338.6061) + .. controls ( 16.6123, 377.5127) and ( 19.0257, 416.9927) .. ( 26.6790, 455.3261) + .. controls ( 38.5190, 513.7127) and ( 66.6123, 568.5127) .. ( 106.1323, 612.9927) + .. controls ( 125.0923, 634.9127) and ( 146.6523, 654.5661) .. ( 170.0790, 671.6061) + .. controls ( 218.1190, 706.8061) and ( 275.7590, 728.2461) .. ( 334.9190, 734.2861) + .. controls ( 346.0923, 735.7261) and ( 357.3723, 735.5127) .. ( 368.5723, 736.6194)} +\def\fdulogo@emblem@ring@outer@ii{% + ( 354.5323, 717.8461) + .. controls ( 321.1057, 715.1794) and ( 287.6923, 709.1661) .. ( 256.3457, 696.9927) + .. controls ( 208.1323, 678.6327) and ( 164.8390, 648.3794) .. ( 129.5190, 610.9261) + .. controls ( 106.3590, 586.0861) and ( 86.2257, 558.2461) .. ( 71.1190, 527.7794) + .. controls ( 36.0790, 456.2727) and ( 28.8523, 372.7127) .. ( 46.1857, 295.3794) + .. controls ( 61.5057, 225.7661) and ( 102.3857, 163.2994) .. ( 155.9190, 116.8994) + .. controls ( 196.9857, 80.4594) and ( 247.3457, 54.5128) .. ( 301.0123, 42.7928) + .. controls ( 383.2523, 25.4061) and ( 472.6123, 34.9528) .. ( 546.2523, 76.8461) + .. controls ( 609.8257, 113.6728) and ( 662.5723, 169.8328) .. ( 692.9590, 236.9394) + .. controls ( 715.0123, 285.5127) and ( 723.1857, 339.5661) .. ( 721.1990, 392.6327) + .. controls ( 718.7323, 452.0861) and ( 701.4123, 511.4194) .. ( 668.4657, 561.2327) + .. controls ( 631.4657, 617.0327) and ( 579.4390, 663.5927) .. ( 517.9190, 690.6461) + .. controls ( 466.7857, 713.1127) and ( 410.0523, 721.1661) .. ( 354.5323, 717.8461)} +% \end{macrocode} +% +% \paragraph{校徽(重修版)} +% +% 核心图案。 +% \begin{macrocode} +\def\fdulogo@emblem@new@kernel{% + ( 284.6849, 377.3858) + .. controls ( 296.8515, 374.4658) and ( 317.3515, 372.8445) .. ( 328.8515, 381.3445) + .. controls ( 340.0782, 389.6418) and ( 342.0182, 410.1778) .. ( 336.4129, 413.5112) + .. controls ( 327.0502, 419.0792) and ( 273.1849, 410.8445) .. ( 263.0182, 410.1778) + .. controls ( 261.0182, 399.0112) and ( 271.0649, 380.6552) .. ( 284.6849, 377.3858) + ( 336.3515, 441.0112) + .. controls ( 336.3515, 441.0112) and ( 337.6849, 455.1778) .. ( 334.6862, 462.2765) + .. controls ( 329.1302, 475.4312) and ( 323.6849, 480.1725) .. ( 299.0182, 480.1725) + .. controls ( 282.1449, 480.1725) and ( 267.1849, 476.0112) .. ( 261.3115, 461.9672) + .. controls ( 257.2369, 452.2245) and ( 258.3075, 437.7125) .. ( 262.9129, 437.0658) + .. controls ( 270.4489, 436.0072) and ( 336.3515, 441.0112) .. ( 336.3515, 441.0112) + ( 246.5929, 497.0352) + .. controls ( 259.3742, 506.1565) and ( 276.7409, 512.2338) .. ( 300.2955, 512.2338) + .. controls ( 348.3249, 512.2338) and ( 363.1289, 484.6218) .. ( 364.1849, 471.8445) + -- ( 364.7889, 471.8445) + .. controls ( 368.4075, 488.7885) and ( 395.4342, 511.5112) .. ( 399.4435, 521.7672) + .. controls ( 400.9182, 525.5405) and ( 395.3329, 527.6418) .. ( 392.0182, 525.6778) + .. controls ( 389.0182, 523.9005) and ( 372.6849, 506.4285) .. ( 360.5182, 506.4285) + .. controls ( 354.6435, 506.4285) and ( 344.7689, 511.6778) .. ( 344.7689, 520.0232) + .. controls ( 344.7689, 527.5112) and ( 366.7289, 547.3725) .. ( 375.3515, 559.8445) + .. controls ( 381.3195, 568.4765) and ( 388.5849, 581.0538) .. ( 391.5182, 595.8445) + .. controls ( 395.5182, 616.0112) and ( 404.5182, 623.1778) .. ( 415.8515, 623.1778) + .. controls ( 424.4622, 623.1778) and ( 437.8515, 613.6778) .. ( 429.8515, 588.0112) + .. controls ( 425.7369, 574.8085) and ( 419.2209, 550.5445) .. ( 430.3515, 549.5112) + .. controls ( 446.5182, 548.0112) and ( 563.1969, 564.0432) .. ( 582.0742, 556.9005) + .. controls ( 592.3515, 553.0112) and ( 602.6849, 540.5112) .. ( 592.7409, 526.2338) + .. controls ( 590.5555, 523.0965) and ( 546.5182, 529.5112) .. ( 514.5182, 529.5112) + .. controls ( 502.8982, 529.5112) and ( 439.9475, 527.4738) .. ( 429.2435, 513.0925) + .. controls ( 418.1849, 498.2338) and ( 433.5182, 482.1778) .. ( 433.5182, 471.1778) + .. controls ( 433.5182, 452.8445) and ( 415.3515, 427.3445) .. ( 415.3515, 364.3445) + .. controls ( 415.3515, 329.8432) and ( 418.1849, 298.6778) .. ( 422.9622, 221.7885) + .. controls ( 424.9742, 189.4072) and ( 394.8515, 194.4765) .. ( 389.8515, 223.3445) + .. controls ( 386.2222, 244.3018) and ( 382.2955, 297.1218) .. ( 382.0742, 314.2338) + .. controls ( 336.6849, 315.8445) and ( 279.1849, 309.5672) .. ( 249.1849, 302.2338) + .. controls ( 241.0435, 300.2432) and ( 230.3022, 322.7285) .. ( 232.7369, 328.1938) + .. controls ( 237.1849, 338.1778) and ( 304.0729, 341.8458) .. ( 337.8515, 344.0112) + .. controls ( 352.7115, 344.9645) and ( 362.6849, 344.7765) .. ( 382.0742, 343.7885) + .. controls ( 382.2435, 356.2658) and ( 382.0915, 361.9045) .. ( 383.1849, 378.6778) + .. controls ( 384.3129, 395.9845) and ( 387.8942, 424.2818) .. ( 391.4582, 437.7178) + .. controls ( 396.0742, 455.1218) and ( 405.5182, 466.3445) .. ( 400.9622, 468.6778) + .. controls ( 394.5915, 471.9405) and ( 374.8515, 431.1458) .. ( 370.3515, 409.4912) + .. controls ( 367.4462, 395.5112) and ( 371.8635, 373.0725) .. ( 349.6289, 358.6778) + .. controls ( 331.3515, 346.8445) and ( 282.0435, 338.8778) .. ( 256.3515, 354.8445) + .. controls ( 238.7409, 365.7885) and ( 226.5182, 381.7885) .. ( 226.5182, 426.2338) + .. controls ( 226.5182, 452.4005) and ( 225.8515, 482.2338) .. ( 246.5929, 497.0352) + ( 519.4070, 324.2890) + .. controls ( 520.2777, 321.3544) and ( 522.2683, 319.5944) .. ( 524.0190, 319.4064) + .. controls ( 527.3977, 319.0424) and ( 544.9070, 319.3450) .. ( 546.7683, 320.9277) + .. controls ( 552.9323, 326.1717) and ( 554.9350, 341.6784) .. ( 551.9390, 343.3384) + .. controls ( 549.5043, 344.6864) and ( 532.4630, 343.2730) .. ( 523.7870, 340.6850) + .. controls ( 522.1203, 340.1890) and ( 519.0737, 338.6784) .. ( 518.7537, 335.6810) + .. controls ( 518.2963, 331.4117) and ( 518.4843, 327.3997) .. ( 519.4070, 324.2890) + ( 452.6297, 377.8997) + .. controls ( 454.4070, 380.6784) and ( 460.5177, 383.3997) .. ( 470.1843, 383.8997) + .. controls ( 482.7723, 384.5517) and ( 526.9230, 388.9850) .. ( 532.9737, 387.5864) + .. controls ( 536.1843, 386.8450) and ( 534.0177, 379.1784) .. ( 531.3777, 375.7077) + .. controls ( 529.4163, 373.1304) and ( 525.7017, 369.1770) .. ( 524.0177, 366.9277) + .. controls ( 522.1257, 364.3997) and ( 521.1577, 361.5170) .. ( 523.3830, 360.2757) + .. controls ( 525.8510, 358.8997) and ( 546.7963, 361.9557) .. ( 553.2270, 363.0944) + .. controls ( 558.7977, 364.0810) and ( 560.8097, 369.8024) .. ( 563.9350, 374.2610) + .. controls ( 569.2123, 381.7904) and ( 577.0737, 386.0117) .. ( 582.8510, 386.0117) + .. controls ( 589.6297, 386.0117) and ( 591.4230, 374.3837) .. ( 590.7523, 366.3357) + .. controls ( 589.7123, 353.8357) and ( 577.8043, 312.0797) .. ( 574.2350, 303.7570) + .. controls ( 573.2963, 301.5664) and ( 569.8843, 300.0117) .. ( 566.9350, 300.0117) + .. controls ( 562.3377, 300.0117) and ( 536.8510, 301.9277) .. ( 526.5670, 298.6944) + .. controls ( 524.0043, 297.8890) and ( 523.2683, 295.7610) .. ( 524.0177, 290.2610) + .. controls ( 524.6123, 285.9010) and ( 533.4990, 247.5584) .. ( 534.6617, 239.5050) + .. controls ( 536.9630, 223.5664) and ( 521.4230, 220.8370) .. ( 512.5430, 232.4037) + .. controls ( 504.7403, 242.5664) and ( 500.5470, 254.5317) .. ( 496.6230, 267.2677) + .. controls ( 491.9043, 282.5824) and ( 493.9550, 293.8410) .. ( 483.7403, 292.7890) + .. controls ( 470.7243, 291.4477) and ( 447.5177, 274.8717) .. ( 435.6737, 274.8717) + .. controls ( 427.1763, 274.8717) and ( 425.4203, 289.3810) .. ( 429.0177, 295.3450) + .. controls ( 435.3510, 305.8450) and ( 475.3097, 316.4690) .. ( 487.8817, 317.4704) + .. controls ( 488.7150, 325.3877) and ( 488.6843, 330.4277) .. ( 486.6843, 337.0944) + .. controls ( 479.4350, 337.1784) and ( 471.1017, 335.2610) .. ( 461.9217, 331.0450) + .. controls ( 450.9070, 325.9864) and ( 436.7443, 322.4930) .. ( 431.1737, 322.4930) + .. controls ( 425.0617, 322.4930) and ( 420.7403, 337.8997) .. ( 430.2963, 345.1224) + .. controls ( 435.2390, 348.8584) and ( 445.4150, 351.6330) .. ( 449.9537, 352.4370) + .. controls ( 458.8510, 354.0117) and ( 486.9630, 353.3450) .. ( 489.6817, 359.0304) + .. controls ( 490.4003, 360.5357) and ( 490.6843, 364.3997) .. ( 488.1977, 365.4904) + .. controls ( 485.7337, 366.5717) and ( 469.1843, 363.0117) .. ( 460.4070, 363.8997) + .. controls ( 451.9590, 364.7557) and ( 450.2337, 374.1570) .. ( 452.6297, 377.8997) + ( 465.0250, 479.1097) + .. controls ( 470.1850, 476.6777) and ( 560.0183, 480.1777) .. ( 564.7677, 482.3444) + .. controls ( 570.2330, 484.8364) and ( 569.7757, 493.6777) .. ( 564.3517, 496.0110) + .. controls ( 558.9277, 498.3444) and ( 473.4543, 494.4284) .. ( 468.1850, 492.5670) + .. controls ( 461.6810, 490.2684) and ( 460.1570, 481.4044) .. ( 465.0250, 479.1097) + ( 512.5183, 517.5670) + .. controls ( 550.9623, 517.5670) and ( 578.7410, 517.5670) .. ( 590.2303, 506.5924) + .. controls ( 595.6943, 501.3724) and ( 599.1850, 483.5670) .. ( 588.9290, 472.1310) + .. controls ( 579.2503, 461.3377) and ( 539.8517, 459.3444) .. ( 504.8597, 459.1950) + .. controls ( 494.1930, 459.1484) and ( 455.3517, 457.1777) .. ( 449.0570, 461.3924) + .. controls ( 429.2677, 474.6444) and ( 433.4610, 495.0564) .. ( 442.0743, 502.2337) + .. controls ( 455.4077, 513.3444) and ( 467.4077, 516.6777) .. ( 512.5183, 517.5670) + ( 469.5181, 412.4124) + .. controls ( 478.8514, 412.2204) and ( 551.6287, 415.4564) .. ( 562.5861, 417.4417) + .. controls ( 572.8301, 419.2990) and ( 572.3514, 428.5110) .. ( 566.5181, 429.3444) + .. controls ( 558.3594, 430.5097) and ( 474.1727, 426.6484) .. ( 466.6954, 424.2830) + .. controls ( 460.5181, 422.3297) and ( 462.4354, 412.5577) .. ( 469.5181, 412.4124) + ( 453.0487, 444.4590) + .. controls ( 474.8807, 454.1977) and ( 578.9621, 454.6777) .. ( 587.8514, 448.0110) + .. controls ( 600.5821, 438.4630) and ( 600.4314, 419.2284) .. ( 595.5021, 409.4910) + .. controls ( 586.7407, 392.1777) and ( 506.5967, 392.1777) .. ( 466.1847, 392.1777) + .. controls ( 452.1847, 392.1777) and ( 435.6847, 400.6777) .. ( 435.6847, 416.5110) + .. controls ( 435.6847, 423.8444) and ( 435.6061, 436.6777) .. ( 453.0487, 444.4590)} +% \end{macrocode} +% +% 文字“FUDAN UNIVERSITY”。 +% \begin{macrocode} +\def\fdulogo@emblem@new@F{% + ( 128.0847, 329.4813) + -- ( 127.1417, 332.0113) + -- ( 105.9530, 324.1142) + -- ( 128.2300, 264.3431) + -- ( 130.8654, 265.3253) + .. controls ( 128.5761, 272.7562) and ( 129.4109, 275.3484) .. ( 134.8925, 277.3915) + -- ( 185.9141, 296.4074) + .. controls ( 191.3957, 298.4505) and ( 193.1054, 297.4068) .. ( 196.8561, 289.9203) + -- ( 199.4915, 290.9026) + -- ( 185.3474, 328.8525) + -- ( 182.7120, 327.8702) + .. controls ( 185.9049, 318.0148) and ( 185.3471, 315.6458) .. ( 179.5492, 313.4849) + -- ( 154.9872, 304.3305) + .. controls ( 151.1905, 315.1616) and ( 153.6372, 320.5157) .. ( 165.3155, 326.5490) + -- ( 164.3333, 329.1845) + -- ( 128.7025, 315.9047) + -- ( 129.6848, 313.2693) + .. controls ( 142.4094, 315.8508) and ( 147.4741, 313.5363) .. ( 151.4030, 302.9947) + -- ( 126.9464, 293.8796) + .. controls ( 123.0460, 292.4259) and ( 121.4811, 293.4034) .. ( 119.4774, 298.7796) + .. controls ( 111.8160, 319.3358) and ( 119.2776, 323.7976) .. ( 128.0847, 329.4813)} +\def\fdulogo@emblem@new@U@i{% + ( 100.5187, 377.9685) + -- ( 97.7192, 377.6976) + -- ( 101.3818, 339.8494) + -- ( 104.1812, 340.1203) + .. controls ( 104.2065, 348.0345) and ( 105.5322, 349.5191) .. ( 113.5945, 350.2993) + -- ( 150.9948, 353.9185) + .. controls ( 161.9686, 354.9804) and ( 167.2279, 357.8629) .. ( 171.4939, 365.1702) + .. controls ( 174.8929, 370.9244) and ( 176.2150, 378.2859) .. ( 175.4240, 386.4603) + .. controls ( 173.3327, 408.0718) and ( 159.8630, 414.1150) .. ( 142.8425, 412.4680) + -- ( 107.1218, 409.0113) + .. controls ( 100.5152, 408.3720) and ( 98.5719, 409.7663) .. ( 96.7586, 416.8245) + -- ( 93.9592, 416.5536) + -- ( 96.3431, 391.9187) + -- ( 99.1425, 392.1896) + .. controls ( 98.9692, 400.9888) and ( 100.9920, 403.4450) .. ( 109.1663, 404.2360) + -- ( 143.3193, 407.5410) + .. controls ( 159.8919, 409.1447) and ( 168.2251, 403.6217) .. ( 169.5145, 390.2964) + .. controls ( 170.6198, 378.8748) and ( 164.5008, 373.1965) .. ( 149.2719, 371.7228) + -- ( 111.8716, 368.1036) + .. controls ( 103.0254, 367.2476) and ( 101.6889, 369.3788) .. ( 100.5187, 377.9685)} +\def\fdulogo@emblem@new@D{% + ( 161.1337, 431.7764) + .. controls ( 165.9947, 430.8420) and ( 167.6734, 427.6554) .. ( 166.6627, 421.2052) + -- ( 169.4247, 420.6743) + -- ( 176.1350, 455.5852) + .. controls ( 180.7218, 479.4484) and ( 168.5338, 498.2876) .. ( 145.6650, 502.6834) + .. controls ( 122.9066, 507.0578) and ( 106.1239, 494.2454) .. ( 101.2186, 468.7251) + -- ( 94.7418, 435.0294) + -- ( 97.5037, 434.4985) + .. controls ( 99.5257, 441.4417) and ( 101.5863, 443.2222) .. ( 106.6683, 442.2454) + ( 143.6272, 483.1417) + .. controls ( 169.2580, 478.2151) and ( 174.2007, 466.3819) .. ( 171.9922, 454.8923) + .. controls ( 171.0367, 449.9208) and ( 169.3244, 448.7606) .. ( 164.3529, 449.7162) + -- ( 107.5674, 460.6312) + .. controls ( 105.0264, 461.1196) and ( 104.1254, 463.5840) .. ( 104.9536, 467.8926) + .. controls ( 106.8648, 477.8356) and ( 116.4497, 488.3656) .. ( 143.6272, 483.1417)} +\def\fdulogo@emblem@new@A{% + ( 213.7305, 560.0508) + -- ( 213.5287, 559.6486) + .. controls ( 211.5613, 555.7270) and ( 208.6425, 555.1775) .. ( 194.2546, 556.1024) + -- ( 130.1129, 560.2137) + -- ( 128.7004, 557.3982) + -- ( 172.6054, 507.4300) + .. controls ( 180.0401, 498.9173) and ( 180.9431, 496.9540) .. ( 179.4266, 491.6733) + -- ( 181.9405, 490.4121) + -- ( 192.1812, 510.8248) + -- ( 189.6673, 512.0860) + .. controls ( 186.2887, 506.3550) and ( 184.0224, 504.5972) .. ( 181.4079, 505.9088) + .. controls ( 180.1007, 506.5646) and ( 177.9904, 508.6302) .. ( 173.6198, 513.4660) + -- ( 170.4549, 516.9418) + -- ( 181.8054, 539.5667) + .. controls ( 191.3639, 539.0507) and ( 195.5893, 538.4413) .. ( 197.8015, 537.3315) + .. controls ( 199.9131, 536.2721) and ( 200.2629, 534.4604) .. ( 198.6983, 530.8401) + .. controls ( 198.4461, 530.3373) and ( 197.8909, 528.9796) .. ( 197.3857, 527.4709) + -- ( 199.8996, 526.2098) + -- ( 216.2444, 558.7897) + ( 167.2899, 520.4175) + -- ( 147.5970, 542.1283) + -- ( 177.1271, 540.0258)} +\def\fdulogo@emblem@new@N@i{% + ( 180.2268, 631.4088) + -- ( 163.6433, 614.4249) + -- ( 165.6556, 612.4600) + .. controls ( 167.2275, 614.0699) and ( 169.7710, 614.2593) .. ( 178.1316, 613.6430) + -- ( 216.2851, 576.3890) + .. controls ( 220.8732, 571.9091) and ( 220.8212, 569.6013) .. ( 215.8082, 563.0180) + -- ( 217.8205, 561.0531) + -- ( 235.6616, 579.3250) + -- ( 233.6493, 581.2899) + .. controls ( 226.8730, 575.7993) and ( 223.9290, 575.8437) .. ( 218.2140, 581.4240) + -- ( 185.8559, 613.0192) + -- ( 264.7759, 606.2437) + -- ( 266.9766, 608.4975) + -- ( 219.5664, 654.7900) + .. controls ( 214.9783, 659.2699) and ( 214.9537, 661.3380) .. ( 219.2574, 667.3560) + -- ( 217.2451, 669.3209) + -- ( 200.3472, 652.0150) + -- ( 202.3595, 650.0501) + .. controls ( 208.7390, 655.4564) and ( 211.9226, 655.3352) .. ( 217.6376, 649.7550) + -- ( 242.1878, 625.7835)} +\def\fdulogo@emblem@new@U@ii{% + ( 331.4528, 724.5346) + -- ( 330.6370, 727.2262) + -- ( 294.2466, 716.1971) + -- ( 295.0624, 713.5055) + .. controls ( 302.8273, 715.0360) and ( 304.5434, 714.0279) .. ( 306.8928, 706.2761) + -- ( 317.7915, 670.3164) + .. controls ( 320.9893, 659.7653) and ( 324.8491, 655.1750) .. ( 332.8524, 652.4283) + .. controls ( 339.1623, 650.2263) and ( 346.6402, 650.3767) .. ( 354.4996, 652.7588) + .. controls ( 375.2787, 659.0565) and ( 378.5570, 673.4512) .. ( 373.5971, 689.8161) + -- ( 363.1880, 724.1609) + .. controls ( 361.2628, 730.5130) and ( 362.2480, 732.6925) .. ( 368.8121, 735.8575) + -- ( 367.9964, 738.5491) + -- ( 344.3103, 731.3703) + -- ( 345.1261, 728.6787) + .. controls ( 353.7197, 730.5779) and ( 356.5255, 729.0773) .. ( 358.9076, 721.2178) + -- ( 368.8599, 688.3803) + .. controls ( 373.6893, 672.4461) and ( 369.9116, 663.1900) .. ( 357.0996, 659.3069) + .. controls ( 346.1179, 655.9786) and ( 339.3478, 660.8624) .. ( 334.9100, 675.5047) + -- ( 324.0114, 711.4644) + .. controls ( 321.4336, 719.9698) and ( 323.2605, 721.6991) .. ( 331.4528, 724.5346)} +\def\fdulogo@emblem@new@N@ii{% + ( 409.6662, 741.3201) + -- ( 385.9318, 740.9354) + -- ( 385.9774, 738.1232) + .. controls ( 388.2271, 738.1597) and ( 390.1667, 736.5034) .. ( 395.6699, 730.1793) + -- ( 396.5343, 676.8613) + .. controls ( 396.6383, 670.4497) and ( 394.9765, 668.8475) .. ( 386.7815, 667.7020) + -- ( 386.8271, 664.8899) + -- ( 412.3613, 665.3038) + -- ( 412.3157, 668.1160) + .. controls ( 403.6379, 668.9879) and ( 401.5785, 671.0923) .. ( 401.4490, 679.0788) + -- ( 400.7159, 724.2978) + -- ( 451.9889, 663.9210) + -- ( 455.1384, 663.9721) + -- ( 454.0643, 730.2259) + .. controls ( 453.9604, 736.6375) and ( 455.3990, 738.1235) .. ( 462.6923, 739.3669) + -- ( 462.6467, 742.1790) + -- ( 438.4624, 741.7870) + -- ( 438.5080, 738.9748) + .. controls ( 446.8447, 738.3224) and ( 449.0202, 735.9949) .. ( 449.1496, 728.0084) + -- ( 449.7058, 693.7004)} +\def\fdulogo@emblem@new@I@i{% + ( 476.7196, 671.8970) + .. controls ( 475.4886, 666.4083) and ( 473.1681, 665.3146) .. ( 464.7627, 666.3926) + -- ( 464.1473, 663.6482) + -- ( 502.5679, 655.0318) + -- ( 503.1834, 657.7761) + .. controls ( 494.9637, 660.1960) and ( 493.2227, 662.2006) .. ( 494.5028, 667.9088) + -- ( 506.4181, 721.0391) + .. controls ( 507.6983, 726.7473) and ( 510.3974, 727.9867) .. ( 518.5945, 726.4942) + -- ( 519.2100, 729.2386) + -- ( 480.7893, 737.8550) + -- ( 480.1738, 735.1107) + .. controls ( 487.9544, 732.7893) and ( 489.8904, 730.6257) .. ( 488.6349, 725.0273)} +\def\fdulogo@emblem@new@V{% + ( 602.1272, 694.3322) + -- ( 580.4128, 704.4657) + -- ( 579.2235, 701.9171) + .. controls ( 586.2237, 698.0295) and ( 587.4199, 696.6023) .. ( 585.8975, 693.3400) + .. controls ( 585.1363, 691.7089) and ( 584.2595, 690.6283) .. ( 580.4807, 687.0534) + -- ( 551.8815, 659.5553) + -- ( 553.7031, 700.1705) + .. controls ( 553.9070, 705.6619) and ( 554.0701, 707.0756) .. ( 554.7837, 708.6048) + .. controls ( 555.8779, 710.9495) and ( 557.9305, 711.3573) .. ( 561.8995, 709.7533) + .. controls ( 562.4093, 709.5155) and ( 563.7821, 708.9989) .. ( 565.3589, 708.3873) + -- ( 566.5483, 710.9359) + -- ( 532.2946, 726.9211) + -- ( 531.1052, 724.3724) + .. controls ( 535.8695, 721.2801) and ( 536.4064, 720.0363) .. ( 536.3384, 713.2400) + -- ( 533.9390, 639.9954) + -- ( 536.6916, 638.7109) + -- ( 587.8616, 687.7058) + .. controls ( 593.2579, 692.8846) and ( 595.3037, 693.5439) .. ( 600.9378, 691.7836)} +\def\fdulogo@emblem@new@E{% + ( 594.1579, 607.9833) + .. controls ( 588.6244, 612.5899) and ( 587.9174, 615.0815) .. ( 591.0125, 618.7993) + -- ( 608.4314, 639.7226) + .. controls ( 617.8555, 631.8769) and ( 618.5932, 625.5538) .. ( 611.2812, 614.6607) + -- ( 613.5291, 612.7893) + -- ( 637.8580, 642.0127) + -- ( 635.6100, 643.8842) + .. controls ( 626.2515, 635.2803) and ( 620.3028, 634.8165) .. ( 611.2245, 642.3743) + -- ( 610.8787, 642.6622) + -- ( 627.5778, 662.7209) + .. controls ( 630.3129, 666.0064) and ( 632.0847, 665.8488) .. ( 636.5806, 662.1059) + .. controls ( 650.6736, 650.3733) and ( 652.4629, 643.9067) .. ( 645.0512, 630.6081) + -- ( 647.2127, 628.8086) + -- ( 661.6804, 646.1871) + -- ( 611.7931, 687.7188) + -- ( 609.9936, 685.5573) + .. controls ( 615.6714, 680.2450) and ( 616.1625, 677.4940) .. ( 612.4916, 673.0846) + -- ( 577.6538, 631.2380) + .. controls ( 573.9109, 626.7421) and ( 571.9087, 626.7987) .. ( 564.9349, 631.4335) + -- ( 563.1354, 629.2720) + -- ( 613.7144, 587.1644) + -- ( 632.1444, 602.2689) + -- ( 629.7235, 604.2843) + .. controls ( 618.1596, 598.8339) and ( 607.8185, 596.6106) .. ( 594.1579, 607.9833)} +\def\fdulogo@emblem@new@R{% + ( 703.6710, 556.4862) + .. controls ( 714.4763, 563.6014) and ( 714.2704, 576.8012) .. ( 702.9480, 593.9956) + -- ( 683.0255, 624.2503) + -- ( 680.6766, 622.7035) + .. controls ( 684.7852, 615.4412) and ( 684.2421, 613.1977) .. ( 677.4770, 608.7430) + -- ( 635.9473, 581.3960) + .. controls ( 629.0883, 576.8794) and ( 627.5300, 577.2003) .. ( 621.8585, 583.9722) + -- ( 619.5095, 582.4254) + -- ( 640.4219, 550.6674) + -- ( 642.7709, 552.2142) + .. controls ( 638.8845, 560.1617) and ( 639.2994, 561.7818) .. ( 645.9704, 566.1747) + -- ( 664.3863, 578.3014) + -- ( 666.0568, 575.7645) + -- ( 649.4551, 536.9495) + -- ( 662.1387, 517.6879) + -- ( 664.4876, 519.2347) + .. controls ( 663.3739, 520.9260) and ( 663.1334, 522.5186) .. ( 663.7361, 524.2626) + -- ( 678.0783, 560.7815) + .. controls ( 685.1913, 555.0935) and ( 693.4295, 549.7423) .. ( 703.6710, 556.4862) + ( 698.6398, 593.5832) + .. controls ( 704.3319, 584.9390) and ( 702.5809, 578.8021) .. ( 692.7152, 572.3057) + .. controls ( 681.2523, 564.7574) and ( 676.1191, 567.4387) .. ( 667.3930, 580.2813) + -- ( 691.3525, 596.0584) + .. controls ( 694.6410, 598.2239) and ( 696.7217, 596.4960) .. ( 698.6398, 593.5832)} +\def\fdulogo@emblem@new@S{% + ( 743.2031, 515.4693) + .. controls ( 738.4307, 530.0060) and ( 727.2879, 536.1756) .. ( 713.8201, 531.7542) + .. controls ( 704.4140, 528.6662) and ( 699.5048, 520.8973) .. ( 697.5881, 506.1775) + -- ( 696.5188, 497.8932) + .. controls ( 695.1175, 487.0133) and ( 693.1806, 483.5356) .. ( 687.6225, 481.7109) + .. controls ( 680.2473, 479.2896) and ( 673.7179, 482.9480) .. ( 671.0159, 491.1783) + .. controls ( 665.6470, 507.5321) and ( 681.4155, 517.2083) .. ( 686.7312, 520.4928) + -- ( 685.7136, 523.5925) + -- ( 659.3124, 514.9250) + -- ( 660.3301, 511.8253) + .. controls ( 663.2128, 512.0613) and ( 664.4555, 511.5220) .. ( 665.0170, 509.8118) + .. controls ( 666.2101, 506.1776) and ( 664.1199, 500.2815) .. ( 667.3833, 490.3410) + .. controls ( 672.5768, 474.5217) and ( 685.1713, 466.8157) .. ( 698.6391, 471.2371) + .. controls ( 706.6556, 473.8690) and ( 713.0580, 481.4176) .. ( 714.2326, 489.3813) + -- ( 716.8770, 507.6553) + .. controls ( 718.3101, 517.7168) and ( 720.2103, 520.9456) .. ( 725.3409, 522.6300) + .. controls ( 731.9679, 524.8056) and ( 737.5034, 521.6498) .. ( 739.8896, 514.3815) + .. controls ( 742.5565, 506.2581) and ( 739.7722, 496.3450) .. ( 726.8880, 487.2604) + -- ( 727.8705, 484.2676) + -- ( 751.0651, 491.8823) + -- ( 750.0123, 495.0890) + .. controls ( 746.9876, 494.9248) and ( 745.8518, 495.4992) .. ( 745.2553, 497.3163) + .. controls ( 744.2727, 500.3091) and ( 746.1156, 506.5977) .. ( 743.2031, 515.4693)} +\def\fdulogo@emblem@new@I@ii{% + ( 690.1865, 451.6464) + .. controls ( 684.6017, 450.9745) and ( 682.7961, 452.7969) .. ( 681.0064, 461.0799) + -- ( 678.2140, 460.7439) + -- ( 682.9174, 421.6508) + -- ( 685.7097, 421.9868) + .. controls ( 685.2469, 430.5428) and ( 686.5553, 432.8531) .. ( 692.3634, 433.5519) + -- ( 746.4236, 440.0559) + .. controls ( 752.2317, 440.7547) and ( 754.3010, 438.6242) .. ( 755.6305, 430.3991) + -- ( 758.4229, 430.7350) + -- ( 753.7195, 469.8281) + -- ( 750.9272, 469.4922) + .. controls ( 751.3362, 461.3830) and ( 749.9430, 458.8358) .. ( 744.2466, 458.1505)} +\def\fdulogo@emblem@new@T{% + ( 695.2781, 394.8643) + .. controls ( 686.9872, 395.6171) and ( 685.8667, 396.9614) .. ( 685.9573, 406.6680) + -- ( 683.1563, 406.9223) + -- ( 679.5246, 366.9243) + -- ( 682.3256, 366.6700) + .. controls ( 683.8828, 376.3564) and ( 685.1151, 377.4871) .. ( 693.6301, 376.7139) + -- ( 752.6747, 371.3528) + .. controls ( 750.9753, 357.6127) and ( 745.2925, 352.2546) .. ( 731.7869, 351.5605) + -- ( 731.4919, 348.3114) + -- ( 754.0321, 346.4907) + -- ( 760.1358, 413.7142) + -- ( 737.6465, 416.0950) + -- ( 737.3515, 412.8459) + .. controls ( 750.5112, 409.7307) and ( 755.1360, 403.4367) .. ( 754.3227, 389.5031)} +\def\fdulogo@emblem@new@Y{% + ( 727.3770, 264.9871) + -- ( 735.5275, 288.3566) + -- ( 732.8719, 289.2828) + .. controls ( 729.8586, 282.3509) and ( 728.3790, 280.8415) .. ( 725.2984, 281.9159) + .. controls ( 723.2802, 282.6198) and ( 720.0809, 285.4036) .. ( 716.6519, 289.5782) + -- ( 701.1126, 308.2229) + -- ( 730.2025, 312.3749) + .. controls ( 731.6253, 312.3552) and ( 735.0219, 313.5535) .. ( 737.3589, 312.7385) + .. controls ( 739.6958, 311.9234) and ( 739.9899, 310.0337) .. ( 738.4710, 305.6785) + -- ( 737.6510, 302.9858) + -- ( 740.3066, 302.0596) + -- ( 752.7175, 337.6450) + -- ( 750.0619, 338.5711) + .. controls ( 748.5898, 335.0336) and ( 745.6083, 332.9756) .. ( 741.2557, 332.1108) + -- ( 699.2094, 324.9714) + -- ( 683.5943, 330.4173) + .. controls ( 675.8399, 333.1218) and ( 675.0789, 334.6978) .. ( 677.2670, 343.7046) + -- ( 674.6114, 344.6308) + -- ( 661.7559, 307.7708) + -- ( 664.4115, 306.8446) + .. controls ( 668.2992, 315.2586) and ( 669.7320, 315.9504) .. ( 677.5926, 313.2089) + -- ( 697.1380, 306.3922) + -- ( 723.0979, 274.5814) + .. controls ( 725.0224, 272.2422) and ( 725.4499, 269.7102) .. ( 724.7214, 265.9133)} +% \end{macrocode} +% +% 年份“1905”。 +% \begin{macrocode} +\def\fdulogo@emblem@new@one{% + ( 274.5395, 192.6967) + .. controls ( 276.9064, 191.1773) and ( 276.6109, 188.4259) .. ( 273.7544, 183.9760) + -- ( 250.3560, 147.5245) + .. controls ( 245.3724, 139.7608) and ( 242.4456, 139.3668) .. ( 233.0116, 145.2889) + -- ( 231.5530, 143.0166) + -- ( 267.0577, 120.2259) + -- ( 268.5163, 122.4982) + .. controls ( 260.0221, 128.2181) and ( 259.3241, 130.6714) .. ( 264.0038, 137.9617) + -- ( 298.6457, 191.9288) + -- ( 297.0361, 192.9620) + -- ( 266.5525, 197.9573) + -- ( 264.9724, 195.4956) + .. controls ( 266.7911, 194.9966) and ( 272.0778, 194.2769) .. ( 274.5395, 192.6967)} +\def\fdulogo@emblem@new@nine{% + ( 346.5371, 87.1702) + .. controls ( 362.4419, 86.7295) and ( 370.4573, 88.2105) .. ( 380.2273, 93.2720) + .. controls ( 393.0006, 99.8738) and ( 401.0206, 110.7139) .. ( 403.4323, 124.7972) + .. controls ( 406.7175, 143.9816) and ( 398.6612, 158.2595) .. ( 383.1363, 160.9181) + .. controls ( 369.2747, 163.2918) and ( 357.4144, 154.0225) .. ( 354.8128, 138.8302) + .. controls ( 352.5721, 125.7449) and ( 359.1481, 115.4872) .. ( 371.2353, 113.4174) + .. controls ( 375.4493, 112.6958) and ( 378.4274, 112.7565) .. ( 381.6874, 113.7963) + .. controls ( 374.0326, 97.7572) and ( 363.5501, 90.5348) .. ( 347.0309, 90.0534) + ( 387.1965, 133.9696) + .. controls ( 386.6838, 130.9755) and ( 385.8543, 127.4649) .. ( 384.6671, 122.5317) + -- ( 383.8407,1 19.7055) + .. controls ( 383.5209, 118.5046) and ( 383.5118, 116.4516) .. ( 378.1890, 117.3631) + .. controls ( 371.3136, 118.5405) and ( 369.8835, 125.5199) .. ( 372.8649, 142.9300) + .. controls ( 375.0676, 155.7935) and ( 376.9680, 158.8924) .. ( 382.4018, 157.9619) + .. controls ( 387.6137, 157.0694) and ( 390.2348, 151.7124) .. ( 387.1965, 133.9696)} +\def\fdulogo@emblem@new@zero{% + ( 468.5384, 119.7074) + .. controls ( 473.7469, 97.1238) and ( 487.7687, 83.3851) .. ( 502.3493, 86.7478) + .. controls ( 516.4914, 90.0095) and ( 523.2485, 108.7714) .. ( 518.1664, 130.8068) + .. controls ( 513.1097, 152.7325) and ( 498.6578, 166.8340) .. ( 484.5157, 163.5723) + .. controls ( 470.3736, 160.3107) and ( 463.5827, 141.1946) .. ( 468.5384, 119.7074) + ( 501.6414, 89.8174) + .. controls ( 496.1599, 88.5533) and ( 492.5852, 94.5410) .. ( 488.8432, 110.7660) + -- ( 483.0532, 135.8710) + .. controls ( 479.2354, 152.4250) and ( 479.8518, 159.2638) .. ( 485.1140, 160.4775) + .. controls ( 490.4858, 161.7164) and ( 494.2460, 155.4251) .. ( 497.9627, 139.3096) + -- ( 503.7527, 114.2046) + .. controls ( 507.9499, 96.0062) and ( 506.0265, 90.8288) .. ( 501.6414, 89.8174)} +\def\fdulogo@emblem@new@five{% + ( 596.8132, 144.2577) + .. controls ( 593.5339, 141.8806) and ( 592.8164, 137.8865) .. ( 595.1276, 134.6983) + .. controls ( 598.6273, 129.8705) and ( 606.2217, 130.5123) .. ( 614.3287, 136.3892) + .. controls ( 629.3586, 147.2846) and ( 633.4128, 164.1194) .. ( 624.1022, 176.9632) + .. controls ( 617.2348, 186.4365) and ( 606.1224, 189.4976) .. ( 594.1466, 185.1239) + .. controls ( 589.9588, 183.6166) and ( 586.8709, 181.9339) .. ( 579.0713, 176.9747) + -- ( 575.7266, 185.8057) + -- ( 601.0497, 204.1628) + -- ( 596.5804, 218.5707) + -- ( 567.2494, 197.3081) + -- ( 581.1949, 159.4769) + .. controls ( 590.3107, 165.1124) and ( 594.4416, 167.2732) .. ( 599.3741, 168.9033) + .. controls ( 609.3300, 172.2297) and ( 617.9216, 170.5373) .. ( 622.2798, 164.5254) + .. controls ( 625.9776, 159.4243) and ( 624.8751, 152.5109) .. ( 619.7741, 148.8131) + .. controls ( 613.9443, 144.5870) and ( 603.2806, 148.9461) .. ( 596.8132, 144.2577)} +% \end{macrocode} +% +% 内环。 +% \begin{macrocode} +\def\fdulogo@emblem@new@ring@inner@i{% + ( 427.2847, 410.4046) circle [radius=241.88932729]} +\def\fdulogo@emblem@new@ring@inner@ii{% + ( 427.2847, 410.4046) circle [radius=226.77199428]} +% \end{macrocode} +% +% 外环。 +% \begin{macrocode} +\def\fdulogo@emblem@new@ring@outer@i{% + ( 427.2847, 410.4046) circle [radius=359.05469569]} +\def\fdulogo@emblem@new@ring@outer@ii{% + ( 427.2847, 410.4046) circle [radius=343.93732473]} +% \end{macrocode} +% +% \paragraph{校训} +% +% 博。 +% \begin{macrocode} +\def\fdulogo@motto@bo{% + ( 446.4407, 999.9156) + .. controls ( 447.6181, 1000.0743) and ( 456.1634, 1001.9569) .. ( 459.2901, 1001.3156) + .. controls ( 462.4581, 1000.6649) and ( 466.0367, 997.5156) .. ( 466.5834, 994.3956) + .. controls ( 466.9434, 992.4089) and ( 463.7514, 988.9516) .. ( 461.2501, 987.9023) + .. controls ( 452.2741, 984.1383) and ( 442.9127, 980.4983) .. ( 442.9127, 980.4983) + .. controls ( 442.8301, 967.4569) and ( 443.3647, 968.9383) .. ( 444.8301, 956.9129) + .. controls ( 446.8447, 940.3689) and ( 445.1074, 926.5983) .. ( 444.8661, 909.7996) + .. controls ( 444.2461, 900.9569) and ( 440.7141, 902.6716) .. ( 438.5794, 901.2489) + .. controls ( 434.4541, 898.4983) and ( 433.8301, 894.4156) .. ( 429.6834, 901.0409) + .. controls ( 426.8074, 905.6383) and ( 420.4941, 921.0689) .. ( 424.4767, 936.0489) + .. controls ( 429.1074, 953.4716) and ( 434.2327, 978.4756) .. ( 433.4967, 979.2489) + .. controls ( 432.9154, 979.8596) and ( 422.1794, 977.1876) .. ( 413.7181, 974.9156) + .. controls ( 406.5794, 972.9996) and ( 404.5181, 974.8543) .. ( 404.1634, 976.9716) + .. controls ( 402.9967, 983.9156) and ( 425.5034, 995.3289) .. ( 429.2501, 996.3289) + .. controls ( 430.2634, 1003.8223) and ( 427.7434, 1012.8356) .. ( 433.5034, 1018.0223) + .. controls ( 435.6634, 1019.9689) and ( 445.6234, 1020.4356) .. ( 447.2767, 1014.6356) + .. controls ( 448.9167, 1008.8623) and ( 447.4407, 1006.9023) .. ( 446.4407, 999.9156) + ( 504.1630, 912.5823) + .. controls ( 502.9283, 909.4636) and ( 498.3857, 907.0823) .. ( 494.8297, 907.8596) + .. controls ( 491.0990, 908.6756) and ( 482.1083, 915.8916) .. ( 480.8297, 920.5263) + .. controls ( 479.8963, 923.9089) and ( 488.1243, 925.4156) .. ( 489.6070, 925.3596) + .. controls ( 498.4403, 925.0263) and ( 501.6070, 921.8156) .. ( 502.9963, 919.6929) + .. controls ( 504.3857, 917.5716) and ( 505.2190, 915.2489) .. ( 504.1630, 912.5823) + ( 487.0519, 975.3323) + .. controls ( 487.4986, 974.5176) and ( 488.7119, 974.5523) .. ( 490.1359, 974.7216) + ( 485.8293, 957.1056) + .. controls ( 485.9413, 952.9989) and ( 484.6813, 952.3963) .. ( 483.6626, 949.9989) + .. controls ( 482.8186, 948.0083) and ( 481.7066, 945.0696) .. ( 480.7186, 944.7496) + ( 495.4133, 1000.2216) + .. controls ( 494.6439, 1000.5789) and ( 492.1159, 998.6123) .. ( 491.4546, 997.2909) + .. controls ( 490.9546, 996.2909) and ( 490.2879, 993.4576) .. ( 490.9959, 992.9163) + .. controls ( 491.7053, 992.3736) and ( 494.9693, 994.6896) .. ( 495.7879, 996.1656) + .. controls ( 496.7746, 997.9429) and ( 496.1906, 999.8603) .. ( 495.4133, 1000.2216) + ( 494.5799, 976.5816) + .. controls ( 495.5386, 977.1869) and ( 495.9333, 978.0309) .. ( 496.2466, 979.3509) + .. controls ( 496.7466, 981.4549) and ( 496.5386, 983.7909) .. ( 496.0386, 984.4149) + .. controls ( 495.5413, 985.0363) and ( 492.4679, 984.6096) .. ( 490.5159, 983.7723) + .. controls ( 489.5279, 983.3483) and ( 488.0479, 982.3349) .. ( 487.6906, 981.6656) + .. controls ( 487.1159, 980.5869) and ( 486.6159, 976.1283) .. ( 487.0519, 975.3323) + .. controls ( 487.4986, 974.5176) and ( 488.7546, 974.3363) .. ( 490.1359, 974.7216) + .. controls ( 492.3013, 975.3256) and ( 493.2533, 975.7456) .. ( 494.5799, 976.5816) + ( 520.8853, 963.1376) + .. controls ( 524.1946, 967.7176) and ( 523.0893, 983.7963) .. ( 523.8066, 995.4949) + .. controls ( 523.9453, 997.7589) and ( 525.2466, 1006.9989) .. ( 523.1626, 1009.2483) + .. controls ( 521.9733, 1010.5336) and ( 513.5239, 1009.7483) .. ( 511.9959, 1008.3043) + .. controls ( 509.6519, 1006.0869) and ( 508.8813, 1000.4229) .. ( 509.9413, 1000.1376) + .. controls ( 512.8293, 999.3603) and ( 513.8293, 999.4709) .. ( 513.8293, 996.4163) + .. controls ( 513.8293, 990.9003) and ( 509.7813, 991.5989) .. ( 509.9253, 987.3456) + .. controls ( 510.0519, 983.6376) and ( 513.5426, 986.8509) .. ( 514.7466, 986.2496) + .. controls ( 516.7466, 985.2483) and ( 517.4573, 982.6336) .. ( 517.6626, 980.8323) + .. controls ( 517.9959, 977.9149) and ( 517.0266, 975.5643) .. ( 514.4959, 975.4149) + .. controls ( 511.6626, 975.2496) and ( 510.1626, 973.5483) .. ( 510.0773, 971.1656) + .. controls ( 509.9959, 968.9163) and ( 514.3919, 969.3509) .. ( 515.6626, 966.9989) + .. controls ( 517.3293, 963.9149) and ( 518.4133, 961.2483) .. ( 520.8853, 963.1376) + ( 483.9959, 899.6656) + .. controls ( 487.2466, 903.3323) and ( 507.7466, 888.0816) .. ( 511.3026, 891.0576) + .. controls ( 513.1946, 892.6403) and ( 511.7186, 906.8643) .. ( 512.1866, 913.5429) + .. controls ( 512.6373, 919.9883) and ( 515.7853, 933.7683) .. ( 514.7226, 935.4856) + .. controls ( 514.0959, 936.4963) and ( 501.1879, 932.5923) .. ( 496.1626, 931.7483) + .. controls ( 488.4333, 930.4509) and ( 478.1079, 930.1936) .. ( 474.2186, 929.2483) + .. controls ( 468.2173, 927.7909) and ( 456.0199, 919.6029) .. ( 453.8413, 924.5816) + .. controls ( 450.9959, 931.0816) and ( 458.2933, 935.6389) .. ( 462.1626, 936.9163) + .. controls ( 464.6746, 937.7443) and ( 478.3466, 939.0163) .. ( 489.0799, 940.4163) + .. controls ( 496.6013, 941.3963) and ( 507.1559, 942.9563) .. ( 513.4413, 944.0269) + .. controls ( 516.0519, 944.4709) and ( 516.4346, 948.3509) .. ( 516.5973, 951.6469) + .. controls ( 516.7746, 955.2483) and ( 514.1746, 955.6029) .. ( 512.2319, 956.7483) + .. controls ( 509.8386, 958.1603) and ( 510.1213, 960.3069) .. ( 507.4133, 960.4989) + .. controls ( 504.6626, 960.6936) and ( 504.1279, 957.6776) .. ( 501.3853, 957.7483) + .. controls ( 498.1626, 957.8323) and ( 501.0959, 966.3016) .. ( 497.3293, 969.3323) + .. controls ( 495.6213, 970.7069) and ( 487.3759, 970.3829) .. ( 485.8706, 969.1589) + .. controls ( 484.5373, 968.0763) and ( 485.7439, 960.2749) .. ( 485.8293, 957.1056) + .. controls ( 485.9413, 952.9989) and ( 484.7919, 952.3136) .. ( 483.7746, 949.9163) + .. controls ( 482.9293, 947.9243) and ( 481.7066, 945.0696) .. ( 480.7186, 944.7496) + .. controls ( 478.6626, 944.0829) and ( 472.5906, 949.9896) .. ( 469.7413, 953.7269) + .. controls ( 466.6106, 957.8323) and ( 467.6346, 960.3829) .. ( 468.9413, 967.9163) + .. controls ( 469.4946, 971.1083) and ( 471.4133, 977.0936) .. ( 471.4133, 981.0816) + .. controls ( 471.4133, 986.3323) and ( 472.2386, 991.9616) .. ( 473.0799, 995.7496) + .. controls ( 474.0346, 1000.0496) and ( 477.5279, 1001.2003) .. ( 479.4546, 999.9149) + .. controls ( 481.8293, 998.3323) and ( 481.9759, 990.9389) .. ( 482.6773, 990.0056) + .. controls ( 483.6626, 988.6936) and ( 485.4213, 987.0963) .. ( 486.3799, 994.3949) + .. controls ( 486.5813, 995.9349) and ( 487.4333, 998.9109) .. ( 488.3853, 1000.4149) + .. controls ( 489.4226, 1002.0563) and ( 492.0159, 1004.6709) .. ( 492.9959, 1005.5269) + .. controls ( 496.4959, 1008.5816) and ( 496.1626, 1011.0269) .. ( 494.8853, 1012.0816) + .. controls ( 493.7906, 1012.9869) and ( 483.7746, 1009.7483) .. ( 481.4959, 1012.9149) + .. controls ( 480.4573, 1014.3603) and ( 485.7426, 1020.9616) .. ( 489.3439, 1022.8069) + .. controls ( 492.4853, 1024.4163) and ( 496.2746, 1024.3309) .. ( 496.4413, 1025.8883) + .. controls ( 497.0386, 1031.4989) and ( 496.9453, 1036.7616) .. ( 500.8626, 1037.0763) + .. controls ( 504.5399, 1037.3709) and ( 506.1626, 1031.0269) .. ( 506.9413, 1030.8603) + .. controls ( 508.0119, 1030.6309) and ( 512.4719, 1032.0896) .. ( 514.4133, 1030.9163) + .. controls ( 516.6586, 1028.9203) and ( 517.2639, 1026.5403) .. ( 516.8093, 1023.9123) + .. controls ( 516.3133, 1021.0456) and ( 512.7373, 1017.2603) .. ( 513.4133, 1016.6656) + .. controls ( 514.6346, 1015.5923) and ( 525.9346, 1018.3349) .. ( 532.0799, 1014.3336) + .. controls ( 535.6626, 1012.0003) and ( 535.9426, 1009.5749) .. ( 536.5866, 1005.5816) + .. controls ( 538.7746, 992.0269) and ( 540.7879, 985.2909) .. ( 541.5519, 979.9163) + .. controls ( 542.3826, 974.0696) and ( 543.9959, 967.4163) .. ( 540.9133, 961.9149) + .. controls ( 539.5146, 959.4203) and ( 536.0346, 957.0323) .. ( 533.4133, 954.8323) + .. controls ( 531.5466, 953.2656) and ( 529.1346, 949.6469) .. ( 533.1826, 950.1523) + .. controls ( 536.9546, 950.6243) and ( 541.9239, 952.0803) .. ( 549.9133, 953.2496) + .. controls ( 555.9693, 954.1349) and ( 570.2746, 955.4709) .. ( 571.2066, 949.6843) + .. controls ( 571.7186, 946.5096) and ( 568.7439, 945.9483) .. ( 565.8613, 945.0443) + .. controls ( 563.7879, 944.3949) and ( 561.2906, 942.2589) .. ( 557.2466, 941.4163) + .. controls ( 551.8719, 940.2949) and ( 544.2319, 941.1469) .. ( 540.1626, 940.8323) + .. controls ( 532.1119, 940.2096) and ( 526.4733, 939.2496) .. ( 524.9959, 938.0269) + .. controls ( 523.4679, 936.7629) and ( 524.0346, 929.9656) .. ( 525.6626, 923.7483) + .. controls ( 528.0039, 914.8096) and ( 531.3226, 900.7829) .. ( 531.0959, 891.4589) + .. controls ( 530.8466, 881.1936) and ( 521.0813, 876.6403) .. ( 510.9133, 877.1656) + .. controls ( 501.1759, 877.6683) and ( 499.7466, 883.1656) .. ( 492.2626, 888.2589) + .. controls ( 486.2866, 892.3243) and ( 482.3533, 897.8109) .. ( 483.9959, 899.6656) + ( 534.5519, 1039.1379) + .. controls ( 543.0479, 1039.4925) and ( 549.7199, 1035.3459) .. ( 549.1626, 1026.7472) + .. controls ( 548.8759, 1022.3179) and ( 542.2266, 1014.5859) .. ( 540.4359, 1014.3325) + .. controls ( 538.8573, 1014.1099) and ( 526.6626, 1026.9152) .. ( 524.0973, 1031.6699) + .. controls ( 523.0373, 1033.6352) and ( 529.2186, 1038.9152) .. ( 534.5519, 1039.1379)} +% \end{macrocode} +% +% 学。 +% \begin{macrocode} +\def\fdulogo@motto@xue{% + ( 441.9695, 769.2220) + .. controls ( 449.3455, 772.0153) and ( 456.8855, 744.1380) .. ( 451.8535, 731.9580) + .. controls ( 450.7629, 729.3207) and ( 447.7469, 726.4633) .. ( 444.8295, 726.4993) + .. controls ( 442.4122, 726.5287) and ( 439.1069, 728.5273) .. ( 438.1069, 733.7487) + .. controls ( 437.5189, 736.8247) and ( 439.1069, 768.1380) .. ( 441.9695, 769.2220) + ( 527.6213, 755.1656) + .. controls ( 527.6306, 757.1909) and ( 526.7466, 758.4163) .. ( 525.2466, 758.1243) + .. controls ( 523.8199, 757.8469) and ( 522.1306, 756.1056) .. ( 522.8013, 753.9709) + .. controls ( 523.5799, 751.4989) and ( 525.2186, 750.0549) .. ( 525.7879, 750.2069) + .. controls ( 526.3573, 750.3603) and ( 527.6079, 752.3323) .. ( 527.6213, 755.1656) + ( 487.7986, 742.4136) + .. controls ( 490.3293, 743.1376) and ( 486.9679, 751.0549) .. ( 486.3399, 750.4029) + .. controls ( 485.7053, 749.7456) and ( 485.2093, 747.6616) .. ( 485.1626, 746.4163) + .. controls ( 485.0519, 743.4149) and ( 484.8733, 741.5776) .. ( 487.7986, 742.4136) + ( 493.8293, 758.1656) + .. controls ( 496.8293, 757.5816) and ( 496.8293, 760.8736) .. ( 496.7813, 762.5909) + .. controls ( 496.7333, 764.2749) and ( 496.7053, 764.9149) .. ( 495.0799, 765.2483) + .. controls ( 494.0293, 765.4643) and ( 491.5799, 765.2069) .. ( 490.2053, 763.4149) + .. controls ( 489.9719, 763.1136) and ( 489.5386, 761.1243) .. ( 489.8293, 760.3323) + .. controls ( 490.2799, 759.1083) and ( 492.2053, 758.4816) .. ( 493.8293, 758.1656) + ( 490.8959, 727.5109) + .. controls ( 489.5253, 726.1536) and ( 488.3293, 724.5829) .. ( 490.7879, 724.4989) + .. controls ( 493.6199, 724.4029) and ( 501.8293, 726.2909) .. ( 503.5799, 727.1656) + .. controls ( 504.5346, 727.6429) and ( 506.0799, 730.5829) .. ( 502.3453, 731.8456) + .. controls ( 498.2493, 733.2336) and ( 492.5506, 729.1483) .. ( 490.8959, 727.5109) + ( 536.0959, 719.8616) + .. controls ( 533.9293, 720.3643) and ( 512.1986, 716.6776) .. ( 499.9133, 714.4989) + .. controls ( 481.9333, 711.3109) and ( 470.3293, 708.1656) .. ( 462.8853, 705.3603) + .. controls ( 458.5719, 703.7349) and ( 445.9826, 698.8136) .. ( 440.9413, 691.3603) + .. controls ( 439.6626, 689.4709) and ( 439.8079, 683.4363) .. ( 439.4439, 681.9163) + .. controls ( 438.8853, 679.5829) and ( 437.1906, 678.5843) .. ( 434.1826, 678.0229) + .. controls ( 426.9133, 676.6656) and ( 419.6439, 682.5829) .. ( 419.6626, 689.8603) + .. controls ( 419.6853, 698.3163) and ( 425.6079, 703.4149) .. ( 429.5533, 706.9696) + .. controls ( 433.7439, 710.7456) and ( 447.4413, 720.1376) .. ( 448.7053, 718.4709) + .. controls ( 449.5706, 717.3309) and ( 444.5346, 711.5269) .. ( 445.3293, 709.8043) + .. controls ( 445.7373, 708.9203) and ( 451.3213, 711.0443) .. ( 452.8559, 711.6643) + .. controls ( 455.2053, 712.6123) and ( 461.9519, 715.5763) .. ( 463.4959, 716.5269) + .. controls ( 464.2186, 716.9709) and ( 462.3293, 717.9989) .. ( 460.5799, 724.1656) + .. controls ( 459.7506, 727.0883) and ( 459.8933, 733.0883) .. ( 460.1079, 736.9976) + .. controls ( 460.4133, 742.5816) and ( 461.9959, 743.6936) .. ( 462.8853, 750.1376) + .. controls ( 463.4093, 753.9416) and ( 463.2133, 758.8509) .. ( 463.2466, 763.4989) + .. controls ( 463.2879, 769.2883) and ( 462.9133, 776.7909) .. ( 461.2879, 779.5816) + .. controls ( 459.1039, 783.3349) and ( 459.1626, 785.4149) .. ( 461.5639, 787.0616) + .. controls ( 463.6959, 788.5229) and ( 467.0399, 789.1629) .. ( 469.5586, 788.6403) + .. controls ( 471.0733, 788.3256) and ( 473.3853, 787.3043) .. ( 472.9719, 783.3189) + .. controls ( 472.8119, 781.7763) and ( 471.3853, 779.8043) .. ( 470.7466, 777.1656) + .. controls ( 469.5439, 772.1989) and ( 468.7173, 766.4243) .. ( 468.6626, 761.4989) + .. controls ( 468.6173, 757.3189) and ( 472.8293, 758.8323) .. ( 473.6626, 752.1376) + .. controls ( 474.5373, 745.1163) and ( 474.9573, 736.3403) .. ( 474.9959, 730.9709) + .. controls ( 475.0546, 722.9256) and ( 474.3093, 719.3416) .. ( 474.7186, 719.3603) + .. controls ( 476.8839, 719.4589) and ( 483.8853, 721.5269) .. ( 483.9959, 723.1656) + .. controls ( 484.1279, 725.1069) and ( 480.5773, 724.2789) .. ( 479.8053, 726.2549) + .. controls ( 478.0799, 730.6656) and ( 478.4959, 745.2069) .. ( 479.4133, 752.2483) + .. controls ( 479.9186, 756.1336) and ( 480.6413, 758.0429) .. ( 480.7879, 760.5403) + .. controls ( 480.9759, 763.7283) and ( 480.4959, 766.2496) .. ( 480.7039, 770.0403) + .. controls ( 480.9893, 775.2296) and ( 484.0546, 781.5949) .. ( 485.1773, 786.5109) + .. controls ( 486.5239, 792.4096) and ( 487.4413, 797.8749) .. ( 496.0759, 795.6669) + .. controls ( 502.0519, 794.1376) and ( 500.7253, 787.4309) .. ( 499.9533, 782.8843) + .. controls ( 499.4133, 779.7069) and ( 496.6079, 777.5269) .. ( 497.6626, 772.6936) + .. controls ( 498.0826, 770.7749) and ( 501.9959, 773.3043) .. ( 506.2186, 772.0829) + .. controls ( 507.9146, 771.5909) and ( 508.2559, 765.9363) .. ( 508.0519, 761.0816) + .. controls ( 507.9733, 759.2176) and ( 507.8146, 752.6989) .. ( 507.8293, 751.8323) + .. controls ( 507.8853, 748.6656) and ( 511.9959, 749.7496) .. ( 512.8013, 745.8523) + .. controls ( 513.3279, 743.2949) and ( 513.5359, 740.5256) .. ( 513.2186, 737.6376) + .. controls ( 512.9679, 735.3563) and ( 510.0159, 735.3683) .. ( 509.6626, 733.8043) + .. controls ( 509.1639, 731.5909) and ( 508.9853, 729.3283) .. ( 510.2186, 729.2496) + .. controls ( 512.1906, 729.1229) and ( 519.9133, 729.8043) .. ( 525.1146, 731.7829) + .. controls ( 526.5399, 732.3256) and ( 525.4959, 735.1243) .. ( 523.7186, 736.8043) + .. controls ( 522.2346, 738.2069) and ( 521.8293, 738.2909) .. ( 519.1079, 743.6936) + .. controls ( 517.5146, 746.8549) and ( 515.4106, 753.7856) .. ( 515.1626, 756.6376) + .. controls ( 514.9613, 758.9696) and ( 517.0799, 759.1603) .. ( 517.8359, 759.7376) + .. controls ( 518.5439, 760.2803) and ( 518.5373, 762.0043) .. ( 518.3293, 763.1376) + .. controls ( 517.9733, 765.0803) and ( 515.1159, 764.3109) .. ( 514.9959, 765.4709) + .. controls ( 514.4413, 770.8603) and ( 518.8853, 773.1376) .. ( 522.8586, 772.5016) + .. controls ( 526.3613, 771.9403) and ( 529.0053, 768.5416) .. ( 530.2039, 769.8736) + .. controls ( 531.7053, 771.5403) and ( 531.4546, 780.0963) .. ( 531.0386, 782.7069) + .. controls ( 530.8253, 784.0429) and ( 528.8893, 783.8229) .. ( 527.1079, 783.4709) + .. controls ( 523.1373, 782.6869) and ( 517.9199, 780.7069) .. ( 517.2546, 781.4789) + .. controls ( 515.9599, 782.9843) and ( 521.1626, 794.7483) .. ( 531.7519, 795.3123) + .. controls ( 539.3573, 795.7176) and ( 542.3746, 791.1283) .. ( 544.2119, 783.2456) + .. controls ( 546.4386, 773.7003) and ( 548.2186, 762.0816) .. ( 546.0519, 752.0269) + .. controls ( 545.2133, 748.1349) and ( 539.4133, 740.4989) .. ( 535.1626, 737.4989) + .. controls ( 532.9679, 735.9496) and ( 532.8599, 732.8509) .. ( 533.6626, 732.9709) + .. controls ( 544.8853, 734.6496) and ( 554.9959, 736.2483) .. ( 566.5573, 727.4589) + .. controls ( 574.7319, 721.2443) and ( 574.6106, 714.8216) .. ( 565.0679, 710.3589) + .. controls ( 557.2826, 706.7176) and ( 548.8973, 704.1923) .. ( 540.5613, 701.9856) + .. controls ( 537.6306, 701.2083) and ( 531.5799, 699.4989) .. ( 529.8293, 701.8323) + .. controls ( 527.9426, 704.3483) and ( 531.1346, 710.4763) .. ( 533.7759, 713.7483) + .. controls ( 536.7399, 717.4189) and ( 539.2186, 719.1376) .. ( 536.0959, 719.8616) + ( 490.4407, 696.9712) + .. controls ( 487.8941, 695.4365) and ( 486.0074, 693.6125) .. ( 483.0514, 690.9152) + .. controls ( 482.0021, 689.9579) and ( 479.9941, 686.7485) .. ( 476.9967, 685.8552) + .. controls ( 474.5021, 685.1112) and ( 471.9967, 687.9152) .. ( 471.2741, 690.1379) + .. controls ( 470.2901, 693.1672) and ( 470.7741, 698.6699) .. ( 473.1074, 699.7525) + .. controls ( 475.9234, 701.0605) and ( 480.0381, 700.8325) .. ( 484.2461, 702.1659) + .. controls ( 488.1194, 703.3925) and ( 490.6354, 704.6645) .. ( 494.5594, 706.3712) + .. controls ( 501.3941, 709.3445) and ( 506.3301, 710.6939) .. ( 511.8301, 710.6939) + .. controls ( 518.5514, 710.6939) and ( 525.1007, 706.3605) .. ( 525.1074, 702.9152) + .. controls ( 525.1207, 695.3739) and ( 519.0314, 693.9725) .. ( 515.5114, 691.5339) + .. controls ( 512.7741, 689.6379) and ( 514.3301, 683.4152) .. ( 517.4354, 684.0165) + .. controls ( 521.9634, 684.8912) and ( 530.4874, 684.9192) .. ( 534.1634, 684.7485) + .. controls ( 540.1634, 684.4712) and ( 544.9314, 682.4712) .. ( 544.9127, 679.0819) + .. controls ( 544.8914, 674.8859) and ( 542.6274, 670.1312) .. ( 537.3847, 667.8605) + .. controls ( 533.9541, 666.3739) and ( 528.0994, 667.6152) .. ( 527.3301, 666.4152) + .. controls ( 526.7474, 665.5085) and ( 527.6901, 659.9485) .. ( 527.5794, 654.7485) + .. controls ( 527.4887, 650.4432) and ( 527.1794, 646.9672) .. ( 524.6634, 643.1379) + .. controls ( 522.5434, 639.9125) and ( 518.1847, 633.9085) .. ( 512.3301, 628.9152) + .. controls ( 507.5941, 624.8765) and ( 503.1207, 621.7072) .. ( 497.8301, 621.7072) + .. controls ( 490.1634, 621.7072) and ( 480.8714, 628.5405) .. ( 474.3301, 633.9992) + .. controls ( 465.1527, 641.6552) and ( 458.2461, 649.7912) .. ( 460.3301, 651.9152) + .. controls ( 461.2474, 652.8512) and ( 466.7754, 651.8765) .. ( 472.6634, 649.8739) + .. controls ( 476.9941, 648.4005) and ( 490.9487, 639.9352) .. ( 494.0314, 638.9765) + .. controls ( 497.2861, 637.9645) and ( 503.9261, 644.6859) .. ( 504.9967, 654.4152) + .. controls ( 505.5101, 659.0819) and ( 506.0207, 671.3259) .. ( 504.3301, 671.0272) + .. controls ( 500.7181, 670.3885) and ( 473.9367, 661.4125) .. ( 470.4967, 659.9712) + .. controls ( 468.1047, 658.9699) and ( 461.6714, 656.1005) .. ( 459.3847, 655.0272) + .. controls ( 455.2461, 653.0819) and ( 447.9794, 653.6619) .. ( 448.7874, 661.7032) + .. controls ( 449.3701, 667.5032) and ( 450.9007, 671.6445) .. ( 459.0874, 672.1685) + .. controls ( 472.3207, 673.0179) and ( 499.0541, 678.7099) .. ( 501.0381, 679.3739) + .. controls ( 501.7234, 679.6032) and ( 499.7047, 682.4152) .. ( 497.1634, 685.4712) + .. controls ( 495.0487, 688.0125) and ( 493.2301, 689.9059) .. ( 493.2461, 692.2072) + .. controls ( 493.2741, 696.1379) and ( 504.5714, 694.6992) .. ( 506.0514, 695.9152) + .. controls ( 507.5327, 697.1325) and ( 508.7207, 701.0925) .. ( 506.9967, 701.5272) + .. controls ( 502.3581, 702.6939) and ( 494.4967, 699.4152) .. ( 490.4407, 696.9712)} +% \end{macrocode} +% +% 而。 +% \begin{macrocode} +\def\fdulogo@motto@er@i{% + ( 461.6639, 521.2397) + .. controls ( 458.9959, 527.0824) and ( 472.5306, 539.4851) .. ( 475.2186, 544.8597) + .. controls ( 476.9959, 548.4157) and ( 475.9413, 551.5264) .. ( 472.3853, 549.4157) + .. controls ( 469.0546, 547.4384) and ( 458.6333, 543.4624) .. ( 456.4213, 547.7491) + .. controls ( 454.3293, 551.8051) and ( 460.8293, 560.3597) .. ( 466.9506, 564.4224) + .. controls ( 473.8453, 568.9971) and ( 490.4186, 577.4957) .. ( 502.8719, 569.3744) + .. controls ( 511.4959, 563.7491) and ( 511.3293, 558.3317) .. ( 505.5653, 552.9304) + .. controls ( 501.9239, 549.5184) and ( 496.8346, 546.3611) .. ( 493.2466, 543.4157) + .. controls ( 485.9626, 537.4344) and ( 478.1186, 528.5651) .. ( 473.6613, 524.4171) + .. controls ( 469.7186, 520.7477) and ( 462.4826, 519.4477) .. ( 461.6639, 521.2397) + ( 546.3293, 518.9856) + .. controls ( 546.6199, 523.1003) and ( 546.3293, 527.4163) .. ( 542.6626, 527.6563) + .. controls ( 537.4906, 527.9949) and ( 510.6746, 525.4963) .. ( 509.6559, 521.4989) + .. controls ( 508.9133, 518.5829) and ( 515.4413, 517.1376) .. ( 518.5799, 507.5829) + .. controls ( 520.0106, 503.2256) and ( 518.9679, 496.6656) .. ( 520.9133, 494.3323) + .. controls ( 523.5959, 491.1136) and ( 528.7639, 488.9576) .. ( 531.6626, 488.0829) + .. controls ( 534.6079, 487.1936) and ( 536.8146, 490.4336) .. ( 539.7466, 494.8323) + .. controls ( 544.4133, 501.8323) and ( 545.8293, 511.9029) .. ( 546.3293, 518.9856) + ( 498.4973, 530.7083) + .. controls ( 508.2466, 533.7496) and ( 529.9146, 538.4363) .. ( 543.3293, 539.0829) + .. controls ( 556.6079, 539.7216) and ( 567.3999, 534.1869) .. ( 568.6626, 525.8603) + .. controls ( 570.8293, 511.5829) and ( 570.8853, 504.4709) .. ( 563.8973, 491.0496) + .. controls ( 561.0933, 485.6643) and ( 556.5266, 481.0469) .. ( 551.9319, 477.0509) + .. controls ( 545.7506, 471.6749) and ( 541.4973, 470.8963) .. ( 536.2186, 470.5829) + .. controls ( 526.8853, 470.0269) and ( 520.6733, 480.3296) .. ( 518.5799, 480.2496) + .. controls ( 514.2466, 480.0829) and ( 511.5799, 464.9163) .. ( 506.8373, 462.4896) + .. controls ( 504.5786, 461.3336) and ( 502.1706, 462.8643) .. ( 501.4133, 467.0829) + .. controls ( 500.2466, 473.5829) and ( 500.8426, 491.8496) .. ( 500.2226, 499.1669) + .. controls ( 499.8293, 503.8043) and ( 495.7706, 504.8763) .. ( 495.1253, 503.3683) + .. controls ( 494.0519, 500.8603) and ( 495.2746, 494.9163) .. ( 494.4679, 489.6096) + .. controls ( 493.7453, 484.8469) and ( 490.1626, 482.5029) .. ( 487.4413, 482.0269) + .. controls ( 485.2106, 481.6363) and ( 481.5519, 482.5269) .. ( 479.4959, 488.6376) + .. controls ( 476.5986, 497.2549) and ( 477.4119, 510.1643) .. ( 483.7746, 510.5829) + .. controls ( 487.5799, 510.8323) and ( 490.5546, 506.3336) .. ( 491.9186, 507.9069) + .. controls ( 493.6626, 509.9163) and ( 496.0533, 517.3123) .. ( 493.7186, 517.9163) + .. controls ( 492.4013, 518.2563) and ( 485.2559, 515.8029) .. ( 477.9133, 511.9163) + .. controls ( 470.4439, 507.9616) and ( 463.5879, 501.5016) .. ( 460.8853, 496.2496) + .. controls ( 458.2199, 491.0709) and ( 459.7559, 486.3189) .. ( 459.1626, 480.3323) + .. controls ( 458.3293, 471.9163) and ( 452.0919, 467.2109) .. ( 447.7946, 466.8963) + .. controls ( 443.4959, 466.5829) and ( 437.9959, 472.2496) .. ( 437.0719, 480.1656) + .. controls ( 436.1599, 487.9816) and ( 437.7013, 497.6203) .. ( 439.5799, 505.8323) + .. controls ( 440.5799, 510.2056) and ( 443.4906, 518.4789) .. ( 447.2746, 518.5269) + .. controls ( 451.6079, 518.5829) and ( 455.6333, 506.6936) .. ( 457.1079, 506.9163) + .. controls ( 460.4959, 507.4269) and ( 467.1626, 515.3643) .. ( 471.7186, 518.3043) + .. controls ( 477.8293, 522.2496) and ( 485.8066, 526.7496) .. ( 498.4973, 530.7083)} +% \end{macrocode} +% +% 笃。 +% \begin{macrocode} +\def\fdulogo@motto@du{% + ( 491.2618, 364.0330) + .. controls ( 490.2191, 365.0543) and ( 485.8605, 365.2130) .. ( 483.9685, 364.8596) + .. controls ( 482.0578, 364.5036) and ( 480.7765, 361.8810) .. ( 482.4551, 361.1663) + .. controls ( 484.0178, 360.4996) and ( 488.3965, 360.3703) .. ( 489.8818, 360.5676) + .. controls ( 491.1311, 360.7343) and ( 491.7218, 363.5823) .. ( 491.2618, 364.0330) + ( 498.0791, 309.2490) + .. controls ( 495.4071, 308.8143) and ( 494.0791, 307.7903) .. ( 494.8298, 305.1236) + .. controls ( 495.3871, 303.1396) and ( 497.1005, 300.7076) .. ( 499.2045, 301.3530) + .. controls ( 500.6031, 301.7823) and ( 501.0031, 302.6863) .. ( 501.0791, 304.9570) + .. controls ( 501.1631, 307.4370) and ( 499.8711, 309.5410) .. ( 498.0791, 309.2490) + ( 513.7045, 390.3743) + .. controls ( 513.7538, 392.1063) and ( 512.8058, 393.2756) .. ( 510.6805, 391.9143) + .. controls ( 509.8191, 391.3636) and ( 508.6338, 389.5396) .. ( 507.3298, 387.9436) + .. controls ( 506.3351, 386.7263) and ( 505.3578, 385.4930) .. ( 504.9125, 384.4436) + .. controls ( 503.6631, 381.4996) and ( 505.8925, 379.5330) .. ( 508.2458, 381.0263) + .. controls ( 509.3071, 381.6996) and ( 509.8671, 383.6170) .. ( 510.9125, 385.2490) + .. controls ( 512.1445, 387.1716) and ( 513.6631, 388.9156) .. ( 513.7045, 390.3743) + ( 496.4405, 347.9156) + .. controls ( 493.1485, 342.3596) and ( 487.0791, 342.6663) .. ( 482.7458, 346.0823) + .. controls ( 477.9205, 349.8876) and ( 479.7738, 357.3023) .. ( 477.2751, 357.3570) + .. controls ( 474.5791, 357.4156) and ( 474.9578, 352.3810) .. ( 474.4965, 351.4436) + .. controls ( 473.6351, 349.6930) and ( 471.2591, 350.2703) .. ( 468.8858, 349.9716) + .. controls ( 465.8018, 349.5823) and ( 465.2191, 348.1663) .. ( 463.7458, 348.3050) + .. controls ( 461.0325, 348.5610) and ( 460.1071, 349.2770) .. ( 457.9125, 349.7490) + .. controls ( 455.3125, 350.3090) and ( 450.9405, 349.4156) .. ( 450.4405, 355.6383) + .. controls ( 449.9791, 361.3783) and ( 454.1791, 365.2996) .. ( 457.8298, 371.6663) + .. controls ( 460.8698, 376.9663) and ( 461.7885, 382.6663) .. ( 464.3298, 384.7490) + .. controls ( 466.3671, 386.4196) and ( 469.1685, 385.1970) .. ( 471.3298, 385.6663) + .. controls ( 473.8298, 386.2076) and ( 475.2245, 387.7796) .. ( 476.5791, 387.7490) + .. controls ( 482.6991, 387.6143) and ( 483.3858, 381.1383) .. ( 488.1631, 381.0823) + .. controls ( 493.0765, 381.0250) and ( 506.0525, 393.8596) .. ( 511.3298, 398.6383) + .. controls ( 516.6071, 403.4156) and ( 526.1831, 412.0503) .. ( 534.2738, 405.2490) + .. controls ( 535.8911, 403.8890) and ( 538.5205, 400.8930) .. ( 538.2738, 398.0263) + .. controls ( 537.6631, 390.9156) and ( 529.4338, 387.9583) .. ( 531.0791, 384.6663) + .. controls ( 531.9965, 382.8330) and ( 536.9965, 384.3050) .. ( 541.8538, 382.1970) + .. controls ( 548.4111, 379.3516) and ( 549.4405, 373.1930) .. ( 542.8298, 368.2490) + .. controls ( 537.3471, 364.1490) and ( 531.0445, 363.7250) .. ( 534.2205, 357.1863) + .. controls ( 536.0525, 353.4156) and ( 536.3045, 350.4290) .. ( 533.2831, 347.6143) + .. controls ( 530.3858, 344.9156) and ( 525.4711, 346.4050) .. ( 524.0791, 344.7490) + .. controls ( 522.2351, 342.5543) and ( 525.4405, 341.2223) .. ( 525.3298, 337.0263) + .. controls ( 525.2191, 332.8050) and ( 517.3298, 332.3596) .. ( 517.3298, 329.9156) + .. controls ( 517.3298, 328.0610) and ( 517.0045, 326.6223) .. ( 518.3791, 326.1810) + .. controls ( 520.8298, 325.3943) and ( 525.6951, 326.3076) .. ( 526.1005, 323.5023) + .. controls ( 526.4511, 321.0876) and ( 526.4405, 316.6103) .. ( 524.9965, 315.7490) + .. controls ( 523.4938, 314.8530) and ( 520.0151, 315.6716) .. ( 519.5711, 314.4490) + .. controls ( 519.1978, 313.4236) and ( 519.2858, 311.2943) .. ( 520.0525, 311.0823) + .. controls ( 522.3738, 310.4396) and ( 526.1298, 311.7796) .. ( 528.9965, 311.5823) + .. controls ( 531.5151, 311.4090) and ( 532.5045, 309.8730) .. ( 532.4551, 306.4156) + .. controls ( 532.3485, 299.0236) and ( 526.0965, 299.0290) .. ( 522.4965, 296.8330) + .. controls ( 519.2885, 294.8743) and ( 518.2885, 288.9996) .. ( 521.0658, 287.7250) + .. controls ( 523.7431, 286.4956) and ( 532.7765, 291.1423) .. ( 541.3858, 293.8596) + .. controls ( 548.5365, 296.1170) and ( 554.3125, 297.1330) .. ( 560.7591, 297.1383) + .. controls ( 572.5765, 297.1476) and ( 579.5191, 289.5303) .. ( 579.2031, 278.5196) + .. controls ( 578.6018, 257.5610) and ( 564.0405, 237.3996) .. ( 545.0911, 229.3530) + .. controls ( 532.6751, 224.0796) and ( 522.0231, 225.8156) .. ( 513.4405, 235.5823) + .. controls ( 507.8298, 241.9690) and ( 499.0325, 249.6863) .. ( 496.3858, 249.3596) + .. controls ( 493.7218, 249.0330) and ( 482.0178, 246.0116) .. ( 473.9311, 244.4103) + .. controls ( 466.4191, 242.9223) and ( 446.6071, 239.4156) .. ( 436.6071, 238.3596) + .. controls ( 432.8271, 237.9610) and ( 431.3298, 236.4996) .. ( 428.4965, 236.4156) + .. controls ( 425.0565, 236.3143) and ( 422.2458, 237.9570) .. ( 419.6631, 241.6663) + .. controls ( 417.9991, 244.0543) and ( 416.9205, 247.7850) .. ( 417.2885, 251.1236) + .. controls ( 417.7045, 254.9156) and ( 421.8791, 256.9583) .. ( 428.6631, 257.6236) + .. controls ( 436.1631, 258.3596) and ( 438.2538, 256.5210) .. ( 446.8898, 256.7090) + .. controls ( 453.8298, 256.8596) and ( 472.7458, 258.3330) .. ( 481.4551, 259.4996) + .. controls ( 483.4178, 259.7623) and ( 485.4418, 260.2556) .. ( 486.8325, 260.7716) + .. controls ( 487.2658, 260.9316) and ( 485.0125, 265.8716) .. ( 485.8298, 266.0823) + .. controls ( 487.7738, 266.5823) and ( 492.2671, 263.1836) .. ( 494.8298, 263.5823) + .. controls ( 501.1711, 264.5716) and ( 510.0578, 265.7783) .. ( 516.1351, 266.7490) + .. controls ( 523.7658, 267.9676) and ( 532.8298, 268.1383) .. ( 533.5351, 265.9396) + .. controls ( 534.0045, 264.4783) and ( 528.4885, 260.6250) .. ( 522.7738, 257.9156) + .. controls ( 517.5845, 255.4556) and ( 511.4791, 254.1490) .. ( 512.3298, 253.4996) + .. controls ( 513.6018, 252.5276) and ( 530.4445, 246.0983) .. ( 534.4965, 247.0823) + .. controls ( 537.4125, 247.7903) and ( 543.7778, 254.4570) .. ( 549.5525, 264.9156) + .. controls ( 553.8125, 272.6316) and ( 558.5071, 288.1543) .. ( 556.5791, 289.3330) + .. controls ( 554.6525, 290.5103) and ( 541.2778, 286.5770) .. ( 534.1405, 284.3983) + .. controls ( 520.4591, 279.9130) and ( 507.2738, 274.8596) .. ( 492.9351, 271.5116) + .. controls ( 488.7618, 270.5370) and ( 481.1071, 269.6956) .. ( 478.8858, 272.9156) + .. controls ( 476.1151, 276.9303) and ( 476.0405, 285.1143) .. ( 476.3298, 293.1663) + .. controls ( 476.6085, 300.9356) and ( 477.1551, 308.5876) .. ( 479.7738, 311.9156) + .. controls ( 482.1991, 314.9970) and ( 490.8405, 317.4236) .. ( 493.7458, 318.0823) + .. controls ( 499.9965, 319.4996) and ( 498.5165, 322.4703) .. ( 498.5165, 325.8050) + .. controls ( 498.5165, 328.1383) and ( 494.7191, 327.1383) .. ( 490.6631, 327.9156) + .. controls ( 487.0165, 328.6156) and ( 485.2871, 332.5756) .. ( 489.7565, 337.5010) + .. controls ( 491.4591, 339.3783) and ( 495.3858, 341.7490) .. ( 496.4965, 342.4156) + .. controls ( 497.6071, 343.0823) and ( 503.0445, 345.6890) .. ( 507.2191, 346.1383) + .. controls ( 512.5031, 346.7050) and ( 514.6631, 346.0263) .. ( 517.4405, 347.5263) + .. controls ( 521.3151, 349.6196) and ( 521.2631, 364.8916) .. ( 520.9125, 366.7490) + .. controls ( 520.4418, 369.2503) and ( 515.9258, 366.0956) .. ( 514.0525, 366.4716) + .. controls ( 509.6258, 367.4796) and ( 507.5525, 370.8050) .. ( 503.7191, 370.0263) + .. controls ( 498.8045, 369.0303) and ( 495.5565, 362.6183) .. ( 495.7165, 357.2636) + .. controls ( 495.8418, 353.0343) and ( 499.1071, 352.4156) .. ( 496.4405, 347.9156)} +% \end{macrocode} +% +% 志。 +% \begin{macrocode} +\def\fdulogo@motto@zhi{% + ( 512.2463, 153.6656) + .. controls ( 512.4783, 150.6283) and ( 511.4970, 146.9990) .. ( 513.7463, 147.4163) + .. controls ( 518.2303, 148.2456) and ( 526.4063, 149.3296) .. ( 527.2463, 145.3736) + .. controls ( 527.9543, 142.0403) and ( 528.1623, 138.7150) .. ( 523.7743, 135.1936) + .. controls ( 520.6637, 132.6976) and ( 517.5037, 132.9003) .. ( 515.5517, 130.4710) + .. controls ( 513.9943, 128.5350) and ( 513.9690, 119.1656) .. ( 516.7743, 119.6376) + .. controls ( 519.4890, 120.0950) and ( 524.6357, 121.2763) .. ( 528.0797, 121.4163) + .. controls ( 533.6477, 121.6403) and ( 537.4943, 118.3336) .. ( 537.4957, 113.4163) + .. controls ( 537.4970, 110.3603) and ( 533.9063, 106.2830) .. ( 530.3410, 105.8856) + .. controls ( 526.6077, 105.4710) and ( 525.2463, 108.5816) .. ( 521.0797, 108.6243) + .. controls ( 515.9490, 108.6750) and ( 510.5997, 106.9510) .. ( 499.4957, 104.0816) + .. controls ( 493.7277, 102.5923) and ( 488.0383, 100.7283) .. ( 482.6970, 99.5203) + .. controls ( 477.6597, 98.3803) and ( 471.5783, 96.4803) .. ( 465.9410, 96.2483) + .. controls ( 463.3037, 96.1403) and ( 458.6143, 96.2363) .. ( 457.8023, 100.3110) + .. controls ( 457.0517, 104.0816) and ( 457.6797, 107.0750) .. ( 462.4410, 109.2483) + .. controls ( 467.5517, 111.5830) and ( 482.9970, 112.8603) .. ( 489.3850, 114.3043) + .. controls ( 492.4677, 115.0016) and ( 491.7050, 123.1656) .. ( 490.1210, 123.7070) + .. controls ( 487.4663, 124.6163) and ( 478.6383, 121.4243) .. ( 472.7823, 122.4256) + .. controls ( 469.9677, 122.9070) and ( 463.9130, 123.1070) .. ( 464.4957, 129.3323) + .. controls ( 465.1077, 135.8603) and ( 484.6943, 137.4843) .. ( 488.3517, 138.7296) + .. controls ( 491.9957, 139.9710) and ( 491.0743, 146.6563) .. ( 490.5797, 149.1176) + .. controls ( 488.7357, 158.2963) and ( 489.0450, 164.8603) .. ( 500.2783, 165.9736) + .. controls ( 511.6223, 167.0976) and ( 512.0557, 156.1630) .. ( 512.2463, 153.6656) + ( 477.1466, 84.8999) + .. controls ( 472.7399, 81.2252) and ( 467.5879, 76.6546) .. ( 463.9959, 72.3039) + .. controls ( 462.3346, 70.2919) and ( 463.0546, 58.6532) .. ( 463.1079, 55.4706) + .. controls ( 463.2186, 48.8039) and ( 460.3719, 40.9159) .. ( 453.4546, 40.9159) + .. controls ( 445.2879, 40.9159) and ( 444.2026, 46.7492) .. ( 443.3293, 50.9986) + .. controls ( 442.1973, 56.5132) and ( 443.6613, 63.8399) .. ( 445.2186, 66.3599) + .. controls ( 446.7959, 68.9119) and ( 452.7586, 71.9252) .. ( 457.9266, 75.6879) + .. controls ( 468.9706, 83.7292) and ( 482.1853, 94.2972) .. ( 483.7746, 92.6466) + .. controls ( 485.0386, 91.3319) and ( 479.2759, 86.6746) .. ( 477.1466, 84.8999) + ( 476.4963, 72.7490) + .. controls ( 480.2190, 74.3596) and ( 501.8963, 50.0783) .. ( 510.8297, 47.2490) + .. controls ( 515.8297, 45.6663) and ( 532.3017, 46.1663) .. ( 537.6350, 46.2490) + .. controls ( 538.7670, 46.2663) and ( 540.6630, 46.4996) .. ( 540.5950, 47.7330) + .. controls ( 540.5203, 49.0983) and ( 500.6630, 75.5823) .. ( 503.7457, 79.1650) + .. controls ( 505.1817, 80.8330) and ( 525.2190, 70.5823) .. ( 540.7190, 64.5263) + .. controls ( 556.7417, 58.2663) and ( 572.3297, 53.3596) .. ( 572.3297, 48.5823) + .. controls ( 572.3297, 43.4636) and ( 566.0803, 43.4156) .. ( 563.0803, 39.4996) + .. controls ( 561.5443, 37.4956) and ( 561.4137, 34.5823) .. ( 558.6630, 32.5823) + .. controls ( 549.6043, 25.9943) and ( 535.5110, 25.8143) .. ( 524.8857, 26.1583) + .. controls ( 504.8857, 26.8050) and ( 495.9963, 29.9156) .. ( 487.9963, 40.9156) + .. controls ( 478.7083, 53.6876) and ( 473.7150, 71.5450) .. ( 476.4963, 72.7490) + ( 507.1074, 87.6379) + .. controls ( 508.2181, 90.8046) and ( 515.5541, 93.4246) .. ( 524.7461, 94.6659) + .. controls ( 535.2287, 96.0806) and ( 548.4461, 96.1806) .. ( 551.5794, 95.2486) + .. controls ( 557.7461, 93.4152) and ( 560.9127, 86.4152) .. ( 560.4967, 80.4992) + .. controls ( 560.2194, 76.5659) and ( 556.3847, 75.0819) .. ( 553.5514, 75.0819) + .. controls ( 549.5514, 75.0819) and ( 543.7901, 76.8446) .. ( 539.5581, 77.1526) + .. controls ( 532.1501, 77.6939) and ( 524.4274, 78.0112) .. ( 520.7181, 78.5819) + .. controls ( 514.9407, 79.4712) and ( 505.7914, 83.8872) .. ( 507.1074, 87.6379)} +% \end{macrocode} +% +% 切。 +% \begin{macrocode} +\def\fdulogo@motto@qie{% + ( 70.4130, 978.1240) + .. controls ( 68.5997, 977.9907) and ( 61.7743, 976.1373) .. ( 56.4410, 974.1933) + .. controls ( 51.0103, 972.2133) and ( 47.1637, 968.7493) .. ( 42.7743, 967.7493) + .. controls ( 38.3237, 966.7347) and ( 27.7183, 965.0827) .. ( 25.5917, 972.3267) + .. controls ( 24.6970, 975.3720) and ( 31.3557, 978.6573) .. ( 35.7183, 981.0973) + .. controls ( 40.1637, 983.5827) and ( 50.5450, 987.0147) .. ( 56.7383, 988.3760) + .. controls ( 60.8063, 989.2693) and ( 70.4957, 991.4160) .. ( 72.6210, 992.6653) + .. controls ( 74.0423, 993.5013) and ( 73.4130, 1004.2493) .. ( 72.2463, 1007.1653) + .. controls ( 69.6223, 1013.7240) and ( 69.9890, 1025.0427) .. ( 79.2210, 1025.3320) + .. controls ( 87.3903, 1025.5893) and ( 88.5437, 1019.5547) .. ( 88.6637, 1011.7493) + .. controls ( 88.7303, 1007.3360) and ( 85.7530, 999.4987) .. ( 87.4410, 996.6933) + .. controls ( 89.1290, 993.8880) and ( 95.5517, 997.8040) .. ( 96.8263, 996.3760) + .. controls ( 98.7970, 994.1667) and ( 99.2437, 989.3320) .. ( 96.6117, 988.4320) + .. controls ( 90.3850, 986.3040) and ( 86.5517, 986.9160) .. ( 85.0477, 978.9867) + .. controls ( 84.3317, 975.2147) and ( 84.1383, 971.3480) .. ( 83.8303, 966.7493) + .. controls ( 83.3877, 960.1627) and ( 83.6437, 956.1187) .. ( 84.0317, 955.6653) + .. controls ( 85.2050, 954.2907) and ( 101.0023, 967.4680) .. ( 109.6623, 973.8320) + .. controls ( 119.5650, 981.1093) and ( 128.2783, 988.0600) .. ( 131.5517, 989.9707) + .. controls ( 133.4543, 991.0827) and ( 135.6690, 994.4627) .. ( 136.4970, 993.9987) + .. controls ( 138.5797, 992.8320) and ( 137.1637, 989.6933) .. ( 141.0797, 989.6653) + .. controls ( 146.7383, 989.6253) and ( 150.9970, 989.7493) .. ( 150.4130, 983.1653) + .. controls ( 149.9197, 977.5947) and ( 149.0290, 971.7640) .. ( 148.2463, 966.9987) + .. controls ( 147.2463, 960.9160) and ( 152.6637, 965.4987) .. ( 153.9997, 959.7547) + .. controls ( 154.9397, 955.7133) and ( 159.5410, 956.3987) .. ( 161.7130, 958.3787) + .. controls ( 163.8850, 960.3600) and ( 167.2437, 970.3453) .. ( 168.5797, 981.0827) + .. controls ( 169.8743, 991.4880) and ( 171.3277, 1007.9827) .. ( 169.6877, 1009.3720) + .. controls ( 167.7423, 1011.0213) and ( 157.9970, 1000.2493) .. ( 149.7463, 1000.4160) + .. controls ( 142.7063, 999.6547) and ( 137.0370, 1002.7320) .. ( 136.5157, 1004.1413) + .. controls ( 135.4837, 1006.9347) and ( 143.4343, 1010.1053) .. ( 147.1863, 1011.4947) + .. controls ( 154.6397, 1014.2533) and ( 161.5797, 1014.6653) .. ( 168.5797, 1017.8320) + .. controls ( 171.2503, 1019.0400) and ( 172.3663, 1022.1640) .. ( 173.9130, 1021.8320) + .. controls ( 181.6277, 1020.1773) and ( 191.3277, 1014.2600) .. ( 191.9077, 1006.6720) + .. controls ( 192.9063, 993.6187) and ( 192.7463, 980.6173) .. ( 190.6810, 965.5787) + .. controls ( 189.5650, 957.4467) and ( 184.0277, 952.2400) .. ( 178.3517, 946.7147) + .. controls ( 172.5903, 941.1067) and ( 157.9130, 936.4987) .. ( 152.7370, 940.7253) + .. controls ( 147.2823, 945.1800) and ( 145.8610, 950.5547) .. ( 144.4970, 951.8600) + .. controls ( 143.3797, 952.9280) and ( 141.2530, 950.5200) .. ( 139.2463, 947.3320) + .. controls ( 134.9970, 940.5827) and ( 127.3143, 929.8760) .. ( 121.4970, 923.0827) + .. controls ( 115.3063, 915.8533) and ( 111.0517, 911.2493) .. ( 109.1143, 912.2493) + .. controls ( 107.6543, 913.0027) and ( 116.6570, 928.6347) .. ( 123.8850, 945.8040) + .. controls ( 130.1010, 960.5707) and ( 135.2117, 976.5760) .. ( 134.4410, 982.3040) + .. controls ( 133.9957, 985.6080) and ( 131.7970, 985.5613) .. ( 129.9223, 984.5147) + .. controls ( 124.8650, 981.6893) and ( 118.9770, 970.9747) .. ( 114.4970, 965.9987) + .. controls ( 101.5623, 951.6347) and ( 100.6343, 950.8320) .. ( 87.2183, 936.9160) + .. controls ( 81.9277, 931.4280) and ( 71.9957, 921.1373) .. ( 69.2877, 920.9160) + .. controls ( 66.9250, 920.7213) and ( 66.8850, 923.7493) .. ( 64.8303, 924.5827) + .. controls ( 62.3530, 925.5867) and ( 60.4970, 924.1933) .. ( 57.9903, 926.0987) + .. controls ( 50.6050, 931.7120) and ( 62.6637, 937.6933) .. ( 66.8850, 948.0267) + .. controls ( 71.8823, 960.2560) and ( 73.3303, 968.2520) .. ( 73.8303, 974.1653) + .. controls ( 74.1530, 977.9933) and ( 72.2050, 978.2560) .. ( 70.4130, 978.1240)} +% \end{macrocode} +% +% 问。 +% \begin{macrocode} +\def\fdulogo@motto@wen{% + ( 113.8853, 800.3323) + .. controls ( 113.8853, 792.4989) and ( 103.4413, 785.9149) .. ( 93.7746, 787.6936) + .. controls ( 91.9759, 788.0243) and ( 91.9959, 790.5403) .. ( 92.3679, 792.0269) + .. controls ( 93.0013, 794.5549) and ( 94.0386, 794.7909) .. ( 94.2186, 797.4149) + .. controls ( 94.4199, 800.3456) and ( 90.5519, 798.8736) .. ( 90.5519, 802.4576) + .. controls ( 90.5519, 807.7349) and ( 91.4199, 813.7069) .. ( 93.8279, 814.6189) + .. controls ( 95.1853, 815.1323) and ( 99.9426, 810.0283) .. ( 104.2346, 809.8029) + .. controls ( 109.9959, 809.4989) and ( 113.8853, 808.0549) .. ( 113.8853, 800.3323) + ( 68.2463, 746.2489) + .. controls ( 76.0237, 746.2489) and ( 76.3090, 717.7783) .. ( 76.3290, 695.7489) + .. controls ( 76.3463, 678.9156) and ( 73.7037, 668.6329) .. ( 68.8263, 668.6183) + .. controls ( 65.4410, 668.6089) and ( 58.4917, 673.2316) .. ( 57.5450, 683.2489) + .. controls ( 55.9303, 700.3503) and ( 58.4970, 720.0823) .. ( 62.5023, 732.2049) + .. controls ( 63.8410, 736.2583) and ( 65.5797, 746.2489) .. ( 68.2463, 746.2489) + ( 117.1955, 733.3479) + .. controls ( 114.8302, 735.2492) and ( 94.6875, 733.4439) .. ( 94.4969, 732.4985) + .. controls ( 93.9969, 730.0265) and ( 98.7369, 730.3345) .. ( 99.6075, 726.3599) + .. controls ( 100.9862, 720.0612) and ( 103.2462, 712.7079) .. ( 105.5609, 712.6825) + .. controls ( 106.9129, 712.6679) and ( 110.0729, 717.6452) .. ( 112.7462, 722.7492) + .. controls ( 115.3222, 727.6679) and ( 118.0995, 732.6212) .. ( 117.1955, 733.3479) + ( 125.0795, 717.7492) + .. controls ( 125.1635, 710.5825) and ( 136.3302, 717.4159) .. ( 136.3302, 709.9159) + .. controls ( 136.3302, 706.9985) and ( 134.9969, 703.5825) .. ( 132.9129, 703.1652) + .. controls ( 128.8622, 702.3559) and ( 122.6649, 701.9319) .. ( 122.8302, 700.9985) + .. controls ( 123.3302, 698.1652) and ( 134.4582, 690.9119) .. ( 137.8849, 690.6932) + .. controls ( 139.3542, 690.5999) and ( 141.4529, 694.4479) .. ( 141.4129, 701.2492) + .. controls ( 141.3302, 715.3319) and ( 141.4622, 737.0945) .. ( 141.4129, 747.8319) + .. controls ( 141.3302, 766.2492) and ( 140.8755, 775.7052) .. ( 135.5795, 774.9985) + .. controls ( 130.2835, 774.2919) and ( 125.6635, 768.8319) .. ( 123.0169, 763.9319) + .. controls ( 119.1769, 756.8185) and ( 114.0009, 755.9812) .. ( 107.7755, 760.5185) + .. controls ( 103.8089, 763.4092) and ( 98.4409, 763.8572) .. ( 95.3142, 763.3052) + .. controls ( 91.0435, 762.5519) and ( 89.0062, 756.6812) .. ( 87.9409, 755.3039) + .. controls ( 85.6635, 752.3599) and ( 82.5515, 750.3599) .. ( 78.5515, 751.4159) + .. controls ( 74.7449, 752.4199) and ( 68.0795, 757.8959) .. ( 68.0795, 764.0825) + .. controls ( 68.0795, 770.2692) and ( 73.1035, 771.4305) .. ( 75.4182, 770.3465) + .. controls ( 78.8302, 768.7492) and ( 80.6222, 763.4999) .. ( 86.2969, 765.4892) + .. controls ( 89.4129, 766.5825) and ( 95.1862, 773.4879) .. ( 102.2182, 775.0825) + .. controls ( 106.9969, 776.1652) and ( 113.8662, 773.3172) .. ( 116.6395, 776.1892) + .. controls ( 122.1129, 781.8559) and ( 125.2262, 780.0319) .. ( 130.2462, 783.7492) + .. controls ( 133.9155, 786.4665) and ( 136.3689, 790.4279) .. ( 144.2182, 790.4705) + .. controls ( 150.9129, 790.5079) and ( 155.7729, 786.6225) .. ( 160.3302, 779.8039) + .. controls ( 164.9529, 772.8879) and ( 165.5755, 766.1705) .. ( 165.9969, 757.8039) + .. controls ( 166.5262, 747.2532) and ( 165.2662, 744.2612) .. ( 165.6635, 734.4159) + .. controls ( 166.0409, 725.0212) and ( 169.0182, 708.5425) .. ( 169.9062, 696.5825) + .. controls ( 171.0342, 681.3959) and ( 156.0915, 668.3425) .. ( 145.2182, 666.4252) + .. controls ( 136.6635, 664.9159) and ( 132.8849, 670.4705) .. ( 130.1075, 675.2492) + .. controls ( 123.6982, 686.2719) and ( 115.9502, 694.9225) .. ( 110.1075, 698.2492) + .. controls ( 106.8395, 700.1092) and ( 101.6435, 698.1572) .. ( 96.4409, 699.0265) + .. controls ( 89.3115, 700.2172) and ( 86.3329, 709.1959) .. ( 85.7462, 719.1652) + .. controls ( 85.4969, 723.4159) and ( 89.7102, 729.0012) .. ( 90.5022, 730.4972) + .. controls ( 91.9129, 733.1652) and ( 90.1395, 736.6412) .. ( 92.6635, 738.5825) + .. controls ( 100.2462, 744.4159) and ( 111.6275, 747.6065) .. ( 119.8982, 748.2412) + .. controls ( 123.9702, 748.5532) and ( 129.7969, 746.7945) .. ( 132.2462, 743.4159) + .. controls ( 134.6635, 740.0825) and ( 134.8302, 735.5825) .. ( 133.0755, 730.6265) + .. controls ( 131.3115, 725.6399) and ( 125.0382, 721.3652) .. ( 125.0795, 717.7492)} +% \end{macrocode} +% +% 而。 +% \begin{macrocode} +\def\fdulogo@motto@er@ii{% + ( 108.9046, 536.5876) + .. controls ( 109.8766, 538.5756) and ( 102.9726, 537.0849) .. ( 98.6633, 536.3743) + .. controls ( 94.8406, 535.7436) and ( 88.8913, 534.1289) .. ( 86.5526, 538.0463) + .. controls ( 84.4406, 541.5823) and ( 89.9299, 547.8849) .. ( 94.2073, 550.4929) + .. controls ( 99.8939, 553.9583) and ( 111.2953, 558.1209) .. ( 118.7459, 558.4996) + .. controls ( 125.6459, 558.8489) and ( 133.8379, 551.1116) .. ( 133.8513, 544.5289) + .. controls ( 133.8593, 539.7516) and ( 127.8886, 534.2276) .. ( 126.3113, 532.7663) + .. controls ( 121.7899, 528.5796) and ( 98.2953, 509.8276) .. ( 92.8299, 505.8596) + .. controls ( 88.2513, 502.5356) and ( 86.0513, 503.0356) .. ( 85.5926, 503.6649) + .. controls ( 85.0246, 504.4436) and ( 86.9966, 508.7489) .. ( 91.8299, 514.9156) + .. controls ( 98.6926, 523.6716) and ( 106.8059, 532.2969) .. ( 108.9046, 536.5876) + ( 133.8506, 493.8045) + .. controls ( 134.2946, 488.9152) and ( 146.7573, 471.2992) .. ( 155.1039, 472.0139) + .. controls ( 160.9373, 472.5139) and ( 165.8853, 481.7485) .. ( 167.6626, 488.1939) + .. controls ( 168.8173, 492.3792) and ( 169.3133, 501.7072) .. ( 168.6386, 502.6579) + .. controls ( 167.9879, 503.5725) and ( 159.5986, 500.3579) .. ( 151.9959, 498.8739) + .. controls ( 143.4213, 497.2005) and ( 133.6813, 495.6645) .. ( 133.8506, 493.8045) + ( 119.7053, 486.0405) + .. controls ( 118.5799, 486.6245) and ( 116.1719, 486.2925) .. ( 115.6213, 485.5405) + .. controls ( 115.1626, 484.9152) and ( 116.6199, 465.6152) .. ( 113.7773, 461.7752) + .. controls ( 110.8839, 457.8699) and ( 102.4919, 457.9419) .. ( 99.6839, 460.3525) + .. controls ( 96.4546, 463.1245) and ( 94.2773, 467.7659) .. ( 94.4413, 472.4712) + .. controls ( 94.6213, 477.6659) and ( 97.2866, 483.1779) .. ( 95.7999, 484.0112) + .. controls ( 94.9759, 484.4739) and ( 86.9746, 480.9125) .. ( 82.3719, 480.2072) + .. controls ( 75.9413, 479.2205) and ( 74.8506, 485.5819) .. ( 73.2879, 485.3325) + .. controls ( 70.9559, 484.9592) and ( 72.5799, 474.6445) .. ( 73.6079, 468.0272) + .. controls ( 74.3213, 463.4312) and ( 75.7853, 458.5805) .. ( 75.3293, 455.6379) + .. controls ( 74.4959, 450.2485) and ( 71.0799, 448.0819) .. ( 66.7439, 447.5272) + .. controls ( 62.5893, 446.9965) and ( 58.0386, 450.9992) .. ( 55.9133, 456.2912) + .. controls ( 54.8839, 458.8525) and ( 53.2786, 461.9539) .. ( 53.3893, 475.2379) + .. controls ( 53.4786, 485.9685) and ( 56.6413, 504.7859) .. ( 61.6719, 508.2499) + .. controls ( 67.3573, 512.1632) and ( 70.8426, 506.7779) .. ( 71.9613, 503.7539) + .. controls ( 73.0799, 500.7299) and ( 71.4479, 494.3805) .. ( 73.2053, 493.2485) + .. controls ( 74.2186, 492.5965) and ( 85.4493, 497.0925) .. ( 99.6626, 500.8325) + .. controls ( 114.5519, 504.7485) and ( 131.6493, 508.5352) .. ( 143.9546, 510.9579) + .. controls ( 156.8719, 513.4992) and ( 174.4133, 516.7072) .. ( 181.4719, 514.8339) + .. controls ( 187.0733, 513.3485) and ( 191.8333, 505.0805) .. ( 193.0226, 499.3552) + .. controls ( 194.4413, 492.5272) and ( 194.2079, 479.9459) .. ( 188.9959, 470.1379) + .. controls ( 185.5773, 463.7045) and ( 180.3853, 460.4712) .. ( 173.5679, 457.3792) + .. controls ( 169.1293, 455.3672) and ( 158.6013, 452.7285) .. ( 153.7186, 453.1379) + .. controls ( 145.7746, 453.8045) and ( 142.6639, 465.3645) .. ( 139.8293, 465.5819) + .. controls ( 136.2186, 465.8605) and ( 133.6333, 458.0152) .. ( 130.2746, 452.4152) + .. controls ( 127.8653, 448.4005) and ( 124.5853, 445.8405) .. ( 123.1626, 446.0272) + .. controls ( 120.8293, 446.3325) and ( 121.4733, 457.5925) .. ( 121.6079, 467.8045) + .. controls ( 121.7186, 476.2485) and ( 120.8959, 485.4232) .. ( 119.7053, 486.0405)} +% \end{macrocode} +% +% 近。 +% \begin{macrocode} +\def\fdulogo@motto@jin{% + ( 147.5299, 311.6304) + .. controls ( 148.5899, 309.4291) and ( 152.4966, 307.1384) .. ( 155.9953, 297.7078) + .. controls ( 158.1259, 291.9624) and ( 159.9966, 280.7491) .. ( 159.6433, 273.7478) + .. controls ( 159.2326, 265.5918) and ( 157.1006, 260.9211) .. ( 154.4153, 257.0184) + .. controls ( 150.2566, 250.9771) and ( 146.1459, 247.3691) .. ( 147.3299, 247.0824) + .. controls ( 150.0793, 246.4158) and ( 181.7819, 246.2584) .. ( 191.1713, 248.6344) + .. controls ( 201.7179, 251.3051) and ( 223.9166, 249.5864) .. ( 224.2179, 243.2491) + .. controls ( 224.5206, 236.9118) and ( 214.1033, 233.8264) .. ( 202.3299, 231.9984) + .. controls ( 191.7739, 230.3598) and ( 153.3113, 227.2704) .. ( 134.8193, 228.3318) + .. controls ( 111.1073, 229.6931) and ( 94.2753, 234.9824) .. ( 80.5513, 240.1384) + .. controls ( 70.4966, 243.9158) and ( 62.0019, 249.0918) .. ( 55.4406, 249.6931) + .. controls ( 50.3286, 250.1624) and ( 46.2179, 248.1384) .. ( 42.8299, 244.6931) + .. controls ( 39.3633, 241.1704) and ( 34.7179, 241.6931) .. ( 32.6633, 244.2491) + .. controls ( 31.7166, 245.4264) and ( 29.2459, 249.7078) .. ( 31.5979, 254.4424) + .. controls ( 33.5713, 258.4131) and ( 37.5313, 261.1918) .. ( 41.8299, 262.6238) + .. controls ( 47.1633, 264.4011) and ( 54.8486, 263.6664) .. ( 54.9126, 265.6651) + .. controls ( 55.0379, 269.5411) and ( 50.1633, 275.9158) .. ( 47.3299, 284.9158) + .. controls ( 45.2446, 291.5371) and ( 44.6339, 303.4931) .. ( 44.7459, 312.1651) + .. controls ( 44.7966, 316.0411) and ( 45.4993, 319.5144) .. ( 45.4406, 322.3051) + .. controls ( 45.3299, 327.6384) and ( 43.7153, 330.8718) .. ( 43.7713, 334.4824) + .. controls ( 43.8379, 338.8664) and ( 44.8273, 343.8051) .. ( 48.9966, 343.9158) + .. controls ( 55.2459, 344.0824) and ( 57.5606, 337.9038) .. ( 58.2459, 331.8318) + .. controls ( 58.8299, 326.6651) and ( 56.7979, 319.7584) .. ( 56.7513, 314.2491) + .. controls ( 56.6633, 303.5824) and ( 59.7926, 301.9211) .. ( 63.0073, 295.5251) + .. controls ( 66.1633, 289.2491) and ( 66.2446, 276.2491) .. ( 66.2446, 265.9718) + .. controls ( 66.2446, 262.8878) and ( 71.1673, 260.6171) .. ( 78.2179, 257.8051) + .. controls ( 84.6166, 255.2518) and ( 92.8059, 252.2571) .. ( 100.5793, 250.4984) + .. controls ( 110.1633, 248.3318) and ( 137.5033, 246.8944) .. ( 138.8913, 247.3664) + .. controls ( 141.1633, 248.1384) and ( 137.0513, 250.5264) .. ( 136.8593, 256.4704) + .. controls ( 136.6499, 262.9211) and ( 136.1566, 308.4571) .. ( 135.7153, 308.5531) + .. controls ( 132.4966, 309.2491) and ( 118.6926, 301.9504) .. ( 118.5513, 293.5824) + .. controls ( 118.4126, 285.3318) and ( 116.5793, 277.4158) .. ( 112.6646, 268.5984) + .. controls ( 109.5566, 261.5998) and ( 104.0566, 254.4358) .. ( 99.1099, 255.3984) + .. controls ( 93.5779, 256.4744) and ( 89.9459, 263.7824) .. ( 89.4713, 271.2384) + .. controls ( 88.9966, 278.6931) and ( 91.3673, 295.3158) .. ( 94.5779, 309.3331) + .. controls ( 97.7459, 323.1651) and ( 104.6539, 336.3038) .. ( 107.8846, 341.6384) + .. controls ( 109.7259, 344.6771) and ( 112.8526, 350.4304) .. ( 116.3846, 358.3051) + .. controls ( 118.7699, 363.6198) and ( 119.2179, 369.6384) .. ( 123.0793, 370.9158) + .. controls ( 127.8886, 372.5064) and ( 130.1953, 369.1278) .. ( 133.1219, 368.5824) + .. controls ( 135.5793, 368.1238) and ( 138.9126, 368.5411) .. ( 141.1859, 367.0531) + .. controls ( 142.7313, 366.0424) and ( 143.9406, 364.2491) .. ( 143.8539, 359.5798) + .. controls ( 143.7619, 354.6171) and ( 140.4339, 350.6678) .. ( 135.3299, 347.6384) + .. controls ( 130.2259, 344.6078) and ( 118.2326, 338.8331) .. ( 116.7179, 335.0824) + .. controls ( 116.0993, 333.5478) and ( 116.4246, 327.4504) .. ( 116.6633, 321.7491) + .. controls ( 116.9166, 315.6878) and ( 117.1393, 310.0531) .. ( 118.4126, 310.0824) + .. controls ( 119.7179, 310.1118) and ( 125.0979, 319.0411) .. ( 132.7886, 324.8744) + .. controls ( 138.1726, 328.9584) and ( 144.7846, 331.7144) .. ( 149.1073, 333.7491) + .. controls ( 154.4179, 336.2491) and ( 162.3486, 337.0704) .. ( 165.7886, 335.2491) + .. controls ( 170.0379, 332.9984) and ( 172.9966, 329.8318) .. ( 173.1633, 325.9984) + .. controls ( 173.3073, 322.6678) and ( 172.0379, 320.2904) .. ( 169.2179, 317.7491) + .. controls ( 166.4606, 315.2624) and ( 162.6353, 314.1104) .. ( 158.7459, 313.8878) + .. controls ( 153.9646, 313.6144) and ( 146.7833, 313.1824) .. ( 147.5299, 311.6304)} +% \end{macrocode} +% +% 思。 +% \begin{macrocode} +\def\fdulogo@motto@si{% + ( 106.4909, 108.9952) + .. controls ( 107.9962, 108.6659) and ( 109.3935, 109.3206) .. ( 110.4135, 111.6659) + .. controls ( 112.0802, 115.4992) and ( 112.5802, 120.9992) .. ( 111.0802, 121.6659) + .. controls ( 109.6469, 122.3032) and ( 104.9882, 120.6512) .. ( 104.0335, 120.0046) + .. controls ( 102.3495, 118.8646) and ( 105.3402, 109.2472) .. ( 106.4909, 108.9952) + ( 93.5522, 38.3046) + .. controls ( 91.7415, 33.3352) and ( 87.6629, 27.7752) .. ( 79.8295, 27.8046) + .. controls ( 74.4975, 27.8246) and ( 71.4082, 31.6632) .. ( 69.1215, 36.4006) + .. controls ( 66.5802, 41.6659) and ( 68.3829, 53.3672) .. ( 71.5402, 59.7352) + .. controls ( 76.0375, 68.8059) and ( 85.3602, 77.4979) .. ( 85.1669, 78.8032) + .. controls ( 84.8389, 81.0152) and ( 79.3295, 82.3326) .. ( 78.1629, 86.7072) + .. controls ( 76.0482, 94.6379) and ( 89.8855, 94.0272) .. ( 90.0082, 96.9072) + .. controls ( 90.1735, 100.8032) and ( 80.5522, 107.1379) .. ( 80.2469, 118.9992) + .. controls ( 79.9882, 129.0339) and ( 82.7562, 143.8272) .. ( 85.7735, 144.2486) + .. controls ( 87.6522, 144.5112) and ( 98.2189, 128.5819) .. ( 101.2255, 129.5952) + .. controls ( 103.5962, 130.3926) and ( 107.6069, 133.2486) .. ( 109.1629, 135.3606) + .. controls ( 110.8709, 137.6766) and ( 111.0269, 140.4592) .. ( 111.6069, 143.5272) + .. controls ( 112.3855, 147.6379) and ( 119.1189, 149.5232) .. ( 121.9002, 148.9152) + .. controls ( 125.7189, 148.0819) and ( 128.2095, 143.2512) .. ( 129.7735, 141.6379) + .. controls ( 131.5522, 139.8046) and ( 134.9669, 139.0379) .. ( 134.9842, 134.5779) + .. controls ( 134.9962, 131.1939) and ( 132.6722, 130.1579) .. ( 131.7882, 128.1246) + .. controls ( 130.9549, 126.2072) and ( 130.8509, 124.2152) .. ( 130.1215, 122.5819) + .. controls ( 128.0109, 117.8606) and ( 125.4695, 112.7086) .. ( 126.9135, 112.6659) + .. controls ( 129.7469, 112.5819) and ( 135.2042, 125.0272) .. ( 142.3295, 136.9152) + .. controls ( 148.5202, 147.2419) and ( 151.9549, 152.0819) .. ( 151.9549, 155.2072) + .. controls ( 151.9549, 157.7846) and ( 139.5522, 156.8046) .. ( 128.6629, 155.9712) + .. controls ( 120.7255, 155.3632) and ( 105.3002, 154.6872) .. ( 105.0629, 155.5952) + .. controls ( 104.4135, 158.0819) and ( 107.7829, 163.0726) .. ( 118.4402, 166.2486) + .. controls ( 123.6562, 167.8032) and ( 143.0655, 168.3779) .. ( 152.5802, 165.9992) + .. controls ( 160.9135, 163.9152) and ( 172.2682, 150.5912) .. ( 174.7469, 146.4152) + .. controls ( 176.7362, 143.0632) and ( 175.1069, 138.3606) .. ( 171.2642, 131.9952) + .. controls ( 168.1949, 126.9126) and ( 160.0909, 118.7126) .. ( 153.9962, 111.6939) + .. controls ( 150.8429, 108.0619) and ( 148.5202, 103.6432) .. ( 146.0522, 100.8606) + .. controls ( 142.9962, 97.4152) and ( 132.1215, 94.8606) .. ( 124.5802, 92.9992) + .. controls ( 118.9535, 91.6099) and ( 106.7295, 87.8486) .. ( 103.4135, 86.3326) + .. controls ( 101.6589, 85.5299) and ( 98.9202, 81.1272) .. ( 98.9842, 76.9139) + .. controls ( 99.1069, 68.8606) and ( 98.6069, 63.0819) .. ( 97.6629, 55.8326) + .. controls ( 96.7949, 49.1686) and ( 96.0349, 45.1206) .. ( 93.5522, 38.3046) + ( 100.8943, 57.5823) + .. controls ( 101.5677, 59.7836) and ( 110.2263, 56.7423) .. ( 114.5730, 54.5050) + .. controls ( 123.1637, 50.0823) and ( 132.6637, 41.4156) .. ( 140.2050, 39.0410) + .. controls ( 143.0677, 38.1396) and ( 158.7183, 37.2903) .. ( 158.8303, 39.5823) + .. controls ( 158.9463, 41.9836) and ( 148.7383, 46.9516) .. ( 144.3303, 50.7490) + .. controls ( 140.1690, 54.3316) and ( 130.7463, 62.9983) .. ( 132.2410, 65.3970) + .. controls ( 133.5597, 67.5116) and ( 143.9570, 62.0716) .. ( 149.8303, 60.4996) + .. controls ( 154.4970, 59.2490) and ( 163.2917, 58.3716) .. ( 171.7463, 56.6663) + .. controls ( 181.7970, 54.6383) and ( 192.8903, 51.4690) .. ( 199.0063, 48.7596) + .. controls ( 206.7103, 45.3463) and ( 207.4023, 43.3490) .. ( 202.2863, 37.4090) + .. controls ( 197.5837, 31.9476) and ( 190.6103, 25.9023) .. ( 183.4130, 23.3330) + .. controls ( 169.4130, 18.3330) and ( 150.6903, 18.5463) .. ( 136.6970, 20.0476) + .. controls ( 120.8463, 21.7463) and ( 113.8303, 31.4156) .. ( 110.2463, 37.2490) + .. controls ( 107.7997, 41.2316) and ( 104.8357, 49.5503) .. ( 103.5797, 52.1663) + .. controls ( 102.3237, 54.7823) and ( 100.6757, 56.8663) .. ( 100.8943, 57.5823) + ( 128.0477, 74.2220) + .. controls ( 126.8437, 74.8447) and ( 132.9970, 84.3327) .. ( 142.8303, 90.1660) + .. controls ( 150.1850, 94.5287) and ( 161.8303, 99.3607) .. ( 170.5517, 99.3607) + .. controls ( 176.4970, 99.3607) and ( 181.4970, 96.7487) .. ( 184.5623, 93.8327) + .. controls ( 187.1877, 91.3354) and ( 188.5730, 88.1927) .. ( 188.2810, 83.2487) + .. controls ( 187.9970, 78.4154) and ( 183.9130, 75.5740) .. ( 178.0757, 75.4540) + .. controls ( 163.9970, 75.1660) and ( 146.8090, 79.2114) .. ( 141.8930, 79.0447) + .. controls ( 135.3770, 78.8234) and ( 130.4130, 72.9994) .. ( 128.0477, 74.2220)} +% +% \end{macrocode} +% +% \end{implementation} +% diff --git a/macros/latex/contrib/fduthesis/fduthesis.dtx b/macros/latex/contrib/fduthesis/fduthesis.dtx new file mode 100644 index 0000000000..cd50a39ec6 --- /dev/null +++ b/macros/latex/contrib/fduthesis/fduthesis.dtx @@ -0,0 +1,6024 @@ +% \iffalse meta-comment +% !TeX program = XeLaTeX +% !TeX encoding = UTF-8 +% +% Copyright (C) 2017--2019 by Xiangdong Zeng +% +% 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, +% fduthesis-template.tex, +% 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 +% +% +%<*readme> +The `fduthesis` Class +===================== + +*LaTeX thesis template for Fudan University, v0.7d* + +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 re­pos­i­tory: . + +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` (on Windows) or `install-linux.sh` (on Linux) + 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–2019 by Xiangdong Zeng . +% +% +%<*internal> +\fi +\begingroup + \def\NameOfLaTeXe{LaTeX2e} +\expandafter\endgroup\ifx\NameOfLaTeXe\fmtname\else +\csname fi\endcsname +% +% +%<*install> +\input l3docstrip.tex +\keepsilent +\askforoverwritefalse + +\preamble + + Copyright (C) 2017--2019 by Xiangdong Zeng + + 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, + fduthesis-template.tex, + 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}} +% +%<*install> + \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 +% +% +%<*internal> +\fi +% +% +%\NeedsTeXFormat{LaTeX2e} +%\RequirePackage{expl3} +%<*!(driver|install|ex-logo|cover)> +%\GetIdInfo $Id: fduthesis.dtx 0.7d 2019-04-03 12:00:00Z Xiangdong Zeng $ +% {Thesis template for Fudan University} +%\ProvidesExplClass{\ExplFileName} +% {Thesis template for Fudan University (English version)} +%\ProvidesExplClass{\ExplFileName-en} +% {Definition file for fduthesis} +%\ProvidesExplFile{\ExplFileName.def} +% {Documentation class for fduthesis} +%\ProvidesExplClass{fdudoc} +% {Fudan University's Visual Identity} +%\ProvidesExplPackage{fdulogo} +% {\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} +% +%<*driver> +% \PassOptionsToPackage{showframe}{geometry} +\documentclass{fdudoc} +\usepackage{multirow,xpinyin} +\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 +% Libertinus Math 字体不包含 `\QED`,暂时使用 `\blacksquare` 代替 +\AtBeginDocument{\def\QED{\blacksquare}} +%^^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! \AtBeginDocument{\def\QED{\blacksquare}} +%^^A! + +\title{\textcolor{MaterialIndigo800}{% + \textbf{fduthesis: 复旦大学论文\xpinyin[font=\sffamily]{模}{mu2}板}}} +\author{曾祥东} +\date{2019/04/03\quad v0.7d% + \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{2019/04/03\quad v0.7d% +%^^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} +% +% \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}{将校名、校徽图片添加至发行版。} +% +% \CheckSum{0} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +%^^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 数学科学学院 2001 级的何力同学和李湛同学在 2005 年根据 +% 学校要求所设计的 \cls{毕业论文格式 tex04 版},以及 2008 年 +% 张越同学修改之后的 \cls{毕业论文格式 tex08 版},这是专为 +% 数院本科生撰写毕业论文而设计的 +% \scite{数院毕业论文格式,数院毕业论文格式更新}; +% \item Pandoxie 编写的 \cls{FDU-Thesis-Latex} +% \scite{pandoxie2014fduthesislatex},基本满足了博士(硕士) +% 毕业论文格式要求,使用人数较多; +% \item richarddzh 编写的硕士论文模板 \cls{fudan-thesis} +% \scite{richard2016fudanthesis}。 +% \end{itemize} +% 以上这些模板大都没有经过系统的设计,也鲜有后续维护。相比之下, +% 清华大学 \scite{thuthesis}、重庆大学 \scite{cquthesis}、 +% 中国科学技术大学 \scite{ustcthesis} 中国科学院大学 \scite{ucasthesis} +% 以及友校上海交通大学 \scite{sjtuthesis}等,都有成熟、 +% 稳定的解决方案,值得参考。 +% +% 本模板将借鉴前辈经验,重新设计,并使用 \LaTeX3 +% \scite{source3} 编写,以适应 \TeX{} 技术发展潮流; +% 同时还将构建一套简洁的接口,方便用户使用。 +%^^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{} 入门》 +% \scite{刘海洋2013latex入门} 第一章,或大名鼎鼎的“\pkg{lshort}” +% \scite{lshort} 及其中文翻译版 \scite{lshort-zh-cn}。当然, +% 网络上的入门教程多如牛毛,您可以自行选取。 +%^^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{} 的,表示只能在^^A +% \emph{中文模板}中使用; +% \item 名字后面带有 \exptarget\expstar{} 的,表示只能在^^A +% \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 special characters afterwards, then +%^^A! you can use them in both Chinese and English templates. +%^^A! \end{itemize} +%^^A! +% +% 代码实现主要面向对 \LaTeX{} 宏包开发感兴趣的用户。如果您有任何改进 +% 意见或者功能需求,欢迎前往 GitHub 仓库 +% \href{https://github.com/stone-zeng/fduthesis/issues}{提交 issue}。 +%^^A! If you want to read the implementation part, please turn to the +%^^A! Chinese version. Any issues or feature requests can be submitted +%^^A! in the \href{https://github.com/stone-zeng/fduthesis/issues}% +%^^A! {GitHub repository}. +%^^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} +% 即可完成安装。 +%^^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{http://mirror.ctan.org/install/macros/latex/contrib/fduthesis.tds.zip}{TDS 安装包}; +% \item 按目录结构将 \file{fduthesis.tds.zip} 中的文件复制到 \TeX{} +% 发行版的本地 TDS 根目录; +% \item 执行 \bashcmd{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 \bashcmd{mktexlsr} to update the ls-R database. +%^^A! \end{itemize} +%^^A +% 您也可以从源代码直接生成模板(不推荐): +% \begin{itemize} +% \item 打开 \href{https://github.com/stone-zeng/fduthesis}^^A +% {项目主页},点击“Clone or download”,并选择“Download ZIP”, +% 下载 \file{fduthesis-master.zip};如果您的电脑中安装有 git +% 程序,也可通过以下命令直接克隆代码仓库: +% \begin{shellexample}[gobble=7,alsoletter={.},^^A +% morekeywords={git,clone}] +% git clone https://github.com/stone-zeng/fduthesis.git +% \end{shellexample} +% \item 解压并进入到 \file{source} 文件夹,执行以下命令以生成 +% 模板的各组件: +% \begin{shellexample}[gobble=7,morekeywords={xetex}] +% xetex fduthesis.dtx +% \end{shellexample} +% \item 将生成的文档类(\file{.cls})、宏包(\file{.sty})以及 +% 参数配置文件(\file{.def})复制到 \TeX{} 发行版本地 TDS 树 +% 的 \path{texmf-local/tex/latex/fduthesis/} 目录下,并执行 +% \bashcmd{mktexlsr} 刷新文件名数据库,方可完成安装。 +% \item 使用 \cls{fduthesis} 撰写论文时,您还需要从代码仓库下的 +% \file{testfiles/support} 目录中复制 \file{fudan-name.pdf} +% 文件至工作目录,以确保封面中的校名图片可以正确显示。 +% \end{itemize} +%^^A! Although not recommended, you may generate the whole template +%^^A! from source code as well: +%^^A! \begin{itemize} +%^^A! \item Open the project's \href{https://github.com/stone-zeng/fduthesis}% +%^^A! {homepage}, click ``Clone or download'' and choose +%^^A! ``Download ZIP'' to download \file{fduthesis-master.zip}. +%^^A! If you have git program on your computer, you can also +%^^A! clone the repository directly: +%^^A! \begin{shellexample}[gobble=5,alsoletter={.},% +%^^A! morekeywords={git,clone}] +%^^A! git clone https://github.com/stone-zeng/fduthesis.git +%^^A! \end{shellexample} +%^^A! \item Extract files, and get into the \file{source} directory. +%^^A! Run the following command to generate all the components: +%^^A! \begin{shellexample}[gobble=5,morekeywords={xetex}] +%^^A! xetex fduthesis.dtx +%^^A! \end{shellexample} +%^^A! \item Copy the generated document classes (\file{.cls}), +%^^A! packages (\file{.sty}) and configuration files (\file{.def}) +%^^A! into \path{texmf-local/tex/latex/fduthesis/} under the local +%^^A! TDS tree of \TeX{} distribution. Then run \bashcmd{mktexlsr} +%^^A! to update the ls-R database. +%^^A! \item When writing your thesis with \cls{fduthesis}, you need +%^^A! to copy the file \file{fudan-name.pdf} (can be found in the +%^^A! \file{testfiles/support} directory of the Git repository) to +%^^A! your working directory, to make sure that the logo in the +%^^A! cover can be displayed correctly. +%^^A! \end{itemize} +%^^A! +% +% \subsubsection{扁平化安装} +%^^A! \subsubsection{\cls{fduthesis} on the fly} +%^^A! +% +% 如果您不希望安装本模板,但需要立刻使用,也可以使用模板提供的安装脚本。 +% 从 GitHub 上获取代码仓库后,执行 \file{install-win.bat}(Windows 系统) +% 或 \file{install-linux.sh}(Linux 系统),所有需要的文件便会在 +% \file{thesis} 文件夹中生成。 +%^^A! If you don't want to install \cls{fduthesis} but need to use it +%^^A! at once, you can try the installation scripts. Download the +%^^A! repository from GitHub, run \file{install-win.bat} (on Windows) +%^^A! or \file{install-linux.sh} (on Linux), then all the necessary +%^^A! files will be found in the \file{thesis} folder. +%^^A! +% +% \subsection{模板组成} +%^^A! \subsection{Composition of the template} +%^^A! +% +% 本模板主要包含核心文档类、配置文件、附属宏包以及用户文档等几个 +% 部分,其具体组成见表~\ref{tab:fduthesis-components}。 +%^^A! There are several parts in \cls{fduthesis}, including kernel +%^^A! template classes, configuration files, affiliated packages and +%^^A! user's guides. More details are listed in table~% +%^^A! \ref{tab:fduthesis-components}. +%^^A! +% +% \begin{table}[ht] +% \caption{\cls{fduthesis} 的主要组成部分} +% \label{tab:fduthesis-components} +% \centering +% \begin{tabular}{lp{20em}} +% \toprule +% \textbf{文件} & \textbf{功能说明} \\ +% \midrule +% \file{fduthesis.cls} & 中文模板文档类 \\ +% \file{fduthesis-en.cls} & 英文模板文档类 \\ +% \file{fduthesis.def} & 参数配置文件,用于设定 +% \cls{fduthesis} 的初始参数,不建议您自行改动 \\ +% \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 +% \file{fduthesis-template.tex} & 空白模板,可据此为基础完成论文 +% 撰写 \\ +% \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! \file{fduthesis-template.tex} & An empty thesis template, and you can +%^^A! write your thesis based on it. \\ +%^^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 subsection~% +%^^A! \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 = (**) +% \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 +%^^A! list. The options usually have the form of \kvopt{\meta{key}}% +%^^A! {\meta{value}} 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} +% 中的“|= 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 = (**) +% \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] +% \begin{threeparttable} +% \caption{西文字体配置} +% \label{tab:font} +% \centering +% \begin{tabular}{ccccc} +% \toprule +% & \strong{正文字体} & \strong{无衬线字体} & \strong{等宽字体} & \strong{数学字体} \\ +% \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 是商业字体, +% 在 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! & \strong{Roman} & \strong{Sans-serif} & \strong{Monospaced} & \strong{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 = (**) +% \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 +% \begin{tabular}{cccc} +% \toprule +% & \strong{正文字体(宋体)} & \strong{无衬线字体(黑体)} & \strong{等宽字体(仿宋)} \\ +% \midrule +% \multirow{2}*{|adobe|} & Adobe 宋体 & Adobe 黑体 & Adobe 仿宋 \\ +% & Adobe Song Std & Adobe Heiti Std & Adobe Fangsong Std \\ +% \multirow{2}*{|fandol|} & Fandol 宋体 & Fandol 黑体 & Fandol 仿宋 \\ +% & FandolSong & FandolHei & FandolFang \\ +% \multirow{2}*{|founder|} & 方正书宋 & 方正黑体 & 方正仿宋 \\ +% & FZShuSong-Z01 & FZHei-B01 & FZFangSong-Z02 \\ +% \multirow{2}*{|mac|} & (华文)宋体-简 & (华文)黑体-简 & 华文仿宋 \\ +% & Songti SC & Heiti SC & STFangsong \\ +% \multirow{2}*{|sinotype|} & 华文宋体 & 华文黑体 & 华文仿宋 \\ +% & STSong & STHeiti & STFangsong \\ +% \multirow{2}*{|sourcehan|} & 思源宋体 & 思源黑体 & --- \\ +% & Source Han Serif SC & Source Han Sans SC & --- \\ +% \multirow{2}*{|windows|} & (中易)宋体 & (中易)黑体 & (中易)仿宋 \\ +% & SimSun & SimHei & FangSong \\ +% \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! & \strong{Roman (song)} & \strong{Sans-serif (hei)} & \strong{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 = (**) +% \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} 后,只有^^A +% \emph{显式的}\FSID 会被替换为\FSFW;但在选择 \opt{mapping} 后, +% \emph{所有的}\FSID 都会被替换。例如,如果您用宏保存了一些含有^^A +% \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} 后仍需要临时显示^^A +% \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 空格,因此这里用 X 来占位。 +% \begin{fdusyntax}[emph={[1]footnote-style}] +% footnote-style = (**) +% \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 = (**) +%^^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 +% \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 = (**) +% \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=2017-12-08]{style/hyperlink-color} +% \begin{fdusyntax}[emph={[1]hyperlink-color}] +% hyperlink-color = (*<(default)|classic|elegant|fantasy|material|\\ +% XXXXXX\mbox{}~~~~~~~~~~~~~~~~~~business|science|summer|autumn|graylevel|prl>*) +% \end{fdusyntax} +% 设置超链接颜色。该选项在 \kvopt{hyperlink}{none} 时无效。 +% 各选项所代表的颜色见表~\ref{tab:hyperlink-color}。 +% \end{function} +%^^A! \begin{function}[added=2017-08-13,updated=2017-12-08]{style/hyperlink-color} +%^^A! \begin{fdusyntax}[emph={[1]hyperlink-color}] +%^^A! hyperlink-color = (*<(default)|classic|elegant|fantasy|material|\\ +%^^A! XXXX\mbox{}~~~~~~~~~~~~~~~~~~business|science|summer|autumn|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 +%^^A- +% \newcommand\linkcolorexam[3]{^^A +% {\small 图~\textcolor[HTML]{#1}{1-2}, +% (\textcolor[HTML]{#1}{3.4})~式} & +% {\small \textcolor[HTML]{#2}{\texttt{http://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 +% \textsf{选项} & \textsf{链接} & \textsf{URL} & \textsf{引用} \\ +%^^A! \begin{tabular}{c*{3}{>{\hspace{0.2cm}}c<{\hspace{0.2cm}}}} +%^^A! \toprule +%^^A! \textsf{Options} & \textsf{Cross references} & \textsf{URL} & \textsf{Citation} \\ +%^^A+ +% \midrule +% \opt{default} & \linkcolorexam{990000}{0000B2}{007F00} \\ +% \opt{classic} & \linkcolorexam{FF0000}{0000FF}{00FF00} \\ +% \opt{elegant}\tnote{a} & \linkcolorexam{961212}{C31818}{9B764F} \\ +% \opt{fantasy}\tnote{b} & \linkcolorexam{FF4A19}{FF3F94}{934BA1} \\ +% \opt{material}\tnote{c} & \linkcolorexam{E91E63}{009688}{4CAF50} \\ +% \opt{business}\tnote{d} & \linkcolorexam{D14542}{295497}{1F6E43} \\ +% \opt{science}\tnote{e} & \linkcolorexam{CA0619}{389F9D}{FF8920} \\ +% \opt{summer}\tnote{f} & \linkcolorexam{00AFAF}{5F5FAF}{5F8700} \\ +% \opt{autumn}\tnote{f} & \linkcolorexam{D70000}{D75F00}{AF8700} \\ +% \opt{graylevel}\tnote{c} & \linkcolorexam{616161}{616161}{616161} \\ +% \opt{prl}\tnote{g} & \linkcolorexam{2D3092}{2D3092}{2D3092} \\ +% \bottomrule +% \end{tabular} +% \begin{tablenotes} +%^^A- +% \item[a] 来自 \href{https://tex.stackexchange.com/}^^A +% {\TeX{} - \LaTeX{} Stack Exchange 网站}。 +% \item[b] Adobe CC 产品配色。 +% \item[c] 取自 Material 色彩方案 +% (见 \url{https://material.io/guidelines/style/color.html})。 +% \item[d] Microsoft Office 2016 产品配色。 +% \item[e] 来自 \href{https://www.wolfram.com/}{Wolfram Research 网站}。 +% \item[f] 均取自 Solarized 色彩方案 +% (见 \url{http://ethanschoonover.com/solarized})。 +% \item[g] \textit{Physical Review Letter} 杂志配色。 +%^^A! \item[a] From \href{https://tex.stackexchange.com/}% +%^^A! {\TeX{} - \LaTeX{} Stack Exchange}. +%^^A! \item[b] Adobe CC. +%^^A! \item[c] Material Design color palette +%^^A! (See \url{https://material.io/guidelines/style/color.html}). +%^^A! \item[d] Microsoft Office 2016. +%^^A! \item[e] From \href{https://www.wolfram.com/}{Wolfram Research website}. +%^^A! \item[f] Solarized color palette +%^^A! (See \url{http://ethanschoonover.com/solarized}). +%^^A! \item[g] \textit{Physical Review Letter} magazine. +%^^A+ +% \end{tablenotes} +% \end{threeparttable} +% \end{table} +%^^A- +%^^A! +% +%^^A+ +% \begin{function}[added=2018-01-25]{style/bib-backend} +% \begin{fdusyntax}[emph={[1]bib-backend}] +% bib-backend = (**) +% \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}. +%^^A! \end{function} +%^^A! +% +% \begin{function}[added=2017-10-28,updated=2018-01-25]^^A +% {style/bib-style} +% \begin{fdusyntax}[emph={[1]bib-style}] +% bib-style = (**) +% \end{fdusyntax} +% 设置参考文献样式。\opt{author-year} 和 \opt{numerical} 分别对应 +% 国家标准 GB/T 7714--2015 \scite{gb-t-7714-2015} 中的著者—出版年制 +% 和顺序编码制。选择 \meta{其他样式} 时,如果 \kvopt{bib-backend}^^A +% {bibtex},需保证相应的 \file{.bst} 格式文件能被调用;而如果 +% \kvopt{bib-backend}{biblatex},则需保证相应的 \file{.bbx} 格式文件 +% 能被调用。 +% \end{function} +%^^A! \begin{function}[added=2017-10-28,updated=2018-01-25]% +%^^A! {style/bib-style} +%^^A! \begin{fdusyntax}[emph={[1]bib-style}] +%^^A! bib-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}{\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 ensure +%^^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 \SI{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! +% +% \subsection{正文编写} +%^^A! \subsection{Writing your thesis} +%^^A! +% +% \begin{quotation} +% 喬孟符(吉)博學多能,以樂府稱。嘗云:「作樂府亦有法,曰^^A +% \CJKunderdot{鳳頭、豬肚、豹尾}六字是也。」大概起要美麗,中要浩蕩, +% 結要響亮。尤貴在首尾貫穿,意思清新。苟能若是,斯可以言樂府矣。 +% \end{quotation} +% \hfill ——陶宗儀《南村輟耕錄·作今樂府法》 +% +% \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} +% 生成目录。为了生成完整、正确的目录,您至少需要编译\emph{两次}。 +% \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! \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)。 +% 这两项可通过 \cs{fdusetup} 录入,具体 +% 请参阅 \ref{subsubsec:信息录入}~节。 +%^^A! At the end of abstract (both Chinese and English, if available), +%^^A! keywords list and CLC number 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}|”,即第一列宽度自动调整, +% 第二列限宽 \SI{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 (\SI{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},% +%^^A! 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 subsubsection~% +%^^A! \ref{subsubsec:style-and-format} for more details. +%^^A! \end{function} +%^^A! +% +%^^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 +% \begin{tabular}{cccccccc} +% \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=2017-12-12]{\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{计数器} 的变化而清零。\scite{刘海洋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! +% +% \begin{function}{\caption} +% \begin{fdusyntax}[deletetexcs={\caption},morekeywords={\caption}] +% \caption(*\marg{图表标题}*) +% \caption(*\oarg{短标题}\marg{长标题}*) +% \end{fdusyntax} +% 插入图表标题。可选参数 \meta{短标题} 用于图表目录。在 +% \meta{长标题} 中,您可以进行长达多段的叙述;但 \meta{短标题} +% 和单独的 \meta{图表标题} 中则不允许分段。 +% \scite{刘海洋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! +% +% \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}^^A +% {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 +%^^A! \meta{bib files} should be specified with option +%^^A! \opt{style/bib-resource} (see subsubsection~% +%^^A! \ref{subsubsec:style-and-format}). When \kvopt{bib-backend}% +%^^A! {bibtex}, then \tn{printbibliography} is provided by +%^^A! \pkg{biblatex} and the available options can be found in its +%^^A! documentation. +%^^A! \end{function} +%^^A! +% +% \section{宏包依赖情况} +%^^A! \section{Packages dependencies} +%^^A! +% +% 使用不同编译方式、指定不同选项,会导致宏包依赖情况有所不同。 +% 具体如下: +% \begin{itemize} +% \item 在任何情况下,本模板都会\emph{显式}调用以下宏包 +% (或文档类): +% \begin{itemize} +% \item \pkg{expl3}、\pkg{xparse}、\pkg{xtemplate} 和 +% \pkg{l3keys2e},用于构建 \LaTeX3 编程环境 +% \scite{source3}。它们分属 \pkg{l3kernel} 和 +% \pkg{l3packages} 宏集。 +% \item \cls{ctexbook},提供中文排版的通用框架。属于 \CTeX{} +% 宏集 \scite{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} 宏包提供 \scite{natbib,gbt7714}。 +% \item 开启 \kvopt{style/bib-backend}{biblatex} 后,会调用 +% \pkg{biblatex} 宏包,并依赖 \biber{} 程序。参考文献样式由 +% \pkg{biblatex-gb7714-2015} 宏包提供 +% \scite{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{expl3}, \pkg{xparse}, \pkg{xtemplate} and +%^^A! \pkg{l3keys2e}, belong to \pkg{l3kernel} and +%^^A! \pkg{l3packages} bundles +%^^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][]{{\small\textit{#1}~\href{http://mirror.ctan.org/#2}^^A +% {\ttfamily CTAN://#2}}} +% +% \subsection{图书} +% +% \bibitem{knuth1986texbook} +% \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{mittelbach2004latexcompanion} +% \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 (2019-03-13) +% \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 (2018-12-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.4.14, +% \newblock (2018-05-02) +% \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.7.1, +% \newblock (2018-04-30) +% \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 (2019-03-05) +% \urlprefix\url{https://ctan.org/pkg/l3kernel} +% \urlprefix\CTANurl[源代码:]{macros/latex/contrib/l3kernel/source3.pdf} +% +% \bibitem{biblatex} +% \textsc{Lehman P}, \textsc{Kime P}, \textsc{Boruvka A}, et al. +% \newblock \textit{The \pkg{biblatex} Package} [EB/OL]. +% \newblock version 3.12, +% \newblock (2018-10-18) +% \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.2, +% \newblock (2018-02-28) +% \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{} 介绍: 或 106 分钟了解 \LaTeXe{}} [EB/OL]. +% \newblock \CTeX{} 开发小组, 译. +% \newblock 原版版本 version 6.2, 中文版本 version 6.0, +% \newblock (2018-09-01) +% \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.0q, +% \newblock (2019-02-11) +% \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 1.0.9, +% \newblock (2018-08-05) +% \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.30, +% \newblock (2018-02-23) +% \urlprefix\url{https://ctan.org/pkg/cquthesis} +% \urlprefix\CTANurl[文档及源代码:]{macros/latex/contrib/cquthesis/cquthesis.pdf} +% +% \bibitem{thuthesis} +% 薛瑞尼. +% \newblock \textit{\textsc{ThuThesis}:清华大学学位论文模板} [EB/OL]. +% \newblock version 5.4.5, +% \newblock (2018-05-17) +% \urlprefix\url{https://ctan.org/pkg/thuthesis} +% \urlprefix\CTANurl[文档及源代码:]{macros/latex/contrib/thuthesis/thuthesis.pdf} +% +% \emph{以下模版未收录至 CTAN,但仍然保持活跃更新。} +% +% \bibitem{sjtuthesis} +% \textsc{SJTUG}. +% \newblock \textit{上海交通大学 \XeLaTeX{} 学位论文及课程论文模板} [EB/OL]. +% \newblock version 0.10.2, +% \newblock (2018-11-05) +% \urlprefix\url{https://github.com/sjtug/SJTUThesis} +% +% \bibitem{ustcthesis} +% \textsc{USTC \TeX{} User Group}. +% \newblock \textit{中国科学技术大学学位论文 \LaTeX{} 模板} [EB/OL]. +% \newblock version 3.1.03, +% \newblock (2019-01-01) +% \urlprefix\url{https://github.com/ustctug/ustcthesis} +% +% \bibitem{ucasthesis} +% \textsc{mohuangrui}. +% \newblock \textit{\pkg{ucasthesis} 国科大学位论文 \LaTeX{} 模板} [EB/OL]. +% \newblock (2019-03-14) +% \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{毕业论文格式 tex 版和 word 版} [EB/OL]. +% \urlprefix\url{http://math.fudan.edu.cn/show.aspx?info_lb=664&flag=101&info_id=1816} +% +% \bibitem{数院毕业论文格式更新} +% 复旦大学数学科学学院. +% \newblock \textit{毕业论文格式: Word、\TeX{} 模板更新} [EB/OL]. +% \urlprefix\url{http://math.fudan.edu.cn/Show.aspx?info_lb=664&info_id=1855&flag=101} +% +% \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, +% 它们由 \pkg{l3docstrip} 定义,用来指示名字空间(模块)。 +% +% \subsection{准备} +% +% \begin{macrocode} +%<@@=fdu> +%<*class|class-en> +% \end{macrocode} +% +% 检查 \LaTeX3 编程环境。 +% \begin{macrocode} +\RequirePackage { xparse, xtemplate, l3keys2e } +\clist_map_inline:nn { expl3, xparse, xtemplate, l3keys2e } + { + \@ifpackagelater {#1} { 2018/05/12 } + { } { \msg_error:nnn { fduthesis } { l3-too-old } {#1} } + } +\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. + } +% \end{macrocode} +% +% 目前 \cls{fduthesis} 仅支持 \XeTeX{} 和 \LuaTeX{}。 +% \begin{macrocode} +\sys_if_engine_xetex:F + { + \sys_if_engine_luatex:F + { + \msg_fatal:nnx { fduthesis } { unsupported-engine } + { \c_sys_engine_str } + } + } +\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". + } +% \end{macrocode} +% +% \subsubsection{内部变量声明} +% +% \begin{variable}{\l_@@_tmpa_box, +% \l_@@_tmpa_clist,\l_@@_tmpb_clist, +% \l_@@_tmpa_dim,\l_@@_tmpb_dim, +% \l_@@_tmpa_skip, +% \l_@@_tmpa_tl,\l_@@_tmpb_tl} +% 临时变量。 +% \begin{macrocode} +\box_new:N \l_@@_tmpa_box +\clist_new:N \l_@@_tmpa_clist +\clist_new:N \l_@@_tmpb_clist +\dim_new:N \l_@@_tmpa_dim +\dim_new:N \l_@@_tmpb_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_int} +% 论文类型。取值 1、2、3 分别对应博士、硕士、本科(学士),这与学号 +% 第三位是一致的。 +% \begin{macrocode} +\int_new:N \g_@@_thesis_type_int +% \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}{\cs_generate_variant:cn, +% \file_input:V, +% \int_to_arabic:v, +% \keys_define:nx, +% \tl_map_inline:xn} +% \begin{macro}[TF]{\tl_if_eq:Vn} +% \LaTeX3{} 函数变体。 +% \begin{macrocode} +\cs_generate_variant:Nn \cs_generate_variant:Nn { cn } +\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 \tl_map_inline:nn { xn } +\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} +% +% \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_sep:nn, +% \@@_define_format: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 } { \@@_symbol:n {#2} } } +% \cs_new_protected:Npn \@@_define_sep:nn #1#2 +% { \tl_const:cn { c_@@_ #1 _sep_tl } {#2} } +% \cs_new_protected:Npn \@@_define_format:nn #1#2 +% { \tl_const:cn { c_@@_ #1 _format_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, +% \@@_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 \@@_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 .choice:, + type .value_required:n = true, + type .choices:nn = + { doctor, master, bachelor } + { \int_set_eq:NN \g_@@_thesis_type_int \l_keys_choice_int }, + 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_tl"~ is~ unknown. } +% \end{macrocode} +% +% 将文档类选项传给 |fdu/option|。 +% \begin{macrocode} +\ProcessKeysOptions { fdu / option } +% \end{macrocode} +% +% 载入参数配置文件。 +% \begin{macrocode} +\file_input:n { fduthesis.def } +\tl_if_empty:NF \g_@@_config_tl + { + \file_input:V \g_@@_config_tl + \@@_info:nx { load-config-file } { \g_@@_config_tl } + } +\@@_msg_new:nn { load-config-file } + { You~ are~ loading~ config~ file~ '#1'. } +% \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, +% scheme = plain, + heading = true, +% fontset = none, +% fontset = fandol, + zihao = -4, +% 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} +% +% 本模板会在 \pkg{ctexhook} 提供的钩子 \cs{ctex_at_end_preamble:n} +% 中调用 \pkg{biblatex},而 \pkg{biblatex} 自身又会使用 \pkg{etoolbox} +% 的钩子 \tn{AtEndPreamble},因此需要在载入 \cls{ctexbook} 之前调用 +% \pkg{etoolbox}。钩子的顺序为: +% \[ \text{\tn{CTEX@document@left@hook}} +% \prec \text{\tn{@endpreamblehook}} +% \prec \text{\texttt{\textbackslash begin\{document\}}}. \] +% \begin{macrocode} +\RequirePackage { etoolbox } +% \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} +% +% \begin{macro}{\@@_check_package:nnn} +% 检查过时宏包。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_check_package:nnn #1#2#3 + { + \@ifpackagelater {#1} {#2} + { } { \@@_error:nnn { package-too-old } {#1} {#3} } + } +\@@_msg_new:nn { package-too-old } + { + Package~ "#1"~ is~ too~ old. \\ + The~ fduthesis~ class~ only~ supports~ "#1"~ with~ a~ version \\ + higher~ than~ v#2. \\\\ + Please~ update~ an~ up-to-date~ version~ of~ it~ using~ your \\ + TeX~ package~ manager~ or~ from~ CTAN. + } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\@@_check_package:nnn { ctex } { 2017/08/07 } { 2.4.10 } +\@@_check_package:nnn { fontspec } { 2017/09/22 } { 2.6e } +\@@_check_package:nnn { unicode-math } { 2017/11/18 } { 0.8i } +\sys_if_engine_xetex:T + { \@@_check_package:nnn { xeCJK } { 2017/08/07 } { 3.5.0 } } +\sys_if_engine_luatex:T + { \@@_check_package:nnn { xunicode-addon } { 2018/04/30 } { 3.7.1 } } +% \end{macrocode} +% +% \subsection{页面布局} +% +% 利用 \pkg{geometry} 宏包设置纸张大小、页面边距以及页眉高度。这里, +% $\SI{2.54}{\centi\meter}=\SI{1}{in}$, +% $\SI{3.18}{\centi\meter}=\SI{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_@@_font_set_tl, \g_@@_cjk_font_set_tl} +% 存放字体选项值。 +% \begin{macrocode} +\tl_new:N \g_@@_font_set_tl +%\tl_new:N \g_@@_cjk_font_set_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_@@_font_set_tl \l_keys_choice_tl } + } +% \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_font_set_tl \l_keys_choice_tl } + } +% \end{macrocode} +% +% \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} +% 用于设置中文字体的辅助函数,来源于 \pkg{xeCJK} 和 \pkg{ctex} 宏包。 +% \begin{macrocode} +%<*class> +\cs_new_protected:Npn \@@_setCJKmainfont:nn #1#2 + { \@@_set_family:nnn { \CJKrmdefault } {#2} {#1} } +\cs_new_protected:Npn \@@_setCJKsansfont:nn #1#2 + { \@@_set_family:nnn { \CJKsfdefault } {#2} {#1} } +\cs_new_protected:Npn \@@_setCJKmonofont:nn #1#2 + { \@@_set_family:nnn { \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,\@@_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 + } +% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ +% \setmainfont, +% \setsansfont, +% \setmonofont, +% \setmathfont, +% \setCJKmainfont, +% \setCJKsansfont, +% \setCJKmonofont, +% \@@_set_font:n} +% 重新定义以上宏包提供的字体选择命令。我们把它放在导言区末尾,使得用户配置不被 +% 模板配置覆盖。 +% \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} } +%\clist_map_inline:nn { CJKmain, CJKsans, CJKmono } { \@@_set_font_helper:n {#1} } +% \end{macrocode} +% \end{macro} +% +% \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, + BoldItalicFont = *-bolditalic + } + \@@_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, + BoldItalicFont = *-bolditalic + } + \@@_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, + BoldItalicFont = *-bolditalic, + 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, + UprightFeatures = { SmallCapsFont = *-Regular }, + BoldFeatures = { SmallCapsFont = *-Bold }, + ItalicFeatures = { SmallCapsFont = *-Italic }, + BoldItalicFeatures = { SmallCapsFont = *-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_@@_font_set_tl : } +% \use:c { @@_load_cjk_font_ \g_@@_cjk_font_set_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{macrocode} +\keys_define:nn { fdu / style } + { +% \end{macrocode} +% +% \begin{macro}{style/font-size} +% |font-size| 不是文档类选项,不能传给 \cls{ctexbook} 文档类,因此 +% 只能手动重定义字号命令。 +% \begin{macrocode} + font-size .choice:, + font-size .value_required:n = true, + font-size / -4 .code:n = { }, +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tiny,\scriptsize,\footnotesize,\small, +% \normalsize,\large,\Large,\LARGE,\huge,\Huge} +% 默认使用小四号字,所以只有五号字需要重新设置。 +% \begin{macrocode} + font-size / 5 .code:n = + { + \RenewDocumentCommand \tiny { } { \zihao { 7 } } + \RenewDocumentCommand \scriptsize { } { \zihao { -6 } } + \RenewDocumentCommand \footnotesize { } { \zihao { 6 } } + \RenewDocumentCommand \small { } { \zihao { -5 } } + \RenewDocumentCommand \normalsize { } { \zihao { 5 } } + \RenewDocumentCommand \large { } { \zihao { -4 } } + \RenewDocumentCommand \Large { } { \zihao { -3 } } + \RenewDocumentCommand \LARGE { } { \zihao { -2 } } + \RenewDocumentCommand \huge { } { \zihao { 2 } } + \RenewDocumentCommand \Huge { } { \zihao { 1 } } +% } +% } +%<*class> + }, +% \end{macrocode} +% \end{macro} +% +% \subsubsection{句号} +% +% \begin{macro}{style/fullwidth-stop} +% \changes{v0.6}{2017/10/14}{支持类别码和 TECKit 映射两种机制。} +% 设置句号形状(圆圈或是圆点)。 +% \begin{macrocode} + 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:} +% 将\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 } + } +% +% \end{macrocode} +% \end{macro} +% +% \changes{v0.6}{2017/10/28}{优化 \LuaTeX{} 下希腊字母、西里尔字母和带圈数字的 +% 显示(\pkg{ctex} v2.4.11 已默认进行处理)。} +% +% \subsection{页眉页脚} +% +% 清除默认页眉页脚格式。 +% \begin{macrocode} +\fancyhf { } +% \end{macrocode} +% +% \begin{variable}{\l_@@_header_center_mark_tl} +% 保存中间页眉的文字。正文中设置为空,目录、摘要、符号表等设置为相应标题。 +% \begin{macrocode} +\tl_new:N \l_@@_header_center_mark_tl +% \end{macrocode} +% \end{variable} +% +% 构建页眉,要在单面或双面下分别设置。 +% +% \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 +%<*class> + { + \fancyhead [ EL ] { \small \nouppercase { \fdu@kai \leftmark } } + \fancyhead [ OR ] { \small \nouppercase { \fdu@kai \rightmark } } + } + { + \fancyhead [ L ] { \small \nouppercase { \fdu@kai \leftmark } } + \fancyhead [ R ] { \small \nouppercase { \fdu@kai \rightmark } } + \fancyhead [ C ] + { + \small \nouppercase + { \fdu@kai \l_@@_header_center_mark_tl } + } + } +% +%<*class-en> + { + \fancyhead [ EL ] { \small \nouppercase { \itshape \leftmark } } + \fancyhead [ OR ] { \small \nouppercase { \itshape \rightmark } } + } + { + \fancyhead [ L ] { \small \nouppercase { \itshape \leftmark } } + \fancyhead [ R ] { \small \nouppercase { \itshape \rightmark } } + \fancyhead [ C ] + { + \small \nouppercase + { \itshape \l_@@_header_center_mark_tl } + } + } +% +% \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 } + } + \tl_gset:Nn \l_@@_header_center_mark_tl { } + } +% \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 = + { +% format = \huge \normalfont \sffamily \centering, +%<*class-en> + format = \centering, + nameformat = \LARGE \bfseries, + titleformat = \huge \bfseries, + aftername = \par \nobreak \vskip 10 pt, +% + beforeskip = 50 pt, + afterskip = 40 pt, + number = \@@_arabic:n { chapter }, + fixskip = true + }, + section = + { +% format = \Large \normalfont \sffamily \raggedright, +% 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 = + { +% format = \large \normalfont \sffamily \raggedright, +% 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}{优化目录、摘要、参考文献等的标题实现。} +% +% \begin{macro}{\@@_chapter:n,\@@_chapter:V} +% 手动生成章的标题,用于摘要、参考文献等。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_chapter:n #1 + { + \group_begin: + \ctexset { chapter / numbering = false } + \chapter {#1} + \@@_chapter_header:n {#1} + \group_end: + } +\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} + \@@_chapter_header:n {#1} + \pdfbookmark [0] {#1} { toc } + } +\cs_generate_variant:Nn \@@_chapter_no_toc:n { V } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_chapter_header:n} +% 单页模式下,目录、摘要、符号表等的页眉中间为相应标题,左右为空。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_chapter_header:n #1 + { + \bool_if:NTF \g_@@_twoside_bool + { \markboth {#1} {#1} } + { + \markboth { } { } + \tl_gset:Nn \l_@@_header_center_mark_tl {#1} + } + } +% \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_libertinus_sans:n} +% \opt{libertinus} 阳文无衬线版。符号排列与普通版相同。 +% \begin{macrocode} +\cs_new_eq:NN \@@_fn_symbol_libertinus_sans:n + \@@_fn_symbol_libertinus:n +% \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_sans: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} 宏包。 +% 不再使用悬挂缩进。} +% 重定义内部脚注文字命令,使脚注编号不使用上标,宽度为 \SI{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} +% 定义新的定理环境。 +% \begin{macrocode} +\RenewDocumentCommand \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}{改为可完全展开的命令。} +% 重定义图表编号。 +% \begin{macrocode} +\cs_set:Npn \thefigure + { \@@_arabic:n { chapter } - \@@_arabic:n { figure } } +\cs_set:Npn \thetable + { \@@_arabic:n { chapter } - \@@_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_instructors_clist, +% \l_@@_info_keywords_clist} +% 封面所需的一些字段。 +% \begin{macrocode} +\clist_map_inline:nn + { + title, date, author, supervisor, department, major, student_id, + school_id, clc + } + { \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_int} +% 学位类型。1 为学术学位,2 为专业学位。 +% \begin{macrocode} +\int_new:N \l_@@_info_degree_type_int +% \end{macrocode} +% \end{variable} +% +% 定义 |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 } + { \int_set_eq:NN \l_@@_info_degree_type_int \l_keys_choice_int }, +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{info/title,info/title*} +% 论文题目。以下带星号的项目均表示相应的英文字段。 +% \begin{macrocode} + title .tl_set:N = \l_@@_info_title_tl, + title* .tl_set:N = \l_@@_info_title_en_tl, +% \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} +% +% \begin{macro}{info/clc} +% 中图分类号。 +% \begin{macrocode} + clc .tl_set:N = \l_@@_info_clc_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_@@_secret_bool} +% 是否显示密级。 +% \begin{macrocode} +\bool_new:N \l_@@_secret_bool +% \end{macrocode} +% \end{variable} +% +% \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 } + { + \int_compare:nTF { \l_keys_choice_int >= 2 } + { + \bool_set_true:N \l_@@_secret_bool + \tl_set:Nn \l_@@_info_secret_level_tl + { + \clist_item:Nn \c_@@_secret_clist + { \l_keys_choice_int - 1 } + } + } + { \bool_set_false:N \l_@@_secret_bool } + }, + 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} +% 分散对齐的水平盒子。 +% \begin{arguments} +% \item 宽度 +% \item 内容 +% \end{arguments} +% 利用 \cs{tl_map_inline:nn} 在字符间插入 \tn{hfil};紧随其后的 \tn{unskip} +% 将会去掉最后一个 \tn{hfil}。见 \url{https://tex.stackexchange.com/q/169689}。 +% |#2| 需要完全展开以避免 underfull 警告。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_spread_box:nn #1#2 + { + \mode_leave_vertical: + \hbox_to_wd:nn {#1} + { \tl_map_inline:xn {#2} { ##1 \hfil } \unskip } + } +% \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}{\@@_get_max_text_width:NN} +% \changes{v0.6}{2017/11/24}{移除不必要的字号设置。} +% 获取多个文本中的最大宽度,并存入 |dim| 型变量。 +% \begin{arguments} +% \item |dim| 型变量 +% \item 文本 |clist| +% \end{arguments} +% 当 \cs{l_@@_tmpa_clist} 非空时,弹出最后一个元素 +% 赋给 \cs{l_@@_tmpa_tl},获取其长度后与 |#1| 进行比较, +% 二者中较大的那一个将成为 |#1| 的新值。 +% 不断循环,直至 \cs{l_@@_tmpa_clist} 为空。 +% \begin{macrocode} +\cs_new:Npn \@@_get_max_text_width:NN #1#2 + { +% \end{macrocode} +% 这里用 |group| 确保局部变量不会被污染。 +% \begin{macrocode} + \group_begin: + \clist_set_eq:NN \l_@@_tmpa_clist #2 + \bool_until_do:nn { \clist_if_empty_p:N \l_@@_tmpa_clist } + { + \clist_pop:NN \l_@@_tmpa_clist \l_@@_tmpa_tl + \@@_get_text_width:NV \l_@@_tmpa_dim \l_@@_tmpa_tl + \dim_gset:Nn #1 { \dim_max:nn {#1} { \l_@@_tmpa_dim } } + } + \group_end: + } +% \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_aux:n} +% 右上角的学校代码和学号。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_cover_id: + { + \@@_fixed_width_box:nn { 120 pt } + { + \bool_if:NT \l_@@_secret_bool + { + \group_begin: + \sffamily + \@@_cover_id_aux:n { secret_level } + \c_@@_name_secret_star_tl + \l_@@_info_secret_year_tl + \group_end: + \par + } + \@@_cover_id_aux:n { school_id } \par + \@@_cover_id_aux:n { student_id } + } +% \end{macrocode} +% 插入一个宽度为负的水平盒子以减少右侧边距。 +% \begin{macrocode} + \hbox_to_wd:nn { -24 pt } { } + } +\cs_new:Npn \@@_cover_id_aux:n #1 + { + \tl_use:c { c_@@_name_ #1 _tl } + \c_@@_fwid_colon_tl + \tl_use:c { l_@@_info_ #1 _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: + { + \tl_set:Nx \l_@@_tmpa_tl + { + \clist_item:Nn \c_@@_thesis_type_clist + { \g_@@_thesis_type_int } + } + \@@_spread_box:nn { 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: + { + \int_compare:nT { \g_@@_thesis_type_int != 3 } + { + \c_@@_fwid_left_paren_tl + \clist_item:Nn \c_@@_degree_type_clist + { \l_@@_info_degree_type_int } + \c_@@_fwid_right_paren_tl + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_cover_info:} +% 信息栏。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_cover_info: + { + \begin{minipage} [ c ] { \textwidth } + \centering \zihao { 4 } +% \end{macrocode} +% 读取左侧名称字段。 +% \begin{macrocode} + \clist_set:Nx \l_@@_tmpa_clist + { + \c_@@_name_department_tl, + \c_@@_name_major_tl, + \c_@@_name_author_tl, + \c_@@_name_supervisor_tl, + \c_@@_name_date_tl, + } +% \end{macrocode} +% 设置信息栏右侧宽度。读取各字段,并将最宽者的宽度赋给 +% \cs{l_@@_tmpb_dim}。 +% \begin{macrocode} + \clist_set:Nx \l_@@_tmpb_clist + { + { \l_@@_info_department_tl }, + { \l_@@_info_major_tl }, + { \l_@@_info_author_tl }, + { \l_@@_info_supervisor_tl }, + { \l_@@_info_date_tl } + } + \@@_get_max_text_width:NN \l_@@_tmpb_dim \l_@@_tmpb_clist +% \end{macrocode} +% 用循环输出各字段。 +% \begin{macrocode} + \bool_until_do:nn + { \clist_if_empty_p:N \l_@@_tmpa_clist } + { + \clist_pop:NN \l_@@_tmpa_clist \l_@@_tmpa_tl + \clist_pop:NN \l_@@_tmpb_clist \l_@@_tmpb_tl + \@@_spread_box:nn { 6 em } { \l_@@_tmpa_tl } + \c_@@_fwid_colon_tl + \@@_center_box:Vn \l_@@_tmpb_dim { \l_@@_tmpb_tl } + \skip_vertical:n { 1 ex } + } + \end{minipage} + } +% \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{绘制封面} +% +% \begin{macro}{\makecoveri,\makecoverii,\makecoveriii} +% 使用实例(instance)构建封一、封二、封三。 +% \begin{macrocode} +\NewDocumentCommand \makecoveri { } + { + \thispagestyle { empty } + \UseInstance { fdu / cover } { cover-i-default } + } +\NewDocumentCommand \makecoverii { } + { + \thispagestyle { empty } + \UseInstance { fdu / cover } { cover-ii-default } + } +\NewDocumentCommand \makecoveriii { } + { + \cleardoublepage + \thispagestyle { empty } + \UseInstance { fdu / cover } { cover-iii-default } + } +% \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 } + { +% 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 } + { +% format = \@@_line_spread:N \c_@@_line_spread_fp, + title / content = + \@@_spread_box:nn { 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 = +% \@@_line_spread:n { 1.8 }, +% \@@_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 } \sffamily, + authorization-decl-name / format = + \@@_line_spread:n { 1.2 } \zihao { -2 } \sffamily, + 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{macro}{style/auto-make-cover} +% \begin{variable}{\l_@@_auto_make_cover_bool} +% 是否自动生成封面。 +% \begin{macrocode} +\bool_new:N \l_@@_auto_make_cover_bool +\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{variable} +% \end{macro} +% +% 在 \env{document} 开始位置添加封面以及指导小组成员名单。 +% \begin{macrocode} +\AtBeginDocument + { + \bool_if:NT \l_@@_auto_make_cover_bool + { + \begin{titlepage} + \makecoveri \newpage \makecoverii + \end{titlepage} + } + } +% \end{macrocode} +% +% 在 \env{document} 结束位置添加声明页。 +% \begin{macrocode} +\AtEndDocument + { \bool_if:NT \l_@@_auto_make_cover_bool { \makecoveriii } } +% \end{macrocode} +% +% \subsection{目录} +% +% 设置目录标题。 +% \begin{macrocode} +\keys_set:nn { ctex } + { +% contentsname = \c_@@_name_toc_tl, +% contentsname = \c_@@_name_toc_en_tl, +% \end{macrocode} +% +% 设置目录中章节标题的样式。 +% \begin{macrocode} + chapter / tocline = + { +% \normalfont \sffamily +% \bfseries + \CTEXnumberline {#1} #2 + }, + section / tocline = + { +% \bfseries + \CTEXnumberline {#1} #2 + }, + subsection / tocline = + { +% \fdu@kai + \CTEXnumberline {#1} #2 + } + } +% \end{macrocode} +% +% \begin{macro}{\tableofcontents} +% 修改 \cs{tableofcontents} 的定义,使得页眉正确显示,并出现在目录中。原代码 +% 来自于 \LaTeXe{} 标准文档类 \file{book.cls}。 +% \begin{macrocode} +\@@_patch_cmd:Nnn \tableofcontents + { + \chapter*{\contentsname + \@mkboth{% + \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}% + } + { \@@_chapter_no_toc:V \contentsname } +% \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 + } +% +% \end{macrocode} +% \end{macro} +% +% \subsection{摘要} +% +% \begin{environment}{abstract} +% \begin{environment}{abstract*} +% \changes{v0.7}{2018/03/05}{整理代码。} +% 摘要环境。在中文模板定义了中英文双语摘要,但在英文模板中则没有 +% 定义中文摘要。 +% \begin{macrocode} +\NewDocumentEnvironment { abstract } { } +% { \@@_abstract_begin: } { \@@_abstract_end: } +% { \@@_abstract_en_begin: } { \@@_abstract_en_end: } +%<*class> +\NewDocumentEnvironment { abstract* } { } + { \@@_abstract_en_begin: } { \@@_abstract_en_end: } +% +% \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 } +% +\cs_new_protected:Npn \@@_abstract_en_begin: + { \@@_chapter:V \c_@@_name_abstract_en_tl } +% \end{macrocode} +% \end{macro} +% +% \changes{v0.7d}{2019/03/28}{优化关键字列表的显示。} +% +% \begin{macro}{\@@_abstract_end:,\@@_abstract_en_end:} +% 摘要正文完成后,输出关键字列表和中图分类号(CLC)。 +% \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 } + \@@_clc:nn + { \sffamily \c_@@_name_clc_tl \c_@@_fwid_colon_tl } + { \l_@@_info_clc_tl } + } +% +\cs_new_protected:Npn \@@_abstract_en_end: + { + \@@_keywords:nNn + { \bfseries \c_@@_name_keywords_en_tl \@@_quad: } + \l_@@_info_keywords_en_clist { ; ~ } + \@@_clc:nn + { \bfseries \c_@@_name_clc_en_tl \@@_quad: } + { \l_@@_info_clc_tl } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_keywords:nNn,\@@_keywords_prevdepth:,\@@_clc:nn} +% 关键字列表前要空一行,使用悬挂缩进;中图分类号不缩进。|\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: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: + { +% \@@_chapter:V \c_@@_name_notation_tl +% \@@_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: + { +% \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.6}{2017/10/27}{支持 \BibTeX{},以实现参考文献的著录 +% 与引用。} +% \changes{v0.7}{2018/01/25}{支持 \biber{} 与 \pkg{biblatex}。} +% +% \begin{variable}{\l_@@_bibtex_bool} +% 是否使用 \BibTeX{} 作为参考文献处理程序。若为否,则使用 +% \pkg{biblatex}/\biber{}。 +% \begin{macrocode} +\bool_new:N \l_@@_bibtex_bool +% \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_tl} +% 保存参考文献数据库列表。 +% \begin{macrocode} +\tl_new:N \l_@@_bib_resource_tl +% \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} 选项。} +% +% \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 = + { \bool_set_true:N \l_@@_bibtex_bool }, + bib-backend / biblatex .code:n = + { \bool_set_false:N \l_@@_bibtex_bool }, +% \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 }, +% \end{macrocode} +% \end{macro} +% \begin{macro}{style/cite-style} +% 引用样式。 +% \begin{macrocode} + cite-style .code:n = + { + \bool_if:NTF \l_@@_bibtex_bool + { \@@_warning:n { cite-style-not-available } } + { \tl_set:Nn \l_@@_cite_style_tl {#1} } + }, +% \end{macrocode} +% \end{macro} +% \begin{macro}{style/bib-resource} +% 参考文献数据源。 +% \begin{macrocode} + bib-resource .tl_set:N = \l_@@_bib_resource_tl + } +\@@_msg_new:nn { cite-style-not-available } + { Option~ "cite-style"~ is~ not~ available~ in~ BibTeX. } +% \end{macrocode} +% \end{macro} +% +% 为了保证导言区中的设置能起作用,\pkg{natbib} 或 \pkg{biblatex} 宏包均需要在 +% 导言区末尾载入(仍在 \pkg{hyperref} 之前),并做相关设置。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \bool_if:NTF \l_@@_bibtex_bool + { + \RequirePackage [ sort & compress ] { natbib } + \@@_bibtex_setup: + } + { + \@@_biblatex_pre_setup: + \RequirePackage { biblatex } + \@@_biblatex_post_setup: + } + } +% \end{macrocode} +% +% \changes{v0.7}{2018/01/25}{统一使用 \cs{printbibliography} 命令 +% 生成参考文献列表。} +% \changes{v0.7d}{2019/03/23}{使参考文献在目录中正常显示。} +% +% \begin{macro}{\@@_bibtex_setup:,\bibsection,\printbibliography} +% \BibTeX{} 相关设置。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_bibtex_setup: + { + \tl_if_empty:NTF \l_@@_bib_style_tl + { + \tl_if_eq:VnTF \l_@@_bib_gb_style_tl { numerical } + { + \bibliographystyle { gbt7714-unsrt } + \@@_set_cite_style_numerical: + } + { + \tl_if_eq:VnT \l_@@_bib_gb_style_tl { author-year } + { + \bibliographystyle { gbt7714-plain } + \@@_set_cite_style_author_year: + \cs_set_eq:NN \cite \citep + } + } + } + { \exp_args:NV \bibliographystyle \l_@@_bib_style_tl } +% \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_tl + \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:, +% \@@_pass_options_to_biblatex:n} +% \pkg{biblatex} 相关设置。 +% \begin{macrocode} +\cs_new_protected:Npn \@@_biblatex_pre_setup: + { +% \end{macrocode} +% 参考文献样式。 +% \begin{macrocode} + \tl_if_empty:NTF \l_@@_bib_style_tl + { + \tl_if_eq:VnTF \l_@@_bib_gb_style_tl { numerical } + { \@@_pass_options_to_biblatex:n { style = gb7714-2015 } } + { + \tl_if_eq:VnT \l_@@_bib_gb_style_tl { author-year } + { \@@_pass_options_to_biblatex:n { style = gb7714-2015ay } } + } + } + { \@@_pass_options_to_biblatex:n { style = \l_@@_bib_style_tl } } +% \end{macrocode} +% 引用样式。 +% \begin{macrocode} + \tl_if_empty:NF \l_@@_cite_style_tl + { \@@_pass_options_to_biblatex:n { citestyle = \l_@@_bib_style_tl } } + \@@_pass_options_to_biblatex:n { backend = biber, hyperref = manual, natbib } + } +\cs_new_protected:Npn \@@_biblatex_post_setup: + { + \exp_args:NV \addbibresource \l_@@_bib_resource_tl + \@@_biblatex_allow_url_break: +% \end{macrocode} +% 修改参考文献标题。 +% \begin{macrocode} + \defbibheading { bibliography } [ \bibname ] { \@@_chapter:n {##1} } +%<*class-en> + \exp_args:Nnx \DefineBibliographyStrings { english } + { bibliography = { \c_@@_name_bib_en_tl } } +% + } +\cs_new_protected:Npn \@@_pass_options_to_biblatex:n #1 + { \PassOptionsToPackage {#1} { biblatex } } +% \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}{\@@_set_cite_style_numerical:} +% 顺序编码制下的引用样式。 +% \begin{macrocode} +\cs_new:Npn \@@_set_cite_style_numerical: + { + \NAT@numberstrue \NAT@supertrue + \cs_set:Npn \NAT@open { [ } + \cs_set:Npn \NAT@close { ] } + \cs_set:Npn \NAT@sep { ,~ } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_set_cite_style_author_year:} +% 著者—出版年制下的引用样式。 +% \begin{macrocode} +\cs_new:Npn \@@_set_cite_style_author_year: + { + \NAT@numbersfalse +%<*class> + \cs_set_eq:NN \NAT@open \c_@@_fwid_left_paren_tl + \cs_set_eq:NN \NAT@close \c_@@_fwid_right_paren_tl + \cs_set_eq:NN \NAT@sep \c_@@_fwid_semicolon_tl + \cs_set_eq:NN \NAT@aysep \c_@@_fwid_comma_tl + \cs_set_eq:NN \NAT@yrsep \c_@@_ideo_comma_tl +% + } +% \end{macrocode} +% \end{macro} +% +% \changes{v0.7}{2018/01/25}{同步 \pkg{gbt7714} v1.0,移除有关超链接 +% 的额外设置。} +% +% \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,\fdu_hyperref_setup:n} +% \pkg{hyperref} 宏包是在导言区之后才引入的。若要在导言区中使用 +% \tn{hypersetup} 命令,必须另行定义。 +% \begin{macrocode} +\NewDocumentCommand \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} +% +% \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} +% 超链接样式。 +% \begin{macrocode} + hyperlink .choice:, + hyperlink .value_required:n = true, + hyperlink / border .code:n = { }, + hyperlink / color .code:n = + { \fdu_hyperref_setup:n { colorlinks = true } }, + hyperlink / none .code:n = + { \fdu_hyperref_setup:n { hidelinks = true } }, +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{style/hyperlink-color} +% 超链接颜色。 +% \begin{macrocode} + hyperlink-color .choice:, + hyperlink-color .value_required:n = true, + \clist_map_function:nN + { + { autumn, D70000, D75F00, AF8700 }, + { business, D14542, 295497, 1F6E43 }, + { classic, FF0000, 0000FF, 00FF00 }, + { default, 990000, 0000B2, 007F00 }, + { elegant, 961212, C31818, 9B764F }, + { fantasy, FF4A19, FF3F94, 934BA1 }, + { material, E91E63, 009688, 4CAF50 }, + { science, CA0619, 389F9D, FF8920 }, + { summer, 00AFAF, 5F5FAF, 5F8700 }, + { 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} +% +% 在导言区末尾引入 \pkg{hyperref} 宏包。 +% \begin{macrocode} +\ctex_at_end_preamble:n + { + \RequirePackage { hyperref } +% \end{macrocode} +% 此后 \tn{hypersetup} 命令由 \pkg{hyperref} 宏包接管。 +% \begin{macrocode} + \hypersetup + { + bookmarksnumbered = true, +% \end{macrocode} +% 填写 PDF 元信息。 +% \begin{macrocode} +%<*class> + pdftitle = \l_@@_info_title_tl, + pdfauthor = \l_@@_info_author_tl, + pdfkeywords = \l_@@_info_keywords_clist, +% +%<*class-en> + pdftitle = \l_@@_info_title_en_tl, + pdfauthor = \l_@@_info_author_en_tl, + pdfkeywords = \l_@@_info_keywords_en_clist, +% +% 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{biblatex} 的 \pkg{hyperref} 支持。 +% \begin{macrocode} + \bool_if:NF \l_@@_bibtex_bool { \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, +% style / cjk-font = fandol, + style / font-size = -4, +% 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 }, +% theorem / header-font = { \sffamily }, +% theorem / header-font = { \bfseries \upshape }, +% theorem / body-font = { \fdu@kai }, +% 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-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 } +% +% +% \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 & \symbol{"3001} & U+3001 \\ +% 中文句号 & Ideographic full stop & \symbol{"3002} & U+3002 \\ +% 中文逗号 & Fullwidth comma & \symbol{"FF0C} & U+FF0C \\ +% 全角西文句点 & Fullwidth full stop & \symbol{"FF0E} & U+FF0E \\ +% 中文冒号 & Fullwidth colon & \symbol{"FF1A} & U+FF1A \\ +% 中文分号 & Fullwidth semicolon & \symbol{"FF1B} & U+FF1B \\ +% 中文左圆括号 & Fullwidth left parenthesis & \symbol{"FF08} & U+FF08 \\ +% 中文右圆括号 & Fullwidth right parenthesis & \symbol{"FF09} & U+FF09 \\ +% \bottomrule +% \end{tabular} +% \end{table} +% +% \begin{variable}{\c_@@_line_spread_fp} +% 行距倍数。行距倍数 $k$ 由下式确定: +% \begin{equation*} +% \num{1.2} \times k \times \SI{12}{bp} = \SI{20}{pt}. +% \end{equation*} +% 式中,\num{1.2} 是基本行距与文字大小之比,\SI{12}{bp} 是小四号字 +% 的大小,\SI{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_clist, +% \c_@@_degree_type_clist} +% 论文类型与学位类型。 +% \begin{macrocode} +\clist_const:Nn \c_@@_thesis_type_clist + { 博士学位论文, 硕士学位论文, 本科毕业论文 } +\clist_const:Nn \c_@@_degree_type_clist + { 学术学位, 专业学位 } +% \end{macrocode} +% \end{variable} +% +% \begin{variable}{\c_@@_secret_clist} +% 三种密级。 +% \begin{macrocode} +\clist_const:Nn \c_@@_secret_clist { 秘密, 机密, 绝密 } +% \end{macrocode} +% \end{variable} +% +% 默认名称。注意空格是忽略掉的。 +% \begin{macrocode} +\clist_map_inline:nn + { + { secret_level } { 密 \qquad 级 }, + { secret_star } { \textrm { \bigstar } }, + { school_id } { 学校代码 }, + { student_id } { 学 \qquad 号 }, + { department } { 院系 }, + { major } { 专业 }, + { author } { 姓名 }, + { supervisor } { 指导教师 }, + { date } { 完成日期 }, + { instructors } { 指导小组成员 }, + { author_sign } { 作者签名 }, + { supervisor_sign } { 导师签名 }, + { sign_date } { 日期 }, + { 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~ number: }, + { toc } { 目 \quad 录 } { Contents }, + { notation } { 符号表 } { List~ of~ Symbols } + } + { \@@_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} +% +% \clearpage +% +% \end{implementation} +% diff --git a/macros/latex/contrib/fduthesis/fduthesis.pdf b/macros/latex/contrib/fduthesis/fduthesis.pdf new file mode 100644 index 0000000000..d3662983bf Binary files /dev/null and b/macros/latex/contrib/fduthesis/fduthesis.pdf differ diff --git a/macros/latex/contrib/fduthesis/fudan-emblem-new.pdf b/macros/latex/contrib/fduthesis/fudan-emblem-new.pdf new file mode 100644 index 0000000000..06b96ca017 Binary files /dev/null and b/macros/latex/contrib/fduthesis/fudan-emblem-new.pdf differ diff --git a/macros/latex/contrib/fduthesis/fudan-emblem.pdf b/macros/latex/contrib/fduthesis/fudan-emblem.pdf new file mode 100644 index 0000000000..748fdccebb Binary files /dev/null and b/macros/latex/contrib/fduthesis/fudan-emblem.pdf differ diff --git a/macros/latex/contrib/fduthesis/fudan-name.pdf b/macros/latex/contrib/fduthesis/fudan-name.pdf new file mode 100644 index 0000000000..b2a28de6ad Binary files /dev/null and b/macros/latex/contrib/fduthesis/fudan-name.pdf differ -- cgit v1.2.3