怎么给宁夏大学毕业论文模板添加英文封面?

发布于 2025-03-28 00:41:38

我想给宁夏大学毕业论文模板添加英文封面,格式已经放在压缩包内,添加后的格式为
第一页,中文封面
第二页,空白页
第三页,英文封面
第四页,空白页
操作系统:Windows 10
安装的发行版:TEX Live 2023
编辑器:WinEdt
编译命令:XeLatex
MWE.zip

查看更多

关注者
0
被浏览
225
1 个回答
Sagittarius Rover
Sagittarius Rover 19小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

看模板+微调了一个多小时(还有瑕疵,但我不想改了....)....

image.png

Claim:我在这里不会给出具体的修改方式只提供修改思路。因为实际上还有一些bug,和原始的nxuthesis的相容性也远远不够,还是会有一定的拼接感

  • 下面的所有修改基于CTAN上的nxuthesis,能从官方途径下载就不应该从“附件”这种非官方途径下载
  • 我还是觉得这种发一大段模板上来的做法是十分不被推荐的,而且你还的“附件”还是自己魔改过的,已经是私有模板,没有人会愿意看几千行代码设置(这也是为什么没人回答的原因之一)
  • 再次重申,如果对模板有修改需求,最好的办法一定是提issues,或者想办法提取MWE,直接问“怎么给宁夏大学毕业论文模板添加英文封面?”十分像“伸手党”,这是大多数人讨厌的
  • 基于以上的原因,我的这一回答只是为了自己阅读并学习修改模板的写作思路,并不直接回答这一问题

大致思路——逆向追溯+模仿中文封面的命令定义

明确目标:"给宁夏大学毕业论文模板添加英文封面"

step1: 在文中找到什么命令排版了中文封面:

% nxuthesis.cls Line2177~2186
\renewcommand\maketitle{%
  \cleardoublepage
  \pagenumbering{Alph}%
  \nxu@pdfbookmark{-1}{\nxu@title}%
  \nxu@titlepage
  \ifnxu@include@spine@true
    \spine
  \fi
  \clearpage
}

仔细阅读上面的代码,实际上核心的排版命令为:

  • \nxu@titlepage
  • \spine

我们预期排版中英文版本,那么应该仿照上述的两个命令自定义\nxu@titlepage@en以及\spine@en,同时处理好一些细节

step2:以前者为例,逆向追溯\nxu@titlepage的定义:

% nxuthesis.cls Line2192-2226
\newcommand\nxu@titlepage@thesis{%
  \thispagestyle{empty}%
  % \null\vskip 8.1pt%
  \begingroup
    \centering
    \begingroup
      \fontsize{10.5bp}{10.5bp}\selectfont
      \nxu@titlepage@topinfo\par
    \endgroup
    \vskip 1.7cm%
    \nxu@titlepage@name
    \vskip 0.68cm
    \nxu@title@page@degree@category\par
    \vskip 0.6cm
    \begingroup
      \sffamily\fontsize{22bp}{30bp}\selectfont
      \nxu@title\par
    \endgroup
    \vskip 8pt
    \begingroup
      \fontsize{16bp}{24bp}\selectfont
      \nxu@title@en\par
    \endgroup
    \vskip 24.1pt%
    \vfill
    \begingroup
      \fontsize{14bp}{21bp}\songti
      \nxu@titlepage@info\par
    \endgroup
    \vskip 62pt%
    \fi
  \endgroup
  \clearpage
  \restoregeometry
}

同样仔细观察,上面的封面排版基本可以分为以下五个部分:

  • \nxu@titlepage@topinfo
  • \nxu@title@page@degree@category
  • \nxu@title
  • \nxu@title@en 这部分是我们可以偷过来用的...同时学习kvoptions是如何定义和使用键值对的
  • \nxu@titlepage@info

那么实际上我们进一步的思路是,再次追溯上面的五个命令,并且结合LaTeX排版表格,盒子的方式进行微调,定义对应的\nxu@titlexxxx@yyyy@en,同时注意观察\nxu@titlexxxx@yyyy命令是如何获取nxusetup.tex内的信息的...

step3: 以\nxu@titlepage@topinfo为例,我们预期模仿其定义对应的\nxu@titlepage@topinfo@en命令:

% nxuthesis.cls Line2241-2249
\newcommand\nxu@titlepage@topinfo{
    \nxu@titlepage@topinfo@tabular{3em}{4em}{1em}{
      \nxu@topinfo@iteml{分类号}{\nxu@clc}
      \nxu@topinfo@iteml{密级}{\nxu@secret@level}
    }{
      \nxu@topinfo@itemr{单位代码}{\nxu@code}
      \nxu@topinfo@itemr{学号}{\nxu@student@id}
    }\par
}

仔细观察,这里的\nxu@titlepage@topinfo@tabular用于排版topinfo的表格,其中的前四个参数含义要进一步追溯参照其定义,同时"分类号","密级"以及其对应的\nxu@clc\nxu@secret@level都应该同时做修改。总而言之,上面的所有命令修改和重定义最终都会回到关于nxuthesis基于kvoptionskvsetkeys设置的一系列信息键值对的修改上。我们终于要step into到键值对的设置上...

step4:考虑前面\nxu@title@en埋下的伏笔,我们不难追溯到:

nxusetup.tex Line24-25
title* = {An Introduction to \LaTeX{} Thesis Template of Ningxia
            University v\version},

这里用了title*来存储title@en的信息,同时在nxuthesis.cls中也可以追溯到:

% nxuthesis.cls Line1987-2000
\nxu@define@key{
  secret-level = {
    name = secret@level,
  },
  secret-year = {
    name = secret@year,
  },
  title = {
    default = {标题},
  },
  title* = {
    default = {Title},
    name    = title@en,
  },
.... somthing else
}

可以发现只要在\nxu@define@key内使用title*作为键以及使用name= title@en便可以显式存贮名为\nxu@title@en=Title的宏,据此,修改实现的思路已经基本打通了。

以上。剩下的,就应该是OP自己的努力了~

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览