ywgATustcbbs / ustcthesis

Moved to USTCTUG on Github中国科学技术大学学位论文通用LaTeX模板. LaTeX templates for UNDERGRADUATE and GRADUATE STUDENTS of USTC. Backup mirror at GitLab (sponsored by LUG@USTC) : https://gitlab.lug.ustc.edu.cn/ywg/ustcthesis
https://bbs.ustc.edu.cn/cgi/bbstdoc?board=TeX
137 stars 50 forks source link

模板重构 #28

Closed seisman closed 8 years ago

seisman commented 9 years ago

现在的模板存在若干问题:

  1. 模板基于ctex 1.x,而texlive 2015中ctex已经更新到2.x,虽然理论上2.x是兼容1.x的,但实际上现有模板在texlive 2015下无法编译通过,看了一下想要把错误找到看上去不容易;考虑到新用户基本都会安装最新版的texlive,所以模板应至少保证在最新版的texlive下可以编译通过;
  2. 源码格式不规范,没有缩进,导致阅读困难;
  3. 源码顺序混乱,没有条理,对同一个东西的设置可能出现在多个地方;
  4. 部分源码功能不清晰,感觉是从哪里直接复制粘贴过来的,而且似乎是很久之前的解决方案。这部分代码可能是不需要的;
  5. 就目前来说,向后兼容没有意义。同一个人,最多也就本科毕业、硕士毕业、博士毕业会用到这个模板,所以两次使用模板的间隔会有3年以上,向后兼容的意义不大,而且latex宏包的发展很迅速,为了向后兼容而增加大量代码没有太多意义,而且可能会造成后人维护上的困难;
  6. 定义了太多新命令或环境,比如自定义了字号、字体名等。对于已经熟悉LaTeX的用户来说,他们更愿意使用ctex提供的相应命令,模板提供的新命令可能会让这群人困惑;对于不熟悉LaTeX的用户来说,可能会让他们误以为这些命令是LaTeX的命令;
  7. 有些选项不是那么必要,比如oldfont选项,用latex的模板就是为了不必关心格式,使用windowsfont, adobefont以及macfont就足够了,oldfont目前看来没有必要;
  8. 关于自定义字号的问题,在前一个issue中也提到了。我了解了一下,自定义字号是因为排版和计算机行业的某些定义不同。ctex都没有管这种细节,我觉得我们的模板也不应该管这些细节;至少暂时不需要;
  9. 格式没有完全按照规范来。的确学校的规范中有很多自相矛盾或者不合理的地方,但毕竟是学校的规范,所以模板应尽可能完全遵循学校的论文规范。在遵循学校规范的基础上,可以适当加上其他选项以得到更多自定义的效果;
  10. 本科论文规范。目前的模板基本上遵循了硕博论文规范,但是几乎不符合本科论文规范。这个事情比较头疼,因为两个规范差别还是有些大的。

所以,应该对模板进行重构,从现在到明年三月,大半年的时间,做出一个正式版应该是足够的了:

  1. 基于ctex2.x;
  2. 默认的配置尽可能完全遵循学校规范;
  3. 不再兼容之前的模板,重新设计选项;
  4. 发布正式版;

目前,我完成了模块的部分重构:

  1. 硕博论文的整体结构以及具体格式已经完成,但行间距的定义让我比较困惑,所以行间距还需要确定;
  2. 目前使用了尽可能少的宏包,但已经可以满足一般文档的书写了,至于其他图片、表格、算法等宏包,可以后续再添加;
  3. 本科论文可以编译通过,但格式基本还是硕博论文的格式,主要是本科论文和硕博论文的规范差异比较大,很多部分得写两份;
  4. 正文部分,我想可以介绍一下latex以及模板的用法,这部分还没有写。

另外, @zepinglee 似乎新建了一个github账户,在做ustcthesis-v2.0,可以考虑合并一下,具体还有待商榷。

ywgATustcbbs commented 9 years ago

非常感谢意见,之前也有人提议脱离ctex,使用基本的xecjk实现。马上面临毕业,接下来就没有太多精力投入到这件事上,最好是能有几个比较稳定的维护的同学,大。之前家一起完成。 我的想法更倾向于脱离ctex,参照学校规定,一条一条实现。

