Skip to content

NotoOotori/tjuthesis

Repository files navigation

tjuthesis

这个库旨在提供同济大学本科生毕业设计 (论文) 的 LaTeX 模板, 目前包括一个文档类和一份使用示例, 之后可能也很难做出一份完整的文档了.

目前网络上能找到的同济大学本科生毕业设计 (论文) 的 LaTeX 模板有:

这个模板相比起其它这些模板的优势主要在于对格式的定制与手册上的要求更加符合, 并且我们努力减少样式与内容之间的耦合.

这个库发布在 GitHub 上, 并在 Gitee 上有镜像. 版本发布在 GitHub Releases 中.

要注意这份模板是学生自制的, 未经学校相关部门的授权与审核, 尽管 2021 届的总共 3 位使用者都顺利完成毕业设计并毕业, 不过用户还是应当了解其中的风险: 从 2021 届开始, 学校采用了新的教务系统来提交论文并采用了新的知网查重系统进行查重, 其中教务系统至今 (作者毕业证书和学位证书已经拿到近一周了) 仍未支持 PDF 文件的提交, 而新的查重系统对于 PDF 文件的支持也很糟糕 (有 80000 字符的上限, 可是它统计出来的 PDF 文件的字符数要远高于将 PDF 文件中全部字符复制粘贴进 Word 之后统计出的字符数, 因此有些同学可能最后还需要降字数才能查重, 而我们知道给论文降字数可能是比降重还要痛苦的一件事).

推荐用户阅读完 如何使用 部分再使用本模板.

如何使用

下载与编译

首先确保你的电脑中安装了较新的LaTeX发行版和较新的宏包, 要求 LaTeX 版本不旧于 2020-10-01 版. 推荐安装TeX Live 2021, 安装教程可以参考 一份简短的关于 LaTeX 安装的介绍 (比较全面, 主要用命令行进行配置安装) 和 TeX Live 2020 不安装指南 (使用 GUI 安装的图文教程).

然后将这个库下载到你的电脑中. 可以用 git clone https://github.com/NotoOotori/tjuthesis.git 命令, 也可以直接下载压缩包并解压.

请使用 XeLaTeXBiber 进行编译. 推荐采用 LaTeXmk 一键编译, 需要安装 Perl. 编译命令为

  latexmk -synctex=1 -interaction=nonstopmode -file-line-error --shell-escape -xelatex <filename>

.vscode/settings.json 中我们也对 VSCode 配置了编译命令.

如果读者想要像示例中那样使用 minted 包进行代码块的排版, 则需要按照 Python 和其中的 Pygments 包.

开始撰写

首先来看 tjusetup.tex 这个文件. 先根据注释的指示在 \tjusetup 命令中完善论文的基本信息, 然后再在其后引用自己习惯使用的宏包, 做相应的配置, 并定义自己常用的东西.

然后是文章内容的书写. 在 data/ 目录下有摘要和致谢对应的文件, 根据注释的指示填写其内容即可. 再在 data/ 目录下按照个人习惯建立正文及附录的 .tex 文件, 并像 tjuthesis-example.tex 将这些文件包含在主文件中.

文档类提供的接口

选项

载入选项

以下是这个文档类特有的选项, 只能在加载文档类时设置.

用户也可以设置其它 ctexart 文档类支持的选项.

  • twoside: 适合于双面打印.

其它选项

待续.

命令

我们将要建立一个 \tjucite 的宏, 来满足一些奇怪的文献引用格式.

我们对常用字号和字体都创建了宏, 可以很方便地使用.

注意事项

文档类干了什么

文档类中引用了 unicode-math 包来提供数学符号并设置数学字体, 所以不要尝试引用一些别的与数学字体和符号有关的包. unicode-math 包会在 \AtBeginDocument 时做不少配置, 因此数学符号的设置可以放在那之后进行.

文档类在 \AtEndPreamble 时才引用了 hyperref 包. 要注意若采用 ntheorem 包进行定理的排版, 需要在引用 hyperref 包之后再使用 \newtheorem 命令定义定理环境.

文档类引用了 biblatex 包并采用了 biblatex-gb7714-2015 宏包内提供的 gb7714-2015 样式, 请参照该宏包的文档来引用文献, 通常来说直接 \cite{<reference>} 或者 \cite[<page>]{<reference>} 就可以了, 也可以用 \footfullcite{<reference>} 在脚注中引用文献, 如果一篇文献仅在脚注中被引用, 那么它将不会出现在参考文献表中. 注意 .bib 文件应该放在 ref/refs.bib, 建议使用Zotero一键导出的功能, 我们会尽力确保一键导出的 .bib 文件就能满足要求.

待完成的工作

文档格式设置

  • 页面格式设置.
    • 装订线.
    • 页眉.
    • 页脚, 注意摘要页和目录页的页脚不同于正文.
    • 上下左右的边界.
  • 文本格式设置.
    • 中英文摘要及关键词.
    • 目录页.
    • 章节标题.
      • 格式定制.
      • 说明.
    • 正文字体, 行间距与段落间距.
      • 格式定制.
      • 说明.
    • 参考文献.
    • 谢辞.

排版示例及环境配置

  • 分项.
  • 公式.
  • 定理.
  • 插图.
    • 单张图.
    • 子图.
  • 表格.
    • 单页表格.
    • 跨页表格.
    • pgfplotstable 宏包使用.
  • 代码.
    • minted 包.
      • 单页代码块.
      • 跨页代码块.
    • listing 包.
  • 算法.
    • algorithmicx 包.
    • algorithm2e 包.
    • algpseudocodex 包.
  • 文献引用.

其它排版细节

  • 脚注.
  • cleveref.
  • breakurl 说明.
  • floatbarrier.

其它说明

  • 字体.
  • 概述.

接口调整

我们将在当前的三位使用者完成论文之后进行可能的接口调整.

  • 关键词采取某种键值对的方式输入.
  • 将文献著录相关的定制移出文档类, 给用户提供选择的自由.

编译环境设置

  • latexmkrc文件.
  • 编译脚本.

在线编辑器支持

  • Overleaf.
  • TeXPages.

杂项

  • 关于页面设置尤其是页码格式可能有bug.
  • 统一代码环境与算法环境的边框的排版.
  • 表格代码后空一行可能空得不够多.

提问与贡献

如果有任何改进意见或者功能需求, 欢迎提交 issuepull request.

许可证

本模板 (tjuthesis.cls) 的发布遵守 LaTeX Project Public License (版本 1.3c 或更高). 文件 tjusetup.tex 可以自由分发. 不允许在未经授权的情况下分发本库中的其余文件.

致谢

这个项目中的一些代码的用法和思路参考了 tuna/tjuthesisSXKDZ/tongjithesis, 特别感谢他们. 感谢这个项目的两位第一批的使用者. 感谢单海英老师的指导. 感谢为这个库的发展和推广做出贡献的你们.