Code Monkey home page Code Monkey logo

buptthesis-ctex's Introduction

警告:本项目非官方实现,出现问题概不负责。

关于

在本项目之前已有多个为北邮研究生学位设计的LaTeX文档类,经过张煜博士(Dazzle Zhang)和王贤凌博士(rioxwang)的努力,BUPTGraduateThesis的功能已经相当完善。 但是,之前的项目存在很多问题。 首先,由于之前的项目启动时间较早,原文档类使用了很多较为古老的方式来实现,而这些方法已经逐渐被新的方案所替代。 其次,原文档类使用了很多 LaTeX 的底层命令,再加上注释的缺乏,其代码的可读性较差。这使得项目后期维护困难,也使得让更多人参与进来的的门槛较高。 针对这些问题,本项目采用了一些新的方法来重新实现北邮研究生学位论文。 其中最主要的区别就是本项目不再直接调用xeCJK,而是通过CTeX的定制化功能来实现。由于字体选择、中文格式设定等功能大多直接由 CTeX 完成,本文档类在代码量大幅减少的同时,几乎可以实现在 Windows、MacOS上的开箱即用。Linux 系统上也只需按照 CTeX 的常规方式配置字体即可。 除此之外,对于页眉页脚、目录、引文等部分的调整也都采用相应的宏包来实现,从而尽可能的避免使用底层命令,提高代码的可读性。

使用说明

编译

由于本项目采用一些较新的工具来实现功能,对于老版本的LaTeX系统可能存在兼容性问题,建议使用最新的TeX Live或者MiKTeX来进行编译。

注意:虽然 CTeX 套装的使用依然很广泛,但由于 CTeX 套装已经多年没有维护,本项目不对 CTeX 套装的兼容性做任何保证。

虽然 CTeX 宏包可以自行适应编译引擎,但由于开发过程中主要使用 XeLaTeX 进行测试,故强烈建议使用 XeLaTeX 引擎来进行编译。 为了实现引用、编号等功能,可使用以下命令进行编译。

latexmk %DOC%