seisman commented 9 years ago

恩,这个事情如果一个人做,工作量还是挺大的。写好一个正式的模板之后,后面的维护以及更新就可以多人合作完成,应该会轻松一些。

倒是可以考虑像 @zepinglee 那样,建一个更正式些的ustcthesis组织,然后由几个人一起维护。

至于脱离ctex,使用基本的xeCJK重新实现,我觉得没有必要。ctex在汉化方面做了大量的工作,我们没有必要重复他们的工作,而且ctex 2.x已经可以在底层自动识别操作系统,并根据操作系统选择合适的字体,这一点很方便。

ywgATustcbbs commented 9 years ago

还没有读过ctex新的文档,具体的改动还不是特别了解。 之前说要脱离ctex,是因为ctex对标题的控制机制比较乱,标题离页顶的距离之类的不好控制,跟titlesec似乎有一定的冲突,之前在写这部分的时候经常出现一些意料之外的排版输出,还有其他一些小问题,

seisman commented 9 years ago

这个问题好像在ctex的官方Issue里有提到,我确定是不是这个 https://github.com/CTeX-org/ctex-kit/issues/207

seisman commented 9 years ago

这是我目前重写的版本,目前还没有完成,暂时先放在这里 https://github.com/seisman/ustcthesis2

zepinglee commented 9 years ago

我最近在学习宏包开发,于是就拿ustcthesis做练习,顺带学习Makefile和Git。所以我建的那个组织完全可以忽略…… 我目前对LaTeX基本命令比较熟,但是对一些控制标题格式、布局等命令不熟。如果有机会,我很乐意为ustcthesisi做出一些贡献,另外麻烦两位前辈指导啊。

我比较赞成@seisman的想法,顺便提出我的几点个人看法:

  1. 建议写成.dtx格式的,类似于thuthesis那样的,代码结构、注释也清晰,可以用doc方便地生成文档。
  2. 基于ctex 2.x,没必要从xecjk搭建起来吧,即使从xecjk搭建也要copy很多ctex的代码。
  3. 本科的格式规范写的也不是很具体,实际最后提交检查也不严(今年很多本科生就是用现在的模板做的都毕业了),建议最后考虑本科模板。
  4. 放弃向后兼容性

我对GitHub还没完全熟练啊,貌似每个帐户都可以建立的组织? PS 标题离页顶的要求好坑爹啊,我今天就在研究这个。

seisman commented 9 years ago

是否要新建一个组织?ustclatex或ustcthesis?

dtx格式似乎是宏包的推荐写法,我还不太熟悉。如果用dtx的话好像需要用户自己执行latex ustcthesis.dtx来生成cls文件,这样是否对用户不够友好?还是说维护的时候用dtx,然后发布cls文件?

如果开始写的话,可以先把规范整理一遍,然后把列出每一点的优先级。兼容本科的规范是个挺麻烦的事情,放最后也挺好的。

ywgATustcbbs commented 9 years ago

随便建了一个,把你们两个拉进来了,先做开发用,等基本成熟了再考虑怎么打包提交到学校。

另外,我觉得先用cls写,等基本稳定之后再考虑是否着手转换为dtx。dtx的好处是可以自动安装,我觉得这个功能比较适合于提交到ctan并放入texlive发行的宏包,这样用户不必繁琐的自行安装

而cls虽然不能自动安装,但是下下来就能用,反而适合论文这种专用的、基本是一次性使用的文档类,对普通使用来说,给个压缩包反而更方便。

而开发用dtx,发布用cls,这个作为学习交流挺方便的,但是目前的状况是,我完全不会dtx的语法结构,zeping lee在学习,seisman似乎也不是很熟练,这无疑增加了不少的学习成本。另外,每次测试也得重新安装一遍,不比直接用cls测试方便多少。

所以我觉得可以先完成cls的重做和debug,等稳定了再考虑dtx的事

zepinglee commented 9 years ago

我会用dtx,不过既然你们不太熟就先在seisman/ustcthesis2的基础上做吧,最后写用户帮助文档时再封装。

zepinglee commented 9 years ago

我已经把seisman/ustcthesis2转移到了USTCThesis-Rework