├── test ├── wug.png ├── name.png ├── test.png ├── test-xetex-graduate.tex ├── test-xetex-undergraduate.tex ├── test-luatex.tex ├── test-xetex-graduate-nlcover.tex ├── chapters │ ├── Achievements.tex │ ├── Bibliography.tex │ ├── Mathematics.tex │ ├── FigAndTab.tex │ ├── Standard.tex │ └── Specific.tex ├── test.bib └── test.tex ├── docs ├── nju-name.pdf ├── nju-emblem.pdf ├── nju-name-purple.pdf ├── nju-emblem-purple.pdf ├── njuthesis-sample.bib ├── njuthesis-sample.tex └── njuthesis-setup.def ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── 2-feat_request.yaml │ └── 1-bug_report.yaml ├── workflows │ ├── texlive.profile │ ├── build.yml │ └── release.yml └── CODE_OF_CONDUCT.md ├── scripts ├── generate-img.sh ├── generate-img.bat ├── download.sh ├── generate-img.tex ├── file_parser.py └── main.py ├── .editorconfig ├── install-unix.sh ├── install-win.bat ├── source └── latexmkrc ├── README-CTAN.md ├── .vscode └── settings.json ├── README.md ├── .gitignore ├── CHANGELOG.md ├── LICENSE └── conf.txsprofile /test/wug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/test/wug.png -------------------------------------------------------------------------------- /test/name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/test/name.png -------------------------------------------------------------------------------- /test/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/test/test.png -------------------------------------------------------------------------------- /docs/nju-name.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/docs/nju-name.pdf -------------------------------------------------------------------------------- /docs/nju-emblem.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/docs/nju-emblem.pdf -------------------------------------------------------------------------------- /docs/nju-name-purple.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/docs/nju-name-purple.pdf -------------------------------------------------------------------------------- /docs/nju-emblem-purple.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nju-lug/NJUThesis/HEAD/docs/nju-emblem-purple.pdf -------------------------------------------------------------------------------- /test/test-xetex-graduate.tex: -------------------------------------------------------------------------------- 1 | \def\TEST{} 2 | \documentclass[type=master,decl-page]{njuthesis} 3 | \input{test.tex} 4 | -------------------------------------------------------------------------------- /test/test-xetex-undergraduate.tex: -------------------------------------------------------------------------------- 1 | \def\TEST{} 2 | \documentclass[decl-page,oneside]{njuthesis} 3 | \input{test.tex} 4 | -------------------------------------------------------------------------------- /test/test-luatex.tex: -------------------------------------------------------------------------------- 1 | \def\TEST{} 2 | \documentclass{njuthesis} 3 | \njusetup{bib/style=author-year} 4 | \input{test.tex} 5 | -------------------------------------------------------------------------------- /test/test-xetex-graduate-nlcover.tex: -------------------------------------------------------------------------------- 1 | \def\TEST{} 2 | \documentclass[type=doctor,nl-cover]{njuthesis} 3 | \input{test.tex} 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: 讨论 4 | url: https://github.com/nju-lug/NJUThesis/discussions/new 5 | about: 使用上的疑惑可以发在论坛哦 6 | -------------------------------------------------------------------------------- /scripts/generate-img.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | pdflatex --shell-escape generate-img 4 | rm generate-img.pdf 5 | rm *.aux 6 | rm *.auxlock 7 | rm *.dpth 8 | rm *.log 9 | rm *.md5 10 | -------------------------------------------------------------------------------- /scripts/generate-img.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pdflatex --shell-escape generate-img 4 | DEL "generate-img.pdf" 5 | DEL "*.aux" 6 | DEL "*.auxlock" 7 | DEL "*.dpth" 8 | DEL "*.log" 9 | DEL "*.md5" 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_style = space 9 | 10 | [*.{dtx,tex,bib,def}] 11 | indent_size = 2 12 | -------------------------------------------------------------------------------- /test/chapters/Achievements.tex: -------------------------------------------------------------------------------- 1 | \njuchapter{攻读博士学位期间研究成果及参与项目情况} 2 | 3 | \njupaperlist[攻读博士学位期间发表的学术论文]{Nemec1997-209-214,Chiani1998-2998-3008,Chiani1998a} 4 | 5 | \section*{攻读博士学位期间参与的科研课题} 6 | 7 | \begin{enumerate}[label=\arabic*., labelindent=0em, leftmargin=*] 8 | \item 2020.1-2023.12, 国家自然科学基金, 12345678, 这是项目名称, 负责人: 老板1, 60 万. 9 | \item 2020.1-2022.12, 国家自然科学基金, 23456789, 这是项目名称, 负责人: 老板2, 25 万. 10 | \item 2020.1-2023.12, 国家自然科学基金, 34567890, 这是项目名称, 负责人: 老板3, 66 万. 11 | \end{enumerate} 12 | -------------------------------------------------------------------------------- /scripts/download.sh: -------------------------------------------------------------------------------- 1 | # https://github.com/stone-zeng/tl-depend-analysis/ 2 | 3 | if [ -z "$1" ]; then 4 | MIRROR=https://mirror.ctan.org 5 | else 6 | MIRROR=$1 7 | fi 8 | 9 | curl -o texlive.tlpdb $MIRROR/systems/texlive/tlnet/tlpkg/texlive.tlpdb 10 | curl -o texlive.tlpdb.sha512 $MIRROR/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 11 | sha512sum -c texlive.tlpdb.sha512 12 | rm texlive.tlpdb.sha512 13 | 14 | if [ ! -d data ]; then 15 | mkdir data 16 | fi 17 | 18 | mv texlive.tlpdb data/ 19 | -------------------------------------------------------------------------------- /install-unix.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | 3 | mkdir -p mythesis 4 | cd mythesis 5 | 6 | cp -f ../docs/njuthesis-sample.tex . 7 | cp -f ../docs/njuthesis-sample.bib . 8 | cp -f ../docs/njuthesis-setup.def . 9 | cp -f ../docs/nju-emblem*.pdf . 10 | cp -f ../docs/nju-name*.pdf . 11 | cp -f ../source/njuthesis.dtx . 12 | 13 | xetex njuthesis.dtx > /dev/null 14 | 15 | rm *.dtx 16 | rm *.ins 17 | rm *.log 18 | rm njuthesis-doc.cls 19 | 20 | cd .. 21 | -------------------------------------------------------------------------------- /.github/workflows/texlive.profile: -------------------------------------------------------------------------------- 1 | # From latex3 2 | # https://github.com/latex3/latex3/blob/main/support/texlive.profile 3 | 4 | selected_scheme scheme-infraonly 5 | TEXDIR /tmp/texlive 6 | TEXMFSYSCONFIG /tmp/texlive/texmf-config 7 | TEXMFSYSVAR /tmp/texlive/texmf-var 8 | TEXMFLOCAL /tmp/texlive/texmf-local 9 | TEXMFHOME ~/texmf 10 | TEXMFCONFIG ~/.texlive/texmf-config 11 | TEXMFVAR ~/.texlive/texmf-var 12 | option_doc 0 13 | option_src 0 14 | tlpdbopt_autobackup 0 15 | -------------------------------------------------------------------------------- /docs/njuthesis-sample.bib: -------------------------------------------------------------------------------- 1 | @article{preskill2018, 2 | title = {Quantum {{Computing}} in the {{NISQ}} Era and Beyond}, 3 | author = {Preskill, John}, 4 | author+an = {1=thesisauthor}, 5 | date = {2018-08-06}, 6 | journaltitle = {Quantum}, 7 | volume = {2}, 8 | pages = {79}, 9 | publisher = {{Verein zur Förderung des Open Access Publizierens in den Quantenwissenschaften}}, 10 | doi = {10.22331/q-2018-08-06-79}, 11 | url = {https://quantum-journal.org/papers/q-2018-08-06-79/}, 12 | urldate = {2022-10-27}, 13 | langid = {british} 14 | } 15 | -------------------------------------------------------------------------------- /install-win.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | MKDIR "mythesis" 4 | CD "mythesis" 5 | 6 | COPY /Y "..\docs\njuthesis-sample.tex" . 7 | COPY /Y "..\docs\njuthesis-sample.bib" . 8 | COPY /Y "..\docs\njuthesis-setup.def" . 9 | COPY /Y "..\docs\nju-emblem*.pdf" . 10 | COPY /Y "..\docs\nju-name*.pdf" . 11 | COPY /Y "..\source\njuthesis.dtx" . 12 | 13 | xetex "njuthesis.dtx" > NUL 14 | 15 | DEL "*.dtx" 16 | DEL "*.ins" 17 | DEL "*.log" 18 | DEL "njuthesis-doc.cls" 19 | 20 | CD .. 21 | -------------------------------------------------------------------------------- /scripts/generate-img.tex: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % 本文件用于生成校徽和校名图片 3 | % 编译命令为 pdflatex --shell-escape generate-img 4 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 | \documentclass{article} 6 | \usepackage{njuvisual} 7 | \usetikzlibrary{external} 8 | \tikzexternalize[prefix=nju-] 9 | \begin{document} 10 | % 黑色 11 | \tikzsetnextfilename{emblem} \njuemblem[black]{!}{!} 12 | \tikzsetnextfilename{name} \njuname [black]{!}{!} 13 | % 紫色 14 | \tikzsetnextfilename{emblem-purple} \njuemblem[njupurple]{!}{!} 15 | \tikzsetnextfilename{name-purple} \njuname [njupurple]{!}{!} 16 | \end{document} 17 | -------------------------------------------------------------------------------- /test/chapters/Bibliography.tex: -------------------------------------------------------------------------------- 1 | \chapter{引用参考文献} 2 | \label{chap:bibliography} 3 | 4 | \section{引用命令} 5 | 6 | 顺序编码制的 \cite{qiujinhengetal2010,njuthesis,riedl2009quasi}(上标可设置页码)、\parencite{qiujinhengetal2010}(非上标可设置页码)、\pagescite{qiujinhengetal2010}(上 7 | 标加自动页码)、\textcite{qiujinhengetal2010}(提供作者为主语加非上标编号)、\authornumcite{qiujinhengetal2010}(提供作 8 | 者为主语加上标编号)、\footfullcite{qiujinhengetal2010}(脚注方式) 9 | 10 | 著者-年份制的\cite{qiujinhengetal2010,njuthesis,riedl2009quasi}(作者加年份用 11 | 括号包围可设置页码)、\pagescite{qiujinhengetal2010}(作者加年份用括号包围自动页码)、\yearcite{qiujinhengetal2010}(提供 12 | 年份用括号包围)、\yearpagescite{qiujinhengetal2010}(提供年份用括号包围自动页码)、\textcite{qiujinhengetal2010}(提供主 13 | 语作者加括号包围年份)、\footfullcite{qiujinhengetal2010}(脚注方式)。 14 | -------------------------------------------------------------------------------- /source/latexmkrc: -------------------------------------------------------------------------------- 1 | # Latexmk configuration file for njuthesis documentation. 2 | # vim: set ft=perl: 3 | 4 | # Use XeLaTeX to compile. 5 | $pdf_mode = 5; 6 | $xelatex = "xelatex -shell-escape -file-line-error -halt-on-error -interaction=nonstopmode -no-pdf -synctex=1 %O %S"; 7 | $xdvipdfmx = "xdvipdfmx -q -E -o %D %O %S"; 8 | 9 | $bibtex_use = 1.5; 10 | 11 | # Clean auxiliary files . 12 | $clean_ext = "hd loe ptc run.xml synctex.gz thm xdv"; 13 | 14 | # Process index. 15 | $makeindex = "makeindex %O -s gind.ist -o %D %S"; 16 | add_cus_dep('glo','gls',0,'makeindex'); 17 | sub makeindex { 18 | if ( $silent ) { 19 | system( "makeindex -q -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"" ); 20 | } 21 | else { 22 | system( "makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\"" ); 23 | }; 24 | } 25 | $makeindex_silent_switch = "-q"; 26 | 27 | # Show CPU time used. 28 | $show_time = 1; 29 | -------------------------------------------------------------------------------- /README-CTAN.md: -------------------------------------------------------------------------------- 1 | The `njuthesis` class 2 | ===================== 3 | 4 | The `njuthesis` class is intended for typesetting Nanjing University 5 | dissertations with LaTeX, providing support for bachelor, master, 6 | doctoral thesis and postdoctoral report. Compilation of this class 7 | requires either `xelatex` or `lualatex` engine. 8 | 9 | Usage 10 | ----- 11 | 12 | A minimal example of this document class should look like 13 | 14 | ```LaTeX 15 | \documentclass{njuthesis} 16 | \njusetup{} 17 | \begin{document} 18 | \maketitle 19 | \tableofcontents 20 | \mainmatter 21 | \chapter{Welcome} 22 | Hello \LaTeX{}! 23 | \printbibliography 24 | \end{document} 25 | ``` 26 | 27 | Contributing 28 | ------------ 29 | 30 | [Issues](https://github.com/nju-lug/NJUThesis/issues) and 31 | [pull requests](https://github.com/nju-lug/NJUThesis/pulls) 32 | are always welcome. 33 | 34 | Wiki 35 | ---- 36 | 37 | Please see [Chinese wiki](https://github.com/nju-lug/NJUThesis/wiki). 38 | 39 | License 40 | ------- 41 | 42 | This work may be distributed and/or modified under the conditions of 43 | the [LaTeX Project Public License](http://www.latex-project.org/lppl.txt), 44 | either version 1.3c of this license or (at your option) any later 45 | version. 46 | 47 | ----- 48 | 49 | Copyright (C) 2021 - 2025 by NJU LUG. 50 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/2-feat_request.yaml: -------------------------------------------------------------------------------- 1 | name: 请求新功能 2 | description: 提出可以改进的要点 3 | title: "[Feature]: " 4 | labels: ["enhancement"] 5 | body: 6 | - type: checkboxes 7 | id: prerequisites 8 | attributes: 9 | label: 先决条件 10 | options: 11 | - label: |- 12 | 我已尝试更新模板版本 13 | required: true 14 | - label: |- 15 | 我已检索[模板手册](http://mirrors.ctan.org/macros/unicodetex/latex/njuthesis/njuthesis.pdf) 16 | required: true 17 | - label: |- 18 | 我已检索[项目 wiki](https://github.com/nju-lug/NJUThesis/wiki) 19 | required: true 20 | - label: |- 21 | 我已确认这个请求没有在[其他 issues](https://github.com/tuna/issues/issues)中提出过。 22 | required: true 23 | - type: textarea 24 | id: inconvenience 25 | attributes: 26 | label: 现有模板的不便之处 27 | placeholder: 你的请求是否来自于使用上有不好的体验?请简要进行描述。 28 | - type: textarea 29 | id: possible_solution 30 | attributes: 31 | label: 提出可能的解决方案 32 | placeholder: 你认为需要采取什么措施,或者你希望改进后将呈现出什么效果。 33 | validations: 34 | required: true 35 | - type: textarea 36 | id: considerations 37 | attributes: 38 | label: 提出考虑过的方案 39 | placeholder: 请描述你进行过的相关尝试。 40 | - type: textarea 41 | id: more_info 42 | attributes: 43 | label: 额外信息 44 | placeholder: 任何你认为有帮助的信息 45 | - type: markdown 46 | attributes: 47 | value: | 48 | 在提交这篇 issue 时,我们默认您服从我们的[行为准则](https://github.com/nju-lug/NJUThesis/blob/master/.github/CODE_OF_CONDUCT.md)。 49 | -------------------------------------------------------------------------------- /test/chapters/Mathematics.tex: -------------------------------------------------------------------------------- 1 | \chapter{数学公式与定理} 2 | 3 | \section{符号示例} 4 | 5 | Caligraphic letters: $\mathcal{A}$ 6 | 7 | Mathbb letters: $\mathbb{A}$ 8 | 9 | Mathfrak letters: $\mathfrak{A}$ 10 | 11 | Math Sans serif letters: $\mathsf{A}$ 12 | 13 | Math bold letters: $\mathbf{A},\symbf{A}$ 14 | 15 | Math bold italic letters: $\mathbi{A}$ 16 | 17 | \section{公式示例} 18 | 19 | % Thanks to github.com/YuanshengZhao/Garamond-Math 20 | 公式字体示例 21 | \[ 22 | \displaystyle \ointctrclockwise\mathcal{D}[x(t)]\sqrt{\frac{\displaystyle3\uppi^2-\sum_{q=0}^{\infty}(z+\hat L)^{q}\exp(\symrm{i}q^2 \hbar x)}{\displaystyle (\symsfup{Tr}\symbfcal{A})\left(\symbf\Lambda_{j_1j_2}^{i_1i_2}\Gamma_{i_1i_2}^{j_1j_2}\hookrightarrow\vec D\cdot \symbf P \right)}} 23 | =\underbrace{\widetilde{\left\langle \frac{\notin \emptyset}{\varpi\alpha_{k\uparrow}}\middle\vert \frac{\partial_\mu T_{\mu\nu}}{2}\right\rangle}}_{\mathrm{K}_3\mathrm{Fe}(\mathrm{CN})_6} ,\forall z \in \mathbb{R} 24 | \] 25 | 26 | 你可以使用\verb|equation|环境插入公式,如\cref{eq:dewitt} 27 | 28 | \begin{equation}\label{eq:dewitt} 29 | \int \mathrm{e}^{ax} \tanh {bx} \, \mathrm{d}x = 30 | \begin{dcases} 31 | \begin{multlined} 32 | \frac{\mathrm{e}^{(a+2b)x}}{(a + 2b)} \, 33 | {{}_2F_1} \left( 1 + \frac{a}{2b}, 1, 2+\frac{a}{2b}, -\mathrm{e}^{2bx} \right) \\ 34 | - \frac{1}{a} \mathrm{e}^{ax} \, {{}_2F_1} \left( 1, \frac{a}{2b}, 1 + \frac{a}{2b}, -\mathrm{e}^{2bx} \right) 35 | \end{multlined} 36 | & a \ne b \\ 37 | \frac{e^{ax} - 2 \tan^{-1}(\mathrm{e}^{ax})}{a} & a = b 38 | \end{dcases} 39 | \end{equation} 40 | 41 | \section{定理环境} 42 | 43 | \cref{pf:me1},\cref{pf:me1},\cref{def:others1},\cref{def:others1},\cref{thm:sleep} 44 | 45 | \begin{proof}\label{pf:me1} 46 | 证明我是我 47 | \end{proof} 48 | 49 | \begin{definition}[他人]\label{def:others1} 50 | 定义他人即地狱 51 | \end{definition} 52 | 53 | \begin{proof}\label{pf:me2} 54 | 证明我是我 55 | \end{proof} 56 | 57 | \begin{definition}[他人]\label{def:others2} 58 | 定义他人即地狱 59 | \end{definition} 60 | 61 | \begin{theorem}[睡觉]\label{thm:sleep} 62 | 管他呢先睡觉吧! 63 | \end{theorem} 64 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | pull_request: 9 | branches: 10 | - master 11 | 12 | env: 13 | CTAN_URL: https://mirrors.rit.edu/CTAN 14 | PACKAGES: latexmk cleveref enumitem footmisc tex-gyre xits biblatex-gb7714-2015 biber 15 | 16 | jobs: 17 | build-on-ubuntu: 18 | runs-on: ubuntu-latest 19 | if: "!startsWith(github.ref, 'refs/tags/v')" 20 | env: 21 | SET_PATH: | 22 | export PATH=/tmp/texlive/bin/x86_64-linux:$PATH 23 | steps: 24 | - name: Set up Git repository 25 | uses: actions/checkout@v4 26 | 27 | - name: Install TeX Live 28 | run: | 29 | ${{ env.SET_PATH }} 30 | wget ${{ env.CTAN_URL }}/systems/texlive/tlnet/install-tl-unx.tar.gz 31 | tar -xzf install-tl-unx.tar.gz 32 | cd install-tl-20* && ./install-tl --profile ../.github/workflows/texlive.profile 33 | 34 | - name: Install latest njuthesis 35 | run: | 36 | ${{ env.SET_PATH }} 37 | tlmgr option repository ${{ env.CTAN_URL }}/systems/texlive/tlnet/ 38 | tlmgr install xetex l3build 39 | l3build install 40 | cd scripts 41 | bash download.sh ${{ env.CTAN_URL }} 42 | cd data 43 | wget https://raw.githubusercontent.com/stone-zeng/tl-depend-analysis/data/data/tl-depend.json 44 | cd .. 45 | python3 main.py --pkg "${{ env.PACKAGES }}" --exclude "njuthesis-doc.cls" 46 | tlmgr update --self --all --no-auto-install 47 | 48 | - name: Compile test file 49 | run: | 50 | ${{ env.SET_PATH }} 51 | cd test 52 | latexmk -xelatex -halt-on-error test-xetex-undergraduate 53 | xelatex -halt-on-error test-xetex-graduate 54 | xelatex -halt-on-error test-xetex-graduate-nlcover 55 | # latexmk -lualatex -halt-on-error test-luatex 56 | 57 | - name: Upload CLS Files 58 | uses: actions/upload-artifact@v4 59 | with: 60 | name: "njuthesis-cls-${{ github.sha }}" 61 | path: | 62 | build/unpacked/njuthesis.cls 63 | build/unpacked/*.def 64 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | 2 | # 贡献者公约 3 | 4 | ## 我们的承诺 5 | 6 | 身为项目成员、贡献者、负责人,我们保证参与此社区的每个人都不受骚扰,不论其年龄、体型、身体条件、民族、性征、性别认同与表现、经验水平、教育程度、社会地位、国籍、相貌、种族、宗教信仰及性取向如何。 7 | 8 | 我们承诺致力于建设开放、友善、多元、包容、健康的社区环境。 9 | 10 | ## 我们的准则 11 | 12 | 有助于促进本社区积极环境的行为包括但不限于: 13 | 14 | * 与人为善、推己及人 15 | * 尊重不同的主张、观点和经历 16 | * 积极提出、耐心接受有益批评 17 | * 面对过失,承担责任、认真道歉、从中学习 18 | * 关注社区共同诉求,而非一己私利 19 | 20 | 不当行为包括但不限于: 21 | 22 | * 发布与性有关的言论或图像,以及任何形式的献殷勤或勾引 23 | * 挑衅行为、侮辱或贬损的言论、人身及政治攻击 24 | * 公开或私下骚扰 25 | * 未获明确授权擅自发布他人的资料,如地址、电子邮箱等 26 | * 其他有理由认定为违反职业操守的不当行为 27 | 28 | ## 落实之义务 29 | 30 | 社区负责人有责任诠释何谓“妥当行为”,并据此准则,妥善公正地认定与处置不当、威胁、冒犯及有害的行为。 31 | 32 | 社区负责人有权利和义务删除、编辑、拒绝违背本公约的评论(comment)、提交(commit)、代码、维基(wiki)编辑、问题(issue)等贡献。如有必要,需告知采取措施之理由。 33 | 34 | ## 适用范围 35 | 36 | 此行为标准适用于本社区全部场合,以及在其他场合代表本社区的个人。 37 | 38 | 代表本社区的情形包括但不限于:使用官方电子邮件与社交平台、作为指定代表参与在线或线下活动。 39 | 40 | ## 贯彻落实 41 | 42 | 如遇滥用、骚扰等不当行为,请通过 [git+nju-lug-email-3104-issue-@yaoge123.cn](mailto:git+nju-lug-email-3104-issue-@yaoge123.cn) 向纪律检查委员举报。 43 | 纪委将迅速审议并调查全部投诉。 44 | 45 | 社区全体负责人有义务保密举报者信息。 46 | 47 | ## 指导方针 48 | 49 | 社区负责人将依据下列方案判断并处置违纪行为: 50 | 51 | ### 一、督促 52 | 53 | **社区影响**:用语不当、举止不符合职业道德或不受社区欢迎。 54 | 55 | **处理意见**:由社区负责人予以非公开的书面警告,阐明违纪事由、解释举止如何不妥。或将要求公开道歉。 56 | 57 | ### 二、警告 58 | 59 | **社区影响**:一起或多起事件中的违纪行为。 60 | 61 | **处理意见**:警告继续违纪之后果、违纪者在特定时间内禁止与当事人往来、不得擅自与社区执法者往来,禁令涵盖社区内外、社交网络在内的一切联络。如有违反,可致封禁乃至开除。 62 | 63 | ### 三、封禁 64 | 65 | **社区影响**:严重违纪行为,包括屡教不改。 66 | 67 | **处理意见**:违纪者在特定时间内禁止与社区的任何往来或公开联络,禁止任何与当事人公开或私下往来,不得擅自与社区执法者往来。如有违反,可致开除。 68 | 69 | ### 四、开除 70 | 71 | **社区影响**:典型违纪行为,例如屡教不改、骚扰某个人、敌对或贬低某个群体。 72 | 73 | **处理意见**:无限期禁止违纪者与项目社区的一切公开往来。 74 | 75 | ## 来源 76 | 77 | 本行为标准改编自[参与者公约][homepage]2.0版,可在此查阅:[https://www.contributor-covenant.org/zh-cn/version/2/0/code_of_conduct.html][v2.0] 78 | 79 | 指导方针借鉴自[Mozilla纪检分级][Mozilla CoC]。 80 | 81 | 此行为标准常见问题请洽:[https://www.contributor-covenant.org/faq][FAQ]。 82 | 另有诸译本:[https://www.contributor-covenant.org/translations][translations]。 83 | 84 | [homepage]:https://www.contributor-covenant.org 85 | [v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html 86 | [Mozilla CoC]: https://github.com/mozilla/diversity 87 | [FAQ]: https://www.contributor-covenant.org/faq 88 | [translations]: https://www.contributor-covenant.org/translations 89 | 90 | -------------------------------------------------------------------------------- /test/test.bib: -------------------------------------------------------------------------------- 1 | @ARTICLE{njuthesis, 2 | title = {南京大学学士学位论文 LaTeX 模板}, 3 | AUTHOR = {NJU-LUG}, 4 | JOURNALTITLE = {Github}, 5 | YEAR = {2021} 6 | } 7 | @book{goossens93, 8 | author = "Frank Mittelbach and Michel Goossens and Johannes Braams and David Carlisle and Chris Rowley", 9 | title = "The {LaTeX} Companion", 10 | year = "1993", 11 | publisher = "Addison-Wesley", 12 | address = "Reading, Massachusetts" 13 | } 14 | @book{qiujinhengetal2010, 15 | location = {北京}, 16 | title = {物理化学实验}, 17 | isbn = {7-04-029811-2}, 18 | abstract = {本书由绪论、实验、基础知识与技术和附录四部分组成,其中35个实验涵盖了热力学、动力学、电化学、表面性质与胶体化学和结构化学等物理化学分支的内容;基础知识与技术主要介绍了本书实验涉及的实验方法和技术以及仪器的使用方法。}, 19 | pagetotal = {326}, 20 | publisher = {高等教育出版社}, 21 | author = {{邱金恒} and {孙尔康} and {吴强}}, 22 | date = {2010-09}, 23 | langid = {pinyin} 24 | } 25 | @inproceedings{Nemec1997-209-214, 26 | title = {Force control of redundant robots}, 27 | author = {B Nemec and Zhao, Mou Mou}, 28 | booktitle = {Processings of Symposium on Robot Control}, 29 | shortbooktitle = {(PSRC)}, 30 | pages = {209-214}, 31 | country = {Nantes France}, 32 | year = {1997}, 33 | author+an = {2=thesisauthor} 34 | } 35 | @article{Chiani1998-2998-3008, 36 | title = {Error probability for block codes over channels with block interference}, 37 | author = {Zhao, Mou Mou and Chiani, M.}, 38 | journal = {IEEE Trans. Inf. Theory}, 39 | shortbooktitle = {(ITIT)}, 40 | number = {7}, 41 | pages = {2998-3008}, 42 | volume = {44}, 43 | year = {1998}, 44 | author+an = {1=thesisauthor;2=corresponding} 45 | } 46 | @article{Chiani1998a, 47 | title = {Error probability for block codes over channels with block interference}, 48 | author = {Zhang, Mou Mou and Chiani, M.}, 49 | journal = {IEEE Trans. Inf. Theory}, 50 | shortbooktitle = {(ITIT)}, 51 | number = {7}, 52 | pages = {2998-3008}, 53 | volume = {44}, 54 | year = {1998}, 55 | author+an = {2=corresponding} 56 | } 57 | @Article{riedl2009quasi, 58 | author = {Riedl, Ch and Coletti, C and Iwasaki, T and Zakharov, AA and Starke, U}, 59 | date-modified = {2021-12-28 19:15:06 +0800}, 60 | journal = {Physical review letters}, 61 | number = {24}, 62 | pages = {246804}, 63 | publisher = {APS}, 64 | title = {Quasi-free-standing epitaxial graph\-ene on SiC obtained by hydrogen intercalation}, 65 | volume = {103}, 66 | year = {2009} 67 | } 68 | -------------------------------------------------------------------------------- /test/chapters/FigAndTab.tex: -------------------------------------------------------------------------------- 1 | \chapter{图片、表格与代码} 2 | 3 | \section{图片} 4 | 5 | 插入一张图片,就像\cref{fig:arcaea}这样。 6 | 7 | \begin{figure}[htbp] 8 | \centering 9 | \includegraphics[width=0.5\textwidth]{test.png} 10 | \caption{火热劲爆 Arcaea} 11 | \label{fig:arcaea} 12 | \end{figure} 13 | \zhlipsum[3][name=aspirin] 14 | 15 | % \subsection{文字环绕图像} 16 | % % wrapfigure后面不能有空行 17 | % \begin{wrapfigure}{r}{0cm} 18 | % \label{fig:arcaeaedge} 19 | % \includegraphics[width=.15\textwidth]{test.png} 20 | % \caption{闊靛緥婧愮偣} 21 | % \end{wrapfigure} 22 | % \zhlipsum[2][name=simp] 23 | 24 | % \subsection{多个图像} 25 | % \begin{figure}[htbp] 26 | % \centering 27 | % \begin{subfigure}{.32\textwidth} 28 | % \centering 29 | % \includegraphics[width=\textwidth]{test.png} 30 | % \caption{闊靛緥婧愮偣} 31 | % \end{subfigure} 32 | % \begin{subfigure}{.32\textwidth} 33 | % \centering 34 | % \includegraphics[width=\textwidth]{test.png} 35 | % \caption{Arcaea} 36 | % \end{subfigure} 37 | 38 | % \begin{subfigure}{.32\textwidth} 39 | % \centering 40 | % \includegraphics[width=\textwidth]{test.png} 41 | % \caption{闊虫父} 42 | % \end{subfigure} 43 | % \caption{新概念空间立体节奏游戏} 44 | % \end{figure} 45 | 46 | \section{表格} 47 | 48 | 你可以使用 |table| 环境插入标准三线表,如\cref{tab:testtab}所示。 49 | 50 | \begin{table}[htbp] 51 | % \centering 52 | \caption{经过测试的环境} 53 | \label{tab:testtab} 54 | \begin{tabular}{ccc} 55 | \toprule 56 | OS & TeX & 测试情况 \\ 57 | \midrule 58 | Windows 10 & TeX Live 2021 & √ \\ 59 | Windows 10 & MiKTeX & √ \\ 60 | Windows 10 & TeX Live 2020 & × \\ 61 | Ubuntu 20.04 & TeX Live 2021 & √ \\ 62 | 南大 TeX & Overleaf & √ \\ 63 | \bottomrule 64 | \end{tabular} 65 | \end{table} 66 | 67 | 全部预定义的数学环境如\cref{tab:mathenv}所示。 68 | 69 | \begin{table}[htbp] 70 | % \centering 71 | \caption{数学环境} 72 | \label{tab:mathenv} 73 | \begin{tabular}{cc|cc} 74 | \toprule 75 | 标签 & 名称 & 标签 & 名称 \\ 76 | \midrule 77 | axiom & 公理 & lemma & 引理 \\ 78 | corollary & 推论 & proof & 证明 \\ 79 | definition & 定义 & theorem & 定理 \\ 80 | example & 例 & & \\ 81 | \bottomrule 82 | \end{tabular} 83 | \end{table} 84 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "latex-workshop.latex.autoBuild.run": "never", // 禁止自动编译 3 | "latex-workshop.latex.recipe.default": "lastUsed", // 使用前一次的编译方法 4 | "latex-workshop.latex.tools": [ 5 | { 6 | "name": "xelatex", 7 | "command": "xelatex", 8 | "args": [ 9 | "-synctex=1", 10 | "-shell-escape", 11 | "-interaction=nonstopmode", 12 | "-file-line-error", 13 | "%DOCFILE%" 14 | ] 15 | }, 16 | { 17 | "name": "latexmk-xe", 18 | "command": "latexmk", 19 | "args": [ 20 | "-xelatex", 21 | "-time", 22 | "-interaction=nonstopmode", 23 | "%DOCFILE%" 24 | ] 25 | }, 26 | { 27 | "name": "latexmk-lua", 28 | "command": "latexmk", 29 | "args": [ 30 | "-lualatex", 31 | "-time", 32 | "-interaction=nonstopmode", 33 | "%DOCFILE%" 34 | ] 35 | }, 36 | { 37 | "name": "biber", 38 | "command": "biber", 39 | "args": [ 40 | "%DOCFILE%" 41 | ] 42 | }, 43 | { 44 | "name": "lualatex", 45 | "command": "lualatex", 46 | "args": [ 47 | "-interaction=nonstopmode", 48 | "-file-line-error", 49 | "%DOCFILE%" 50 | ] 51 | }, 52 | ], 53 | "latex-workshop.latex.recipes": [ 54 | { 55 | "name": "latexmk(xe)", 56 | "tools": [ 57 | "latexmk-xe" 58 | ] 59 | }, 60 | { 61 | "name": "xelatex", 62 | "tools": [ 63 | "xelatex" 64 | ] 65 | }, 66 | { 67 | "name": "xe->bib->xe->xe", 68 | "tools": [ 69 | "xelatex", 70 | "biber", 71 | "xelatex", 72 | "xelatex" 73 | ] 74 | }, 75 | { 76 | "name": "latexmk(lua)", 77 | "tools": [ 78 | "latexmk-lua" 79 | ] 80 | }, 81 | { 82 | "name": "lualatex", 83 | "tools": [ 84 | "lualatex" 85 | ] 86 | }, 87 | { 88 | "name": "lua->bib->lua->lua", 89 | "tools": [ 90 | "lualatex", 91 | "biber", 92 | "lualatex", 93 | "lualatex" 94 | ] 95 | }, 96 | ] 97 | } 98 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # NJU Thesis: 南京大学学位论文 LaTeX 模板 2 | 3 | ![build status](https://github.com/nju-lug/NJUThesis/actions/workflows/build.yml/badge.svg) 4 | [![CTAN](https://img.shields.io/ctan/v/njuthesis.svg)](https://www.ctan.org/pkg/njuthesis) 5 | [![GitHub release](https://img.shields.io/github/release/nju-lug/NJUThesis/all.svg)](https://github.com/nju-lug/NJUThesis/releases/latest) 6 | [![overleaf](https://img.shields.io/badge/online_editor-supported-brightgreen)](https://tex.nju.edu.cn/template) 7 | [![nju-git](https://img.shields.io/gitlab/stars/nju-lug/nju-latex-templates/njuthesis?gitlab_url=https%3A%2F%2Fgit.nju.edu.cn&style=social)](https://git.nju.edu.cn/nju-lug/nju-latex-templates/njuthesis) 8 | 9 | `njuthesis` 是制作南京大学本科生毕业论文、研究生学位论文、博士后出站报告的 LaTeX 文档类。本模板基于本科生院的论文撰写规范制作,同时参考研究生院提供的硕士、博士学位材料包,用于生成符合南京大学排版要求和相应的国家标准的学位论文,力求通过 LaTeX3 语法实现清晰的实现逻辑、较高的可定制性以及友好的用户接口。 10 | 11 | ## 快速开始 12 | 13 | 请首先阅读[用户手册](http://mirrors.ctan.org/macros/unicodetex/latex/njuthesis/njuthesis.pdf),其中详尽阐述了模板的特性和使用方法。 14 | 15 | 对于普通用户,首要推荐使用下述的**南大 TeX 编译方法**。 16 | 17 | ### 南大 TeX 编译 18 | 19 | [南大 TeX](https://tex.nju.edu.cn) 是 [eScience 中心](https://sci.nju.edu.cn)为南大在校师生提供的在线 LaTeX 写作平台,已*安装有本模板的最新版*。注册登录后,只需在**创建新项目**菜单中选择**论文模板**即可开始写作。 20 | 21 | **使用本平台时,请积极备份自己的文稿。** 22 | 23 | ### 本地编译 24 | 25 | 推荐使用包管理器安装 `njuthesis` 和 `njuvisual` 的最新版。 26 | 27 | 新手同学不妨直接使用以下流程: 28 | 29 | 1. [从南大镜像站下载](https://mirror.nju.edu.cn/download/app/TeX%20%E6%8E%92%E7%89%88%E7%B3%BB%E7%BB%9F)并安装最新的 TeX 发行版,并更新所有宏包 30 | 2. 下载包含[模板全部文件](https://github.com/nju-lug/NJUThesis/releases/latest)的压缩包 `njuthesis-user-v*.zip` 31 | 3. 根据需要更改 `njuthesis-sample.tex` 文件中的内容 32 | 4. 在模板根目录下运行 `latexmk -xelatex` 运行编译,得到对应的 PDF 文件 33 | 34 | ### 典型结构 35 | 36 | ```LaTeX 37 | \documentclass{njuthesis} 38 | \njusetup{} 39 | \begin{document} 40 | \maketitle 41 | \tableofcontents 42 | \mainmatter 43 | \chapter{欢迎} 44 | 使用 \LaTeX{}! 45 | \printbibliography 46 | \end{document} 47 | ``` 48 | 49 | ## 反馈 50 | 51 | 在你遇到模板问题时,请遵守以下步骤: 52 | 53 | 1. 在《[修订记录](https://github.com/nju-lug/NJUThesis/blob/master/CHANGELOG.md)》查看该问题是否已经修复但未发布; 54 | - 若是,则可以使用仓库中的开发版本解决问题 55 | 1. 在 [GitHub Issues](https://github.com/nju-lug/NJUThesis/issues) 和 [Discussions](https://github.com/nju-lug/NJUThesis/discussions) 中搜索该问题的关键词; 56 | 1. 浏览[本项目 Wiki](https://github.com/nju-lug/NJUThesis/wiki) 和[用户手册](http://mirrors.ctan.org/macros/unicodetex/latex/njuthesis/njuthesis.pdf); 57 | 1. 在你确定这是一个新问题时 58 | - 对于模板 bug、请求新功能、文档笔误等提出[新 issue](https://github.com/nju-lug/NJUThesis/issues/new/choose) 59 | - 对于用法的疑惑、格式上的斟酌等提出[新 discussion](https://github.com/nju-lug/NJUThesis/discussions/new) 60 | - 两个划分不绝对,区别在于 issue 是解决即关闭的 61 | - 如果确实重复了,会打上 duplicate 标签并将你引导至本问题首条提问 62 | 63 | 如果导师或院系有额外要求,请一同附上要求原文或格式截图。 64 | 65 | ## 贡献 66 | 67 | 欢迎提交 [PR](https://github.com/nju-lug/NJUThesis/pulls)。 68 | 69 | ## 许可 70 | 71 | 本模板的发布遵守 [LaTeX Project Public License(版本 1.3c 或更高)](https://www.latex-project.org/lppl/lppl-1-3c/)。 72 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/1-bug_report.yaml: -------------------------------------------------------------------------------- 1 | name: 报告问题 2 | description: 描述需要修复的问题 3 | title: "[Bug]: " 4 | labels: ["bug"] 5 | body: 6 | - type: markdown 7 | attributes: 8 | value: | 9 | 请使用此模板来报告*模板运行问题*,并尽可能多地提供信息。 10 | - type: checkboxes 11 | id: prerequisites 12 | attributes: 13 | label: 先决条件 14 | options: 15 | - label: |- 16 | 我已尝试更新[模板版本](https://github.com/nju-lug/NJUThesis/blob/master/CHANGELOG.md) 17 | required: true 18 | - label: |- 19 | 我已检索[模板手册](http://mirrors.ctan.org/macros/unicodetex/latex/njuthesis/njuthesis.pdf) 20 | required: true 21 | - label: |- 22 | 我已检索[项目 wiki](https://github.com/nju-lug/NJUThesis/wiki) 23 | required: true 24 | - label: |- 25 | 我已确认这个问题没有在[其他 issues](https://github.com/nju-lug/NJUThesis/issues) 中提出过。 26 | required: true 27 | - type: textarea 28 | id: expected_behavior 29 | attributes: 30 | label: 期望的现象 31 | placeholder: 本来应该是什么效果 32 | validations: 33 | required: true 34 | - type: textarea 35 | id: what_happened 36 | attributes: 37 | label: 发生了什么 38 | placeholder: 实际发生了什么偏差,此处不妨拖拽上传截图 39 | validations: 40 | required: true 41 | - type: textarea 42 | id: minimal_working_example 43 | attributes: 44 | label: 最小工作示例 45 | description: | 46 | 一段*完整的可供编译*的 LaTeX 代码,用来复现上述问题。这段代码应当从 `\documentclass` 开始,到 `\end{document}` 结束。请删除*所有不会引起该问题的内容*。譬如,对于正文格式出现的问题,不必添加 `\njusetup` `\tableofcontents` 等命令。删除无关内容是一个 debug 的过程,能帮助你我更准确地问题的根源 : D 47 | placeholder: | 48 | \documentclass[]{njuthesis} 49 | ... 50 | \end{document} 51 | render: TeX 52 | validations: 53 | required: true 54 | - type: input 55 | id: njuthesis_version 56 | attributes: 57 | label: njuthesis 模板版本 58 | placeholder: v1.0.0 59 | description: 模板版本可以在 `.log` 文件中搜索 `njuthesis` 得到。 60 | validations: 61 | required: true 62 | - type: dropdown 63 | id: source 64 | attributes: 65 | label: 模板获取途径 66 | options: 67 | - 68 | - 使用包管理器从 CTAN 安装 69 | - 通过 GitHub Releases 或镜像站下载 70 | - 从 Git 仓库下载 71 | - type: dropdown 72 | id: operating_system 73 | attributes: 74 | label: 操作系统 75 | options: 76 | - Windows 77 | - macOS 78 | - Linux 79 | - type: input 80 | id: tex_distribution 81 | attributes: 82 | label: TeX 发行版 83 | placeholder: TeX Live 2022 / MiKTeX 22.1 84 | - type: dropdown 85 | id: compiler 86 | attributes: 87 | label: 编译程序 88 | options: 89 | - XeLaTeX 90 | - LuaLaTeX 91 | - type: textarea 92 | id: more_info 93 | attributes: 94 | label: 额外信息 95 | placeholder: 任何你认为有帮助的信息 96 | - type: markdown 97 | attributes: 98 | value: | 99 | 100 | ----- 101 | 102 | 在提交这篇 issue 时,您将默认服从我们的[行为准则](https://github.com/nju-lug/NJUThesis/blob/master/.github/CODE_OF_CONDUCT.md)。 103 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | tags: 9 | - v* 10 | 11 | env: 12 | CTAN_URL: https://mirrors.rit.edu/CTAN 13 | PACKAGES: cm-unicode tex-gyre tex-gyre-math lexend xits natbib makeindex 14 | 15 | jobs: 16 | release: 17 | runs-on: ubuntu-latest 18 | if: startsWith(github.ref, 'refs/tags/v') 19 | env: 20 | SET_PATH: | 21 | export PATH=/tmp/texlive/bin/x86_64-linux:$PATH 22 | steps: 23 | - name: Set up Git repository 24 | uses: actions/checkout@v4 25 | 26 | - name: Set Version 27 | run: echo "VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV 28 | 29 | - name: Install TeX Live 30 | run: | 31 | ${{ env.SET_PATH }} 32 | wget ${{ env.CTAN_URL }}/systems/texlive/tlnet/install-tl-unx.tar.gz 33 | tar -xzf install-tl-unx.tar.gz 34 | cd install-tl-20* && ./install-tl --profile ../.github/workflows/texlive.profile 35 | 36 | - name: Install latest njuthesis 37 | run: | 38 | ${{ env.SET_PATH }} 39 | tlmgr option repository ${{ env.CTAN_URL }}/systems/texlive/tlnet/ 40 | tlmgr install xetex l3build 41 | l3build install 42 | cd scripts 43 | bash download.sh ${{ env.CTAN_URL }} 44 | cd data 45 | wget https://raw.githubusercontent.com/stone-zeng/tl-depend-analysis/data/data/tl-depend.json 46 | cd .. 47 | python3 main.py --pkg "${{ env.PACKAGES }}" --exclude "njuthesis.cls" 48 | tlmgr update --self --all --no-auto-install 49 | 50 | - name: Install latest ctex 51 | run: | 52 | ${{ env.SET_PATH }} 53 | git clone https://github.com/CTeX-org/ctex-kit.git 54 | cd ctex-kit/ctex 55 | l3build install 56 | 57 | - name: Install fonts 58 | run: | 59 | mkdir fonts 60 | wget https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SimplifiedChinese/SourceHanSerifSC-SemiBold.otf 61 | wget https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SimplifiedChinese/SourceHanSerifSC-Bold.otf 62 | wget https://github.com/adobe-fonts/source-han-serif/raw/release/OTF/SimplifiedChinese/SourceHanSerifSC-Heavy.otf 63 | wget https://github.com/be5invis/Iosevka/releases/download/v15.6.3/ttf-iosevka-15.6.3.zip 64 | unzip ttf-iosevka-15.6.3.zip 65 | cp *.otf /usr/share/fonts/ 66 | cp iosevka-lightitalic.ttf /usr/share/fonts/ 67 | cp iosevka-light.ttf /usr/share/fonts/ 68 | cp iosevka-semibold.ttf /usr/share/fonts/ 69 | chmod -x /usr/share/fonts/*.otf 70 | chmod -x /usr/share/fonts/*.ttf 71 | fc-cache -fv 72 | 73 | - name: Zip CTAN package 74 | run: | 75 | ${{ env.SET_PATH }} 76 | l3build ctan 77 | mv njuthesis-ctan.zip njuthesis-ctan-$VERSION.zip 78 | mv njuthesis.pdf njuthesis-$VERSION.pdf 79 | 80 | - name: Zip USER package 81 | run: | 82 | ${{ env.SET_PATH }} 83 | mv docs/* . 84 | mv build/unpacked/* . 85 | zip -r njuthesis-user-$VERSION.zip *.def njuthesis-sample* njuthesis.cls nju-*.pdf LICENSE CHANGELOG.md README.md 86 | 87 | - uses: "marvinpinto/action-automatic-releases@latest" 88 | with: 89 | repo_token: "${{ secrets.GITHUB_TOKEN }}" 90 | prerelease: true 91 | files: | 92 | njuthesis-v*.pdf 93 | njuthesis-user-v*.zip 94 | njuthesis-ctan-v*.zip 95 | -------------------------------------------------------------------------------- /test/chapters/Standard.tex: -------------------------------------------------------------------------------- 1 | \chapter[本科毕业论文格式规定]{南京大学本科毕业论文(设计)的撰写规范和装订要求(试行)} 2 | \label{chap:standard} 3 | 4 | 本科毕业论文(设计)是本科教学中的重要环节,为规范本科毕业论文(设计)的工作,特制订毕业论文(设计)的撰写和装订要求,请同学们按照要求执行。如各院系已经制定了相应的规范,则按照院系的要求执行。 5 | 6 | \section{毕业论文(设计)的撰写内容要求} 7 | \subsection{论文题目} 8 | 论文题目应以简短、明确的词语恰当概括论文的核心内容,避免使用不常见的缩略词、缩写字。中文题目一般不宜超过40个字(含标点符号);外文题目一般不宜超过12个实词,最多不得超过180个字符(含标点符号)。 9 | \subsection{摘要和关键词} 10 | \subsubsection{中文摘要和中文关键词} 11 | 摘要内容应概括地反映出本论文的主要内容,主要说明本论文的研究目的、内容、方法、成果和结论。语言力求精练、准确,以300—600字为宜。 12 | 13 | 关键词是供检索用的主题词条。摘要与关键词应在同一页。关键词一般3—5个。 14 | 15 | \subsubsection{英文摘要和英文关键词} 16 | 英文摘要和关键词内容与中文摘要和关键词相一致,其中英文摘要以约300个实词为宜。 17 | 18 | \subsection{目录} 19 | 论文目录是论文的提纲,也是论文各章节组成部分的小标题。要求标题层次清晰,目录中的标题要与正文中的标题一致。 20 | 21 | \subsection{主体} 22 | 主体部分一般从引言(绪论)开始,以结论或讨论结束,其中引言(绪论)应包括论文的研究目的、流程和方法等,论文研究领域的历史回顾,文献回溯,理论分析等内容,应独立成章,用足够的文字叙述;主体部分应从另页右页开始,每一章应另起页。 23 | 24 | 主体部分由于涉及的学科、选题、研究方法、结果表达方式等有很大的差异,不能作统一的规定。但是,必须实事求是,客观真切、准备完备、合乎逻辑、层次分明、简练可读。 25 | 26 | \subsection{参考文献} 27 | 参考文献表是文中引用的有具体文字来源的文献集合,应置于正文后并另起页;所有被引用文献均要列入参考文献表中;引文采用著作-出版年制标注时,参考文献表应按著者字顺和出版年排序; 28 | 29 | \subsection{相关的科研成果目录} 30 | 包括本科期间发表的与毕业论文(设计)相关的已发表论文或被鉴定的技术成果、发明专利等成果,应在成果目录中列出。此项非必需项。 31 | 32 | \subsection{致谢} 33 | 谢辞应以简短的文字对课题研究与论文撰写过程中曾直接给予帮助的人员(例如指导教师、答疑教师及其他人员)表示自己的谢意,这不仅是一种礼貌,也是对他人劳动的尊重,是治学者应当遵循的学术规范。内容限一页。 34 | 35 | \subsection{附录} 36 | 如果有不宜放在正文中的重要支撑材料,可编入毕业论文(设计)的附录中。包括某些重要的原始数据、详细数学推导、程序全文及其说明、复杂的图表、设计图纸等一系列需要补充提供的说明材料。附录的篇幅不宜太多,一般不超过正文。 37 | 38 | \section{毕业论文(设计)的撰写规范要求} 39 | \subsection{语言} 40 | 外语类专业的毕业论文(设计)应使用所学语种撰写,其他专业一般应使用中文撰写,具体按准出院系规定执行。非外语类专业如需用英文撰写,应于论文开题前由学生向准出院系提出申请,经院系批准后再进行撰写。以非中文完成的毕业论文(设计),应附上不少于2500字的中文详细摘要,作为该毕业论文(设计)的组成部分接受学术规范、答辩等所有审查评估。参加校级、省级本科生毕业论文(设计)评优的论文,如用英文撰写,必须同时提供中文版全文翻译(外语类专业除外)。 41 | 42 | \subsection{字数} 43 | 除有特殊要求的专业外,毕业论文(设计)一般不少于15000字或相当信息量(包括图表)。如果院系有其他规定,按院系规定为准。 44 | 45 | \subsection{字体和字号} 46 | \begin{description} 47 | \item[论文题目] 三号宋体加粗 48 | \item[各部分标题] 四号黑体 49 | \item[中文摘要、关键词内容] 小四号楷体 50 | \item[英文摘要、关键词内容] 小四号新罗马体(Time New Roman) 51 | \item[目录标题] 三号宋体加粗 52 | \item[目录内容中章的标题] 四号黑体 53 | \item[目录中其他内容] 小四号宋体 54 | \item[正文] 小四号宋体(行距1.5倍) 55 | \item[参考文献标题] 四号黑体 56 | \item[参考文献内容] 小四号宋体 57 | \item[注释内容] 五号宋体 58 | \item[致谢、附录标题] 四号黑体 59 | \item[致谢、附录内容] 小四号宋体(行距1.5倍) 60 | \item[非正文部分的页码] 五号罗马数字(Ⅰ、Ⅱ……) 61 | \item[论文页码] 页脚居中、五号阿拉伯数字(新罗马体)连续编码 62 | \end{description} 63 | 64 | \subsection{关键词} 65 | 每个关键词之间用“;”分开,最后一个关键词不打标点符号。 66 | 67 | \subsection{目录} 68 | 目录应另起一页,包括论文中的各级标题,按照“一……”、“(一)……”或“1……”、“1.1……”格式编写。 69 | 70 | \subsection{各级标题} 71 | 正文各部分的标题应简明扼要,不使用标点符号。论文内文各大部分的标题用“一、二……(或1、2……)”,次级标题为“(一)、(二)……(或1.1、2.1……)”,三级标题用“1、2……(或1.1.1、2.1.1……)”,四级标题用“(1)、(2)……(或1.1.1.1、2.1.1.1……)”。不再使用五级以下标题。 72 | 73 | \subsection{名词术语} 74 | 1、科学技术名词术语尽量采用全国自然科学名词审定委员会公布的规范词或国家标准中规定的名称,尚未统一规定或叫法有争议的名词术语,可采用惯用的名称。 75 | 2、特定含义的名词术语或新名词、以及使用外文缩写代替某一名词术语时,首次出现时应在括号内注明其含义。 76 | 3、外国人名一般采用英文原名,可不译成中文,英文人名按姓前名后的原则书写。一般很熟知的外国人名(如牛顿、爱因斯坦、达尔文、马克思等)可按通常标准译法写译名。 77 | 78 | \subsection{图表的绘制} 79 | 表的题目在表的上方,图的题目在图的下方。图表的题目及内容的字体采用五号宋体。表中内容采用单倍行距。 80 | 图表的题目要简洁、加粗。图表的位置和题目皆要居中,与上下正文内容空一行。如果文中图表较多,建议采用章节+次序的办法编写,如第一章的第三个表为“表1-3”,第四章的第二个图为“图4-2”。通常表和图按各自顺序分开编号。 81 | 82 | \subsection{注释} 83 | 毕业论文(设计)中有个别名词或情况需要解释时,可加注说明。注释采用脚注,每页独立编号,即每页都从1开始编码,编号用1,2,3……,文中编号用上标。 84 | 85 | \subsection{参考文献} 86 | 参考文献的著录应符合国家标准,参考文献的序号左顶格,并用数字加方括号表示,如“[1]”。每一条参考文献著录均以“.”结束。 87 | 88 | \section{毕业论文(设计)装订要求} 89 | 论文在打印和印刷时,要求本科毕业论文封面使用浅绿色皮纹纸;本科毕业设计封面使用天蓝色皮纹纸;纸张的四周应留足空白边缘,以便于装订、复印和读者批注。每一面的上方(天头)和左侧(订口)应分别留边25mm以上间隙,下方(地角)和右侧(切口)应分别留边20mm以上间隙。所有在南大毕设系统填报的毕业论文过程记录(含开题报告、中期检查等)均可从系统导出打印,除需装订的内容其余在系统内做电子存档。 90 | 毕业论文(设计)应线装或胶装,并应按以下顺序装订: 91 | \begin{enumerate} 92 | \item 封面 93 | \item 南京大学本科毕业设计(论文)诚信承诺书 94 | \item 本科毕业论文(设计)指导教师和评阅教师意见(注意填写的日期应在答辩前) 95 | \item 本科毕业论文(设计)答辩记录、成绩评定 96 | \item 中文摘要纸 97 | \item 英文摘要纸 98 | \item 目录 99 | \item 正文 100 | \item 参考文献 101 | \item 相关的科研成果目录(非必需项) 102 | \item 致谢 103 | \item 附录(非必需项) 104 | \end{enumerate} 105 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | *.fmt 10 | *.fot 11 | *.cb 12 | *.cb2 13 | .*.lb 14 | 15 | ## DocStrip generated file 16 | *.cls 17 | *.def 18 | *.ins 19 | *.sty 20 | !docs/njuthesis-setup.def 21 | 22 | ## Zip file 23 | *.zip 24 | 25 | ## Fonts 26 | *.ttf 27 | *.otf 28 | 29 | ## Intermediate documents: 30 | *.hd 31 | *.dvi 32 | *.xdv 33 | *-converted-to.* 34 | 35 | # these rules might exclude image files for figures etc. 36 | # *.ps 37 | # *.eps 38 | njuthesis*.pdf 39 | test*.pdf 40 | 41 | # Folders 42 | build/ 43 | release/ 44 | support/ 45 | scripts/data 46 | TDS/ 47 | temp/ 48 | mythesis/ 49 | __pycache__/ 50 | 51 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 52 | *.bbl 53 | *.bcf 54 | *.blg 55 | *-blx.aux 56 | *-blx.bib 57 | *.run.xml 58 | 59 | ## Build tool auxiliary files: 60 | *.fdb_latexmk 61 | *.synctex 62 | *.synctex(busy) 63 | *.synctex.gz 64 | *.synctex.gz(busy) 65 | *.pdfsync 66 | 67 | ## Build tool directories for auxiliary files 68 | # latexrun 69 | latex.out/ 70 | 71 | ## Auxiliary and intermediate files from other packages: 72 | # algorithms 73 | *.alg 74 | *.loa 75 | 76 | # achemso 77 | acs-*.bib 78 | 79 | # amsthm 80 | *.thm 81 | 82 | # beamer 83 | *.nav 84 | *.pre 85 | *.snm 86 | *.vrb 87 | 88 | # changes 89 | *.soc 90 | 91 | # comment 92 | *.cut 93 | 94 | # cprotect 95 | *.cpt 96 | 97 | # elsarticle (documentclass of Elsevier journals) 98 | *.spl 99 | 100 | # endnotes 101 | *.ent 102 | 103 | # fixme 104 | *.lox 105 | 106 | # feynmf/feynmp 107 | *.mf 108 | *.mp 109 | *.t[1-9] 110 | *.t[1-9][0-9] 111 | *.tfm 112 | 113 | #(r)(e)ledmac/(r)(e)ledpar 114 | *.end 115 | *.?end 116 | *.[1-9] 117 | *.[1-9][0-9] 118 | *.[1-9][0-9][0-9] 119 | *.[1-9]R 120 | *.[1-9][0-9]R 121 | *.[1-9][0-9][0-9]R 122 | *.eledsec[1-9] 123 | *.eledsec[1-9]R 124 | *.eledsec[1-9][0-9] 125 | *.eledsec[1-9][0-9]R 126 | *.eledsec[1-9][0-9][0-9] 127 | *.eledsec[1-9][0-9][0-9]R 128 | 129 | # glossaries 130 | *.acn 131 | *.acr 132 | *.glg 133 | *.glo 134 | *.gls 135 | *.glsdefs 136 | *.lzo 137 | *.lzs 138 | 139 | # uncomment this for glossaries-extra (will ignore makeindex's style files!) 140 | # *.ist 141 | 142 | # gnuplottex 143 | *-gnuplottex-* 144 | 145 | # gregoriotex 146 | *.gaux 147 | *.gtex 148 | 149 | # htlatex 150 | *.4ct 151 | *.4tc 152 | *.idv 153 | *.lg 154 | *.trc 155 | *.xref 156 | 157 | # hyperref 158 | *.brf 159 | 160 | # knitr 161 | *-concordance.tex 162 | # TODO Comment the next line if you want to keep your tikz graphics files 163 | *.tikz 164 | *-tikzDictionary 165 | 166 | # listings 167 | *.lol 168 | 169 | # luatexja-ruby 170 | *.ltjruby 171 | 172 | # makeidx 173 | *.idx 174 | *.ilg 175 | *.ind 176 | 177 | # minitoc 178 | *.maf 179 | *.mlf 180 | *.mlt 181 | *.mtc[0-9]* 182 | *.slf[0-9]* 183 | *.slt[0-9]* 184 | *.stc[0-9]* 185 | 186 | # minted 187 | _minted* 188 | *.pyg 189 | 190 | # morewrites 191 | *.mw 192 | 193 | # nomencl 194 | *.nlg 195 | *.nlo 196 | *.nls 197 | 198 | # pax 199 | *.pax 200 | 201 | # pdfpcnotes 202 | *.pdfpc 203 | 204 | # sagetex 205 | *.sagetex.sage 206 | *.sagetex.py 207 | *.sagetex.scmd 208 | 209 | # scrwfile 210 | *.wrt 211 | 212 | # sympy 213 | *.sout 214 | *.sympy 215 | sympy-plots-for-*.tex/ 216 | 217 | # pdfcomment 218 | *.upa 219 | *.upb 220 | 221 | # pythontex 222 | *.pytxcode 223 | pythontex-files-*/ 224 | 225 | # tcolorbox 226 | *.listing 227 | 228 | # thmtools 229 | *.loe 230 | 231 | # TikZ & PGF 232 | *.dpth 233 | *.md5 234 | *.auxlock 235 | 236 | # todonotes 237 | *.tdo 238 | 239 | # vhistory 240 | *.hst 241 | *.ver 242 | 243 | # easy-todo 244 | *.lod 245 | 246 | # xcolor 247 | *.xcp 248 | 249 | # xmpincl 250 | *.xmpi 251 | 252 | # xindy 253 | *.xdy 254 | 255 | # xypic precompiled matrices and outlines 256 | *.xyc 257 | *.xyd 258 | 259 | # endfloat 260 | *.ttt 261 | *.fff 262 | 263 | # Latexian 264 | TSWLatexianTemp* 265 | 266 | ## Editors: 267 | # WinEdt 268 | *.bak 269 | *.sav 270 | 271 | # Texpad 272 | .texpadtmp 273 | 274 | # LyX 275 | *.lyx~ 276 | 277 | # Kile 278 | *.backup 279 | 280 | # gummi 281 | .*.swp 282 | 283 | # KBibTeX 284 | *~[0-9]* 285 | 286 | # TeXnicCenter 287 | *.tps 288 | 289 | # auto folder when using emacs and auctex 290 | ./auto/* 291 | *.el 292 | 293 | # expex forward references with \gathertags 294 | *-tags.tex 295 | 296 | # standalone packages 297 | *.sta 298 | 299 | # Makeindex log files 300 | *.lpz 301 | -------------------------------------------------------------------------------- /docs/njuthesis-sample.tex: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % njuthesis 示例模板 v1.4.3 2025-05-21 3 | % https://github.com/nju-lug/NJUThesis 4 | % 5 | % 贡献者 6 | % Yu XIONG @atxy-blip Yichen ZHAO @FengChendian 7 | % Song GAO @myandeg Chang MA @glatavento 8 | % Yilun SUN @HermitSun Yinfeng LIN @linyinfeng 9 | % Yukai Chou @Muzimuzhi 10 | % 11 | % 许可证 12 | % LaTeX Project Public License(版本 1.3c 或更高) 13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 14 | 15 | %--------------------------------------------------------------------- 16 | % 一些提升使用体验的小技巧: 17 | % 1. 请务必使用 UTF-8 编码编写和保存本文档 18 | % 2. 请务必使用 XeLaTeX 或 LuaLaTeX 引擎进行编译 19 | % 3. 不保证接口稳定,写作前一定要留意版本号 20 | % 4. 以百分号(%)开头的内容为注释,可以随意删除 21 | %--------------------------------------------------------------------- 22 | 23 | %--------------------------------------------------------------------- 24 | % 请先阅读使用手册: 25 | % http://mirrors.ctan.org/macros/unicodetex/latex/njuthesis/njuthesis.pdf 26 | %--------------------------------------------------------------------- 27 | 28 | \documentclass[ 29 | % 模板选项(注意右端逗号): 30 | % 31 | % type = bachelor|master|doctor|postdoc, % 文档类型,默认为本科生 32 | % degree = academic|professional, % 学位类型,默认为学术型 33 | % 34 | % nl-cover, % 是否需要国家图书馆封面,默认关闭 35 | % decl-page, % 是否需要诚信承诺书或原创性声明,默认关闭 36 | % 37 | % 页面模式,详见手册说明 38 | % draft, % 开启草稿模式 39 | % anonymous, % 开启盲审模式 40 | % minimal, % 开启最小化模式 41 | % 42 | % 单双面模式,默认为适合印刷的双面模式 43 | % oneside, % 单面模式,无空白页 44 | % twoside, % 双面模式,每一章从奇数页开始 45 | % 46 | % 字体设置,不填写则自动调用系统预装字体,详见手册 47 | % fontset = win|mac|macoffice|fandol|none, 48 | ]{njuthesis} 49 | 50 | % 模板选项设置,包括个人信息、外观样式等 51 | % 较为冗长且一般不需要反复修改,我们把它放在单独的文件里 52 | \input{njuthesis-setup.def} 53 | 54 | % 自行载入所需宏包 55 | % \usepackage{subcaption} % 嵌套小幅图像,比 subfig 和 subfigure 更新更好 56 | % \usepackage{siunitx} % 标准单位符号 57 | % \usepackage{physics} % 物理百宝箱 58 | % \usepackage[version=4]{mhchem} % 绘制分子式 59 | % \usepackage{listings} % 展示代码 60 | % \usepackage{algorithm,algorithmic} % 展示算法伪代码 61 | 62 | % 在导言区随意定制所需命令 63 | % \DeclareMathOperator{\spn}{span} 64 | % \NewDocumentCommand\mathbi{m}{\textbf{\em #1}} 65 | 66 | % 开始编写论文 67 | \begin{document} 68 | 69 | %--------------------------------------------------------------------- 70 | % 封面、摘要、前言和目录 71 | %--------------------------------------------------------------------- 72 | 73 | % 生成封面页 74 | \maketitle 75 | 76 | % 模板默认使用 \flushbottom,即底部平齐 77 | % 效果更好,但可能出现 underfull \vbox 信息 78 | % 以下命令用于抑制这些信息 79 | \raggedbottom 80 | 81 | \begin{abstract} 82 | 中文摘要 83 | \end{abstract} 84 | 85 | \begin{abstract*} 86 | English abstract 87 | \end{abstract*} 88 | 89 | % 生成目录 90 | \tableofcontents 91 | % 生成图片清单 92 | % \listoffigures 93 | % 生成表格清单 94 | % \listoftables 95 | 96 | %--------------------------------------------------------------------- 97 | % 正文部分 98 | %--------------------------------------------------------------------- 99 | \mainmatter 100 | 101 | % 符号表 102 | % 语法与 description 环境一致 103 | % 两个可选参数依次为说明区域宽度、符号区域宽度 104 | % 带星号的符号表(notation*)不会插入目录 105 | % \begin{notation}[10cm] 106 | % \item[DFT] 密度泛函理论 (Density functional theory) 107 | % \item[DMRG] 密度矩阵重正化群 (Density-Matrix Reformation-Group) 108 | % \end{notation} 109 | 110 | % 建议将论文内容拆分为多个文件 111 | % 即新建一个 chapters 文件夹 112 | % 把每一章的内容单独放入一个 .tex 文件 113 | % 然后在这里用 \include 导入,例如 114 | % \include{chapters/introduction} 115 | % \include{chapters/environments} 116 | 117 | \chapter{引言} 118 | 119 | \section{量子计算} 120 | 121 | John Preskill 认为我们现在处于“含噪声的中型量子时代”。\cite{preskill2018} 122 | 量子位的不稳定性和有限的量子比特数量限制了量子计算机的复杂度和纠错能力。 123 | 124 | %--------------------------------------------------------------------- 125 | % 参考文献 126 | %--------------------------------------------------------------------- 127 | 128 | % 生成参考文献页 129 | \printbibliography 130 | 131 | %--------------------------------------------------------------------- 132 | % 致谢 133 | %--------------------------------------------------------------------- 134 | 135 | \begin{acknowledgement} 136 | 感谢 \href{https://git.nju.edu.cn/nju-lug/lug-introduction}{LUG@NJU}。 137 | \end{acknowledgement} 138 | 139 | %--------------------------------------------------------------------- 140 | % 学术简历 141 | %--------------------------------------------------------------------- 142 | 143 | % 详见手册中“成果列表”一节 144 | % \njuchapter{学术成果} 145 | % \njupaperlist[攻读博士学位期间发表的学术论文]{preskill2018} 146 | 147 | %--------------------------------------------------------------------- 148 | % 附录部分 149 | %--------------------------------------------------------------------- 150 | 151 | % 附录部分使用单独的字母序号 152 | \appendix 153 | 154 | % 可以在这里插入补充材料 155 | \chapter{正文中涉及的数据及源代码} 156 | \dots 157 | 158 | % 完工 159 | \end{document} 160 | -------------------------------------------------------------------------------- /test/chapters/Specific.tex: -------------------------------------------------------------------------------- 1 | \chapter{学科特殊环境} 2 | 3 | \section{代码} 4 | % the listings package 5 | 6 | \subsection{行内代码} 7 | 8 | 一共有三种方法可以生成行内代码: 9 | \begin{itemize} 10 | \item 使用 \texttt{\textbackslash verb} 抄录环境:\verb!! 11 | \item 使用 \texttt{\textbackslash lstinline} 行内代码环境:\lstinline[basicstyle=\tt]++ 12 | \item 使用简写的行内代码环境:|| 13 | \end{itemize} 14 | 在前两者中,只要使用在代码中未出现的符号将代码包括在内即可。 15 | 16 | \subsection{代码块} 17 | 18 | 代码示例。在构建 \textsf{njuvisual} 宏包时,使用 inkscape 程序从矢量图导出的 \textsf{tikz} 曲线代码并不美观,需要缩进、对齐,因而拜托鄢老师编写了如下的 Python 脚本。 19 | \begin{lstlisting}[language=Python,morekeywords={startswith,endswith,split,strip,join,find,append,replace}] 20 | def deal_tuple(s): 21 | if s.startswith("("): 22 | # s be like (x,y) 23 | return "( {0:>9}, {1:>9} )".format(*s[1:-1].split(",")) 24 | else: 25 | return s 26 | 27 | 28 | indent = len(".. controls ( 0.0000, 0.0000 )") - 1 29 | 30 | 31 | def deal_line(s): 32 | s = " ".join(map(deal_tuple, s.split())) 33 | if s.find(")") != -1: 34 | s = " " * (indent - s.find(")")) + s 35 | return s 36 | 37 | 38 | try: 39 | while True: 40 | s = input().strip() 41 | if s.startswith("\path"): 42 | l = [] 43 | while not s.endswith(";"): 44 | l.append(s) # use this instead of += for speedup 45 | s = input().strip() 46 | l.append(s[:-1]) # remove trailing ; 47 | # NOTE: all strings in l should be newline-free 48 | head, rp, body = " ".join(l).replace(".. controls", "\n.. controls").replace( 49 | "--", "\n--").replace(")(", ")\n(").replace("cycle(", "cycle\n(").partition("]") 50 | 51 | # force the program to keep newlines added manually 52 | result = "\n".join(map(deal_line, body.splitlines())) 53 | 54 | print(head, rp, "\n", result, ";", sep="") 55 | else: 56 | print(s) 57 | except EOFError as e: 58 | pass 59 | \end{lstlisting} 60 | 61 | \section{算法块} 62 | 63 | 使用 {algorithm} 和 {algorithmic} 的算法示例\footnote{两者均位于 \textsf{algorithms} 下}。 64 | 65 | \begin{algorithm}[htbp] 66 | \caption{Lanczos Algorithm} 67 | \begin{algorithmic} 68 | \STATE - Choose an initial state $\vec{b}_0$ and a maximum iteration number $m$ 69 | \FOR{$n=0,\ldots m$} 70 | \STATE - Construct the space $K = \spn\{\vec{b}_0 , \ldots \vec{b}_n \}$ 71 | \STATE - Obtain $\vec{C} = \hat{H} \vec{b}_n$ 72 | \IF{$\vec{C} \in K$} 73 | \STATE Set $\vec{b}_{n+1}$ to a random vector orthogonal to $K$ 74 | \ELSE 75 | \STATE Orthogonalize $\vec{C}$ against $K$, yielding $\vec{b}_{n+1}$ 76 | \ENDIF\ENDFOR 77 | \end{algorithmic} 78 | \end{algorithm} 79 | 80 | 81 | \section{物理} 82 | % the physics package 83 | 84 | \begin{equation} 85 | \expval{A}{\Psi} 86 | \end{equation} 87 | 88 | 89 | \section{化学} 90 | 91 | \subsection{化学式} 92 | 93 | 1972年,R. J. Fiela、E. Koros、R. Noyes等通过实验对BZ振荡反应作了解释。其主要思想 94 | 是:系统中存在着两个受溴离子浓度控制的过程A和B,当$[\ce{Br-}]$高于临界浓度$[\ce{Br-}]_\text{crit}$时发生 95 | A过程,当$[\ce{Br-}]$低于$[\ce{Br-}]_\text{crit}$时发生B过程。也就是说$[\ce{Br-}]$起着开关作用,它控制着从A到 96 | B过程,再由B到A过程的转变。在A过程,由于化学反应$[\ce{Br-}]$降低,当$[\ce{Br-}]$低于$[\ce{Br-}]_\text{crit}$ 97 | 时,B过程发生。在B过程中,\ce{Br-}再生,$[\ce{Br-}]$增加,当$[\ce{Br-}]$再次高于$[\ce{Br-}]_\text{crit}$时,A过程再次 98 | 发生。这样系统就在A过程与B过程间往复振荡。下面用\ce{BrO3- - Ce^{3+} - MA - H2SO4}系统为例 99 | 加以说明。\cite{qiujinhengetal2010} 100 | 101 | % 当$[\ce{Br-}]$足够高时,发生下列A过程: 102 | % \begin{equation} 103 | % \ce{BrO3- + Br- + 2H+ ->[k_1] HBrO2 +HOBr} 104 | % \end{equation} 105 | % \begin{equation} 106 | % \ce{HBrO2 + Br- + H+ ->[k_2] 2HOBr} 107 | % \end{equation} 108 | % 其中第一步是速率控制步,当达到准定态时,有 109 | % \begin{equation*} 110 | % \left[\ce{HBrO2}\right] =\frac{k_1}{k_2}\left[\ce{BrO3-}\right]\left[\ce{H+}\right] 111 | % \end{equation*} 112 | 113 | % 当$[\ce{Br-}]$低时,\ce{Ce^{3+}}被氧化发生下列B过程: 114 | % \begin{equation} 115 | % \ce{BrO3- + HBrO2 + 2H+ ->[k_3] 2HBrO2 + H2O} 116 | % \end{equation} 117 | % \begin{equation} 118 | % \ce{BrO2 + Ce^{3+} + H+ ->[k_4] HBrO2 + Ce^{4+}} 119 | % \end{equation} 120 | % \begin{equation} 121 | % \ce{2HBrO2 ->[k_5] BrO3- + HOBr + H+} 122 | % \end{equation} 123 | 124 | % 反应(3)是速率控制步,经反应(3)、反应(4)将自催化产生\ce{HBrO2},达到准定态 125 | % 时,有 126 | % \begin{equation*} 127 | % [\ce{HBrO2}] \approx \frac{k_3}{2k_5}[\ce{BrO3-}][\ce{H+}] 128 | % \end{equation*} 129 | 130 | % 由反应(2)和反应(3)可以看出:\ce{Br}和\ce{BrO3-}是竞争\ce{HBrO2}的。当$k_2[\ce{Br-}]>k_3[\ce{BrO3-}]$时,自催化过程不可能发生。自催化是BZ振荡反应中必不可少的步骤,否则该振荡不 131 | % 能发生。\ce{Br-}的临界浓度为 132 | % \begin{equation*} 133 | % [\ce{Br-}]_\text{crit} =\frac{k_3}{k_2}[\ce{BrO3-}] =\num{5e-6}[\ce{BrO3-}] 134 | % \end{equation*} 135 | % \ce{Br-}的再生可通过下列过程实现: 136 | % \begin{equation} 137 | % \ce{4Ce^{4+} + BrCH(COOH)2 +H2O + HOBr ->[k_6] Br- + 4Ce^{3+} + 3CO2 + 6H+} 138 | % \end{equation} 139 | % 该系统的总反应为 140 | % \begin{equation} 141 | % \ce{2H+ + 2BrO3- + 2CH2(COOH)2 -> BrCH(COOH)2 + 3CO2 + 4H2O} 142 | % \end{equation} 143 | % 振荡的控制物种是\ce{Br-}。 144 | 145 | 146 | \subsection{结构式} 147 | 148 | % \begin{figure}[H] 149 | % \centering 150 | % \chemfig{[:18]*5(-=(-CHO)-N-=)} 151 | % \end{figure} 152 | 153 | \schemestart 154 | \setchemfig{chemfig style=blue} \chemname[3ex]{\chemfig{[:-60]*6(-=)([:90]*6(=-EDG))}}{Diene} 155 | \hspace{10mm} 156 | \setchemfig{chemfig style=red} \chemname[3ex]{\chemfig{[:-60]*6(=)([::90]-EWG)}}{Dienophile} 157 | \hspace{10mm} 158 | \arrow(.mid east--.mid west)[,1.5] 159 | \hspace{10mm} 160 | \chemfig{[:-60]*6(=[,,,,blue]-[,,,,blue]--[,,,,red](<[,,,,red]{\color{red}E}|{\color{red}WG})-(<[,,,,blue]{\color{blue}EDG})-[,,,,blue])} 161 | \schemestop 162 | 163 | % pkg modiagram 164 | % \begin{modiagram}[names,distance=5cm,names-style={draw=black}] 165 | % \atom[C]{left}{ 166 | % 2s = {3.6;pair}, 167 | % 2p = {6.3;up,up}, 168 | % label = { 169 | % 2sleft = {2s}, 170 | % 2pyleft = {2p} 171 | % } 172 | % } 173 | % \atom[O]{right}{ 174 | % 2s = {0;pair}, 175 | % 2p = {4.8;pair,up,up}, 176 | % label = { 177 | % 2sright = {2s}, 178 | % 2pyright = {2p} 179 | % } 180 | % } 181 | % \molecule[CO]{ 182 | % 2sMO = {0.4;pair,pair}, 183 | % 2pMO = {0.2/0.5,0.5/0.2;pair,pair,pair}, 184 | % } 185 | % \node[right] at (2sigma.45) {$3\sigma$}; 186 | % \node[right] at (2sigma*.-45) {$4\sigma$}; 187 | % \node[right] at (2piz.45) { $1\pi$}; 188 | % \node[right] at (2psigma.45) {$5\sigma$}; 189 | % \node[right] at (2piz*.45) {$2\pi$}; 190 | % \node[right] at (2psigma*.45) {$6\sigma$}; 191 | % \EnergyAxis[title=Energy] 192 | % \end{modiagram} 193 | -------------------------------------------------------------------------------- /docs/njuthesis-setup.def: -------------------------------------------------------------------------------- 1 | % njuthesis 参数设置文件 v1.4.3 2025-05-21 2 | 3 | % 一些提醒: 4 | % 1. \njusetup 内部千万不要有空行 5 | % 2. 使用英文半角逗号(,)分隔选项 6 | % 3. 等于号(=)两侧的空格会被忽略 7 | % 3.1. 为避免歧义,请用花括号({})包裹内容 8 | % 4. 本科生无需填写的项目已被特别标注 9 | % 5. 可以尽情删除本注释 10 | 11 | % info 类用于录入个人信息 12 | % 带*号的为对应英文字段 13 | \njusetup[info]{ 14 | title = {第一行标题\\第二行标题\\第三行标题}, 15 | % 中文题目 16 | % 直接填写标题就是自动换行 17 | % 可以使用换行控制符(\\)手动指定换行位置 18 | % 19 | title* = {My Title in English}, 20 | % 英文题目 21 | % 22 | author = {姓名}, 23 | % 作者姓名 24 | % 25 | author* = {Ming Xing}, 26 | % 作者英文姓名 27 | % 一般使用拼音 28 | % 29 | keywords = {我,就是,充数的,关键词}, 30 | % 中文关键词列表 31 | % 使用英文半角逗号(,)分隔 32 | % 33 | keywords* = {Dummy,Keywords,Here,{It Is}}, 34 | % 英文关键词 35 | % 使用英文半角逗号(,)分隔 36 | % 37 | grade = {2018}, 38 | % 年级 39 | % 40 | student-id = {181850195}, 41 | % 学号或工号 42 | % 研究生请斟酌大小写字母格式 43 | % 本模板并不会自动更正大小写 44 | % 45 | department = {化学化工学院}, 46 | department* = {School of Chemistry and Chemical Engineering}, 47 | % 院系 48 | % 49 | major = {化学}, 50 | major* = {Chemistry}, 51 | % 专业 52 | % 53 | % major = {封面专业,摘要专业}, 54 | % 研究生专业型学位可能遇到两处内容不一致的情况 55 | % 56 | supervisor = {导师姓名,教授}, 57 | supervisor*= {Professor My Supervisor}, 58 | % 导师全称 59 | % 使用英文半角逗号(,)分隔中文姓名和职称 60 | % 61 | % supervisor-ii = {第二导师姓名,副教授}, 62 | % supervisor-ii* = {Associate Professor My Second Supervisor}, 63 | % 第二导师全称 64 | % 如果确实没有第二导师,不填写即可 65 | % 66 | submit-date = {2022-05-20}, 67 | % 提交日期 68 | % 格式为 yyyy-mm-dd 69 | % 不填就是编译当天日期 70 | % 71 | % 72 | % 以下均为研究生项 73 | % 74 | % degree = {工程硕士}, 75 | % degree* = {Master of Engineering}, 76 | % 覆盖默认学位名称 77 | % 78 | field = {物理化学}, 79 | field* = {Physical Chemistry}, 80 | % 研究领域 81 | % 82 | chairman = {某某某~教授}, 83 | % 答辩委员会主席 84 | % 推荐使用波浪号(~)分隔姓名和职称 85 | % 86 | reviewer = { 87 | 某某某~教授, 88 | 某某某~教授 89 | }, 90 | % 91 | % 答辩委员会成员 92 | % 一般为四名,使用英文半角逗号(,)分隔 93 | % 94 | clc = {O643.12}, 95 | % 中国图书分类号 96 | % 97 | udc = {544.4}, 98 | % 国际图书分类号 99 | % 100 | secret-level = {公开}, 101 | % 密级 102 | % 103 | defend-date = {2022-05-21}, 104 | % 答辩日期 105 | % 格式为 yyyy-mm-dd 106 | % 不填就是编译当天日期 107 | % 108 | email = {xyz@smail.nju.edu.cn}, 109 | % 电子邮箱地址 110 | % 只用于出版授权书 111 | % 112 | % 113 | % 以下用于国家图书馆封面 114 | confer-date = {2022-05-22}, 115 | % 学位授予日期 116 | % 117 | bottom-date = {2022-05-23}, 118 | % 封面底部日期 119 | % 120 | supervisor-contact = { 121 | 南京大学~ 122 | 江苏省南京市栖霞区仙林大道163号 123 | } 124 | % 导师联系方式 125 | } 126 | 127 | % bib 类用于参考文献设置 128 | \njusetup[bib]{ 129 | % style = numeric|author-year, 130 | % 参考文献样式 131 | % 默认为顺序编码制(numeric) 132 | % 可选著者-出版年制(author-year) 133 | % 134 | resource = {njuthesis-sample.bib}, 135 | % 参考文献数据源 136 | % 需要带扩展名的完整文件名 137 | % 可使用逗号分隔多个文件 138 | % 此条等效于 \addbibresource 命令 139 | % 140 | % option = { 141 | % doi = false, 142 | % isbn = false, 143 | % url = false, 144 | % eprint = false, 145 | % 关闭部分无用文献信息 146 | % 147 | % refsection = chapter, 148 | % 将参考文献表置于每章后 149 | % 150 | % gbnamefmt = lowercase 151 | % 使用仅首字母大写的姓名 152 | % } 153 | % 额外的 biblatex 宏包选项 154 | } 155 | 156 | % image 类用于载入外置的图片 157 | \njusetup[image]{ 158 | % path = {{./figure/}{./image/}}, 159 | % 图片搜索路径 160 | % 161 | nju-emblem = {nju-emblem}, 162 | nju-name = {nju-name}, 163 | % 校徽和校名图片路径 164 | % 建议使用 PDF 格式的矢量图 165 | % 使用外置图片有助于减少编译时间 166 | % 空置时会自动使用 njuvisual 宏包绘制 167 | % 168 | % nju-emblem = {nju-emblem-purple}, 169 | % nju-name = {nju-name-purple}, 170 | % 替换为紫色版本 171 | % 这个选项只能填写一次 172 | % 切换时要注释掉上方的黑色版本 173 | } 174 | 175 | % abstract 类用于设置摘要样式 176 | \njusetup[abstract]{ 177 | toc-entry = false, 178 | % 摘要是否显示在目录条目中 179 | % 180 | % underline = false, 181 | % 研究生英文摘要页条目内容是否添加下划线 182 | % 183 | % title-style = strict|centered|natural 184 | % 研究生摘要标题样式,详见手册 185 | } 186 | 187 | % 目录自身是否显示在目录条目中 188 | \njusetup{ 189 | % tableofcontents/toc-entry = false, 190 | % listoffigures/toc-entry = false, 191 | % listoftables/toc-entry = false 192 | } 193 | 194 | % 为目录中的章标题添加引导线 195 | \njusetup[tableofcontents/dotline]{chapter} 196 | 197 | % math 类用于设置数学符号样式,功能详见手册 198 | \njusetup[math]{ 199 | % style = TeX|ISO|GB, 200 | % 整体风格,缺省值为国标(GB) 201 | % 相当于自动设置以下若干项 202 | % 203 | % integral = upright|slanted, 204 | % integral-limits = true|false, 205 | % less-than-or-equal = slanted|horizontal, 206 | % math-ellipsis = centered|lower, 207 | % partial = upright|italic, 208 | % real-part = roman|fraktur, 209 | % vector = boldfont|arrow, 210 | % uppercase-greek = upright|italic 211 | } 212 | 213 | % theorem 类用于设置定理类环境样式,功能详见手册 214 | \njusetup[theorem]{ 215 | % define, 216 | % 默认创建内置的七种定理环境 217 | % 218 | % style = remark, 219 | % header-font = \sffamily \bfseries, 220 | % body-font = \normalfont, 221 | % qed-symbol = \ensuremath { \male }, 222 | % counter = section, 223 | % share-counter = true, 224 | % type = {...}, 225 | % define, 226 | % 以上设置项在重新调用 theorem/define 后生效 227 | } 228 | 229 | % footnote 类用于设置脚注样式,功能详见手册 230 | \njusetup[footnote]{ 231 | % style = pifont|circled, 232 | % 使用圈码编号 233 | % 234 | % hang = false, 235 | % 不使用悬挂缩进 236 | } 237 | 238 | % 页眉页脚内容设置 239 | \njusetup{ 240 | % header/content = { 241 | % {OR}{\thepage},{OL}{\rightmark}, 242 | % {EL}{\thepage},{ER}{\leftmark} 243 | % }, 244 | % 页眉设置,详见手册 245 | % 奇数页页眉:左侧章名,右侧页码 246 | % 偶数页页眉:左侧页码,右侧节名 247 | % 248 | % footer/content = {} 249 | } 250 | 251 | % 页眉页脚的字体样式 252 | % \njusetformat{header}{\small\kaishu} 253 | % \njusetformat{footer}{} 254 | 255 | % 在盲审模式下隐藏学校信息 256 | % \njusetup{anonymous-mode/no-nju} 257 | 258 | % 一些灵活调整 259 | % \njusetname{type}{本科毕业设计} % 我做的是毕业设计 260 | % \njusetname{notation}{术语表} % 更改符号表名称 261 | % \njusetlength{crulewd}{240pt} % 加长封面页下划线 262 | % \njusetformat{subsection}{\normalfont\bfseries} % 修改 subsection 为小四号粗体宋体 263 | % \njusetformat{tabular}{\zihao{-4}\bfseries} % 修改表格环境的字号 264 | % \EditInstance{nju}{u/cover/emblem-img}{align=l} % 左对齐的本科生封面校徽 265 | -------------------------------------------------------------------------------- /scripts/file_parser.py: -------------------------------------------------------------------------------- 1 | # https://github.com/stone-zeng/tl-depend-analysis/ 2 | 3 | import os 4 | import re 5 | import sys 6 | from typing import TextIO 7 | 8 | 9 | LUA_MODULE_PATTERN = re.compile(r''' 10 | \brequire\s* 11 | \(?\s*["'](.+?)["'] 12 | ''', re.VERBOSE) 13 | LUALIBS_MODULE_PATTERN = re.compile(r''' 14 | loadmodule\s* 15 | \(*\s*["'](.+\.lua)["'] 16 | ''', re.VERBOSE) 17 | CLASS_PATTERN = re.compile(r''' 18 | \\(?:LoadClass|LoadClassWithOptions|documentclass)\s* 19 | (?:\[.*\]\s*)? 20 | \{\s*(.+?)\s*\} 21 | ''', re.VERBOSE) 22 | PACKAGE_PATTERN = re.compile(r''' 23 | \\(?:RequirePackage|RequirePackageWithOptions|usepackage)\s* 24 | (?:\[.*\]\s*)? 25 | \{\s*(.+?)\s*\} 26 | ''', re.VERBOSE) 27 | USEFONT_PATTERN = re.compile(r''' 28 | \\usefont\s* 29 | \{\s*(.+?)\s*\}\s* 30 | \{\s*(.+?)\s*\} 31 | ''', re.VERBOSE) 32 | 33 | 34 | class Parser: 35 | 36 | def __init__(self, path: str): 37 | self.path = path 38 | self.state = State() 39 | self.depend: set[str] = set() 40 | 41 | def parse(self): 42 | try: 43 | with open(self.path, 'r', encoding='utf-8', errors='replace') as fp: 44 | match os.path.splitext(self.path)[1]: 45 | case '.tex' | '.ltx' | '.cls' | '.sty' | '.def' | '.clo': 46 | self._parse_tex(fp) 47 | case '.lua': 48 | self._parse_lua(fp) 49 | case _: 50 | print('Unknown file type:', self.path, file=sys.stderr) 51 | except FileNotFoundError: 52 | print('File not found:', self.path, file=sys.stderr) 53 | 54 | def _parse_lua(self, fp: TextIO): 55 | comment_flag = False 56 | for line in fp: 57 | line = line.strip() 58 | if line.startswith('--[['): 59 | comment_flag = True 60 | continue 61 | if line.endswith(']]') or line.endswith(']]--'): 62 | comment_flag = False 63 | continue 64 | if not comment_flag and not line.startswith('--'): 65 | self.depend.update(self._parse_lua_line(line)) 66 | 67 | def _parse_lua_line(self, line: str) -> list[str]: 68 | if match := LUA_MODULE_PATTERN.findall(line): 69 | return [match[0] + '.lua'] 70 | if match := LUALIBS_MODULE_PATTERN.findall(line): 71 | return [match[0]] 72 | return [] 73 | 74 | def _parse_tex(self, fp: TextIO): 75 | for line in fp: 76 | if line.rstrip() == '\\endinput': 77 | return 78 | if not line.strip().startswith('%'): 79 | self.depend.update(self._parse_tex_line(line)) 80 | 81 | def _parse_tex_line(self, line: str) -> list[str]: 82 | if self.state.stack == '': 83 | # Classes (single line) 84 | # - \LoadClass[...]{class} 85 | # - \documentclass[...]{class} 86 | if match := CLASS_PATTERN.findall(line): 87 | return self._parse_cls_sty_match(match, suffix='.cls') 88 | 89 | # Packages (single line) 90 | # - \RequirePackage[...]{package} 91 | # - \usepackage[...]{package} 92 | if match := PACKAGE_PATTERN.findall(line): 93 | return self._parse_cls_sty_match(match, suffix='.sty') 94 | 95 | # Packages (multiple line) 96 | if '\\RequirePackage' in line or '\\usepackage' in line: 97 | self.state.update(line.split('%')[0].strip()) 98 | 99 | if match := USEFONT_PATTERN.findall(line): 100 | return self._parse_font_match(match) 101 | 102 | return [] 103 | 104 | self.state.update(line.split('%')[0].strip()) 105 | 106 | if self.state.is_braces_closed(): 107 | match = PACKAGE_PATTERN.findall(self.state.stack) 108 | self.state.reset() 109 | return self._parse_cls_sty_match(match, suffix='.sty') 110 | 111 | return [] 112 | 113 | @staticmethod 114 | def _parse_cls_sty_match(match: list[str], suffix: str) -> list[str]: 115 | res = [] 116 | for m in match: 117 | for s in map(str.strip, m.split(',')): 118 | if Parser._is_valid_name(s): 119 | res.append(s + suffix) 120 | return res 121 | 122 | @staticmethod 123 | def _parse_font_match(match: list[str]) -> list[str]: 124 | res = [] 125 | for m in match: 126 | encoding, family = m 127 | if Parser._is_valid_name(encoding) and Parser._is_valid_name(family): 128 | res.append(f'{encoding.strip()}{family.strip()}.fd'.lower()) 129 | return res 130 | 131 | @staticmethod 132 | def _is_valid_name(name: str) -> bool: 133 | return ( 134 | name != '' 135 | and '\\' not in name and '#' not in name 136 | and not name.startswith('.') 137 | ) 138 | 139 | 140 | class State: 141 | def __init__(self): 142 | self.stack = '' 143 | self.braces_count = 0 144 | self.braces_open = False 145 | self.brackets_count = 0 146 | self.brackets_open = False 147 | 148 | def __repr__(self) -> str: 149 | return ', '.join([ 150 | f'stack = "{self.stack}"', 151 | f'braces_count = {self.braces_count}', 152 | f'braces_open = {self.braces_open}', 153 | f'brackets_count = {self.brackets_count}', 154 | f'brackets_open = {self.brackets_open}', 155 | ]) 156 | 157 | def update(self, line: str): 158 | self.stack += line 159 | for c in line: 160 | match c: 161 | case '{': 162 | self.braces_count += 1 163 | self.braces_open = True 164 | case '}': 165 | self.braces_count -= 1 166 | case '[': 167 | self.brackets_count += 1 168 | self.brackets_open = True 169 | case ']': 170 | self.brackets_count -= 1 171 | self.brackets_open = False 172 | 173 | def is_braces_closed(self): 174 | return self.braces_count == 0 and self.braces_open and not self.brackets_open 175 | 176 | def reset(self): 177 | self.stack = '' 178 | self.braces_count = 0 179 | self.braces_open = False 180 | self.brackets_count = 0 181 | self.brackets_open = False 182 | 183 | 184 | def _main(): 185 | if len(sys.argv) < 2: 186 | print('Usage: python file_parser.py ', file=sys.stderr) 187 | sys.exit(1) 188 | 189 | parser = Parser(sys.argv[1]) 190 | parser.parse() 191 | for d in sorted(parser.depend): 192 | print(d) 193 | 194 | 195 | if __name__ == '__main__': 196 | _main() 197 | -------------------------------------------------------------------------------- /scripts/main.py: -------------------------------------------------------------------------------- 1 | # adapted from https://github.com/stone-zeng/tl-depend-analysis/ 2 | # under MIT license 3 | # require python>=3.10 4 | 5 | import dataclasses 6 | import json 7 | import os 8 | import subprocess 9 | import sys 10 | from typing import Any 11 | from argparse import ArgumentParser 12 | 13 | from file_parser import Parser 14 | 15 | 16 | arg_parser = ArgumentParser( 17 | description='Find and install dependencies of a given LaTeX module') 18 | arg_parser.add_argument('-m', '--module', type=str, default='njuthesis', 19 | help='Name of your module') 20 | arg_parser.add_argument('-p', '--pkg', type=str, default='', 21 | help='Additional package name to be installed') 22 | arg_parser.add_argument('-e', '--exclude', type=str, default='', 23 | help='Module file to be excluded from searching') 24 | args = arg_parser.parse_args() 25 | 26 | 27 | MODULE_NAME = args.module 28 | EXCLUDE_FILE = set(args.exclude.split()) 29 | INIT_PACKAGES = set(args.pkg.split()) 30 | 31 | TLPDB_PATH = 'data/texlive.tlpdb' 32 | TL_DEPEND_PATH = 'data/tl-depend.json' 33 | L3BUILD_UNPACKED_PATH = "../build/unpacked" 34 | TEST_PATH = "../test" 35 | 36 | TEXMFDIST_PATH = subprocess.run( 37 | ['kpsewhich', '-var-value', 'TEXMFDIST'], 38 | capture_output=True, check=True).stdout.decode().strip() 39 | # TEXMFDIST_PATH = '/usr/local/texlive/2023/texmf-dist' 40 | 41 | 42 | @dataclasses.dataclass 43 | class Package: 44 | name: str 45 | category: str 46 | revision: int 47 | tl_depend: list[str] 48 | depend: list[str] 49 | runfiles: list[str] 50 | 51 | 52 | class PackageEncoder(json.JSONEncoder): 53 | 54 | def default(self, o): 55 | if isinstance(o, Package): 56 | return { 57 | 'name': o.name, 58 | 'depend': o.depend, 59 | 'tl_depend': o.tl_depend, 60 | } 61 | # return dataclasses.asdict(o) 62 | return json.JSONEncoder.default(self, o) 63 | 64 | 65 | class TLDepend: 66 | 67 | def __init__(self): 68 | self.packages: list[Package] = [] 69 | self.file_mappings: dict[str, str] = {} 70 | self.njuthesis_depend: set[str] = [] 71 | 72 | def parse_tlpdb(self): 73 | with open(TLPDB_PATH, 'r', encoding='utf-8') as fp: 74 | items = fp.read().strip().split('\n\n') 75 | for item in items: 76 | lines = item.split('\n') 77 | _, name = lines[0].split() 78 | if not name.startswith('00') and '.' not in name: 79 | self.packages.append( 80 | Package(name=name, depend=[], **self._parse_tlpdb_item(lines))) 81 | 82 | @staticmethod 83 | def _parse_tlpdb_item(lines: list[str]): 84 | package: dict[str, Any] = { 85 | 'tl_depend': [], 86 | 'runfiles': [], 87 | } 88 | runfiles_flag = False 89 | for line in lines: 90 | key, *value = line.strip().split(maxsplit=1) 91 | value = value[0] if value else None 92 | match key: 93 | case 'category': 94 | package['category'] = value 95 | case 'revision': 96 | package['revision'] = int(value) if value else -1 97 | case 'depend': 98 | package['tl_depend'].append(value) 99 | case 'runfiles': 100 | runfiles_flag = True 101 | case _ if runfiles_flag: 102 | if line.startswith(' '): 103 | package['runfiles'].append(line.strip()) 104 | else: 105 | runfiles_flag = False 106 | return package 107 | 108 | def get_file_mappings(self, verbose: bool = False): 109 | for package in self.packages: 110 | if package.name.endswith('-dev'): 111 | if verbose: 112 | print('Skip dev package:', package.name, file=sys.stderr) 113 | continue 114 | for file in package.runfiles: 115 | if file.startswith('RELOC') or file.startswith('texmf-dist'): 116 | _, path = file.split('/', maxsplit=1) 117 | # if path.startswith('fonts'): 118 | # continue 119 | if (name := os.path.basename(path)) in self.file_mappings: 120 | if verbose: 121 | print('Duplicate file:', file, file=sys.stderr) 122 | else: 123 | self.file_mappings[name] = package.name 124 | 125 | def get_module_depend(self, file_paths: list, verbose: bool = False): 126 | depend: set[str] = INIT_PACKAGES 127 | for fp in file_paths: 128 | for f in os.listdir(fp): 129 | full_path = os.path.join(fp, f) 130 | if not f in EXCLUDE_FILE and not os.path.isdir(full_path): 131 | if verbose: 132 | print('Process file', full_path) 133 | depend.update(self._get_depend_from_file(full_path, verbose)) 134 | depend.discard(MODULE_NAME) 135 | self.njuthesis_depend = depend 136 | 137 | def update_module_depend(self, verbose: bool = False): 138 | init_depend = self.njuthesis_depend.copy() 139 | full_depend: set[str] = set() 140 | with open(TL_DEPEND_PATH, mode="r", encoding='utf-8') as f: 141 | data = json.load(f) 142 | while len(init_depend) > 0: 143 | # recursive method 144 | pkg = init_depend.pop() 145 | full_depend.update([pkg]) 146 | for entry in data: 147 | if entry["name"] == pkg: 148 | temp = set(entry["depend"]) 149 | common = full_depend.intersection(temp) 150 | init_depend.update(temp.difference(common)) 151 | if verbose: 152 | print(len(full_depend), len(init_depend), pkg) 153 | self.njuthesis_depend = sorted(full_depend) 154 | 155 | def install(self): 156 | os.system('tlmgr install ' + ' '.join(self.njuthesis_depend)) 157 | 158 | def _get_depend_from_file(self, file: str, verbose: bool = False): 159 | depend: set[str] = set() 160 | parser = Parser(file) 161 | parser.parse() 162 | for d in parser.depend: 163 | try: 164 | depend.add(self.file_mappings[d]) 165 | except KeyError: 166 | print('Dependency not found:', d, file=sys.stderr) 167 | if verbose: 168 | if depend == set(): 169 | print('Find no package') 170 | else: 171 | print('Add packages', ' '.join(sorted(depend))) 172 | print('-----') 173 | return depend 174 | 175 | 176 | def main(): 177 | analyzer = TLDepend() 178 | analyzer.parse_tlpdb() 179 | analyzer.get_file_mappings() 180 | analyzer.get_module_depend([L3BUILD_UNPACKED_PATH, TEST_PATH], True) 181 | analyzer.update_module_depend() 182 | # print(analyzer.njuthesis_depend) 183 | analyzer.install() 184 | 185 | if __name__ == '__main__': 186 | main() 187 | -------------------------------------------------------------------------------- /test/test.tex: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2 | % 本文档用于测试 njuthesis 是否正常工作 3 | % 其内容不具有任何参考意义 4 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 5 | 6 | \ifdefined\TEST\else 7 | % 自行编译前需反注释以下任意命令 8 | \documentclass{njuthesis} 9 | % \documentclass[minimal]{njuthesis} 10 | % \documentclass[type=master]{njuthesis} 11 | % \documentclass[type=doctor]{njuthesis} 12 | % \documentclass[type=postdoc]{njuthesis} 13 | % \documentclass[oneside]{njuthesis} 14 | % \documentclass[cjk-font=noto,latin-font=gyre]{njuthesis} 15 | % \documentclass[cjk-font=source,latin-font=gyre]{njuthesis} 16 | % \documentclass[cjk-font=founder,latin-font=gyre]{njuthesis} 17 | % \documentclass[decl-page]{njuthesis} 18 | % \documentclass[draft]{njuthesis} 19 | \fi 20 | 21 | \njusetup[info]{ 22 | title = {一种使用南京大学 \hologo{LaTeX} 模板\\编写毕业论文的经验性方法}, 23 | title* = {An Empirical Way of Composing Thesis with NJU \hologo{LaTeX} Template}, 24 | keywords = {我,就是,充数的,关键词}, 25 | keywords* = {Dummy,Keywords,Here,{it is}}, 26 | grade = {2018}, 27 | % student-id = {DZ18114514}, 28 | student-id = {189114514}, 29 | author = {周煜华}, 30 | author* = {Zhou~Yuhua}, 31 | department = {拉太赫科学与技术学院}, 32 | department* = {School~of~\hologo{LaTeX}}, 33 | major = {拉太赫语言学}, 34 | major* = {\hologo{LaTeX}~Linguistics}, 35 | field = {拉太赫语言在现当代的使用}, 36 | field* = {Contemporary~Usage~of~the~\hologo{LaTeX}~Language}, 37 | supervisor = {李成殿,教授}, 38 | supervisor* = {Professor Li Chengdian}, 39 | % supervisor-ii = {孙赫弥,副教授}, 40 | % supervisor-ii* = {Associate~professor~Sun~Hemi}, 41 | % submit-date = {2021-08-10}, 42 | % defend-date = {2021-09-19}, 43 | chairman = {张晓山~教授}, 44 | reviewer = {王瑞希~教授,郭德纲~副教授,华芈库~教授,戴菲菲~教授}, 45 | clc = {0175.2}, 46 | secret-level = {限制}, 47 | udc = {004.72}, 48 | supervisor-contact = {拉太赫科学与技术学院~枝江市结丘路~19~号~114514}, 49 | email={git+nju-lug-email-3104-issue-@yaoge123.cn} 50 | } 51 | \njusetup[bib]{ 52 | % style = author-year, 53 | resource = {test.bib}, 54 | option = {doi=false, isbn=false, url=false, eprint=false} 55 | } 56 | \njusetup[image]{ 57 | nju-emblem = {wug}, 58 | nju-name = {name} 59 | } 60 | \njusetup[abstract/title-style]{natural} 61 | \njusetup{ 62 | abstract/toc-entry = false, 63 | tableofcontents/toc-entry = false, 64 | math/style = ISO 65 | } 66 | \njusetup[theorem]{ 67 | style = remark, 68 | header-font = \sffamily\bfseries, 69 | body-font = \ttfamily, 70 | qed-symbol = \ensuremath { \male }, 71 | counter = section, 72 | define, 73 | } 74 | 75 | \njusetup[footnote]{ 76 | style={circled}, 77 | circledtext-option={resize=none,boxcolor=blue,boxtype=ox+,boxfill=red!30} 78 | } 79 | 80 | % \addbibresource{test.bib} 81 | 82 | % \ctexset{ 83 | % contentsname = { 目\qquad{}次 }, 84 | % listfigurename = { 插图清单 }, 85 | % listtablename = { 表格清单 } 86 | % } 87 | 88 | \njusetname{notation}{术语表} 89 | \njusetname{tableofcontents}{目\qquad{}次} 90 | \njusetname{listoffigures}{插图清单} 91 | \njusetname{listoftables}{表格清单} 92 | \njusetname{abstract}[b]{我是摘要} 93 | \njusetname*{abstract}[b]{Abstract} 94 | % \njusetlength{coveruline}{330pt} 95 | \njusetformat{chapter}{\raggedleft\kaishu\zihao{-1}} 96 | 97 | % \usepackage{multirow,tabularray,wrapfig,subcaption} 98 | % \usepackage{listings,algorithm,algorithmic} 99 | % \usepackage{siunitx,physics,chemfig} 100 | % \usepackage[version=4]{mhchem} 101 | \usepackage{hologo,blindtext,zhlipsum,mathtools} 102 | 103 | % \setmonofont{cmun}[ 104 | % Extension = .otf, 105 | % UprightFont = *btl, 106 | % BoldFont = *tb, 107 | % ItalicFont = *bto, 108 | % BoldItalicFont = *tx, 109 | % HyphenChar = None] 110 | 111 | % \lstdefinestyle{njulisting} 112 | % { 113 | % basewidth = 0.5 em, 114 | % lineskip = 3 pt, 115 | % basicstyle = \tiny\ttfamily, 116 | % keywordstyle = \bfseries\ttfamily\color{njuviolet}, 117 | % commentstyle = \itshape\ttfamily\color{gray}, 118 | % stringstyle = \color{njumagenta}, 119 | % numbers = left, 120 | % captionpos = t, 121 | % breaklines = true, 122 | % xleftmargin = 2 em, 123 | % xrightmargin = 2 em 124 | % } 125 | % \lstset{ 126 | % style = njulisting, 127 | % flexiblecolumns 128 | % } 129 | % % \lstMakeShortInline[ 130 | % % style=njulisting, 131 | % % basicstyle=\normalsize\tt, 132 | % % columns=fixed]| 133 | 134 | % \setchemfig{ 135 | % atom sep=14.4pt, 136 | % double bond sep=2.6pt, 137 | % bond style={line width=0.6pt}, 138 | % cram width=2.0pt, 139 | % bond offset=1.6pt 140 | % } 141 | % \renewcommand*\printatom[1]{\small\ensuremath{\mathsf{#1}}} 142 | 143 | % https://tex.stackexchange.com/questions/33264/span-as-a-math-operator 144 | \DeclareMathOperator{\spn}{span} 145 | \NewDocumentCommand\mathbi{m}{\textbf{\em #1}} 146 | 147 | \begin{document} 148 | 149 | % \frontmatter 150 | \maketitle 151 | 152 | % \begin{preface} 153 | % 感慨万千,一时语塞。实在不知道写啥好,表演个朗诵课文吧。 154 | 155 | % \zhlipsum[108-110][name=zhufu] 156 | 157 | % \vspace{1cm} 158 | % \begin{flushright} 159 | % 某人\\ 160 | % 2021年初秋于扬州 161 | % \end{flushright} 162 | % \end{preface} 163 | 164 | \begin{abstract} 165 | \zhlipsum[76-90][name=zhufu] 166 | \end{abstract} 167 | 168 | \begin{abstract*} 169 | \blindtext 170 | \end{abstract*} 171 | 172 | \raggedbottom 173 | 174 | \tableofcontents 175 | \listoffigures 176 | \listoftables 177 | 178 | \mainmatter 179 | 180 | \begin{notation}[10cm] 181 | \item[DMRG] 密度矩阵重整化群 (Density-Matrix Reformation-Group) 182 | \item[DFT] 密度泛函理论 (Density functional theory) 183 | \item[PCR] 聚合酶链式反应 (Polymerase Chain Reaction) 184 | \item[HTTP] 超文本传输协议 (Hypertext Transfer Protocol) 185 | \item[CSS] 层叠样式表 (Cascading Style Sheets) 186 | \item[GUI] 图形用户界面 (Graphical User Interface) 187 | \item[CLI] 命令行界面 (Command-Line Interface) 188 | \item[IPO] 首次公开募股 (Initial Public Offering) 189 | \item[CDO] 抵押债务证券 (Collateralized Debt Obligations) 190 | \item[IPR] 国内称为贷款基础利率,美国、香港等地则称为最优惠贷款利率 (Loan Prime Rate) 191 | \item[$k_\mathrm{B}$] 玻尔兹曼常数 192 | \item[$h$] 普朗克常数 193 | \item[$\hbar$] 约化普朗克常数 194 | \item[$c$] 光速 195 | \item[$x$] 坐标 196 | \item[$p$] 动量 197 | \item[$t$] 时间 198 | \item[$\mu$] 约化质量 199 | \item[$I$] 转动惯量 200 | \item[呜呜呜] 特别长会怎样呢哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 201 | \item[呜呜呜] 特别长会怎样呢哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 202 | \item[呜呜呜] 特别长会怎样呢哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 203 | \item[呜呜呜] 特别长会怎样呢哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 204 | \end{notation} 205 | 206 | \chapter[非常长的标题不好看]{如果标题非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长会怎样呢} 207 | \label{ch:longtitle} 208 | \section[还是用短点的吧]{如果标题非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常长会怎样呢} 209 | \cref{ch:longtitle}答案是使用可选参数:\verb+\chapter[短描述]{完整的长标题}+ 210 | 211 | \zhlipsum[1-10][name=zhufu] 212 | 213 | \subsection{测试} 214 | 215 | \zhlipsum[11-20][name=zhufu] 216 | 217 | \section{列表环境} 218 | 219 | \begin{itemize} 220 | \item 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 221 | \item 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 222 | \item 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 223 | \end{itemize} 224 | 225 | \begin{enumerate} 226 | \item 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 227 | \item 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 228 | \item 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试 229 | \end{enumerate} 230 | 231 | \begin{description} 232 | \item[测试测试] 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测 233 | \item[测试测试] 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测 234 | \item[测试测试] 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测 235 | \end{description} 236 | 237 | \chapter{脚注} 238 | 239 | 测试脚注的编号效果% 240 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 241 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 242 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 243 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 244 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试}% 245 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 246 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 247 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 248 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 249 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 250 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 251 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 252 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 253 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 254 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 255 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 256 | \footnote{测试测试测试测试测试测试测试测试测试测试测试测试}% 257 | 258 | \input{chapters/FigAndTab} 259 | % \input{chapters/Specific} 260 | \input{chapters/Mathematics} 261 | \input{chapters/Bibliography} 262 | 263 | \printbibliography 264 | 265 | \begin{acknowledgement} 266 | 感谢\href{https://git.nju.edu.cn/nju-lug/lug-introduction}{NJU Linux User Group}。 267 | \end{acknowledgement} 268 | 269 | % \appendix 270 | 271 | % \input{chapters/Achievements} 272 | % \input{chapters/Standard} 273 | 274 | \end{document} 275 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # njuthesis 修订记录 2 | 3 | 本项目发生的变动均会记录于本文档。 4 | 5 | 本文档格式来自《[更新日志]》,本项目使用《[语义化版本]》标记版本号。 6 | 7 | ## [未发布] 8 | 9 | ### 变动 10 | 11 | - 摘要页使用 chapter 对应的页面样式。 12 | 13 | ## [1.4.3] - 2025-05-21 14 | 15 | ### 新增 16 | 17 | - 增加 `cleveref` 的复数引用名称 - [#266] 18 | 19 | ### 变动 20 | 21 | - 本科生封面信息全部使用楷体格式。 22 | 23 | ### 修复 24 | 25 | - 修复 `macoffice` 选项下无法自动加载华文中宋问题 - [#269] 26 | - 感谢 [@liudongmiao]! 27 | - 提供新版 LaTeX2e 下兼容 `cleveref` 的补丁 - [#263] 28 | - 减少研究生中文摘要的论文标题两侧间距 29 | - 禁用 `unicode-math` 时不配置数学整体样式 - [#276] 30 | 31 | ### 杂项 32 | 33 | - 手册匹配 `codehigh` 更新 - [lvjr/codehigh#12] 34 | 35 | ## [1.4.2] - 2024-11-08 36 | 37 | ### 新增 38 | 39 | - 图表标题区分单行多行设置 40 | - 软性规定标题和图表本身的位置关系 -[#253] 41 | 42 | ### 修复 43 | 44 | - 修复 `macoffice` 配置的变量命名问题 45 | 46 | ### 变动 47 | 48 | - `tableofcontents/toc-entry` 不再会影响插图清单和表格清单 -[#245] 49 | 50 | ## [1.4.1] - 2024-04-22 51 | 52 | ### 新增 53 | 54 | - 匹配新版盲审模板 - [#185] 55 | - 作者和导师姓名用占位符代替 56 | - 默认显示学校信息 57 | - 恢复显示摘要页的年级 58 | - 成果列表中仅显示期刊和年份 59 | - `anonymous` 选项不接受输入值 60 | - 盲审模式可选择是否隐藏学校信息 - [#251] 61 | - 新增 `anonymous-mode/no-nju` 选项 62 | 63 | ### 修复 64 | 65 | - 修复成果列表中文姓名加粗的问题 - [#192] 66 | - 修复 LuaLaTeX 下华文中宋的载入问题 67 | - 修复 LuaLaTeX 下的摘要页多余换行 - [#248] 68 | 69 | ## [1.4.0] - 2024-03-19 70 | 71 | ### 新增 72 | 73 | - 增加 `macoffice` 字体配置 - [#164],[#169] 74 | - 感谢 [@liudongmiao]! 75 | 76 | ### 修复 77 | 78 | - 修复定理类环境在共享计数器时的 `cleveref` 引用名问题 - [#234] 79 | - 将部分 `hyperref` 默认设置项放在导言区前以便用户覆盖 80 | - 修正 `tabularray` 默认标题间距 81 | - 修复本科生诚信承诺书的换行问题 82 | - 修复导师名和职称之间没有空格的问题 - [#243] 83 | - 使用正确的变量类型 - [#240],[#243] 84 | - 感谢 [@muzimuzhi]! 85 | - 匹配 l3doc 的修改 - [CTeX-org/ctex-kit#700], [CTeX-org/ctex-kit#703] 86 | - `draft` 选项不接受输入值 87 | 88 | ### 杂项 89 | 90 | - 跟进 2024 届本科毕业论文规定 91 | - 美化 issue template 样式 - [#241] 92 | - 感谢 [@muzimuzhi]! 93 | 94 | ## [1.3.2] - 2023-12-05 95 | 96 | ### 变动 97 | 98 | - 调整专业型学位封面的 `info/major` 项填写逻辑 - [#232] 99 | - 感谢 [@liudongmiao]! 100 | 101 | ### 修复 102 | 103 | - 修复双导师命令问题 - [#230] 104 | 105 | ## [1.3.1] - 2023-11-14 106 | 107 | ### 新增 108 | 109 | - 整合表格环境字体设置 - [#94] 110 | - 可以手动指定华文中宋文件位置 - [#229] 111 | - 匹配 LaTeX3 的 e 型展开修改 - [CTeX-org/ctex-kit#678] 112 | 113 | ### 修复 114 | 115 | - 修复英文标题超长引发的页面元素混乱 - [#217] 116 | - 修复英文标题手动换行与摘要页的冲突 - [#227] 117 | 118 | ### 杂项 119 | 120 | - 将 CI 上传的 PDF 更换为模板格式文件 121 | 122 | ## [1.3.0] - 2023-06-06 123 | 124 | ### 新增 125 | 126 | - 新增定理类环境共享计数器选项 `theorem/share-counter` - [#207] 127 | - 自动补全研究生专业型学位封面上的专业信息 - [#208] 128 | - 增加 `info/major` 定义方式 129 | 130 | ### 修复 131 | 132 | - 修复批量创建环境时缺少 `\crefname` 的问题 - [#206] 133 | - 修复禁用 `unicode-math` 时仍会配置数学字体的问题 - [#216] 134 | - 修复非研究生类型时调用 `nl-cover` 选项的错误 135 | - 将本科生封面信息恢复至 v1.1 的宋体格式 136 | - 修复研究生出版授权书的打勾机制 - [#223] 137 | 138 | ### 杂项 139 | 140 | - 手册源码部分添加语法高亮 141 | - 手册样式设置拆分为单独的 `njuthesis-doc.cls` 142 | - 默认密级信息修改为“公开” - [#213] 143 | - 使用 [`tl-depend-analysis`] 重构 CI 脚本 144 | - 感谢 [@stone-zeng]! 145 | 146 | ## [1.2.1] - 2023-05-03 147 | 148 | ### 修复 149 | 150 | - 修复国家图书馆封面学位丢失的学位名称 - [#204] 151 | - 新增研究生中文学位名称选项 `info/degree` - [#200] 152 | - 修复研究生封面上学号下划线长度不足的问题 153 | 154 | ### 杂项 155 | 156 | - 提供紫色版本的校名校徽图片 157 | 158 | ## [1.2.0] - 2023-05-02 159 | 160 | ### 新增 161 | 162 | - 跟进 2023 年研究生学位论文模板新设计 - [#204] 163 | - 新增研究生英文学位名称选项 `info/degree*` - [#200] 164 | - 新增研究生英文摘要条目内容下划线选项 `abstract/underline` - [#202] 165 | 166 | ### 修复 167 | 168 | - 更正本科生模板封面和承诺书样式 169 | - 盲审模式下隐藏年级和学校名称 - [#181] 170 | - 修复章末参考文献表与成果列表的冲突问题 - [#191] 171 | 172 | ## [1.1.2] - 2023-01-15 173 | 174 | ### 修复 175 | 176 | - 补回研究生英文摘要页的下划线 - [#166] 177 | - 修复研究生封面上第二导师的显示问题 - [#172] 178 | - 修复 `\njusetname` 的可选参数问题 179 | 180 | ### 变动 181 | 182 | - 本科生模板封面校徽居中 - [#173] 183 | 184 | ### 杂项 185 | 186 | - 跟进 2023 届本科毕业论文规定 187 | - 跟进新版南大 TeX 网站 188 | 189 | ## [1.1.1] - 2022-12-04 190 | 191 | ### 修复 192 | 193 | - 修复研究生封面上导师信息的居中问题 - [#165] 194 | - 修复 macOS 下 Times New Roman 字体缺失字型的问题 - [#169] 195 | - 感谢 [@AlphaZTX]! 196 | - 修复国家图书馆封面的编译死循环问题 - [#170] 197 | 198 | ### 杂项 199 | 200 | - 手册中暂时撤去关于南大 TeX 网站的内容 201 | 202 | ## [1.1.0] - 2022-10-23 203 | 204 | ### 新增 205 | 206 | - 盲审模式下不显示致谢 207 | - 新增脚注圈码选项 `footnote/circled` 和 `footnote/circled*` - [#129] 208 | - 新增脚注的悬挂缩进选项 `hang` - [#129] 209 | 210 | ### 修复 211 | 212 | - 修复国家图书馆封面的编译错误 213 | - 修复研究生英文封面的学位信息 214 | - 更正盲审模式隐藏的个人信息类别 215 | - 修复 `\le` 和 `\ge` 的定义 216 | 217 | ### 变动 218 | 219 | - 脚注默认进行悬挂缩进 220 | 221 | ### 杂项 222 | 223 | - 手册中以黄色突出选项 224 | 225 | ## [1.0.0] - 2022-08-07 226 | 227 | ### 新增 228 | 229 | - 新增博士后出站报告模板 230 | - 新增数学字体选项 `math-font` 231 | - 新增默认字号选项 `zihao` 232 | - 新增行距选项 `linespread` 233 | - 新增最小化模式选项 `minimal` 234 | - 新增禁用若干内置宏包的选项 235 | - `\njusetup` 提供更多选项输入模式 236 | - 可为目录中的章标题添加引导线 - [#66] 237 | - 新增编号连接符设置 `label-sep` - [#134] 238 | - 适配 `tabularray` 的表格样式设置 - [#134] 239 | - 新增一系列数学符号选项 `math` - [#142] 240 | - 可使用 `\njusetlength` 修改下划线的宽度和偏移 - [#155] 241 | - 可使用 `\njusetformat` 修改本科摘要标签格式 - [#155] 242 | - 为页面对象添加书签属性 243 | 244 | ### 修复 245 | 246 | - 修正元素对象的底部间距设置 247 | 248 | ### 变动 249 | 250 | - 调整 `type` 和 `degree` 文档类选项的定义 - [#117] 251 | - 移除毕业设计封面 252 | - `nlcover` 选项更名为 `nl-cover` 253 | - `blind` 选项更名为 `anonymous` 254 | - 调整定理类环境选项 `theorem` 255 | - 摘要、目录、页眉页脚设置项更名 256 | - 调整研究生模板的封面布局 - [#144] 257 | - 移除研究生英文摘要的下划线 258 | - 移除内置的 `mathtools` 259 | - 内部变量与函数重新命名 260 | 261 | ### 杂项 262 | 263 | - 删除手册中的基础教学内容 264 | - 在手册中以不同颜色指示不同模块 265 | 266 | ## [0.20.0] - 2022-06-10 267 | 268 | ### 新增 269 | 270 | - 日期设置项可以通过留空生成空白的年月日字样 - [#150] 271 | - 自动处理大于四的评审委员会人数 - [#150] 272 | - 可使用 `\njusetformat` 修改页眉页脚样式 273 | - 可使用 `\njusetformat` 修改内置校名校徽颜色 274 | 275 | ### 修复 276 | 277 | - 修复 0.19.0 版本中错误的研究生英文封面日期 278 | - 修复 0.19.0 版本中错误的本科生目录条目样式 279 | - 修复英文关键词列表不整齐的缩进间距 280 | - 更正本科模板部分字样 281 | 282 | ## [0.19.0] - 2022-05-23 283 | 284 | ### 新增 285 | 286 | - 可使用 `\njusetformat` 修改默认页面样式 287 | - 对封面上的超宽文字进行压缩 288 | - 支持专硕封面的特殊标签格式 - [#147] 289 | - 跟进新版本科生诚信承诺书样式 290 | - 国家图书馆样式更新 291 | - 添加学位授予日期设置项 `info/confer-date` - [#150] 292 | - 添加底部日期设置项 `info/bottom-date` 293 | 294 | ### 修复 295 | 296 | - 图表标题使用粗体 -[#139] 297 | - 修复成果列表与章末参考文献表的冲突 -[#148] 298 | 299 | ### 变动 300 | 301 | - 将国家图书馆封面的标题字样修改为“学位论文” 302 | - 将国家图书馆封面的评审委员会人数分离为单独参数 303 | - 更正研究生模板普通封面上学硕和专硕不同的专业名称字样 304 | 305 | ### 杂项 306 | - 修正文档笔误 - [#137] 307 | - 感谢 [@note286]! 308 | 309 | ## [0.18.0] - 2022-05-01 310 | 311 | ### 新增 312 | 313 | - 新增内置定理环境的若干设置项 - [#50] 314 | - 新增脚注设置项 - [#129] 315 | - 编号可使用带圈数字 316 | - 新增盲审模式 - [#130] 317 | 318 | ### 修复 319 | 320 | - 正确生成出版授权书前后的空白页 321 | - 删除出版授权书页的页眉 - [#130] 322 | - 出版授权书内双导师姓名之间添加空格 - [#130] 323 | - 设置4、5级标题的样式 324 | 325 | ### 变动 326 | 327 | - 微调校名校徽尺寸 328 | 329 | ### 杂项 330 | 331 | - 说明手册中补充数学符号格式说明 332 | 333 | ## [0.17.0] - 2022-04-09 334 | 335 | ### 新增 336 | 337 | - 提供修改固定文本的接口 - [#111] 338 | - 提供修改长度值的接口 - [#121] 339 | - 提供修改默认样式的接口 340 | - 提供研究生的学位论文出版授权书 - [#116] 341 | 342 | ### 优化 343 | 344 | - 优化封面标题的断行方式 - [#121] 345 | - PDF 书签中不显示额外空格 346 | 347 | ### 杂项 348 | 349 | - 说明手册中补充扫描声明页的插入方法 - [#96] 350 | - 说明手册中增加“额外定制”一节 351 | - 说明手册中补充页眉说明 - [#119] 352 | - 说明手册跟进 TeX Live 2022 353 | 354 | ## [0.16.1] - 2022-03-27 355 | 356 | ### 修复 357 | 358 | - 修复国家图书馆封面的“UDC”名称格式 359 | - 修复研究生摘要标题的断行问题 - [#98], [#105], [#107] 360 | - 提供 `style/abstract-title` 设置项 361 | - 为研究生摘要补上“摘要”小标题字样 - [#99] 362 | 363 | ## [0.16.0] - 2022-03-19 364 | 365 | ### 新增 366 | 367 | - 将本科生和研究生模板定义分离为单独的 `.def` 文件 - [#46] 368 | - 可以手动指定页眉页脚 - [#85] 369 | - 新增 `style/header` 等若干设置项 370 | 371 | ### 修复 372 | 373 | - 研究生模板的目录、摘要等页面也显示页眉 - [#99] 374 | 375 | ### 变动 376 | 377 | - 取消对 `njuvisual` 宏包的强制依赖 378 | - 简化自动安装脚本 379 | 380 | ### 杂项 381 | 382 | - 说明手册中增加对 JabRef 软件的简介 383 | - 感谢 [@zhoujian9410]! 384 | - 说明手册中增加数学字体样式说明 - [#89], [#92] 385 | - 感谢 [@zepinglee]! 386 | - 说明手册中增加宏包依赖信息 387 | 388 | ## [0.15.0] - 2022-02-20 389 | 390 | ### 新增 391 | 392 | - 新增符号表页面 `notation` - [#61] 393 | - 可选择是否隐藏特定目录条目 394 | - 新增选项 `style/abstract-in-toc` - [#66] 395 | - 新增选项 `style/toc-in-toc` 396 | - 可使用自定义的参考文献样式 - [#71] 397 | - 修改选项 `bib/style` 398 | - 可传入自定义 `biblatex` 设置 399 | - 新增选项 `bib/option` 400 | - 增加对章末参考文献表的支持 - [#79] 401 | - 感谢 [@hushidong]! 402 | 403 | ### 修复 404 | 405 | - 修复了单面模式下的 `fancyhdr` 宏包警告 406 | - 修复研究生封面上第二导师无法正确显示的问题 - [#64] 407 | 408 | ### 变动 409 | 410 | - 为关键词列表添加悬挂缩进 411 | - 研究生模板页眉样式及内容变动 412 | - 使用小号楷体 413 | - 双面模式下奇数页右侧为节名,偶数页左侧为章名 414 | - 单面模式下页眉同时显示章节名,特殊页面居中显示其名称 415 | - 移除内部调用的宏包 416 | - `url` 417 | 418 | ### 优化 419 | 420 | - 使用 `xtemplate` 重新绘制封面 - [#46] 421 | 422 | ### 杂项 423 | 424 | - 使用 GitHub 表单重构 issue 模板 425 | - 将使用问题引导至项目论坛 426 | 427 | ## [0.14.0] - 2022-01-16 428 | 429 | ### 新增 430 | 431 | - 新增单双面模式 `oneside` 和 `twoside` 选项 432 | - 新增参考文献设置项 `bib` 433 | - 提供设置文献表样式的 `bib/style` 选项 - [#44] 434 | - 提供导入多个文献源的 `bib/resource` 选项 435 | - 新增外观样式设置项 `style` 436 | - 提供更改封面校徽图片的 `style/emblem-img` 选项 437 | - 提供更改封面校名图片的 `style/name-img` 选项 438 | - 新增 Adobe 思源宋体 `cjk-font=source` 选项 439 | 440 | ### 变动 441 | 442 | - 选项名称变更 443 | - 原创性声明页选项更名为 `decl-page` 444 | - 导师姓名职称合并在 `info/supervisor` 填写 - [#60] 445 | - 感谢 [@zepinglee]! 446 | - 标题选项 `info/title` 使用 `\\` 进行手动换行 - [#60] 447 | - 感谢 [@zepinglee]! 448 | - 使用 ISO 格式统一标记提交日期 `info/submit-date` 449 | - 感谢 [@zepinglee]! 450 | - 交付用户的压缩包更名为 `njuthesis-user-v*.zip` 451 | 452 | ### 移除 453 | 454 | - 移除封面个人信息设置项 455 | - `info/supervisor-title` 456 | - `info/supervisor-title*` 457 | - `info/supervisor-ii-title` 458 | - `info/supervisor-ii-title*` 459 | - `info/submit-date*` 460 | - 移除内部调用的宏包 461 | - `hologo` 462 | - `multirow` 463 | - `subcaption` 464 | - `wrapfig` 465 | 466 | ### 杂项 467 | 468 | - 将本模板内嵌入[南大 TeX] 网站 469 | - 编写修订记录 470 | - 修改 GitHub issue 模板,添加行为准则 471 | - 说明手册样式调整 472 | - 封面标题使用粗体 473 | 474 | ## [0.13.1] - 2021-12-15 475 | 476 | 477 | 478 | ### 新增 479 | 480 | - 新增草稿模式 `draft` 选项 481 | - `orig-decl` 选项可绘制本科生诚信承诺书页面 482 | 483 | ### 变动 484 | 485 | - 摘要格式更正 486 | 487 | ### 杂项 488 | 489 | - 在 CTAN 发布压缩包中添加许可证文件 490 | - 在手册中使用南大标准色作为超链接颜色 491 | 492 | ## [0.13.0] - 2021-12-13 493 | 494 | ### 修复 495 | 496 | - 修正数学字体 497 | - 修复页眉字符重叠的问题 498 | 499 | ### 变动 500 | 501 | - 选项名称变更 502 | - 英文字体选项更名为 `latin-font` 503 | - 中文字体选项更名为 `cjk-font` 504 | - Windows 字库选项更名为 `win` 505 | - macOS 字库选项更名为 `mac` 506 | - 导师信息选项名称变更为: 507 | - `info/supervisor` 508 | - `info/supervisor*` 509 | - `info/supervisor-title` 510 | - `info/supervisor-title*` 511 | - `info/supervisor-ii` 512 | - `info/supervisor-ii*` 513 | - `info/supervisor-ii-title` 514 | - `info/supervisor-ii-title*` 515 | 516 | ### 优化 517 | 518 | - 使用 `ntheorem` 重新定制定理环境 519 | - 使用 `ctex` 提供的命令重新定制目录样式 520 | - 使用 LaTeX3 语法重构封面绘制命令 - [#52] 521 | - 使用 LaTeX3 语法重构摘要绘制命令 - [#52] 522 | 523 | ### 移除 524 | 525 | - 移除封面个人信息设置项 526 | - `info/titlea` 527 | - `info/titleb` 528 | - `info/titlec` 529 | - 移除内部调用的宏包 530 | - `amsthm` 531 | - `listings` 532 | - `microtype` 533 | - `thmtools` 534 | - `tocloft` 535 | 536 | ## [0.12.0] - 2021-11-30 537 | 538 | ### 变动 539 | 540 | - 将内置的 `njuvisual` 分离为独立宏包 - [#44] 541 | - 隐式加载 `xparse` 包 542 | 543 | ### 杂项 544 | 545 | - 仿照 `fduthesis` 重新组织仓库的目录结构 546 | 547 | ### 杂项 548 | 549 | - 优化 GitHub Actions 脚本 550 | - 新增自动安装脚本 551 | - 手册封面添加校徽水印 552 | 553 | ## [0.11.3] - 2021-11-23 554 | 555 | ### 杂项 556 | 557 | - 仓库中提供 TeXstudio 配置文件 558 | 559 | ## [0.11.1] - 2021-10-23 560 | 561 | ### 新增 562 | 563 | - 对依赖的宏包进行版本检测 564 | 565 | ## [0.11.0] - 2021-10-01 566 | 567 | ### 新增 568 | 569 | - 新增成果列表命令 `\njupaperlist` 570 | - 将文档信息写入 PDF 元数据 571 | 572 | ### 变动 573 | 574 | - 使用小写字母加连字符的形式重命名个人信息选项 575 | 576 | ## [0.10.0] - 2021-09-24 577 | 578 | ### 新增 579 | 580 | - 将校名校徽图片内置化 581 | - 使用 `njuvisual.sty` 储存 Tikz 图形 582 | 583 | ### 修复 584 | 585 | - 修复 LuaLaTeX 编译后 PDF 书签不正确的问题 - [#14] 586 | 587 | ### 变动 588 | 589 | ## [0.9.0] - 2021-09-15 590 | 591 | ### 新增 592 | 593 | - 使用 DocStrip 合并项目源代码 594 | 595 | ### 变动 596 | 597 | 598 | 599 | ## 0.3.0 -> [0.8.4] - 2021-09-12 600 | 601 | ### 新增 602 | 603 | - 以 [NJU Thesis 2021] 为基础构建了初步可用的模板。 604 | - 实现了本科生毕业论文或设计模板 605 | - 实现了研究生学位论文模板 606 | 607 | ### 杂项 608 | 609 | - 通过 GitHub Actions 实现了自动测试和打包发布 610 | - 模板上传至 CTAN 611 | 612 | 613 | [未发布]: https://github.com/nju-lug/NJUThesis/compare/v1.4.3...HEAD 614 | 615 | [1.4.3]: https://github.com/nju-lug/NJUThesis/compare/v1.4.2...v1.4.3 616 | [1.4.2]: https://github.com/nju-lug/NJUThesis/compare/v1.4.1...v1.4.2 617 | [1.4.1]: https://github.com/nju-lug/NJUThesis/compare/v1.4.0...v1.4.1 618 | [1.4.0]: https://github.com/nju-lug/NJUThesis/compare/v1.3.2...v1.4.0 619 | [1.3.2]: https://github.com/nju-lug/NJUThesis/compare/v1.3.1...v1.3.2 620 | [1.3.1]: https://github.com/nju-lug/NJUThesis/compare/v1.3.0...v1.3.1 621 | [1.3.0]: https://github.com/nju-lug/NJUThesis/compare/v1.2.1...v1.3.0 622 | [1.2.1]: https://github.com/nju-lug/NJUThesis/compare/v1.2.0...v1.2.1 623 | [1.2.0]: https://github.com/nju-lug/NJUThesis/compare/v1.1.2...v1.2.0 624 | [1.1.2]: https://github.com/nju-lug/NJUThesis/compare/v1.1.1...v1.1.2 625 | [1.1.1]: https://github.com/nju-lug/NJUThesis/compare/v1.1.0...v1.1.1 626 | [1.1.0]: https://github.com/nju-lug/NJUThesis/compare/v1.0.0...v1.1.0 627 | [1.0.0]: https://github.com/nju-lug/NJUThesis/compare/v0.20.0...v1.0.0 628 | 629 | [0.20.0]: https://github.com/nju-lug/NJUThesis/compare/v0.19.0...v0.20.0 630 | [0.19.0]: https://github.com/nju-lug/NJUThesis/compare/v0.18.0...v0.19.0 631 | [0.18.0]: https://github.com/nju-lug/NJUThesis/compare/v0.17.0...v0.18.0 632 | [0.17.0]: https://github.com/nju-lug/NJUThesis/compare/v0.16.0...v0.17.0 633 | [0.16.1]: https://github.com/nju-lug/NJUThesis/compare/v0.16.0...v0.16.1 634 | [0.16.0]: https://github.com/nju-lug/NJUThesis/compare/v0.15.0...v0.16.0 635 | [0.15.0]: https://github.com/nju-lug/NJUThesis/compare/v0.14.0...v0.15.0 636 | [0.14.0]: https://github.com/nju-lug/NJUThesis/compare/v0.13.1...v0.14.0 637 | [0.13.1]: https://github.com/nju-lug/NJUThesis/compare/v0.13.0...v0.13.1 638 | [0.13.0]: https://github.com/nju-lug/NJUThesis/compare/v0.12.0...v0.13.0 639 | [0.12.0]: https://github.com/nju-lug/NJUThesis/compare/v0.11.3...v0.12.0 640 | [0.11.3]: https://github.com/nju-lug/NJUThesis/compare/v0.11.0...v0.11.3 641 | [0.11.0]: https://github.com/nju-lug/NJUThesis/compare/v0.10.0...v0.11.0 642 | [0.10.0]: https://github.com/nju-lug/NJUThesis/compare/v0.9.0...v0.10.0 643 | [0.9.0]: https://github.com/nju-lug/NJUThesis/compare/v0.8.4...v0.9.0 644 | [0.8.4]: https://github.com/nju-lug/NJUThesis/compare/v0.3.0...v0.8.4 645 | 646 | [#14]: https://github.com/nju-lug/NJUThesis/issues/14 647 | [#44]: https://github.com/nju-lug/NJUThesis/issues/44 648 | [#46]: https://github.com/nju-lug/NJUThesis/issues/46 649 | [#50]: https://github.com/nju-lug/NJUThesis/issues/50 650 | [#52]: https://github.com/nju-lug/NJUThesis/issues/52 651 | [#60]: https://github.com/nju-lug/NJUThesis/issues/60 652 | [#61]: https://github.com/nju-lug/NJUThesis/issues/61 653 | [#64]: https://github.com/nju-lug/NJUThesis/issues/64 654 | [#66]: https://github.com/nju-lug/NJUThesis/issues/66 655 | [#71]: https://github.com/nju-lug/NJUThesis/discussions/71 656 | [#79]: https://github.com/nju-lug/NJUThesis/issues/79 657 | [#85]: https://github.com/nju-lug/NJUThesis/discussions/85 658 | [#89]: https://github.com/nju-lug/NJUThesis/discussions/89 659 | [#92]: https://github.com/nju-lug/NJUThesis/issues/92 660 | [#94]: https://github.com/nju-lug/NJUThesis/discussions/94 661 | [#96]: https://github.com/nju-lug/NJUThesis/issues/96 662 | [#98]: https://github.com/nju-lug/NJUThesis/issues/98 663 | [#99]: https://github.com/nju-lug/NJUThesis/discussions/99 664 | [#105]: https://github.com/nju-lug/NJUThesis/discussions/105 665 | [#107]: https://github.com/nju-lug/NJUThesis/issues/107 666 | [#111]: https://github.com/nju-lug/NJUThesis/issues/111 667 | [#116]: https://github.com/nju-lug/NJUThesis/issues/116 668 | [#117]: https://github.com/nju-lug/NJUThesis/issues/117 669 | [#119]: https://github.com/nju-lug/NJUThesis/issues/119 670 | [#121]: https://github.com/nju-lug/NJUThesis/issues/121 671 | [#129]: https://github.com/nju-lug/NJUThesis/issues/129 672 | [#130]: https://github.com/nju-lug/NJUThesis/issues/130 673 | [#131]: https://github.com/nju-lug/NJUThesis/issues/131 674 | [#134]: https://github.com/nju-lug/NJUThesis/discussions/134 675 | [#137]: https://github.com/nju-lug/NJUThesis/issues/137 676 | [#139]: https://github.com/nju-lug/NJUThesis/discussions/139 677 | [#142]: https://github.com/nju-lug/NJUThesis/issues/142 678 | [#144]: https://github.com/nju-lug/NJUThesis/issues/144 679 | [#147]: https://github.com/nju-lug/NJUThesis/discussions/147 680 | [#148]: https://github.com/nju-lug/NJUThesis/issues/148 681 | [#150]: https://github.com/nju-lug/NJUThesis/discussions/150 682 | [#155]: https://github.com/nju-lug/NJUThesis/discussions/155 683 | [#164]: https://github.com/nju-lug/NJUThesis/issues/164 684 | [#165]: https://github.com/nju-lug/NJUThesis/discussions/165 685 | [#166]: https://github.com/nju-lug/NJUThesis/discussions/166 686 | [#169]: https://github.com/nju-lug/NJUThesis/issues/169 687 | [#170]: https://github.com/nju-lug/NJUThesis/issues/170 688 | [#172]: https://github.com/nju-lug/NJUThesis/issues/172 689 | [#173]: https://github.com/nju-lug/NJUThesis/issues/173 690 | [#181]: https://github.com/nju-lug/NJUThesis/issues/181 691 | [#191]: https://github.com/nju-lug/NJUThesis/issues/191 692 | [#192]: https://github.com/nju-lug/NJUThesis/discussions/192 693 | [#200]: https://github.com/nju-lug/NJUThesis/discussions/200 694 | [#202]: https://github.com/nju-lug/NJUThesis/discussions/202 695 | [#204]: https://github.com/nju-lug/NJUThesis/issues/204 696 | [#206]: https://github.com/nju-lug/NJUThesis/issues/206 697 | [#207]: https://github.com/nju-lug/NJUThesis/issues/207 698 | [#208]: https://github.com/nju-lug/NJUThesis/issues/208 699 | [#213]: https://github.com/nju-lug/NJUThesis/issues/213 700 | [#216]: https://github.com/nju-lug/NJUThesis/issues/216 701 | [#217]: https://github.com/nju-lug/NJUThesis/issues/217 702 | [#223]: https://github.com/nju-lug/NJUThesis/issues/223 703 | [#227]: https://github.com/nju-lug/NJUThesis/issues/227 704 | [#229]: https://github.com/nju-lug/NJUThesis/discussions/229 705 | [#230]: https://github.com/nju-lug/NJUThesis/issues/230 706 | [#232]: https://github.com/nju-lug/NJUThesis/issues/232 707 | [#234]: https://github.com/nju-lug/NJUThesis/issues/234 708 | [#243]: https://github.com/nju-lug/NJUThesis/issues/243 709 | [#245]: https://github.com/nju-lug/NJUThesis/discussions/245 710 | [#248]: https://github.com/nju-lug/NJUThesis/issues/248 711 | [#251]: https://github.com/nju-lug/NJUThesis/discussions/251 712 | [#253]: https://github.com/nju-lug/NJUThesis/pull/253 713 | [#263]: https://github.com/nju-lug/NJUThesis/issues/263 714 | [#266]: https://github.com/nju-lug/NJUThesis/discussions/266 715 | [#269]: https://github.com/nju-lug/NJUThesis/pull/269 716 | [#276]: https://github.com/nju-lug/NJUThesis/discussions/276 717 | 718 | [CTeX-org/ctex-kit#678]: https://github.com/CTeX-org/ctex-kit/pull/678 719 | [CTeX-org/ctex-kit#700]: https://github.com/CTeX-org/ctex-kit/pull/700 720 | [CTeX-org/ctex-kit#703]: https://github.com/CTeX-org/ctex-kit/pull/703 721 | [lvjr/codehigh#12]: https://github.com/lvjr/codehigh/issues/12 722 | 723 | [更新日志]: https://keepachangelog.com/zh-CN/1.0.0/ 724 | [语义化版本]: https://semver.org/lang/zh-CN/ 725 | [南大 TeX]: https://tex.nju.edu.cn/ 726 | [NJU Thesis 2021]: https://github.com/FengChendian/NJUThesis2021 727 | [`tl-depend-analysis`]: https://github.com/stone-zeng/tl-depend-analysis/ 728 | 729 | [@zepinglee]: https://github.com/zepinglee 730 | [@hushidong]: https://github.com/hushidong 731 | [@zhoujian9410]: https://github.com/zhoujian9410 732 | [@note286]: https://github.com/note286 733 | [@AlphaZTX]: https://github.com/AlphaZTX 734 | [@stone-zeng]: https://github.com/stone-zeng 735 | [@liudongmiao]: https://github.com/liudongmiao 736 | [@muzimuzhi]: https://github.com/muzimuzhi 737 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The LaTeX Project Public License 2 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 3 | 4 | LPPL Version 1.3c 2008-05-04 5 | 6 | Copyright 1999 2002-2008 LaTeX3 Project 7 | Everyone is allowed to distribute verbatim copies of this 8 | license document, but modification of it is not allowed. 9 | 10 | 11 | PREAMBLE 12 | ======== 13 | 14 | The LaTeX Project Public License (LPPL) is the primary license under 15 | which the LaTeX kernel and the base LaTeX packages are distributed. 16 | 17 | You may use this license for any work of which you hold the copyright 18 | and which you wish to distribute. This license may be particularly 19 | suitable if your work is TeX-related (such as a LaTeX package), but 20 | it is written in such a way that you can use it even if your work is 21 | unrelated to TeX. 22 | 23 | The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', 24 | below, gives instructions, examples, and recommendations for authors 25 | who are considering distributing their works under this license. 26 | 27 | This license gives conditions under which a work may be distributed 28 | and modified, as well as conditions under which modified versions of 29 | that work may be distributed. 30 | 31 | We, the LaTeX3 Project, believe that the conditions below give you 32 | the freedom to make and distribute modified versions of your work 33 | that conform with whatever technical specifications you wish while 34 | maintaining the availability, integrity, and reliability of 35 | that work. If you do not see how to achieve your goal while 36 | meeting these conditions, then read the document `cfgguide.tex' 37 | and `modguide.tex' in the base LaTeX distribution for suggestions. 38 | 39 | 40 | DEFINITIONS 41 | =========== 42 | 43 | In this license document the following terms are used: 44 | 45 | `Work' 46 | Any work being distributed under this License. 47 | 48 | `Derived Work' 49 | Any work that under any applicable law is derived from the Work. 50 | 51 | `Modification' 52 | Any procedure that produces a Derived Work under any applicable 53 | law -- for example, the production of a file containing an 54 | original file associated with the Work or a significant portion of 55 | such a file, either verbatim or with modifications and/or 56 | translated into another language. 57 | 58 | `Modify' 59 | To apply any procedure that produces a Derived Work under any 60 | applicable law. 61 | 62 | `Distribution' 63 | Making copies of the Work available from one person to another, in 64 | whole or in part. Distribution includes (but is not limited to) 65 | making any electronic components of the Work accessible by 66 | file transfer protocols such as FTP or HTTP or by shared file 67 | systems such as Sun's Network File System (NFS). 68 | 69 | `Compiled Work' 70 | A version of the Work that has been processed into a form where it 71 | is directly usable on a computer system. This processing may 72 | include using installation facilities provided by the Work, 73 | transformations of the Work, copying of components of the Work, or 74 | other activities. Note that modification of any installation 75 | facilities provided by the Work constitutes modification of the Work. 76 | 77 | `Current Maintainer' 78 | A person or persons nominated as such within the Work. If there is 79 | no such explicit nomination then it is the `Copyright Holder' under 80 | any applicable law. 81 | 82 | `Base Interpreter' 83 | A program or process that is normally needed for running or 84 | interpreting a part or the whole of the Work. 85 | 86 | A Base Interpreter may depend on external components but these 87 | are not considered part of the Base Interpreter provided that each 88 | external component clearly identifies itself whenever it is used 89 | interactively. Unless explicitly specified when applying the 90 | license to the Work, the only applicable Base Interpreter is a 91 | `LaTeX-Format' or in the case of files belonging to the 92 | `LaTeX-format' a program implementing the `TeX language'. 93 | 94 | 95 | 96 | CONDITIONS ON DISTRIBUTION AND MODIFICATION 97 | =========================================== 98 | 99 | 1. Activities other than distribution and/or modification of the Work 100 | are not covered by this license; they are outside its scope. In 101 | particular, the act of running the Work is not restricted and no 102 | requirements are made concerning any offers of support for the Work. 103 | 104 | 2. You may distribute a complete, unmodified copy of the Work as you 105 | received it. Distribution of only part of the Work is considered 106 | modification of the Work, and no right to distribute such a Derived 107 | Work may be assumed under the terms of this clause. 108 | 109 | 3. You may distribute a Compiled Work that has been generated from a 110 | complete, unmodified copy of the Work as distributed under Clause 2 111 | above, as long as that Compiled Work is distributed in such a way that 112 | the recipients may install the Compiled Work on their system exactly 113 | as it would have been installed if they generated a Compiled Work 114 | directly from the Work. 115 | 116 | 4. If you are the Current Maintainer of the Work, you may, without 117 | restriction, modify the Work, thus creating a Derived Work. You may 118 | also distribute the Derived Work without restriction, including 119 | Compiled Works generated from the Derived Work. Derived Works 120 | distributed in this manner by the Current Maintainer are considered to 121 | be updated versions of the Work. 122 | 123 | 5. If you are not the Current Maintainer of the Work, you may modify 124 | your copy of the Work, thus creating a Derived Work based on the Work, 125 | and compile this Derived Work, thus creating a Compiled Work based on 126 | the Derived Work. 127 | 128 | 6. If you are not the Current Maintainer of the Work, you may 129 | distribute a Derived Work provided the following conditions are met 130 | for every component of the Work unless that component clearly states 131 | in the copyright notice that it is exempt from that condition. Only 132 | the Current Maintainer is allowed to add such statements of exemption 133 | to a component of the Work. 134 | 135 | a. If a component of this Derived Work can be a direct replacement 136 | for a component of the Work when that component is used with the 137 | Base Interpreter, then, wherever this component of the Work 138 | identifies itself to the user when used interactively with that 139 | Base Interpreter, the replacement component of this Derived Work 140 | clearly and unambiguously identifies itself as a modified version 141 | of this component to the user when used interactively with that 142 | Base Interpreter. 143 | 144 | b. Every component of the Derived Work contains prominent notices 145 | detailing the nature of the changes to that component, or a 146 | prominent reference to another file that is distributed as part 147 | of the Derived Work and that contains a complete and accurate log 148 | of the changes. 149 | 150 | c. No information in the Derived Work implies that any persons, 151 | including (but not limited to) the authors of the original version 152 | of the Work, provide any support, including (but not limited to) 153 | the reporting and handling of errors, to recipients of the 154 | Derived Work unless those persons have stated explicitly that 155 | they do provide such support for the Derived Work. 156 | 157 | d. You distribute at least one of the following with the Derived Work: 158 | 159 | 1. A complete, unmodified copy of the Work; 160 | if your distribution of a modified component is made by 161 | offering access to copy the modified component from a 162 | designated place, then offering equivalent access to copy 163 | the Work from the same or some similar place meets this 164 | condition, even though third parties are not compelled to 165 | copy the Work along with the modified component; 166 | 167 | 2. Information that is sufficient to obtain a complete, 168 | unmodified copy of the Work. 169 | 170 | 7. If you are not the Current Maintainer of the Work, you may 171 | distribute a Compiled Work generated from a Derived Work, as long as 172 | the Derived Work is distributed to all recipients of the Compiled 173 | Work, and as long as the conditions of Clause 6, above, are met with 174 | regard to the Derived Work. 175 | 176 | 8. The conditions above are not intended to prohibit, and hence do not 177 | apply to, the modification, by any method, of any component so that it 178 | becomes identical to an updated version of that component of the Work as 179 | it is distributed by the Current Maintainer under Clause 4, above. 180 | 181 | 9. Distribution of the Work or any Derived Work in an alternative 182 | format, where the Work or that Derived Work (in whole or in part) is 183 | then produced by applying some process to that format, does not relax or 184 | nullify any sections of this license as they pertain to the results of 185 | applying that process. 186 | 187 | 10. a. A Derived Work may be distributed under a different license 188 | provided that license itself honors the conditions listed in 189 | Clause 6 above, in regard to the Work, though it does not have 190 | to honor the rest of the conditions in this license. 191 | 192 | b. If a Derived Work is distributed under a different license, that 193 | Derived Work must provide sufficient documentation as part of 194 | itself to allow each recipient of that Derived Work to honor the 195 | restrictions in Clause 6 above, concerning changes from the Work. 196 | 197 | 11. This license places no restrictions on works that are unrelated to 198 | the Work, nor does this license place any restrictions on aggregating 199 | such works with the Work by any means. 200 | 201 | 12. Nothing in this license is intended to, or may be used to, prevent 202 | complete compliance by all parties with all applicable laws. 203 | 204 | 205 | NO WARRANTY 206 | =========== 207 | 208 | There is no warranty for the Work. Except when otherwise stated in 209 | writing, the Copyright Holder provides the Work `as is', without 210 | warranty of any kind, either expressed or implied, including, but not 211 | limited to, the implied warranties of merchantability and fitness for a 212 | particular purpose. The entire risk as to the quality and performance 213 | of the Work is with you. Should the Work prove defective, you assume 214 | the cost of all necessary servicing, repair, or correction. 215 | 216 | In no event unless required by applicable law or agreed to in writing 217 | will The Copyright Holder, or any author named in the components of the 218 | Work, or any other party who may distribute and/or modify the Work as 219 | permitted above, be liable to you for damages, including any general, 220 | special, incidental or consequential damages arising out of any use of 221 | the Work or out of inability to use the Work (including, but not limited 222 | to, loss of data, data being rendered inaccurate, or losses sustained by 223 | anyone as a result of any failure of the Work to operate with any other 224 | programs), even if the Copyright Holder or said author or said other 225 | party has been advised of the possibility of such damages. 226 | 227 | 228 | MAINTENANCE OF THE WORK 229 | ======================= 230 | 231 | The Work has the status `author-maintained' if the Copyright Holder 232 | explicitly and prominently states near the primary copyright notice in 233 | the Work that the Work can only be maintained by the Copyright Holder 234 | or simply that it is `author-maintained'. 235 | 236 | The Work has the status `maintained' if there is a Current Maintainer 237 | who has indicated in the Work that they are willing to receive error 238 | reports for the Work (for example, by supplying a valid e-mail 239 | address). It is not required for the Current Maintainer to acknowledge 240 | or act upon these error reports. 241 | 242 | The Work changes from status `maintained' to `unmaintained' if there 243 | is no Current Maintainer, or the person stated to be Current 244 | Maintainer of the work cannot be reached through the indicated means 245 | of communication for a period of six months, and there are no other 246 | significant signs of active maintenance. 247 | 248 | You can become the Current Maintainer of the Work by agreement with 249 | any existing Current Maintainer to take over this role. 250 | 251 | If the Work is unmaintained, you can become the Current Maintainer of 252 | the Work through the following steps: 253 | 254 | 1. Make a reasonable attempt to trace the Current Maintainer (and 255 | the Copyright Holder, if the two differ) through the means of 256 | an Internet or similar search. 257 | 258 | 2. If this search is successful, then enquire whether the Work 259 | is still maintained. 260 | 261 | a. If it is being maintained, then ask the Current Maintainer 262 | to update their communication data within one month. 263 | 264 | b. If the search is unsuccessful or no action to resume active 265 | maintenance is taken by the Current Maintainer, then announce 266 | within the pertinent community your intention to take over 267 | maintenance. (If the Work is a LaTeX work, this could be 268 | done, for example, by posting to comp.text.tex.) 269 | 270 | 3a. If the Current Maintainer is reachable and agrees to pass 271 | maintenance of the Work to you, then this takes effect 272 | immediately upon announcement. 273 | 274 | b. If the Current Maintainer is not reachable and the Copyright 275 | Holder agrees that maintenance of the Work be passed to you, 276 | then this takes effect immediately upon announcement. 277 | 278 | 4. If you make an `intention announcement' as described in 2b. above 279 | and after three months your intention is challenged neither by 280 | the Current Maintainer nor by the Copyright Holder nor by other 281 | people, then you may arrange for the Work to be changed so as 282 | to name you as the (new) Current Maintainer. 283 | 284 | 5. If the previously unreachable Current Maintainer becomes 285 | reachable once more within three months of a change completed 286 | under the terms of 3b) or 4), then that Current Maintainer must 287 | become or remain the Current Maintainer upon request provided 288 | they then update their communication data within one month. 289 | 290 | A change in the Current Maintainer does not, of itself, alter the fact 291 | that the Work is distributed under the LPPL license. 292 | 293 | If you become the Current Maintainer of the Work, you should 294 | immediately provide, within the Work, a prominent and unambiguous 295 | statement of your status as Current Maintainer. You should also 296 | announce your new status to the same pertinent community as 297 | in 2b) above. 298 | 299 | 300 | WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE 301 | ====================================================== 302 | 303 | This section contains important instructions, examples, and 304 | recommendations for authors who are considering distributing their 305 | works under this license. These authors are addressed as `you' in 306 | this section. 307 | 308 | Choosing This License or Another License 309 | ---------------------------------------- 310 | 311 | If for any part of your work you want or need to use *distribution* 312 | conditions that differ significantly from those in this license, then 313 | do not refer to this license anywhere in your work but, instead, 314 | distribute your work under a different license. You may use the text 315 | of this license as a model for your own license, but your license 316 | should not refer to the LPPL or otherwise give the impression that 317 | your work is distributed under the LPPL. 318 | 319 | The document `modguide.tex' in the base LaTeX distribution explains 320 | the motivation behind the conditions of this license. It explains, 321 | for example, why distributing LaTeX under the GNU General Public 322 | License (GPL) was considered inappropriate. Even if your work is 323 | unrelated to LaTeX, the discussion in `modguide.tex' may still be 324 | relevant, and authors intending to distribute their works under any 325 | license are encouraged to read it. 326 | 327 | A Recommendation on Modification Without Distribution 328 | ----------------------------------------------------- 329 | 330 | It is wise never to modify a component of the Work, even for your own 331 | personal use, without also meeting the above conditions for 332 | distributing the modified component. While you might intend that such 333 | modifications will never be distributed, often this will happen by 334 | accident -- you may forget that you have modified that component; or 335 | it may not occur to you when allowing others to access the modified 336 | version that you are thus distributing it and violating the conditions 337 | of this license in ways that could have legal implications and, worse, 338 | cause problems for the community. It is therefore usually in your 339 | best interest to keep your copy of the Work identical with the public 340 | one. Many works provide ways to control the behavior of that work 341 | without altering any of its licensed components. 342 | 343 | How to Use This License 344 | ----------------------- 345 | 346 | To use this license, place in each of the components of your work both 347 | an explicit copyright notice including your name and the year the work 348 | was authored and/or last substantially modified. Include also a 349 | statement that the distribution and/or modification of that 350 | component is constrained by the conditions in this license. 351 | 352 | Here is an example of such a notice and statement: 353 | 354 | %% pig.dtx 355 | %% Copyright 2005 M. Y. Name 356 | % 357 | % This work may be distributed and/or modified under the 358 | % conditions of the LaTeX Project Public License, either version 1.3 359 | % of this license or (at your option) any later version. 360 | % The latest version of this license is in 361 | % http://www.latex-project.org/lppl.txt 362 | % and version 1.3 or later is part of all distributions of LaTeX 363 | % version 2005/12/01 or later. 364 | % 365 | % This work has the LPPL maintenance status `maintained'. 366 | % 367 | % The Current Maintainer of this work is M. Y. Name. 368 | % 369 | % This work consists of the files pig.dtx and pig.ins 370 | % and the derived file pig.sty. 371 | 372 | Given such a notice and statement in a file, the conditions 373 | given in this license document would apply, with the `Work' referring 374 | to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being 375 | generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' 376 | referring to any `LaTeX-Format', and both `Copyright Holder' and 377 | `Current Maintainer' referring to the person `M. Y. Name'. 378 | 379 | If you do not want the Maintenance section of LPPL to apply to your 380 | Work, change `maintained' above into `author-maintained'. 381 | However, we recommend that you use `maintained', as the Maintenance 382 | section was added in order to ensure that your Work remains useful to 383 | the community even when you can no longer maintain and support it 384 | yourself. 385 | 386 | Derived Works That Are Not Replacements 387 | --------------------------------------- 388 | 389 | Several clauses of the LPPL specify means to provide reliability and 390 | stability for the user community. They therefore concern themselves 391 | with the case that a Derived Work is intended to be used as a 392 | (compatible or incompatible) replacement of the original Work. If 393 | this is not the case (e.g., if a few lines of code are reused for a 394 | completely different task), then clauses 6b and 6d shall not apply. 395 | 396 | 397 | Important Recommendations 398 | ------------------------- 399 | 400 | Defining What Constitutes the Work 401 | 402 | The LPPL requires that distributions of the Work contain all the 403 | files of the Work. It is therefore important that you provide a 404 | way for the licensee to determine which files constitute the Work. 405 | This could, for example, be achieved by explicitly listing all the 406 | files of the Work near the copyright notice of each file or by 407 | using a line such as: 408 | 409 | % This work consists of all files listed in manifest.txt. 410 | 411 | in that place. In the absence of an unequivocal list it might be 412 | impossible for the licensee to determine what is considered by you 413 | to comprise the Work and, in such a case, the licensee would be 414 | entitled to make reasonable conjectures as to which files comprise 415 | the Work. 416 | -------------------------------------------------------------------------------- /conf.txsprofile: -------------------------------------------------------------------------------- 1 | [General] 2 | IniMode=true 3 | 4 | [version] 5 | written_by_TXS_version=4.1.1 6 | written_by_TXS_hg_revision=4.1.1 7 | written_by_Qt_version=393729 8 | created_by_TXS_version=4.1.1 9 | created_by_TXS_hg_revision=4.1.1 10 | created_by_Qt_version=393729 11 | 12 | [texmaker] 13 | Tools\Commands\latex="latex.exe -src -interaction=nonstopmode %.tex" 14 | Tools\Commands\pdflatex="pdflatex.exe -synctex=1 -interaction=nonstopmode %.tex" 15 | Tools\Commands\xelatex="xelatex.exe -synctex=1 -interaction=nonstopmode %.tex" 16 | Tools\Commands\lualatex="lualatex.exe -synctex=1 -interaction=nonstopmode %.tex" 17 | Tools\Commands\view-dvi=\"C:\\Users\\bxylip\\AppData\\Local\\Programs\\MiKTeX\\miktex\\bin\\x64\\yap.exe\" -1 -s @?\"c:ame \"?am.dvi\" 18 | Tools\Commands\view-ps=C:\\Windows\\system32\\OpenWith.exe \"?am.ps\" 19 | Tools\Commands\view-pdf-external=\"C:\\Program Files\\SumatraPDF\\SumatraPDF.exe\" \"?am.pdf\" %* 20 | Tools\Commands\dvips=dvips.exe -o %.ps %.dvi 21 | Tools\Commands\dvipng=dvipng.exe -T tight -D 120 %.dvi 22 | Tools\Commands\ps2pdf=ps2pdf.exe %.ps 23 | Tools\Commands\dvipdf=dvipdfmx.exe %.dvi 24 | Tools\Commands\bibtex=bibtex.exe % 25 | Tools\Commands\bibtex8=bibtex8.exe % 26 | Tools\Commands\biber=biber.exe % 27 | Tools\Commands\makeindex=makeindex.exe %.idx 28 | Tools\Commands\texindy=texindy.exe %.idx 29 | Tools\Commands\makeglossaries=makeglossaries.exe % 30 | Tools\Commands\metapost="mpost.exe -interaction=nonstopmode ?me)" 31 | Tools\Commands\asy=asy.exe ?m*.asy 32 | Tools\Commands\gs=mgs.exe \"?am.ps\" 33 | Tools\Commands\latexmk="latexmk.exe -silent -synctex=1 %" 34 | Tools\Commands\texdoc="texdoc.exe " 35 | Tools\Commands\quick=txs:///compile | txs:///view 36 | Tools\Commands\compile=txs:///latexmk 37 | Tools\Commands\view=txs:///view-pdf 38 | Tools\Commands\view-pdf=txs:///view-pdf-internal --embedded 39 | Tools\Commands\bibliography=txs:///biber 40 | Tools\Commands\index=txs:///makeindex 41 | Tools\Commands\glossary=txs:///makeglossaries 42 | Tools\Commands\ps-chain=txs:///latex | txs:///dvips | txs:///view-ps 43 | Tools\Commands\dvi-chain=txs:///latex | txs:///view-dvi 44 | Tools\Commands\pdf-chain=txs:///pdflatex | txs:///view-pdf 45 | Tools\Commands\dvi-pdf-chain=txs:///latex | txs:///dvipdf | txs:///view-pdf 46 | Tools\Commands\dvi-ps-pdf-chain=txs:///latex | txs:///dvips | txs:///ps2pdf | txs:///view-pdf 47 | Tools\Commands\asy-dvi-chain=txs:///latex | txs:///asy | txs:///latex | txs:///view-dvi 48 | Tools\Commands\asy-pdf-chain=txs:///pdflatex | txs:///asy | txs:///pdflatex | txs:///view-pdf 49 | Tools\Commands\pre-compile= 50 | Tools\Commands\internal-pre-compile=txs:///pre-compile | txs:///conditionally-recompile-bibliography 51 | Tools\Commands\recompile-bibliography=txs:///compile | txs:///bibliography | txs:///compile 52 | Tools\Commands\svn= 53 | Tools\Commands\svnadmin= 54 | Tools\Commands\git="git.exe " 55 | Tools\Commands\terminal-external=C:\\Windows\\system32\\cmd.exe 56 | Startup\CheckLatexConfiguration=true 57 | ToolBar\CentralVisible=true 58 | StructureView\ShowLinenumbers=false 59 | StructureView\Indentation=-1 60 | StructureView\IndentIncludes=false 61 | Structure\ShowElementsInComments=false 62 | Structure\MarkStructureElementsBeyondEnd=true 63 | Structure\MarkStructureElementsInAppendix=true 64 | StructureView\ReferenceCommandsInContextMenu=\\ref 65 | StructureView\BackgroundColorInGlobalTOC=1 66 | StructureView\SingleDocMode=false 67 | StructureView\ScrollToCurrentPosition=true 68 | MacroEditor\LineWrap=false 69 | Files\New%20File%20Encoding=UTF-8 70 | Files\AutoDetectEncodingFromChars=true 71 | Files\AutoDetectEncodingFromLatex=true 72 | Common%20Encodings=UTF-8, ISO-8859-1, windows-1252, Apple Roman 73 | Files\Max%20Recent%20Files=5 74 | Files\Max%20Recent%20Projects=3 75 | Files\Max%20Recent%20Sessions=5 76 | Files\Recent%20Files=C:/Users/bxylip/Desktop/NJUThesis/latexmkrc, C:/Users/bxylip/Desktop/NJUThesis/njuthesis-sample.tex 77 | Files\Recent%20Project%20Files=@Invalid() 78 | Files\Recent%20Session%20Files=@Invalid() 79 | Files\Remember%20File%20Filter=true 80 | Files\Use%20Native%20File%20Dialog=true 81 | Files\Recent%20Files%20Highlighting="@Variant(\0\0\0\x7f\0\0\0\x16QMap\0\0\0\0\0)" 82 | Files\RestoreSession=true 83 | Files\Last%20Document=C:/Users/bxylip/Desktop/NJUThesis/njuthesis-sample.tex 84 | Files\Parse%20BibTeX=true 85 | Bibliography\BibFileEncoding=UTF-8 86 | Files\Parse%20Master=true 87 | Files\Autosave=0 88 | Files\Autoload=true 89 | Files\Bib%20Paths= 90 | Files\Image%20Paths= 91 | Session\StoreRelativePaths=true 92 | Editor\GoToErrorWhenDisplayingLog=true 93 | Editor\ShowLogMarkersWhenClickingLogEntry=true 94 | Editor\LogFileEncoding=Document 95 | Editor\ScanInstalledLatexPackages=true 96 | Tools\Insert%20Unicode%20From%20SymbolGrid=false 97 | Spell\DictionaryDir= 98 | Spell\Language= 99 | Spell\Dic=C:/Program Files/texstudio/dictionaries/de_DE.dic 100 | Thesaurus\Database=C:\\Program Files\\texstudio\\dictionaries\\th_en_US_v2.dat 101 | Macros\RepositoryURL=https://api.github.com/repos/texstudio-org/texstudio-macro/contents/ 102 | Update\AutoCheck=true 103 | Update\UpdateLevel=0 104 | Update\AutoCheckInvervalDays=7 105 | Update\LastCheck=@DateTime(\0\0\0\x10\0€\0\0\0\0\0\0\0ÿÿÿÿ\0) 106 | Editor\WordWrapMode=1 107 | Editor\WrapLineWidth=80 108 | Editor\Parentheses%20Matching=true 109 | Editor\Parentheses%20Completion=true 110 | Editor\Line%20Number%20Multiples=0 111 | Editor\Cursor%20Surrounding%20Lines=5 112 | Editor\BoldCursor=true 113 | Editor\CenterDocumentInEditor=false 114 | Editor\Auto%20Indent=true 115 | Editor\Weak%20Indent=false 116 | Editor\Indent%20with%20Spaces=false 117 | Editor\ReplaceTextTabs=false 118 | Editor\RemoveTrailingWsOnSave=false 119 | Editor\Folding=true 120 | Editor\Show%20Line%20State=true 121 | Editor\Show%20Cursor%20State=true 122 | Editor\Real-Time%20Spellchecking=true 123 | Editor\Check%20Spelling=true 124 | Editor\Check%20Citations=true 125 | Editor\Check%20References=true 126 | Editor\Check%20Syntax=true 127 | Editor\Check%20Grammar=true 128 | Editor\Check%20Package=true 129 | Editor\Check%20In%20Non%20TeX%20Files=true 130 | Editor\Hide%20Spelling%20Errors%20in%20Non%20Text=true 131 | Editor\Hide%20Grammar%20Errors%20in%20Non%20Text=true 132 | Editor\Show%20Whitespace=false 133 | Editor\TabStop=4 134 | Editor\ToolTip%20Help=true 135 | Editor\ToolTip%20Preview=true 136 | Editor\ImageToolTip=true 137 | Editor\MaxImageTooltipWidth=400 138 | Editor\ContextMenuKeyboardModifiers=33554432 139 | Editor\ContextMenuSpellcheckingEntryLocation=0 140 | Editor\TexDoc%20Help%20Internal=true 141 | Editor\MonitorFilesForExternalChanges=true 142 | Editor\SilentReload=false 143 | Editor\Replace%20Quotes=0 144 | Editor\Close%20Search%20Replace%20Together=true 145 | Editor\Use%20Line%20For%20Search=true 146 | Editor\Search%20Only%20In%20Selection=true 147 | Editor\Auto%20Replace%20Commands=true 148 | Editor\Font%20Family=Consolas 149 | Editor\Font%20Size=10 150 | Editor\Line%20Spacing%20Percent=100 151 | Editor\Esc%20for%20closing%20log=false 152 | Editor\UseEscForClosingEmbeddedViewer=true 153 | Editor\UseEscForClosingFullscreen=true 154 | Editor\ShowShortcutsInTooltips=true 155 | Editor\AllowDragAndDrop=true 156 | Editor\Mouse%20Wheel%20Zoom=true 157 | Editor\Smooth%20Scrolling=true 158 | Editor\Vertical%20Over%20Scroll=false 159 | Editor\Hack%20Auto%20Choose=true 160 | Editor\Hack%20Disable%20Fixed%20Pitch=false 161 | Editor\Hack%20Disable%20Width%20Cache=false 162 | Editor\Hack%20Disable%20Line%20Cache=true 163 | Editor\Hack%20Disable%20Accent%20Workaround=false 164 | Editor\Hack%20Render%20Mode=0 165 | Editor\Hack%20QImage%20Cache=false 166 | Editor\Completion=true 167 | Editor\Completion%20Case%20Sensitive=0 168 | Editor\Completion%20Complete%20Common%20Prefix=true 169 | Editor\Completion%20EOW%20Completes=false 170 | Editor\Completion%20Enable%20Tooltip%20Help=true 171 | Editor\Completion%20Enable%20Tooltip%20Preview=true 172 | Editor\Completion%20Use%20Placeholders=true 173 | Editor\Completion%20Show%20Placeholders=true 174 | Editor\Completion%20Prefered%20Tab=0 175 | Editor\Completion%20Tab%20Relative%20Font%20Size%20Percent=100 176 | Editor\Completion%20Auto%20Insert%20Math=true 177 | Editor\Completion%20Auto%20Insert%20Math%20Start=$ 178 | Editor\Completion%20Auto%20Insert%20Math%20Stop=$ 179 | Editor\Auto%20Insert%20LRM=false 180 | Editor\Visual%20Column%20Mode=true 181 | Editor\Auto%20Switch%20Language%20Direction=true 182 | Editor\Auto%20Switch%20Language%20Math=false 183 | Editor\Overwrite%20Opening%20Bracket%20Followed%20By%20Placeholder=true 184 | Editor\Overwrite%20Closing%20Bracket%20Following%20Placeholder=true 185 | Editor\Double-click%20Selection%20Includes%20Leading%20Backslash=true 186 | Editor\TripleClickSelection=4 187 | Editor\todo%20comment%20regExp=%\\s*(TODO|todo) 188 | Editor\insertCiteCommand=\\cite 189 | TableAutoformat\Special%20Commands="\\hline,\\cline,\\intertext,\\shortintertext,\\toprule,\\midrule,\\bottomrule" 190 | TableAutoformat\Special%20Command%20Position=0 191 | TableAutoformat\One%20Line%20Per%20Cell=false 192 | Grammar\Long%20Repetition%20Check=true 193 | Grammar\Bad%20Word%20Check=true 194 | Grammar\Long%20Repetition%20Check%20Distance=3 195 | Grammar\Very%20Long%20Repetition%20Check%20Distance=10 196 | Grammar\Very%20Long%20Repetition%20Check%20Min%20Length=6 197 | Grammar\Word%20Lists%20Dir= 198 | Grammar\Language%20Tool%20URL= 199 | Grammar\Language%20Tool%20Path= 200 | Grammar\Language%20Tool%20Arguments=org.languagetool.server.HTTPServer -p 8081 201 | Grammar\Language%20Tool%20Java%20Path=java 202 | Grammar\Language%20Tool%20Autorun=true 203 | Grammar\Language%20Tool%20Ignored%20Rules= 204 | Grammar\Special%20Rules1= 205 | Grammar\Special%20Rules2= 206 | Grammar\Special%20Rules3= 207 | Grammar\Special%20Rules4= 208 | Dialogs\Last%20Hard%20Wrap%20Column=80 209 | Dialogs\Last%20Hard%20Wrap%20Smart%20Scope%20Selection=false 210 | Dialogs\Last%20Hard%20Wrap%20Join%20Lines=false 211 | Tools\SingleViewerInstance=false 212 | Tools\Show%20Messages%20When%20Compiling=true 213 | Tools\Show%20Stdout=1 214 | Tools\Automatic%20Rerun%20Times=5 215 | Tools\ShowLogInCaseOfCompileError=true 216 | Tools\ReplaceEnvironmentVariables=true 217 | Tools\InterpetCommandDefinitionInMagicComment=true 218 | Tools\SupportShellStyleLiteralQuotes=true 219 | Tools\Search%20Paths= 220 | Tools\Log%20Paths= 221 | Tools\PDF%20Paths= 222 | Tools\UseVCS=0 223 | Tools\Auto%20Checkin%20after%20Save%20level=0 224 | Tools\SVN%20Undo=false 225 | Tools\SVN%20KeywordSubstitution=false 226 | Tools\SVN%20Search%20Path%20Depth=2 227 | GUI\Style=0 228 | GUI\Texmaker%20Palette=false 229 | GUI\Use%20System%20Theme=true 230 | X11\Font%20Family=Microsoft YaHei UI 231 | X11\Font%20Size=9 232 | X11\Style= 233 | GUI\ToobarIconSize=22 234 | GUI\SymbolSize=32 235 | GUI\SecondaryToobarIconSize=16 236 | GUI\PDFToobarIconSize=16 237 | GUI\ConfigShorcutColumnWidth=200 238 | View\ShowStatusbar=true 239 | Interface\Config%20Show%20Advanced%20Options=false 240 | Interface\Config%20Riddled=false 241 | Interface\MRU%20Document%20Chooser=false 242 | Interface\Language=zh_CN 243 | Preview\Mode=4 244 | Preview\Auto%20Preview=1 245 | Preview\Auto%20Preview%20Delay=300 246 | Preview\SegmentPreviewScalePercent=150 247 | Geometries\PdfViewerLeft=1280 248 | Geometries\PdfViewerTop=40 249 | Geometries\PdfViewerWidth=614 250 | Geometries\PdfViewerHeight=950 251 | Geometries\PdfViewerMaximized=false 252 | Geometries\PdfViewerState=@ByteArray() 253 | Preview\ToolbarVisible=true 254 | Preview\AnnotationPanelVisible=false 255 | Preview\CacheSize=512 256 | Preview\LoadStrategy=2 257 | Preview\RenderBackend=0 258 | Preview\LimitRenderQueues=-8 259 | Preview\DPI=72 260 | Preview\Scale%20Option=1 261 | Preview\Scale=100 262 | Preview=true 263 | Preview\ZoomStepFactor=1.4142135 264 | Preview\Magnifier%20Size=300 265 | Preview\Magnifier%20Shape=1 266 | Preview\Magnifier%20Border=false 267 | Preview\PaperColor=#FFFFFF 268 | Preview\HighlightColor=#FFFF003F 269 | Preview\HighlightDuration=2000 270 | Preview\Sync%20File%20Mask="*.tex;*.tikz;*.pdf_tex;*.ctx" 271 | Preview\AutoHideToolbars=false 272 | Preview\Auto%20Full%20Recompile=false 273 | Preview\EnlargedEmbedded=false 274 | LogView\WarnIfFileSizeLargerMB=2 275 | LogView\RememberChoiceLargeFile=0 276 | Editor\RUNAWAYLIMIT=30 277 | Tools\User%20Class=@Invalid() 278 | Tools\User%20Paper=@Invalid() 279 | Tools\User%20Encoding=@Invalid() 280 | Tools\User%20Font%20Encoding=@Invalid() 281 | Tools\User%20Babel%20Options=@Invalid() 282 | Tools\User%20Options=@Invalid() 283 | Quick\Class=article 284 | Quick\Typeface=10pt 285 | Quick\Papersize=a4paper 286 | Quick\Encoding=utf8 287 | Quick\FontEncoding=T1 288 | Quick\Babel=NONE 289 | Quick\AMS=true 290 | Quick\MakeIndex=false 291 | Quick\graphicx=true 292 | Quick\Author= 293 | Quick\Geometry%20Page%20Width=0 294 | Quick\Geometry%20Page%20Height=0 295 | Quick\Geometry%20Margin%20Left=0 296 | Quick\Geometry%20Margin%20Right=0 297 | Quick\Geometry%20Margin%20Top=0 298 | Quick\Geometry%20Margin%20Bottom=0 299 | Quick\Geometry%20Page%20Width%20Unit=cm 300 | Quick\Geometry%20Page%20Height%20Unit=cm 301 | Quick\Geometry%20Margin%20Left%20Unit=cm 302 | Quick\Geometry%20Margin%20Right%20Unit=cm 303 | Quick\Geometry%20Margin%20Top%20Unit=cm 304 | Quick\Geometry%20Margin%20Bottom%20Unit=cm 305 | Quick\Geometry%20Page%20Width%20Enabled=false 306 | Quick\Geometry%20Page%20Height%20Enabled=false 307 | Quick\Geometry%20Margin%20Left%20Enabled=false 308 | Quick\Geometry%20Margin%20Right%20Enabled=false 309 | Quick\Geometry%20Margin%20Top%20Enabled=false 310 | Quick\Geometry%20Margin%20Bottom%20Enabled=false 311 | Beamer\Encoding=utf8 312 | Tools\Quick%20Mode=-2 313 | Tools\Max%20Expanding%20Nesting%20Deep=10 314 | Tools\Dvi2Png%20Mode=3 315 | Files\Save%20Files%20Before%20Compiling=2 316 | Preview\Remove%20Beamer%20Class=true 317 | Preview\Precompile%20Preamble=true 318 | Tools\Automatic%20Rerun%20Commands=latex|pdflatex|xelatex|lualatex|compile 319 | User\ToolNames=@Invalid() 320 | User\Tools=@Invalid() 321 | Tools\Display%20Names=@Invalid() 322 | Tools\User%20Order=@Invalid() 323 | Tools\Preview%20Compile%20Time%20Out=15000 324 | Tools\Had%20Successful%20Process%20Start=true 325 | Files\Default%20File%20Filter=All files (*) 326 | PDFSplitter=0.46221990620114645 327 | Tools\Kind\LaTeX=latex, pdflatex, xelatex, lualatex, latexmk, compile 328 | Tools\Kind\Rerunnable=latex, pdflatex, xelatex, lualatex 329 | Tools\Kind\Pdf=pdflatex, xelatex, lualatex, latexmk, dvipdf, ps2pdf 330 | Tools\Kind\Stdout=bibtex, biber, bibtex8, bibliography 331 | Tools\Kind\Viewer=view-pdf, view-ps, view-dvi, view-pdf-internal, view-pdf-external, view 332 | Crash%20Handler%20Type=1 333 | Grammar\Display%20Error%200=true 334 | Grammar\Display%20Error%201=true 335 | Grammar\Display%20Error%202=true 336 | Grammar\Display%20Error%203=true 337 | Grammar\Display%20Error%204=true 338 | Grammar\Display%20Error%205=true 339 | Grammar\Display%20Error%206=true 340 | Grammar\Display%20Error%207=true 341 | Search\Find%20History=@Invalid() 342 | Search\Case%20Sensitive=false 343 | Search\Whole%20Words=false 344 | Search\Regular%20Expression=false 345 | Search\Highlight=true 346 | Search\Cursor=true 347 | Search\Selection=false 348 | Search\Replace%20History=@Invalid() 349 | Search\Ask%20before%20Replace=false 350 | Search\Escape%20Sequence=false 351 | Preview\Possible%20Grid%20Sizes=1x1, 2x1, 1x2, 2x2, 3x1, 3x2, 3x3 352 | Preview\EditTool=1 353 | Preview\GridX=1 354 | Preview\GridY=1 355 | Preview\Single%20Page%20Step=true 356 | Preview\Continuous=true 357 | Preview\Scrolling%20Follows%20Cursor=false 358 | Preview\Cursor%20Follows%20Scrolling=false 359 | Preview\Sync%20Multiple%20Views=true 360 | Preview\Invert%20Colors=false 361 | Preview\Grayscale=false 362 | Preview\Search%20Case%20Sensitive=false 363 | Preview\Whole%20Words=false 364 | Preview\Search%20Sync=true 365 | CleanDialog\Extensions="log,aux,dvi,lof,lot,bit,idx,glo,bbl,bcf,ilg,toc,ind,out,blg,fdb_latexmk,fls,run.xml" 366 | CleanDialog\Scope=2 367 | Editor\Completion%20Files=latex-dev.cwl, latex-document.cwl, tex.cwl 368 | qttwp\userwidth=700 369 | qttwp\compil=1 370 | qttwp\tocdepth=2 371 | qttwp\startindex=1 372 | qttwp\navigation=1 373 | qttwp\noindex=false 374 | qttwp\title= 375 | qttwp\address= 376 | qttwp\browser=\"C:/Program Files/Internet Explorer/IEXPLORE.EXE\" 377 | qttwp\contentname=\\contentsname 378 | qttwp\align=center 379 | qttwp\lastdir=C:/Users/bxylip 380 | qttwp\dviopt=" -Ppk -V" 381 | InsertGraphics\includeOptions="width=0.7\\linewidth" 382 | InsertGraphics\center=true 383 | InsertGraphics\useFigure=true 384 | InsertGraphics\captionBelow=true 385 | InsertGraphics\placement= 386 | InsertGraphics\spanTwoCols=false 387 | Tools\After%20BibTeX%20Change=tmx://latex && tmx://bibtex && tmx://latex 388 | User\New%20Key%20Replacements%20Created=true 389 | keysetting\size=0 390 | changedLatexMenus=@Variant(\0\0\0\b\0\0\0\0) 391 | CustomToolBar=@Invalid() 392 | FileToolBar=@Invalid() 393 | EditToolBar=@Invalid() 394 | ToolsToolBar=@Invalid() 395 | MathToolBar=@Invalid() 396 | FormatToolBar=@Invalid() 397 | TableToolBar=@Invalid() 398 | DiffToolBar=@Invalid() 399 | ReviewToolBar=@Invalid() 400 | CentralToolBar=@Invalid() 401 | customIcons=@Variant(\0\0\0\b\0\0\0\0) 402 | customCommands=@Invalid() 403 | Symbols\UsageCount=@Variant(\0\0\0\b\0\0\0\0) 404 | Symbols\FavoriteIDs=@Invalid() 405 | Symbols\hiddenlists= 406 | 407 | [formats] 408 | version=1.0 409 | data\normal\priority=-1 410 | data\normal\bold=false 411 | data\normal\italic=false 412 | data\normal\overline=false 413 | data\normal\underline=false 414 | data\normal\strikeout=false 415 | data\normal\waveUnderline=false 416 | data\normal\fontFamily= 417 | data\normal\pointSize=0 418 | data\normal\wrapAround=false 419 | data\background\priority=-1 420 | data\background\bold=false 421 | data\background\italic=false 422 | data\background\overline=false 423 | data\background\underline=false 424 | data\background\strikeout=false 425 | data\background\waveUnderline=false 426 | data\background\linescolor=#c0c0c0 427 | data\background\fontFamily= 428 | data\background\pointSize=0 429 | data\background\wrapAround=false 430 | data\line%3Aerror\priority=-1 431 | data\line%3Aerror\bold=false 432 | data\line%3Aerror\italic=false 433 | data\line%3Aerror\overline=false 434 | data\line%3Aerror\underline=false 435 | data\line%3Aerror\strikeout=false 436 | data\line%3Aerror\waveUnderline=false 437 | data\line%3Aerror\background=#ffcabf 438 | data\line%3Aerror\fontFamily= 439 | data\line%3Aerror\pointSize=0 440 | data\line%3Aerror\wrapAround=false 441 | data\line%3Awarning\priority=-1 442 | data\line%3Awarning\bold=false 443 | data\line%3Awarning\italic=false 444 | data\line%3Awarning\overline=false 445 | data\line%3Awarning\underline=false 446 | data\line%3Awarning\strikeout=false 447 | data\line%3Awarning\waveUnderline=false 448 | data\line%3Awarning\background=#fffbbf 449 | data\line%3Awarning\fontFamily= 450 | data\line%3Awarning\pointSize=0 451 | data\line%3Awarning\wrapAround=false 452 | data\line%3Abadbox\priority=-1 453 | data\line%3Abadbox\bold=false 454 | data\line%3Abadbox\italic=false 455 | data\line%3Abadbox\overline=false 456 | data\line%3Abadbox\underline=false 457 | data\line%3Abadbox\strikeout=false 458 | data\line%3Abadbox\waveUnderline=false 459 | data\line%3Abadbox\background=#bfd6ff 460 | data\line%3Abadbox\fontFamily= 461 | data\line%3Abadbox\pointSize=0 462 | data\line%3Abadbox\wrapAround=false 463 | data\line%3Abookmark\priority=-1 464 | data\line%3Abookmark\bold=false 465 | data\line%3Abookmark\italic=false 466 | data\line%3Abookmark\overline=false 467 | data\line%3Abookmark\underline=false 468 | data\line%3Abookmark\strikeout=false 469 | data\line%3Abookmark\waveUnderline=false 470 | data\line%3Abookmark\fontFamily= 471 | data\line%3Abookmark\pointSize=0 472 | data\line%3Abookmark\wrapAround=false 473 | data\line%3Abookmark0\priority=-1 474 | data\line%3Abookmark0\bold=false 475 | data\line%3Abookmark0\italic=false 476 | data\line%3Abookmark0\overline=false 477 | data\line%3Abookmark0\underline=false 478 | data\line%3Abookmark0\strikeout=false 479 | data\line%3Abookmark0\waveUnderline=false 480 | data\line%3Abookmark0\fontFamily= 481 | data\line%3Abookmark0\pointSize=0 482 | data\line%3Abookmark0\wrapAround=false 483 | data\line%3Abookmark1\priority=-1 484 | data\line%3Abookmark1\bold=false 485 | data\line%3Abookmark1\italic=false 486 | data\line%3Abookmark1\overline=false 487 | data\line%3Abookmark1\underline=false 488 | data\line%3Abookmark1\strikeout=false 489 | data\line%3Abookmark1\waveUnderline=false 490 | data\line%3Abookmark1\fontFamily= 491 | data\line%3Abookmark1\pointSize=0 492 | data\line%3Abookmark1\wrapAround=false 493 | data\line%3Abookmark2\priority=-1 494 | data\line%3Abookmark2\bold=false 495 | data\line%3Abookmark2\italic=false 496 | data\line%3Abookmark2\overline=false 497 | data\line%3Abookmark2\underline=false 498 | data\line%3Abookmark2\strikeout=false 499 | data\line%3Abookmark2\waveUnderline=false 500 | data\line%3Abookmark2\fontFamily= 501 | data\line%3Abookmark2\pointSize=0 502 | data\line%3Abookmark2\wrapAround=false 503 | data\line%3Abookmark3\priority=-1 504 | data\line%3Abookmark3\bold=false 505 | data\line%3Abookmark3\italic=false 506 | data\line%3Abookmark3\overline=false 507 | data\line%3Abookmark3\underline=false 508 | data\line%3Abookmark3\strikeout=false 509 | data\line%3Abookmark3\waveUnderline=false 510 | data\line%3Abookmark3\fontFamily= 511 | data\line%3Abookmark3\pointSize=0 512 | data\line%3Abookmark3\wrapAround=false 513 | data\line%3Abookmark4\priority=-1 514 | data\line%3Abookmark4\bold=false 515 | data\line%3Abookmark4\italic=false 516 | data\line%3Abookmark4\overline=false 517 | data\line%3Abookmark4\underline=false 518 | data\line%3Abookmark4\strikeout=false 519 | data\line%3Abookmark4\waveUnderline=false 520 | data\line%3Abookmark4\fontFamily= 521 | data\line%3Abookmark4\pointSize=0 522 | data\line%3Abookmark4\wrapAround=false 523 | data\line%3Abookmark5\priority=-1 524 | data\line%3Abookmark5\bold=false 525 | data\line%3Abookmark5\italic=false 526 | data\line%3Abookmark5\overline=false 527 | data\line%3Abookmark5\underline=false 528 | data\line%3Abookmark5\strikeout=false 529 | data\line%3Abookmark5\waveUnderline=false 530 | data\line%3Abookmark5\fontFamily= 531 | data\line%3Abookmark5\pointSize=0 532 | data\line%3Abookmark5\wrapAround=false 533 | data\line%3Abookmark6\priority=-1 534 | data\line%3Abookmark6\bold=false 535 | data\line%3Abookmark6\italic=false 536 | data\line%3Abookmark6\overline=false 537 | data\line%3Abookmark6\underline=false 538 | data\line%3Abookmark6\strikeout=false 539 | data\line%3Abookmark6\waveUnderline=false 540 | data\line%3Abookmark6\fontFamily= 541 | data\line%3Abookmark6\pointSize=0 542 | data\line%3Abookmark6\wrapAround=false 543 | data\line%3Abookmark7\priority=-1 544 | data\line%3Abookmark7\bold=false 545 | data\line%3Abookmark7\italic=false 546 | data\line%3Abookmark7\overline=false 547 | data\line%3Abookmark7\underline=false 548 | data\line%3Abookmark7\strikeout=false 549 | data\line%3Abookmark7\waveUnderline=false 550 | data\line%3Abookmark7\fontFamily= 551 | data\line%3Abookmark7\pointSize=0 552 | data\line%3Abookmark7\wrapAround=false 553 | data\line%3Abookmark8\priority=-1 554 | data\line%3Abookmark8\bold=false 555 | data\line%3Abookmark8\italic=false 556 | data\line%3Abookmark8\overline=false 557 | data\line%3Abookmark8\underline=false 558 | data\line%3Abookmark8\strikeout=false 559 | data\line%3Abookmark8\waveUnderline=false 560 | data\line%3Abookmark8\fontFamily= 561 | data\line%3Abookmark8\pointSize=0 562 | data\line%3Abookmark8\wrapAround=false 563 | data\line%3Abookmark9\priority=-1 564 | data\line%3Abookmark9\bold=false 565 | data\line%3Abookmark9\italic=false 566 | data\line%3Abookmark9\overline=false 567 | data\line%3Abookmark9\underline=false 568 | data\line%3Abookmark9\strikeout=false 569 | data\line%3Abookmark9\waveUnderline=false 570 | data\line%3Abookmark9\fontFamily= 571 | data\line%3Abookmark9\pointSize=0 572 | data\line%3Abookmark9\wrapAround=false 573 | data\magicComment\priority=-1 574 | data\magicComment\bold=false 575 | data\magicComment\italic=false 576 | data\magicComment\overline=false 577 | data\magicComment\underline=false 578 | data\magicComment\strikeout=false 579 | data\magicComment\waveUnderline=false 580 | data\magicComment\foreground=#555580 581 | data\magicComment\fontFamily= 582 | data\magicComment\pointSize=0 583 | data\magicComment\wrapAround=false 584 | data\commentTodo\priority=-1 585 | data\commentTodo\bold=false 586 | data\commentTodo\italic=false 587 | data\commentTodo\overline=false 588 | data\commentTodo\underline=false 589 | data\commentTodo\strikeout=false 590 | data\commentTodo\waveUnderline=false 591 | data\commentTodo\background=#a8cf83 592 | data\commentTodo\fontFamily= 593 | data\commentTodo\pointSize=0 594 | data\commentTodo\wrapAround=false 595 | data\comment\priority=-1 596 | data\comment\bold=false 597 | data\comment\italic=false 598 | data\comment\overline=false 599 | data\comment\underline=false 600 | data\comment\strikeout=false 601 | data\comment\waveUnderline=false 602 | data\comment\foreground=#808080 603 | data\comment\fontFamily= 604 | data\comment\pointSize=0 605 | data\comment\wrapAround=false 606 | data\keyword\priority=-1 607 | data\keyword\bold=false 608 | data\keyword\italic=false 609 | data\keyword\overline=false 610 | data\keyword\underline=false 611 | data\keyword\strikeout=false 612 | data\keyword\waveUnderline=false 613 | data\keyword\foreground=#800000 614 | data\keyword\fontFamily= 615 | data\keyword\pointSize=0 616 | data\keyword\wrapAround=false 617 | data\extra-keyword\priority=-1 618 | data\extra-keyword\bold=true 619 | data\extra-keyword\italic=false 620 | data\extra-keyword\overline=false 621 | data\extra-keyword\underline=false 622 | data\extra-keyword\strikeout=false 623 | data\extra-keyword\waveUnderline=false 624 | data\extra-keyword\foreground=#0095ff 625 | data\extra-keyword\fontFamily= 626 | data\extra-keyword\pointSize=0 627 | data\extra-keyword\wrapAround=false 628 | data\math-keyword\priority=-1 629 | data\math-keyword\bold=false 630 | data\math-keyword\italic=false 631 | data\math-keyword\overline=false 632 | data\math-keyword\underline=false 633 | data\math-keyword\strikeout=false 634 | data\math-keyword\waveUnderline=false 635 | data\math-keyword\foreground=#808000 636 | data\math-keyword\fontFamily= 637 | data\math-keyword\pointSize=0 638 | data\math-keyword\wrapAround=false 639 | data\link\priority=-1 640 | data\link\bold=false 641 | data\link\italic=false 642 | data\link\overline=false 643 | data\link\underline=true 644 | data\link\strikeout=false 645 | data\link\waveUnderline=false 646 | data\link\foreground=#0000ff 647 | data\link\fontFamily= 648 | data\link\pointSize=0 649 | data\link\wrapAround=false 650 | data\align-ampersand\priority=5 651 | data\align-ampersand\bold=true 652 | data\align-ampersand\italic=false 653 | data\align-ampersand\overline=false 654 | data\align-ampersand\underline=false 655 | data\align-ampersand\strikeout=false 656 | data\align-ampersand\waveUnderline=false 657 | data\align-ampersand\foreground=#0055ff 658 | data\align-ampersand\fontFamily= 659 | data\align-ampersand\pointSize=0 660 | data\align-ampersand\wrapAround=false 661 | data\verbatim\priority=-1 662 | data\verbatim\bold=false 663 | data\verbatim\italic=false 664 | data\verbatim\overline=false 665 | data\verbatim\underline=false 666 | data\verbatim\strikeout=false 667 | data\verbatim\waveUnderline=false 668 | data\verbatim\foreground=#008080 669 | data\verbatim\fontFamily= 670 | data\verbatim\pointSize=0 671 | data\verbatim\wrapAround=false 672 | data\sweave-block\priority=-1 673 | data\sweave-block\bold=false 674 | data\sweave-block\italic=false 675 | data\sweave-block\overline=false 676 | data\sweave-block\underline=false 677 | data\sweave-block\strikeout=false 678 | data\sweave-block\waveUnderline=false 679 | data\sweave-block\foreground=#800000 680 | data\sweave-block\fontFamily= 681 | data\sweave-block\pointSize=0 682 | data\sweave-block\wrapAround=false 683 | data\sweave-delimiter\priority=-1 684 | data\sweave-delimiter\bold=true 685 | data\sweave-delimiter\italic=false 686 | data\sweave-delimiter\overline=false 687 | data\sweave-delimiter\underline=false 688 | data\sweave-delimiter\strikeout=false 689 | data\sweave-delimiter\waveUnderline=false 690 | data\sweave-delimiter\foreground=#0095ff 691 | data\sweave-delimiter\fontFamily= 692 | data\sweave-delimiter\pointSize=0 693 | data\sweave-delimiter\wrapAround=false 694 | data\pweave-block\priority=-1 695 | data\pweave-block\bold=false 696 | data\pweave-block\italic=false 697 | data\pweave-block\overline=false 698 | data\pweave-block\underline=false 699 | data\pweave-block\strikeout=false 700 | data\pweave-block\waveUnderline=false 701 | data\pweave-block\foreground=#800000 702 | data\pweave-block\fontFamily= 703 | data\pweave-block\pointSize=0 704 | data\pweave-block\wrapAround=false 705 | data\pweave-delimiter\priority=-1 706 | data\pweave-delimiter\bold=true 707 | data\pweave-delimiter\italic=false 708 | data\pweave-delimiter\overline=false 709 | data\pweave-delimiter\underline=false 710 | data\pweave-delimiter\strikeout=false 711 | data\pweave-delimiter\waveUnderline=false 712 | data\pweave-delimiter\foreground=#0095ff 713 | data\pweave-delimiter\fontFamily= 714 | data\pweave-delimiter\pointSize=0 715 | data\pweave-delimiter\wrapAround=false 716 | data\picture\priority=-1 717 | data\picture\bold=false 718 | data\picture\italic=false 719 | data\picture\overline=false 720 | data\picture\underline=false 721 | data\picture\strikeout=false 722 | data\picture\waveUnderline=false 723 | data\picture\foreground=#804000 724 | data\picture\fontFamily= 725 | data\picture\pointSize=0 726 | data\picture\wrapAround=false 727 | data\picture-keyword\priority=-1 728 | data\picture-keyword\bold=false 729 | data\picture-keyword\italic=false 730 | data\picture-keyword\overline=false 731 | data\picture-keyword\underline=false 732 | data\picture-keyword\strikeout=false 733 | data\picture-keyword\waveUnderline=false 734 | data\picture-keyword\foreground=#c06000 735 | data\picture-keyword\fontFamily= 736 | data\picture-keyword\pointSize=0 737 | data\picture-keyword\wrapAround=false 738 | data\braceMatch\priority=-1 739 | data\braceMatch\bold=true 740 | data\braceMatch\italic=false 741 | data\braceMatch\overline=false 742 | data\braceMatch\underline=false 743 | data\braceMatch\strikeout=false 744 | data\braceMatch\waveUnderline=false 745 | data\braceMatch\background=#ffff7f 746 | data\braceMatch\fontFamily= 747 | data\braceMatch\pointSize=0 748 | data\braceMatch\wrapAround=false 749 | data\braceMismatch\priority=-1 750 | data\braceMismatch\bold=true 751 | data\braceMismatch\italic=false 752 | data\braceMismatch\overline=false 753 | data\braceMismatch\underline=false 754 | data\braceMismatch\strikeout=false 755 | data\braceMismatch\waveUnderline=false 756 | data\braceMismatch\foreground=#ffff7f 757 | data\braceMismatch\background=#c00000 758 | data\braceMismatch\fontFamily= 759 | data\braceMismatch\pointSize=0 760 | data\braceMismatch\wrapAround=false 761 | data\search\priority=-1 762 | data\search\bold=false 763 | data\search\italic=false 764 | data\search\overline=false 765 | data\search\underline=false 766 | data\search\strikeout=false 767 | data\search\waveUnderline=false 768 | data\search\foreground=#000000 769 | data\search\background=#ffef0b 770 | data\search\fontFamily= 771 | data\search\pointSize=0 772 | data\search\wrapAround=false 773 | data\numbers\priority=-1 774 | data\numbers\bold=false 775 | data\numbers\italic=false 776 | data\numbers\overline=false 777 | data\numbers\underline=false 778 | data\numbers\strikeout=false 779 | data\numbers\waveUnderline=false 780 | data\numbers\foreground=#008000 781 | data\numbers\fontFamily= 782 | data\numbers\pointSize=0 783 | data\numbers\wrapAround=false 784 | data\math-delimiter\priority=-1 785 | data\math-delimiter\bold=false 786 | data\math-delimiter\italic=false 787 | data\math-delimiter\overline=false 788 | data\math-delimiter\underline=false 789 | data\math-delimiter\strikeout=false 790 | data\math-delimiter\waveUnderline=false 791 | data\math-delimiter\foreground=#509600 792 | data\math-delimiter\fontFamily= 793 | data\math-delimiter\pointSize=0 794 | data\math-delimiter\wrapAround=false 795 | data\math-text\priority=2 796 | data\math-text\bold=false 797 | data\math-text\italic=false 798 | data\math-text\overline=false 799 | data\math-text\underline=false 800 | data\math-text\strikeout=false 801 | data\math-text\waveUnderline=false 802 | data\math-text\foreground=#202000 803 | data\math-text\fontFamily= 804 | data\math-text\pointSize=0 805 | data\math-text\wrapAround=false 806 | data\text\priority=-1 807 | data\text\bold=false 808 | data\text\italic=false 809 | data\text\overline=false 810 | data\text\underline=false 811 | data\text\strikeout=false 812 | data\text\waveUnderline=false 813 | data\text\foreground=#ff0000 814 | data\text\fontFamily= 815 | data\text\pointSize=0 816 | data\text\wrapAround=false 817 | data\escapeseq\priority=-1 818 | data\escapeseq\bold=false 819 | data\escapeseq\italic=false 820 | data\escapeseq\overline=false 821 | data\escapeseq\underline=false 822 | data\escapeseq\strikeout=false 823 | data\escapeseq\waveUnderline=false 824 | data\escapeseq\foreground=#ff0088 825 | data\escapeseq\fontFamily= 826 | data\escapeseq\pointSize=0 827 | data\escapeseq\wrapAround=false 828 | data\spellingMistake\priority=-1 829 | data\spellingMistake\bold=false 830 | data\spellingMistake\italic=false 831 | data\spellingMistake\overline=false 832 | data\spellingMistake\underline=false 833 | data\spellingMistake\strikeout=false 834 | data\spellingMistake\waveUnderline=true 835 | data\spellingMistake\linescolor=#ff0000 836 | data\spellingMistake\fontFamily= 837 | data\spellingMistake\pointSize=0 838 | data\spellingMistake\wrapAround=false 839 | data\wordRepetition\priority=-1 840 | data\wordRepetition\bold=false 841 | data\wordRepetition\italic=false 842 | data\wordRepetition\overline=false 843 | data\wordRepetition\underline=false 844 | data\wordRepetition\strikeout=false 845 | data\wordRepetition\waveUnderline=true 846 | data\wordRepetition\linescolor=#008000 847 | data\wordRepetition\fontFamily= 848 | data\wordRepetition\pointSize=0 849 | data\wordRepetition\wrapAround=false 850 | data\wordRepetitionLongRange\priority=-1 851 | data\wordRepetitionLongRange\bold=false 852 | data\wordRepetitionLongRange\italic=false 853 | data\wordRepetitionLongRange\overline=false 854 | data\wordRepetitionLongRange\underline=false 855 | data\wordRepetitionLongRange\strikeout=false 856 | data\wordRepetitionLongRange\waveUnderline=true 857 | data\wordRepetitionLongRange\linescolor=#008000 858 | data\wordRepetitionLongRange\fontFamily= 859 | data\wordRepetitionLongRange\pointSize=0 860 | data\wordRepetitionLongRange\wrapAround=false 861 | data\badWord\priority=-1 862 | data\badWord\bold=false 863 | data\badWord\italic=false 864 | data\badWord\overline=false 865 | data\badWord\underline=false 866 | data\badWord\strikeout=true 867 | data\badWord\waveUnderline=false 868 | data\badWord\linescolor=#d600a4 869 | data\badWord\fontFamily= 870 | data\badWord\pointSize=0 871 | data\badWord\wrapAround=false 872 | data\grammarMistake\priority=-1 873 | data\grammarMistake\bold=false 874 | data\grammarMistake\italic=false 875 | data\grammarMistake\overline=false 876 | data\grammarMistake\underline=false 877 | data\grammarMistake\strikeout=false 878 | data\grammarMistake\waveUnderline=true 879 | data\grammarMistake\linescolor=#000080 880 | data\grammarMistake\fontFamily= 881 | data\grammarMistake\pointSize=0 882 | data\grammarMistake\wrapAround=false 883 | data\grammarMistakeSpecial1\priority=-1 884 | data\grammarMistakeSpecial1\bold=false 885 | data\grammarMistakeSpecial1\italic=false 886 | data\grammarMistakeSpecial1\overline=false 887 | data\grammarMistakeSpecial1\underline=false 888 | data\grammarMistakeSpecial1\strikeout=false 889 | data\grammarMistakeSpecial1\waveUnderline=false 890 | data\grammarMistakeSpecial1\background=#00ffa0 891 | data\grammarMistakeSpecial1\fontFamily= 892 | data\grammarMistakeSpecial1\pointSize=0 893 | data\grammarMistakeSpecial1\wrapAround=false 894 | data\grammarMistakeSpecial2\priority=-1 895 | data\grammarMistakeSpecial2\bold=false 896 | data\grammarMistakeSpecial2\italic=false 897 | data\grammarMistakeSpecial2\overline=false 898 | data\grammarMistakeSpecial2\underline=false 899 | data\grammarMistakeSpecial2\strikeout=false 900 | data\grammarMistakeSpecial2\waveUnderline=false 901 | data\grammarMistakeSpecial2\background=#00c0ff 902 | data\grammarMistakeSpecial2\fontFamily= 903 | data\grammarMistakeSpecial2\pointSize=0 904 | data\grammarMistakeSpecial2\wrapAround=false 905 | data\grammarMistakeSpecial3\priority=-1 906 | data\grammarMistakeSpecial3\bold=false 907 | data\grammarMistakeSpecial3\italic=false 908 | data\grammarMistakeSpecial3\overline=false 909 | data\grammarMistakeSpecial3\underline=false 910 | data\grammarMistakeSpecial3\strikeout=false 911 | data\grammarMistakeSpecial3\waveUnderline=false 912 | data\grammarMistakeSpecial3\background=#00ff00 913 | data\grammarMistakeSpecial3\fontFamily= 914 | data\grammarMistakeSpecial3\pointSize=0 915 | data\grammarMistakeSpecial3\wrapAround=false 916 | data\grammarMistakeSpecial4\priority=-1 917 | data\grammarMistakeSpecial4\bold=false 918 | data\grammarMistakeSpecial4\italic=false 919 | data\grammarMistakeSpecial4\overline=false 920 | data\grammarMistakeSpecial4\underline=false 921 | data\grammarMistakeSpecial4\strikeout=false 922 | data\grammarMistakeSpecial4\waveUnderline=false 923 | data\grammarMistakeSpecial4\background=#c8ff61 924 | data\grammarMistakeSpecial4\fontFamily= 925 | data\grammarMistakeSpecial4\pointSize=0 926 | data\grammarMistakeSpecial4\wrapAround=false 927 | data\latexSyntaxMistake\priority=-1 928 | data\latexSyntaxMistake\bold=false 929 | data\latexSyntaxMistake\italic=false 930 | data\latexSyntaxMistake\overline=false 931 | data\latexSyntaxMistake\underline=false 932 | data\latexSyntaxMistake\strikeout=false 933 | data\latexSyntaxMistake\waveUnderline=false 934 | data\latexSyntaxMistake\background=#ffbf9f 935 | data\latexSyntaxMistake\fontFamily= 936 | data\latexSyntaxMistake\pointSize=0 937 | data\latexSyntaxMistake\wrapAround=false 938 | data\temporaryCodeCompletion\priority=-1 939 | data\temporaryCodeCompletion\bold=false 940 | data\temporaryCodeCompletion\italic=true 941 | data\temporaryCodeCompletion\overline=false 942 | data\temporaryCodeCompletion\underline=false 943 | data\temporaryCodeCompletion\strikeout=false 944 | data\temporaryCodeCompletion\waveUnderline=false 945 | data\temporaryCodeCompletion\foreground=#0000ff 946 | data\temporaryCodeCompletion\fontFamily= 947 | data\temporaryCodeCompletion\pointSize=0 948 | data\temporaryCodeCompletion\wrapAround=false 949 | data\environment\priority=-1 950 | data\environment\bold=false 951 | data\environment\italic=false 952 | data\environment\overline=false 953 | data\environment\underline=false 954 | data\environment\strikeout=false 955 | data\environment\waveUnderline=false 956 | data\environment\foreground=#000080 957 | data\environment\fontFamily= 958 | data\environment\pointSize=0 959 | data\environment\wrapAround=false 960 | data\referencePresent\priority=-1 961 | data\referencePresent\bold=false 962 | data\referencePresent\italic=false 963 | data\referencePresent\overline=false 964 | data\referencePresent\underline=false 965 | data\referencePresent\strikeout=false 966 | data\referencePresent\waveUnderline=false 967 | data\referencePresent\foreground=#008000 968 | data\referencePresent\fontFamily= 969 | data\referencePresent\pointSize=0 970 | data\referencePresent\wrapAround=false 971 | data\referenceMissing\priority=-1 972 | data\referenceMissing\bold=false 973 | data\referenceMissing\italic=false 974 | data\referenceMissing\overline=false 975 | data\referenceMissing\underline=false 976 | data\referenceMissing\strikeout=false 977 | data\referenceMissing\waveUnderline=true 978 | data\referenceMissing\foreground=#008000 979 | data\referenceMissing\fontFamily= 980 | data\referenceMissing\pointSize=0 981 | data\referenceMissing\wrapAround=false 982 | data\referenceMultiple\priority=-1 983 | data\referenceMultiple\bold=false 984 | data\referenceMultiple\italic=false 985 | data\referenceMultiple\overline=false 986 | data\referenceMultiple\underline=false 987 | data\referenceMultiple\strikeout=false 988 | data\referenceMultiple\waveUnderline=true 989 | data\referenceMultiple\foreground=#800080 990 | data\referenceMultiple\fontFamily= 991 | data\referenceMultiple\pointSize=0 992 | data\referenceMultiple\wrapAround=false 993 | data\citationPresent\priority=-1 994 | data\citationPresent\bold=false 995 | data\citationPresent\italic=false 996 | data\citationPresent\overline=false 997 | data\citationPresent\underline=false 998 | data\citationPresent\strikeout=false 999 | data\citationPresent\waveUnderline=false 1000 | data\citationPresent\foreground=#008000 1001 | data\citationPresent\fontFamily= 1002 | data\citationPresent\pointSize=0 1003 | data\citationPresent\wrapAround=false 1004 | data\citationMissing\priority=-1 1005 | data\citationMissing\bold=false 1006 | data\citationMissing\italic=false 1007 | data\citationMissing\overline=false 1008 | data\citationMissing\underline=false 1009 | data\citationMissing\strikeout=false 1010 | data\citationMissing\waveUnderline=true 1011 | data\citationMissing\foreground=#008000 1012 | data\citationMissing\fontFamily= 1013 | data\citationMissing\pointSize=0 1014 | data\citationMissing\wrapAround=false 1015 | data\packagePresent\priority=-1 1016 | data\packagePresent\bold=false 1017 | data\packagePresent\italic=false 1018 | data\packagePresent\overline=false 1019 | data\packagePresent\underline=false 1020 | data\packagePresent\strikeout=false 1021 | data\packagePresent\waveUnderline=false 1022 | data\packagePresent\foreground=#008000 1023 | data\packagePresent\fontFamily= 1024 | data\packagePresent\pointSize=0 1025 | data\packagePresent\wrapAround=false 1026 | data\packageMissing\priority=-1 1027 | data\packageMissing\bold=false 1028 | data\packageMissing\italic=false 1029 | data\packageMissing\overline=false 1030 | data\packageMissing\underline=false 1031 | data\packageMissing\strikeout=false 1032 | data\packageMissing\waveUnderline=true 1033 | data\packageMissing\foreground=#008000 1034 | data\packageMissing\fontFamily= 1035 | data\packageMissing\pointSize=0 1036 | data\packageMissing\wrapAround=false 1037 | data\structure\priority=-1 1038 | data\structure\bold=true 1039 | data\structure\italic=false 1040 | data\structure\overline=false 1041 | data\structure\underline=false 1042 | data\structure\strikeout=false 1043 | data\structure\waveUnderline=false 1044 | data\structure\foreground=#000000 1045 | data\structure\fontFamily= 1046 | data\structure\pointSize=0 1047 | data\structure\wrapAround=false 1048 | data\current\priority=-1 1049 | data\current\bold=false 1050 | data\current\italic=false 1051 | data\current\overline=false 1052 | data\current\underline=false 1053 | data\current\strikeout=false 1054 | data\current\waveUnderline=false 1055 | data\current\background=#eeeeff 1056 | data\current\fontFamily= 1057 | data\current\pointSize=0 1058 | data\current\wrapAround=false 1059 | data\selection\priority=-1 1060 | data\selection\bold=false 1061 | data\selection\italic=false 1062 | data\selection\overline=false 1063 | data\selection\underline=false 1064 | data\selection\strikeout=false 1065 | data\selection\waveUnderline=false 1066 | data\selection\background=#b2d8ff 1067 | data\selection\fontFamily= 1068 | data\selection\pointSize=0 1069 | data\selection\wrapAround=true 1070 | data\replacement\priority=-1 1071 | data\replacement\bold=false 1072 | data\replacement\italic=false 1073 | data\replacement\overline=false 1074 | data\replacement\underline=false 1075 | data\replacement\strikeout=false 1076 | data\replacement\waveUnderline=false 1077 | data\replacement\background=#ffaaaa 1078 | data\replacement\fontFamily= 1079 | data\replacement\pointSize=0 1080 | data\replacement\wrapAround=false 1081 | data\diffDelete\priority=-1 1082 | data\diffDelete\bold=false 1083 | data\diffDelete\italic=false 1084 | data\diffDelete\overline=false 1085 | data\diffDelete\underline=false 1086 | data\diffDelete\strikeout=true 1087 | data\diffDelete\waveUnderline=false 1088 | data\diffDelete\background=#ffaaaa 1089 | data\diffDelete\fontFamily= 1090 | data\diffDelete\pointSize=0 1091 | data\diffDelete\wrapAround=false 1092 | data\diffAdd\priority=-1 1093 | data\diffAdd\bold=false 1094 | data\diffAdd\italic=false 1095 | data\diffAdd\overline=false 1096 | data\diffAdd\underline=false 1097 | data\diffAdd\strikeout=false 1098 | data\diffAdd\waveUnderline=false 1099 | data\diffAdd\background=#aaffaa 1100 | data\diffAdd\fontFamily= 1101 | data\diffAdd\pointSize=0 1102 | data\diffAdd\wrapAround=false 1103 | data\diffReplace\priority=-1 1104 | data\diffReplace\bold=false 1105 | data\diffReplace\italic=false 1106 | data\diffReplace\overline=false 1107 | data\diffReplace\underline=false 1108 | data\diffReplace\strikeout=false 1109 | data\diffReplace\waveUnderline=false 1110 | data\diffReplace\background=#ffff50 1111 | data\diffReplace\fontFamily= 1112 | data\diffReplace\pointSize=0 1113 | data\diffReplace\wrapAround=false 1114 | data\previewSelection\priority=-1 1115 | data\previewSelection\bold=false 1116 | data\previewSelection\italic=false 1117 | data\previewSelection\overline=false 1118 | data\previewSelection\underline=false 1119 | data\previewSelection\strikeout=false 1120 | data\previewSelection\waveUnderline=false 1121 | data\previewSelection\background=#ddffcc 1122 | data\previewSelection\fontFamily= 1123 | data\previewSelection\pointSize=0 1124 | data\previewSelection\wrapAround=true 1125 | data\txs-test\priority=-1 1126 | data\txs-test\bold=true 1127 | data\txs-test\italic=false 1128 | data\txs-test\overline=false 1129 | data\txs-test\underline=false 1130 | data\txs-test\strikeout=false 1131 | data\txs-test\waveUnderline=false 1132 | data\txs-test\foreground=#0095ff 1133 | data\txs-test\fontFamily= 1134 | data\txs-test\pointSize=0 1135 | data\txs-test\wrapAround=false 1136 | data\txs-test-summary\priority=-1 1137 | data\txs-test-summary\bold=true 1138 | data\txs-test-summary\italic=false 1139 | data\txs-test-summary\overline=false 1140 | data\txs-test-summary\underline=false 1141 | data\txs-test-summary\strikeout=false 1142 | data\txs-test-summary\waveUnderline=false 1143 | data\txs-test-summary\fontFamily= 1144 | data\txs-test-summary\pointSize=0 1145 | data\txs-test-summary\wrapAround=false 1146 | data\txs-test-pass\priority=-1 1147 | data\txs-test-pass\bold=false 1148 | data\txs-test-pass\italic=false 1149 | data\txs-test-pass\overline=false 1150 | data\txs-test-pass\underline=false 1151 | data\txs-test-pass\strikeout=false 1152 | data\txs-test-pass\waveUnderline=false 1153 | data\txs-test-pass\foreground=#008000 1154 | data\txs-test-pass\fontFamily= 1155 | data\txs-test-pass\pointSize=0 1156 | data\txs-test-pass\wrapAround=false 1157 | data\txs-test-fail\priority=-1 1158 | data\txs-test-fail\bold=false 1159 | data\txs-test-fail\italic=false 1160 | data\txs-test-fail\overline=false 1161 | data\txs-test-fail\underline=false 1162 | data\txs-test-fail\strikeout=false 1163 | data\txs-test-fail\waveUnderline=false 1164 | data\txs-test-fail\foreground=#c00000 1165 | data\txs-test-fail\fontFamily= 1166 | data\txs-test-fail\pointSize=0 1167 | data\txs-test-fail\wrapAround=false 1168 | data\txs-test-warn\priority=-1 1169 | data\txs-test-warn\bold=false 1170 | data\txs-test-warn\italic=false 1171 | data\txs-test-warn\overline=false 1172 | data\txs-test-warn\underline=false 1173 | data\txs-test-warn\strikeout=false 1174 | data\txs-test-warn\waveUnderline=false 1175 | data\txs-test-warn\foreground=#ea8800 1176 | data\txs-test-warn\fontFamily= 1177 | data\txs-test-warn\pointSize=0 1178 | data\txs-test-warn\wrapAround=false 1179 | data\txs-test-qdebug\priority=-1 1180 | data\txs-test-qdebug\bold=false 1181 | data\txs-test-qdebug\italic=false 1182 | data\txs-test-qdebug\overline=false 1183 | data\txs-test-qdebug\underline=false 1184 | data\txs-test-qdebug\strikeout=false 1185 | data\txs-test-qdebug\waveUnderline=false 1186 | data\txs-test-qdebug\foreground=#808000 1187 | data\txs-test-qdebug\fontFamily= 1188 | data\txs-test-qdebug\pointSize=0 1189 | data\txs-test-qdebug\wrapAround=false 1190 | data\dtx%3Aguard\priority=-1 1191 | data\dtx%3Aguard\bold=false 1192 | data\dtx%3Aguard\italic=false 1193 | data\dtx%3Aguard\overline=false 1194 | data\dtx%3Aguard\underline=false 1195 | data\dtx%3Aguard\strikeout=false 1196 | data\dtx%3Aguard\waveUnderline=false 1197 | data\dtx%3Aguard\foreground=#ffa500 1198 | data\dtx%3Aguard\fontFamily= 1199 | data\dtx%3Aguard\pointSize=0 1200 | data\dtx%3Aguard\wrapAround=false 1201 | data\dtx%3Amacro\priority=-1 1202 | data\dtx%3Amacro\bold=true 1203 | data\dtx%3Amacro\italic=false 1204 | data\dtx%3Amacro\overline=false 1205 | data\dtx%3Amacro\underline=false 1206 | data\dtx%3Amacro\strikeout=false 1207 | data\dtx%3Amacro\waveUnderline=false 1208 | data\dtx%3Amacro\foreground=#006400 1209 | data\dtx%3Amacro\fontFamily= 1210 | data\dtx%3Amacro\pointSize=0 1211 | data\dtx%3Amacro\wrapAround=false 1212 | data\dtx%3Averbatim\priority=-1 1213 | data\dtx%3Averbatim\bold=false 1214 | data\dtx%3Averbatim\italic=false 1215 | data\dtx%3Averbatim\overline=false 1216 | data\dtx%3Averbatim\underline=false 1217 | data\dtx%3Averbatim\strikeout=false 1218 | data\dtx%3Averbatim\waveUnderline=false 1219 | data\dtx%3Averbatim\foreground=#008080 1220 | data\dtx%3Averbatim\fontFamily= 1221 | data\dtx%3Averbatim\pointSize=0 1222 | data\dtx%3Averbatim\wrapAround=false 1223 | data\dtx%3Aspecialchar\priority=-1 1224 | data\dtx%3Aspecialchar\bold=false 1225 | data\dtx%3Aspecialchar\italic=false 1226 | data\dtx%3Aspecialchar\overline=false 1227 | data\dtx%3Aspecialchar\underline=false 1228 | data\dtx%3Aspecialchar\strikeout=false 1229 | data\dtx%3Aspecialchar\waveUnderline=false 1230 | data\dtx%3Aspecialchar\foreground=#cc8100 1231 | data\dtx%3Aspecialchar\fontFamily= 1232 | data\dtx%3Aspecialchar\pointSize=0 1233 | data\dtx%3Aspecialchar\wrapAround=false 1234 | data\dtx%3Acommands\priority=-1 1235 | data\dtx%3Acommands\bold=true 1236 | data\dtx%3Acommands\italic=false 1237 | data\dtx%3Acommands\overline=false 1238 | data\dtx%3Acommands\underline=false 1239 | data\dtx%3Acommands\strikeout=false 1240 | data\dtx%3Acommands\waveUnderline=false 1241 | data\dtx%3Acommands\foreground=#10c010 1242 | data\dtx%3Acommands\fontFamily= 1243 | data\dtx%3Acommands\pointSize=0 1244 | data\dtx%3Acommands\wrapAround=false 1245 | data\lua%3Akeyword\priority=-1 1246 | data\lua%3Akeyword\bold=false 1247 | data\lua%3Akeyword\italic=false 1248 | data\lua%3Akeyword\overline=false 1249 | data\lua%3Akeyword\underline=false 1250 | data\lua%3Akeyword\strikeout=false 1251 | data\lua%3Akeyword\waveUnderline=false 1252 | data\lua%3Akeyword\foreground=#b200ff 1253 | data\lua%3Akeyword\fontFamily= 1254 | data\lua%3Akeyword\pointSize=0 1255 | data\lua%3Akeyword\wrapAround=false 1256 | data\lua%3Acomment\priority=-1 1257 | data\lua%3Acomment\bold=false 1258 | data\lua%3Acomment\italic=false 1259 | data\lua%3Acomment\overline=false 1260 | data\lua%3Acomment\underline=false 1261 | data\lua%3Acomment\strikeout=false 1262 | data\lua%3Acomment\waveUnderline=false 1263 | data\lua%3Acomment\foreground=#808080 1264 | data\lua%3Acomment\fontFamily= 1265 | data\lua%3Acomment\pointSize=0 1266 | data\lua%3Acomment\wrapAround=false 1267 | data\asymptote%3Ablock\priority=-1 1268 | data\asymptote%3Ablock\bold=false 1269 | data\asymptote%3Ablock\italic=false 1270 | data\asymptote%3Ablock\overline=false 1271 | data\asymptote%3Ablock\underline=false 1272 | data\asymptote%3Ablock\strikeout=false 1273 | data\asymptote%3Ablock\waveUnderline=false 1274 | data\asymptote%3Ablock\foreground=#804000 1275 | data\asymptote%3Ablock\fontFamily= 1276 | data\asymptote%3Ablock\pointSize=0 1277 | data\asymptote%3Ablock\wrapAround=false 1278 | data\asymptote%3Akeyword\priority=-1 1279 | data\asymptote%3Akeyword\bold=false 1280 | data\asymptote%3Akeyword\italic=false 1281 | data\asymptote%3Akeyword\overline=false 1282 | data\asymptote%3Akeyword\underline=false 1283 | data\asymptote%3Akeyword\strikeout=false 1284 | data\asymptote%3Akeyword\waveUnderline=false 1285 | data\asymptote%3Akeyword\foreground=#800080 1286 | data\asymptote%3Akeyword\fontFamily= 1287 | data\asymptote%3Akeyword\pointSize=0 1288 | data\asymptote%3Akeyword\wrapAround=false 1289 | data\asymptote%3Atype\priority=-1 1290 | data\asymptote%3Atype\bold=false 1291 | data\asymptote%3Atype\italic=false 1292 | data\asymptote%3Atype\overline=false 1293 | data\asymptote%3Atype\underline=false 1294 | data\asymptote%3Atype\strikeout=false 1295 | data\asymptote%3Atype\waveUnderline=false 1296 | data\asymptote%3Atype\foreground=#808000 1297 | data\asymptote%3Atype\fontFamily= 1298 | data\asymptote%3Atype\pointSize=0 1299 | data\asymptote%3Atype\wrapAround=false 1300 | data\asymptote%3Anumbers\priority=-1 1301 | data\asymptote%3Anumbers\bold=false 1302 | data\asymptote%3Anumbers\italic=false 1303 | data\asymptote%3Anumbers\overline=false 1304 | data\asymptote%3Anumbers\underline=false 1305 | data\asymptote%3Anumbers\strikeout=false 1306 | data\asymptote%3Anumbers\waveUnderline=false 1307 | data\asymptote%3Anumbers\foreground=#008000 1308 | data\asymptote%3Anumbers\fontFamily= 1309 | data\asymptote%3Anumbers\pointSize=0 1310 | data\asymptote%3Anumbers\wrapAround=false 1311 | data\asymptote%3Astring\priority=-1 1312 | data\asymptote%3Astring\bold=false 1313 | data\asymptote%3Astring\italic=false 1314 | data\asymptote%3Astring\overline=false 1315 | data\asymptote%3Astring\underline=false 1316 | data\asymptote%3Astring\strikeout=false 1317 | data\asymptote%3Astring\waveUnderline=false 1318 | data\asymptote%3Astring\foreground=#000080 1319 | data\asymptote%3Astring\fontFamily= 1320 | data\asymptote%3Astring\pointSize=0 1321 | data\asymptote%3Astring\wrapAround=false 1322 | data\asymptote%3Acomment\priority=-1 1323 | data\asymptote%3Acomment\bold=false 1324 | data\asymptote%3Acomment\italic=false 1325 | data\asymptote%3Acomment\overline=false 1326 | data\asymptote%3Acomment\underline=false 1327 | data\asymptote%3Acomment\strikeout=false 1328 | data\asymptote%3Acomment\waveUnderline=false 1329 | data\asymptote%3Acomment\foreground=#808080 1330 | data\asymptote%3Acomment\fontFamily= 1331 | data\asymptote%3Acomment\pointSize=0 1332 | data\asymptote%3Acomment\wrapAround=false 1333 | data\qtscript%3Acomment\priority=-1 1334 | data\qtscript%3Acomment\bold=false 1335 | data\qtscript%3Acomment\italic=false 1336 | data\qtscript%3Acomment\overline=false 1337 | data\qtscript%3Acomment\underline=false 1338 | data\qtscript%3Acomment\strikeout=false 1339 | data\qtscript%3Acomment\waveUnderline=false 1340 | data\qtscript%3Acomment\foreground=#808080 1341 | data\qtscript%3Acomment\fontFamily= 1342 | data\qtscript%3Acomment\pointSize=0 1343 | data\qtscript%3Acomment\wrapAround=false 1344 | data\qtscript%3Astring\priority=-1 1345 | data\qtscript%3Astring\bold=false 1346 | data\qtscript%3Astring\italic=false 1347 | data\qtscript%3Astring\overline=false 1348 | data\qtscript%3Astring\underline=false 1349 | data\qtscript%3Astring\strikeout=false 1350 | data\qtscript%3Astring\waveUnderline=false 1351 | data\qtscript%3Astring\foreground=#008000 1352 | data\qtscript%3Astring\fontFamily= 1353 | data\qtscript%3Astring\pointSize=0 1354 | data\qtscript%3Astring\wrapAround=false 1355 | data\qtscript%3Anumber\priority=-1 1356 | data\qtscript%3Anumber\bold=false 1357 | data\qtscript%3Anumber\italic=false 1358 | data\qtscript%3Anumber\overline=false 1359 | data\qtscript%3Anumber\underline=false 1360 | data\qtscript%3Anumber\strikeout=false 1361 | data\qtscript%3Anumber\waveUnderline=false 1362 | data\qtscript%3Anumber\foreground=#000080 1363 | data\qtscript%3Anumber\fontFamily= 1364 | data\qtscript%3Anumber\pointSize=0 1365 | data\qtscript%3Anumber\wrapAround=false 1366 | data\qtscript%3Akeyword\priority=-1 1367 | data\qtscript%3Akeyword\bold=false 1368 | data\qtscript%3Akeyword\italic=false 1369 | data\qtscript%3Akeyword\overline=false 1370 | data\qtscript%3Akeyword\underline=false 1371 | data\qtscript%3Akeyword\strikeout=false 1372 | data\qtscript%3Akeyword\waveUnderline=false 1373 | data\qtscript%3Akeyword\foreground=#808000 1374 | data\qtscript%3Akeyword\fontFamily= 1375 | data\qtscript%3Akeyword\pointSize=0 1376 | data\qtscript%3Akeyword\wrapAround=false 1377 | data\qtscript%3Atxs-variable\priority=-1 1378 | data\qtscript%3Atxs-variable\bold=false 1379 | data\qtscript%3Atxs-variable\italic=false 1380 | data\qtscript%3Atxs-variable\overline=false 1381 | data\qtscript%3Atxs-variable\underline=false 1382 | data\qtscript%3Atxs-variable\strikeout=false 1383 | data\qtscript%3Atxs-variable\waveUnderline=false 1384 | data\qtscript%3Atxs-variable\foreground=#800000 1385 | data\qtscript%3Atxs-variable\fontFamily= 1386 | data\qtscript%3Atxs-variable\pointSize=0 1387 | data\qtscript%3Atxs-variable\wrapAround=false 1388 | data\qtscript%3Atxs-function\priority=-1 1389 | data\qtscript%3Atxs-function\bold=false 1390 | data\qtscript%3Atxs-function\italic=true 1391 | data\qtscript%3Atxs-function\overline=false 1392 | data\qtscript%3Atxs-function\underline=false 1393 | data\qtscript%3Atxs-function\strikeout=false 1394 | data\qtscript%3Atxs-function\waveUnderline=false 1395 | data\qtscript%3Atxs-function\fontFamily= 1396 | data\qtscript%3Atxs-function\pointSize=0 1397 | data\qtscript%3Atxs-function\wrapAround=false 1398 | data\preedit\priority=-1 1399 | data\preedit\bold=false 1400 | data\preedit\italic=false 1401 | data\preedit\overline=false 1402 | data\preedit\underline=false 1403 | data\preedit\strikeout=false 1404 | data\preedit\waveUnderline=false 1405 | data\preedit\background=#ffff7f 1406 | data\preedit\fontFamily= 1407 | data\preedit\pointSize=0 1408 | data\preedit\wrapAround=false 1409 | --------------------------------------------------------------------------------