本项目提供了相应的 latexmkrc 文件用以定义 latexmk 的行为。 为了保证每次编译的速度以及效果,强烈建议大家采用 latexmk。 (在MikTex下使用 latexmk 可能需要单独安装一个 Perl

另外也可以直接使用以下命令

xelatex %DOC%
makeglossaries %DOC%
biber %DOC%
xelatex %DOC%
xelatex %DOC%

makeglossaries %DOC% 不用在写作的过程中反复的运行,这个并不影响正文中的输出,所以只需在编译最终版的时候执行一次用以生成缩略语表即可。

Overleaf在线编译

现在本项目已经能在 Overleaf 上直接使用了,由于 Adobe 宋体的逗号和 Windows 自带宋体逗号有较大差异,为了最大可能减少问题的出现,故使用了 Windows 自带字体。

Overleaf模板地址

选项

  • txmath 使用该选项启用 Times 字体的数学部分。
  • xits 使用 XITS 项目提供的字体。
  • review 用以自动在扉页上隐藏个人信息。
  • chapterbib 默认将引文列在正文的末尾,可使用该选项将采用文献列在各章的末尾。

已知问题

扉页

研究生院给的扉页样例上采用了粗宋体(伪粗体),但本文档类默认绘制的扉页并没有采用粗体字。这是因为Windows上其实并没有粗宋体字形,CTeX中默认使用黑体来代替粗宋体。不过《关于研究生学位论文格式的统一要求》上并没有明确指出对粗宋体的使用,我想应该问题不大。

实在不放心的话可以自行用Word绘制中英文扉页和声明,然后导出成cover.pdf放在本项目的根目录。本文档类在发现cover.pdf之后便不会自行绘制相应的内容而是直接将cover.pdf贴在文档的最前面。

还有一个替代方案是自行选择一个粗宋体字体,将字体文件重命名为bsong.ttf。本文当类将在发现bsong.ttf文件之后自动使用其中的字体来绘制中文封面。 在进行了一些对比之后,我发现汉仪中宋的字重跟 Word 中的加粗宋体比较接近,而且是个人使用免费,推荐给大家。使用效果可参见bare_thesis.pdf的封面。由于我不知道二次分发自己下载的字体会不会有问题,麻烦大家自行前往汉仪的网站下载。

另外,如果cover.pdfcover.tex都没有找到,文档类会直接放弃绘制扉页。

数学字体

不知是我系统的问题还是newtx包存在问题,我这里调用newtxmath之后就有部分数学符号无法使用。现在暂时采用LaTeX默认的cm数学字体。不过不管用什么数学字体,LaTeX的数学排版肯定比Word强。另外本文档类提供一个txmath选项来开启newtxmath的调用。

发现我的系统里少一个叫boondox的字体包,手动安装之后便可以正常编译newtxmath了。 如果有遇到相似问题的可以尝试一下。

引文格式

虽然《关于研究生学位论文格式的统一要求》里面没有明确说明,但是引文格式要求是基本符合国家标准的。 所以本项目采用biblatex-gb7714-2015来处理引文格式。 但由于该包没有在以前的文档类中使用过,并不清楚学校对该包的接受度如何。

如果编译时出现Package xkeyval Error: `gbnamefmt' undefined in families `blx@opt@pre`. [\blx@processoptions] 请更新biblatex-gb7714-2015的版本。

注脚

BUPTGraduateThesis文档类使用了给很大的篇幅来实现带圈数字的注脚,但我在《关于研究生学位论文格式的统一要求》并没有看到相应的要求。另外我觉得注脚并不是什么很有必要的功能,本项目放弃对带圈数字的实现。

自动缩略语

BUPTGraduateThesis中实现了非常强大的自动缩略语功能,但是我在移植过程中发现自动缩略语所依赖glossaries包似乎跟biblatex冲突。由于时间紧迫,未能查明具体原因。暂时放弃实现相应的功能,现在只能手动管理缩略语了。

经过 @qin-nz 的提示,我发现原来glossariesbiblatex其实并无冲突,至少我原来遇到的问题无法再现了。

现在成功移植了BUPTGraduateThesis中自动缩略语功能。 不过\gls{}的输出会造成中英文混排的时候自动空格不出现的问题。 这个问题暂时无解,所以需要大家手动控制一下\gls{}两侧的空格。 另外编译的时候需要多加一个makeglossaries %DOC%

功能缺乏

由于本项目几乎完全重写,功能实现其实远没有BUPTGraduateThesis项目那么完整。暂时需要大家自行修改代码来实现硕士、博士后论文,涉密论文所需的调整。如果日后有时间我会尽量完善相关的功能。

致谢

感谢张煜博士和王贤凌博士的贡献。虽然本文档类几乎完全重写,但很多设计还是继承了BUPTGraduateThesis项目。

另外一些实现细节也参考了SJTUThesis,在此也对相关人员表示感谢。

buptthesis-ctex's People

Contributors

qcts33 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

buptthesis-ctex's Issues

会议的参考文献格式需要修正

北邮研究生学位论文格式要求中对于会议论文的参考文献格式要求和gb7714-2015的国家标准是不一致的,格式要求如下:
【会议论文格式】 [序号]作者. 篇名[A]. // 论文集名称[C], 出版地: 出版者, 出版年份: 起始页码.
【示例】
[3] Karagiannis, T., Broido, A., Faloutsos,M., et al. Transport Layer Identification of P2P Traffic [A]. // Proc of the 4th ACM SIGCOMM Conf on Internet Measurement [C], New York: ACM Press, 2004: 121-134.
所以需要在BUPTthesis.cls文件中增加如下代码:

\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map[overwrite]{
\pertype{inproceedings}
\step[fieldset=usera,fieldvalue={A}]
}
}
}

\renewbibmacro*{booktitle}{%
\ifboolexpr{
test {\iffieldundef{booktitle}}
and
test {\iffieldundef{booksubtitle}}
}
{}
{\printtext[booktitle]{%
\printfield[titlecase]{booktitle}%
}%
}%
\ifentrytype{inproceedings}{\printtext{[C]}\newunit}
}

\renewbibmacro*{in:}{%
\iftoggle{bbx:gbpunctin}{
\ifentrytype{inproceedings}{\unspace\printtext{\allowbreak{\SlashFont\adddot//}\allowbreak}}
{\printtext{\allowbreak{\SlashFont//}\allowbreak}}
}%\addthinspace
{\setunit{\adddot\addspace}%
\iffieldequalstr{userd}{chinese}%
{\printtext{\bibstring{incn}}}%
{\printtext{\bibstring{in}}}%
}}%\newunit\newblock\intitlepunct

效果和示例参见:hushidong/biblatex-gb7714-2015#145

但是要把gb7714-2015.bbx 和 gb7714-2015.cbx更新到最新版。
下载地址:https://github.com/hushidong/biblatex-gb7714-2015

希望作者能更新一下BUPTthesis.cls文件的版本@qcts33

参考文献列表不显示

同学,我遇到了这样的问题,\cite{item}命令显示的是[item]而不是序号,而且文章末尾不显示文献列表;pub.tex中的\nocite{*}也不显示发表论文列表。

图例的字体大小的问题

学长您好,用了你分享的latex模板,感觉挺好的。但是有一些细节的问题,我也自己花了一天时间改了一下,但是有个问题,我没找到办法,还请指教下。

  • 研究生院要求的,“若图名采用中英文对照,其英文字体为五号,中文字体为五号楷体。”这点模板里边好像没有支持。

我按照要求,自己进行了修改,在figure的caption里边,手动加上了\kaishu \zihao{5}命令,这样的话,caption里边是对的了。但是有个问题,“图”这个字,好像不会随着变化大小。所以,我看了下,这个字的定义,好像在BUPTthesis.cfg里边,我在里边手动加上大小的限制,但没有效果。想问下,应该在哪里解决这个问题?

编译时报错,“Package fontspec Error”,该怎么解决?

image
编译时很多字体找不到,但是C:\Windows\Fonts里有这些字体,查看文件名字好像对不上。SimSun在字体文件夹里是simsun,ipaexm不知道是什么字体。有同学遇到相同的问题吗,可以讨论一下。

我的系统是win11,使用的软件是texlive + texstudio。

自动缩略语

我尝试着基于glossaries-extra实现了自动缩略语功能。具体实现可参见abbreviation分支。
虽然基本功能有了但缩略语前后的空格却不受ctex的控制。具体输出效果可abbreviation分支中bare_thesis.pdf的第二章开头。
研究了一下文档实在不知道哪里出问题了,还请有兴趣的小伙伴一起研究一下。

请求开设Overleaf分支

Hi,我最近为项目增加了Overleaf在线编译的适配。为了Overleaf的适配,我增加修改了两部分,一部分是增加了字体文件,宋体、楷体、黑体和仿宋体四个字体大小有40MB左右;另一部分是Overleaf使用的texlive 2017下biblatex-gb7714-2015存在问题,故将biblatex-gb7714-2015的宏包放在了项目文件下。因为Overleaf是为了适配增加东西,因此觉着放在master不太好,故请求开设Overleaf分支,用以维护项目在Overleaf上的版本。
目前我的Overleaf分支在放在 https://github.com/VivianSnow/BUPTthesis-ctex/tree/overleaf,开了后可以PR过来。

算法 Algorithm在不同section使用出现连续编号的错误

  1. 例如,在第一章使用 Algo1和Algo2,在第二章使用Algo3。正确的编号应该是 算法1-1算法1-2算法2-1。目前出现的编号是算法1-1算法1-2算法2-3
  2. 此外,算法的编号点击以后的跳转也会出现问题。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.