Skip to content

Commit

Permalink
更新到最新
Browse files Browse the repository at this point in the history
  • Loading branch information
bubifengyun committed Nov 17, 2018
1 parent 9e65823 commit 5fd1516
Show file tree
Hide file tree
Showing 2 changed files with 78 additions and 77 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 上海交通大学学位论文 Bookdown 模板

这是为撰写上海交通大学学士、硕士或博士论文而准备的 Bookdown 模板,非官方出品。详细使用说明参见本模板内容。据最新[2018-11-01][上海交通大学学位论文Latex模板](https://github.com/sjtug/SJTUThesis), 参考[谢益辉Bookdown中文模板](https://github.com/yihui/bookdown-chinese)改写而成。在完全兼容[原交大论文LaTeX模板](https://github.com/sjtug/SJTUThesis)的基础上,通过使用 Markdown,大幅度降低撰写论文的难度,引入 R 语言,提高论文作图、数据处理的能力,真正做到让论文能够随着数据变化而变化,而不是数据错误了,要逐个手动改变。对于无法使用 Rmarkdown 实现的内容,完全复制粘贴 LaTeX 代码也能够运行,可能会多一些括号之类的,请删除。
这是为撰写上海交通大学学士、硕士或博士论文而准备的 Bookdown 模板,非官方出品。详细使用说明参见本模板内容。据最新[2018-11-17][上海交通大学学位论文Latex模板](https://github.com/sjtug/SJTUThesis), 参考[谢益辉Bookdown中文模板](https://github.com/yihui/bookdown-chinese)改写而成。在完全兼容[原交大论文LaTeX模板](https://github.com/sjtug/SJTUThesis)的基础上,通过使用 Markdown,大幅度降低撰写论文的难度,引入 R 语言,提高论文作图、数据处理的能力,真正做到让论文能够随着数据变化而变化,而不是数据错误了,要逐个手动改变。对于无法使用 Rmarkdown 实现的内容,完全复制粘贴 LaTeX 代码也能够运行,可能会多一些括号之类的,请删除。

**本模板会保持sjtuthesis.cls和sjtuthesis.cfg两个文件跟原论文模板一致。**

Expand Down Expand Up @@ -28,7 +28,7 @@ SJTUThesis-Rmd 是一个刚刚启动的开源项目,我们非常欢迎新的

## 后续工作计划

* 先让模板能够正常工作
提供更多 `pandoc` 标准的 markdown 例子。

## 致谢

Expand Down
151 changes: 76 additions & 75 deletions sjtuthesis.cls
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@
\newcommand\confidential[1]{\def\sjtu@value@confidential{#1}}
\newcommand\school[1]{\def\sjtu@value@school{#1}}
\newcommand\chinesedegree[1]{\def\sjtu@value@chinesedegree{#1}}
\renewcommand\title[1]{\def\sjtu@value@chinesetitle{#1}}
\renewcommand\title[1]{%
\def\sjtu@value@chinesetitle{\sjtu@title@handler{#1}}%
\def\sjtu@value@chinesecovertitle{\sjtu@covertitle@handler{#1}}}
\renewcommand\author[1]{\def\sjtu@value@author{#1}}
\newcommand\advisor[1]{\def\sjtu@value@advisor{#1}}
\newcommand\coadvisor[1]{\def\sjtu@value@coadvisor{#1}}
Expand Down Expand Up @@ -86,7 +88,7 @@
%==========

\RequirePackage{etoolbox}
\RequirePackage[centering,a4paper,body={16cm,22cm}]{geometry} %设置版面
\RequirePackage{geometry} %设置版面
\RequirePackage{fancyhdr}
\RequirePackage{pageslts}
\RequirePackage[titles]{tocloft}
Expand Down Expand Up @@ -118,8 +120,7 @@
\RequirePackage{calc}
\RequirePackage{algorithm, algorithmicx, algpseudocode}
\RequirePackage{siunitx}
\RequirePackage{xstring}

\RequirePackage{xparse}
\RequirePackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}

Expand All @@ -140,11 +141,20 @@
}
}
\RequirePackage{hyperref}
\pdfstringdefDisableCommands{%
\let\\\@empty%
\let\sjtu@title@handler\@empty}

%==========
% Segment 2. Define general-purpose LaTeX commands.
%==========

\geometry{
paper = a4paper,
top = 3.5cm,
bottom = 4.0cm,
left = 3.3cm,
right = 2.8cm,
}
\setcounter{secnumdepth}{4} % 章节编号深度 (part 对应 -1)
\setcounter{tocdepth}{2} % 目录深度 (part 对应 -1)
\renewcommand{\cftchapfont}{\bfseries\heiti} % 目录章节标题(黑体加粗)
Expand All @@ -155,6 +165,9 @@
% A new column type
\newcolumntype{d}[1]{D{.}{.}{#1}}% or D{.}{,}{#1} or D{.}{\cdot}{#1}

% E-mail
\newcommand{\email}[1]{\href{mailto:#1}{\texttt{#1}}}

% upper math letter
\newcommand{\me}{\mathrm{e}}
\newcommand{\mi}{\mathrm{i}}
Expand Down Expand Up @@ -402,47 +415,55 @@
\fi
}

\ExplSyntaxOn
\tl_new:N \l__sjtu_tmp_tl
\seq_new:N \l__sjtu_tmp_seq
\NewDocumentCommand{ \sjtu@covertitle@handler } { O { \\ } m }
{
\seq_set_split:Nnn \l__sjtu_tmp_seq { #1 } { #2 }
\seq_pop_right:NN \l__sjtu_tmp_seq \l__sjtu_tmp_tl
\seq_map_inline:Nn \l__sjtu_tmp_seq { \underline { \makebox [ 300pt ] { ##1 } } \\ }
\underline { \makebox [ 300pt ] { \l__sjtu_tmp_tl } }
}
\NewDocumentCommand{ \sjtu@title@handler } { O { \\ } m }
{
\seq_set_split:Nnn \l__sjtu_tmp_seq { #1 } { #2 }
\seq_map_inline:Nn \l__sjtu_tmp_seq { ##1 }
}
\ExplSyntaxOff

% “绘制”中文标题页
\newcommand\longtextsplitchar{\null\null}
\newcommand\makechinesetitle{%
\cleardoublepage
\thispagestyle{empty}
\begin{center}
{\songti\zihao{-3}\sjtu@label@statement}
{\zihao{-3}\sjtu@label@statement}
\vskip\stretch{1}
{\heiti\zihao{3}\sjtu@value@chinesetitle}
\vskip\stretch{1}
{\fangsong\zihao{4}}
\def\tabcolsep{1pt}
\def\arraystretch{1.5}
\begin{tabular}{>{\begin{CJKfilltwosides}{4\ccwd}\heiti}r<{\end{CJKfilltwosides}}l}
\begin{tabular}{>{\begin{CJKfilltwosides}{4\ccwd}\heiti}r<{\end{CJKfilltwosides}}@{:}c}
\ifsjtu@review
\sjtu@label@author & \underline{\makebox[150pt]{}} \\
\sjtu@label@studentnumber & \underline{\makebox[150pt]{}} \\
\sjtu@label@advisor & \underline{\makebox[150pt]{}} \\
\sjtu@label@author & \\ \cline{2-2}
\sjtu@label@studentnumber & \makebox[150pt]{} \\ \cline{2-2}
\sjtu@label@advisor & \\ \cline{2-2}
\ifx\sjtu@value@coadvisor\undefined\else
\sjtu@label@coadvisor & \underline{\makebox[150pt]{}} \\
\sjtu@label@coadvisor & \\ \cline{2-2}
\fi
\else
\sjtu@label@author & \underline{\makebox[150pt]{\sjtu@value@author}} \\
\sjtu@label@studentnumber & \underline{\makebox[150pt]{\sjtu@value@studentnumber}} \\
\sjtu@label@advisor & \underline{\makebox[150pt]{\sjtu@value@advisor}} \\
\sjtu@label@author & \sjtu@value@author \\ \cline{2-2}
\sjtu@label@studentnumber & \makebox[150pt]{\sjtu@value@studentnumber} \\ \cline{2-2}
\sjtu@label@advisor & \sjtu@value@advisor \\ \cline{2-2}
\ifx\sjtu@value@coadvisor\undefined\else
\sjtu@label@coadvisor & \underline{\makebox[150pt]{\sjtu@value@coadvisor}} \\
\sjtu@label@coadvisor & \sjtu@value@coadvisor \\ \cline{2-2}
\fi
\fi
% 专业名称最长支持两行,issue https://github.com/sjtug/SJTUThesis/issues/375
\saveexpandmode% 参考https://tex.stackexchange.com/questions/178610/replacing-substrings-by-linebreaks
\expandarg%只展开"\null\null"不展开其他变量,参考 http://tug.ctan.org/macros/generic/xstring/xstring_doc_en.pdf
\IfSubStr{\sjtu@value@major}{\longtextsplitchar}
{\sjtu@label@major & \underline{\makebox[150pt]{\StrBefore{\sjtu@value@major}{\longtextsplitchar}}} \\
& \underline{\makebox[150pt]{\StrBehind{\sjtu@value@major}{\longtextsplitchar}}} \\}
{\sjtu@label@major & \underline{\makebox[150pt]{\sjtu@value@major}} \\}
\sjtu@label@defenddate & \underline{\makebox[150pt]{\sjtu@value@defenddate}}
\restoreexpandmode
\sjtu@label@major & \sjtu@value@major \\ \cline{2-2}
\sjtu@label@defenddate & \sjtu@value@defenddate \\ \cline{2-2}
\end{tabular}
\vskip 30pt
\end{center}
\vskip \stretch{0.5}
\cleardoublepage
}

Expand Down Expand Up @@ -484,63 +505,43 @@
\cleardoublepage
\thispagestyle{empty}
\begin{center}
\kaishu
\vspace*{20pt} \vskip 7pt
\includegraphics{sjtulogo}
\vskip 30pt
{\fontsize{32}{32}\kaishu\sjtu@value@chinesedegree\sjtu@label@thesis}
{\fontsize{32}{32}\sjtu@value@chinesedegree\sjtu@label@thesis}
\vskip 15pt
{\zihao{-2}\MakeUppercase{Thesis of \sjtu@value@englishdegree}}
\vskip 15pt
\includegraphics{sjtubadge}
\vskip \stretch{2}
{\kaishu\zihao{2}
\begin{tabular}{r@{:}l}
% 标题名称最长支持两行
\saveexpandmode
\expandarg
\IfSubStr{\sjtu@value@chinesetitle}{\longtextsplitchar}
{
\sjtu@label@title & {\zihao{-2}\underline{\makebox[360pt]{\StrBefore{\sjtu@value@chinesetitle}{\longtextsplitchar}}}}
\end{tabular}
\begin{tabular}{r@{\quad}l}
~~~~~~~~~~~~~~~~~ & {\zihao{-2}\underline{\makebox[360pt]{\StrBehind{\sjtu@value@chinesetitle}{\longtextsplitchar}}}}
}
{\sjtu@label@title &
{\zihao{-2}\underline{\begin{minipage}{360pt}\centering\sjtu@value@chinesetitle\end{minipage}}}}
\restoreexpandmode
\end{tabular}}
{
\zihao{2}
\begin{tabular}{r@{:}l}
\sjtu@label@title & {\zihao{-2}\parbox[t]{320pt}{\sjtu@value@chinesecovertitle}}
\end{tabular}
}
\vskip \stretch{1}
{\kaishu\zihao{3}
\def\arraystretch{1.1}
\begin{tabular}{>{\begin{CJKfilltwosides}{4\ccwd}}r<{\end{CJKfilltwosides}}@{:}l}
\ifsjtu@review
\sjtu@label@author & \underline{\makebox[180pt]{}} \\
\sjtu@label@studentnumber & \underline{\makebox[180pt]{}} \\
\else
\sjtu@label@author & \underline{\makebox[180pt]{\sjtu@value@author}} \\
\sjtu@label@studentnumber & \underline{\makebox[180pt]{\sjtu@value@studentnumber}} \\
\fi
% 专业名称最长支持两行
\saveexpandmode
\expandarg
\IfSubStr{\sjtu@value@major}{\longtextsplitchar}
{
\sjtu@label@major & \underline{\makebox[180pt]{\StrBefore{\sjtu@value@major}{\longtextsplitchar}}}
\end{tabular}
\begin{tabular}{>{\begin{CJKfilltwosides}{4\ccwd}}r<{\end{CJKfilltwosides}}@{\quad}l}
~~~~ & \underline{\makebox[180pt]{\StrBehind{\sjtu@value@major}{\longtextsplitchar}}}
\end{tabular}
\begin{tabular}{>{\begin{CJKfilltwosides}{4\ccwd}}r<{\end{CJKfilltwosides}}@{:}l}
}
{\sjtu@label@major & \underline{\makebox[180pt]{\sjtu@value@major}} \\}
\restoreexpandmode
\ifsjtu@review
\sjtu@label@advisor & \underline{\makebox[180pt]{}} \\
\else
\sjtu@label@advisor & \underline{\makebox[180pt]{\sjtu@value@advisor}} \\
\fi
\sjtu@label@institute & \underline{\makebox[180pt]{\sjtu@value@institute}}
\end{tabular}}
{
\zihao{3}
\def\arraystretch{1.1}
\begin{tabular}{>{\begin{CJKfilltwosides}{4\ccwd}}r<{\end{CJKfilltwosides}}@{:}c}
\ifsjtu@review
\sjtu@label@author & \\ \cline{2-2}
\sjtu@label@studentnumber & \makebox[180pt]{} \\ \cline{2-2}
\else
\sjtu@label@author & \sjtu@value@author \\ \cline{2-2}
\sjtu@label@studentnumber & \makebox[180pt]{\sjtu@value@studentnumber} \\ \cline{2-2}
\fi
\sjtu@label@major & \sjtu@value@major \\ \cline{2-2}
\ifsjtu@review
\sjtu@label@advisor & \\ \cline{2-2}
\else
\sjtu@label@advisor & \sjtu@value@advisor \\ \cline{2-2}
\fi
\sjtu@label@institute & \sjtu@value@institute \\ \cline{2-2}
\end{tabular}
}
\end{center}
\cleardoublepage
}
Expand Down

0 comments on commit 5fd1516

Please sign in to comment.