From 55887ffc2a4f9ef4014f45f9d6f5aae7b98def91 Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Sun, 12 Apr 2015 21:08:04 +0800 Subject: [PATCH 01/11] Support latexmk in Makefile as a new compilation mode --- Makefile | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9ade7625..2283f011 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,9 @@ # Makefile for ThuThesis -# Compiling method: xelatex/pdflatex/dvipdfmx +# Compiling method: xelatex/pdflatex/dvipdfmx/latexmk METHOD = xelatex +# Set opts for latexmk if you use it +LATEXMKOPTS = -xelatex # Basename of thesis THESISMAIN = main # Basename of shuji @@ -65,6 +67,11 @@ $(PACKAGE).pdf: $(CLSFILES) pdflatex $(PACKAGE).dtx pdflatex $(PACKAGE).dtx +else ifeq ($(METHOD),latexmk) + ln -s $(PACKAGE).dtx $(PACKAGE).tex + latexmk ${LATEXMKOPTS} $(PACKAGE) + rm $(PACKAGE).tex + else $(PACKAGE).dvi: $(CLSFILES) @@ -106,6 +113,9 @@ $(THESISMAIN).bbl: $(BIBFILE) -bibtex $(THESISMAIN) $(RM) $(THESISMAIN).pdf +else ifeq ($(METHOD),latexmk) + latexmk ${LATEXMKOPTS} $(THESISMAIN) + else $(THESISMAIN).pdf: $(THESISMAIN).dvi @@ -135,6 +145,9 @@ else ifeq ($(METHOD),pdflatex) $(SHUJIMAIN).pdf: $(CLSFILES) $(SHUJICONTENTS) pdflatex $(SHUJIMAIN).tex +else ifeq ($(METHOD),latexmk) + latexmk ${LATEXMKOPTS} $(SHUJIMAIN) + else $(SHUJIMAIN).dvi: $(CLSFILES) $(SHUJICONTENTS) From 95f4b52648347434f286a0b137393fc72862240c Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Sun, 12 Apr 2015 21:25:11 +0800 Subject: [PATCH 02/11] ...Fix a few bugs in Makefile --- Makefile | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 2283f011..dbb15067 100644 --- a/Makefile +++ b/Makefile @@ -68,9 +68,9 @@ $(PACKAGE).pdf: $(CLSFILES) pdflatex $(PACKAGE).dtx else ifeq ($(METHOD),latexmk) - ln -s $(PACKAGE).dtx $(PACKAGE).tex - latexmk ${LATEXMKOPTS} $(PACKAGE) - rm $(PACKAGE).tex + +$(PACKAGE).pdf: $(CLSFILES) + latexmk ${LATEXMKOPTS} $(PACKAGE).dtx else @@ -114,6 +114,8 @@ $(THESISMAIN).bbl: $(BIBFILE) $(RM) $(THESISMAIN).pdf else ifeq ($(METHOD),latexmk) + +$(THESISMAIN).pdf: $(CLSFILES) latexmk ${LATEXMKOPTS} $(THESISMAIN) else @@ -146,6 +148,8 @@ $(SHUJIMAIN).pdf: $(CLSFILES) $(SHUJICONTENTS) pdflatex $(SHUJIMAIN).tex else ifeq ($(METHOD),latexmk) + +$(SHUJIMAIN).pdf: $(CLSFILES) latexmk ${LATEXMKOPTS} $(SHUJIMAIN) else From dedf040b657afd770c5c8740a83421bb4f172f3c Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Sun, 12 Apr 2015 21:27:11 +0800 Subject: [PATCH 03/11] Fix README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ef45b76..62a89510 100644 --- a/README.md +++ b/README.md @@ -55,9 +55,9 @@ ThuThesis为 Tsinghua University Thesis LaTeX Templa * METHOD=xelatex 表示使用 xelatex 引擎编译生成 pdf; * METHOD=pdflatex 表示使用 pdflatex 引擎编译生成 pdf; * METHOD=dvipdfmx 表示使用 texi2dvi -> dvipdfmx 的方式生成 pdf。 + * METHOD=latexmk 表示使用 latexmk 的方式生成 pdf。 * **TEXI2DVI**: `texi2dvi` 实用工具的文件名,该工具的作用是自动重复运行latex 若 干遍,直至所有交叉引用都正确为止。在有的发行版中该工具的文件名不叫 `texi2dvi`,譬如 CTeX 下的这个工具就叫 `texify`。遇到这种情况可以在命令 行通过 `TEXI2DVI=texify` 命令指定使用其它的 `texi2dvi` 工具。 - From 2604f4a1fe9c1007a70cdf5368ddcb9b0cb678f1 Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Fri, 17 Apr 2015 19:44:56 +0800 Subject: [PATCH 04/11] Use latexmk as default generation method --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index dbb15067..ddf3627a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # Makefile for ThuThesis # Compiling method: xelatex/pdflatex/dvipdfmx/latexmk -METHOD = xelatex +METHOD = latexmk # Set opts for latexmk if you use it LATEXMKOPTS = -xelatex # Basename of thesis From e122a79a76c3d4379a5cb76fd48b57dfe725ecba Mon Sep 17 00:00:00 2001 From: Yi Yang Date: Fri, 17 Apr 2015 19:45:11 +0800 Subject: [PATCH 05/11] Update documentation in thuthesis.dtx --- thuthesis.dtx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/thuthesis.dtx b/thuthesis.dtx index 6d1523f6..af1eef0a 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -292,6 +292,15 @@ % $ xelatex thuthesis.dtx % 生成说明文档 thuthesis.pdf % \end{shell} % +% \subsubsection{latexmk} +% \label{sec:latexmk} +% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具 +% 链来进行生成。从2015年开始, \thuthesis{} 改为默认用 \texttt{latexmk} 调用 +% \texttt{xelatex} 生成。下面来看用 \texttt{latexmk} 进行生成的命令: +% \begin{shell} +% # 一句话就够了! +% $ latexmk -xelatex main +% \end{shell} % % \subsubsection{xelatex} % \label{sec:xelatex} From 8dff25a85f52f952303e35cdcb494c2a26e8083a Mon Sep 17 00:00:00 2001 From: Alick Zhao Date: Fri, 1 May 2015 10:44:24 +0800 Subject: [PATCH 06/11] more doc updates on defaulting to latexmk --- Makefile | 2 +- README.md | 4 ++-- thuthesis.dtx | 27 ++++++++++++++------------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index ddf3627a..5d87c9d1 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # Makefile for ThuThesis -# Compiling method: xelatex/pdflatex/dvipdfmx/latexmk +# Compiling method: latexmk/xelatex/pdflatex/dvipdfmx METHOD = latexmk # Set opts for latexmk if you use it LATEXMKOPTS = -xelatex diff --git a/README.md b/README.md index 62a89510..538b6ceb 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ThuThesis为 Tsinghua University Thesis LaTeX Templa # Makefile的用法 make [{all|thesis|shuji|doc|clean|distclean}] \ - [METHOD={xelatex|pdflatex|dvipdfmx}] \ + [METHOD={latexmk|xelatex|pdflatex|dvipdfmx}] \ [TEXI2DVI=] ## 目标 @@ -52,10 +52,10 @@ ThuThesis为 Tsinghua University Thesis LaTeX Templa ## 参数 * **METHOD**:指定生成 pdf 的方式,缺省采用 xelatex。 + * METHOD=latexmk 表示使用 latexmk 的方式生成 pdf。 * METHOD=xelatex 表示使用 xelatex 引擎编译生成 pdf; * METHOD=pdflatex 表示使用 pdflatex 引擎编译生成 pdf; * METHOD=dvipdfmx 表示使用 texi2dvi -> dvipdfmx 的方式生成 pdf。 - * METHOD=latexmk 表示使用 latexmk 的方式生成 pdf。 * **TEXI2DVI**: `texi2dvi` 实用工具的文件名,该工具的作用是自动重复运行latex 若 干遍,直至所有交叉引用都正确为止。在有的发行版中该工具的文件名不叫 `texi2dvi`,譬如 CTeX 下的这个工具就叫 `texify`。遇到这种情况可以在命令 diff --git a/thuthesis.dtx b/thuthesis.dtx index af1eef0a..3055646d 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -292,16 +292,6 @@ % $ xelatex thuthesis.dtx % 生成说明文档 thuthesis.pdf % \end{shell} % -% \subsubsection{latexmk} -% \label{sec:latexmk} -% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具 -% 链来进行生成。从2015年开始, \thuthesis{} 改为默认用 \texttt{latexmk} 调用 -% \texttt{xelatex} 生成。下面来看用 \texttt{latexmk} 进行生成的命令: -% \begin{shell} -% # 一句话就够了! -% $ latexmk -xelatex main -% \end{shell} -% % \subsubsection{xelatex} % \label{sec:xelatex} % 很多用户对 \LaTeX{} 命令执行的次数不太清楚,一个基本的原则是多次运行 \LaTeX{}命 @@ -348,12 +338,21 @@ % 成 PDF。不过 PDF\LaTeX\ 增加了对 png,jpg 等标量图形的支持,比较方便。 % TeX Live 自从 2010 版本起自动调用 epstopdf 将 EPS 图形转化为 PDF。 % +% \subsubsection{latexmk} +% \label{sec:latexmk} +% \texttt{latexmk} 命令支持全自动生成 \LaTeX{} 编写的文档,并且支持使用不同的工具 +% 链来进行生成,它会自动运行多次工具直到交叉引用都被解决。下面给出了一个用 +% \texttt{latexmk} 调用 \texttt{xelatex} 生成最终文档的示例: +% \begin{shell} +% # 一句话就够了! +% $ latexmk -xelatex main +% \end{shell} +% % \subsubsection{自动化过程} % \label{sec:automation} % 上面的例子只是给出一般情况下的使用方法。虽然命令很简单,但是每次都输入的话还是 -% 非常罗嗦的,所以 \thuthesis{} 还提供了一些自动处理的文件。 +% 非常罗嗦的,所以 \thuthesis{} 还提供了一个简单的 \file{Makefile}: % -% 我们提供了一个简单的 \file{Makefile}: % \begin{shell} % $ make clean % $ make cls # 生成 thuthesis.cls 和 thuthesis.cfg @@ -362,7 +361,9 @@ % $ make shuji # 生成书脊 shuji.pdf % \end{shell} % -% \file{Makefile} 默认采用 Xe\LaTeX\ 编译,可以根据自己的需要修 +% \thuthesis{} 的 Makefile 默认用 \texttt{latexmk} 调用 +% \texttt{xelatex} 编译,此外还支持采用 \texttt{xelatex}、\texttt{pdflatex} 和 +% \texttt{dvipdfmx} 方式编译,如有需要可以修 % 改 \file{Makefile} 开头的参数设置或通过命令行传递参数(请参看 \file{README.md})。 % % From a0df4580eeecd11dc3bac499ea71de6d57fc04c4 Mon Sep 17 00:00:00 2001 From: Alick Zhao Date: Fri, 1 May 2015 15:41:24 +0800 Subject: [PATCH 07/11] add latexmkrc to handle index and glossary right --- latexmkrc | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 latexmkrc diff --git a/latexmkrc b/latexmkrc new file mode 100644 index 00000000..1c548582 --- /dev/null +++ b/latexmkrc @@ -0,0 +1,6 @@ +# vim: set ft=perl: +$makeindex = 'makeindex -s gind.ist %O -o %D %S'; +add_cus_dep('glo', 'gls', 0, 'makeglo2gls'); +sub makeglo2gls { + system("makeindex -s gglo.ist -o \"$_[0].gls\" \"$_[0].glo\""); +} From 015fcc1d73537875f3dfa93604967f3354d42896 Mon Sep 17 00:00:00 2001 From: Alick Zhao Date: Fri, 1 May 2015 15:41:58 +0800 Subject: [PATCH 08/11] Makefile: clean also removes latexmk help files --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 5d87c9d1..e9ae4141 100644 --- a/Makefile +++ b/Makefile @@ -185,6 +185,8 @@ clean: *.lof \ *.lot \ *.loe \ + *.fls \ + *.fdb_latexmk \ data$(SLASH)*.aux \ dtx-style.sty From f4ebf0ac95e133415a500018bb146cc481af7074 Mon Sep 17 00:00:00 2001 From: Alick Zhao Date: Fri, 1 May 2015 15:45:33 +0800 Subject: [PATCH 09/11] Makefile: use $() consistently --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index e9ae4141..7a1ce530 100644 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ $(PACKAGE).pdf: $(CLSFILES) else ifeq ($(METHOD),latexmk) $(PACKAGE).pdf: $(CLSFILES) - latexmk ${LATEXMKOPTS} $(PACKAGE).dtx + latexmk $(LATEXMKOPTS) $(PACKAGE).dtx else @@ -116,7 +116,7 @@ $(THESISMAIN).bbl: $(BIBFILE) else ifeq ($(METHOD),latexmk) $(THESISMAIN).pdf: $(CLSFILES) - latexmk ${LATEXMKOPTS} $(THESISMAIN) + latexmk $(LATEXMKOPTS) $(THESISMAIN) else @@ -150,7 +150,7 @@ $(SHUJIMAIN).pdf: $(CLSFILES) $(SHUJICONTENTS) else ifeq ($(METHOD),latexmk) $(SHUJIMAIN).pdf: $(CLSFILES) - latexmk ${LATEXMKOPTS} $(SHUJIMAIN) + latexmk $(LATEXMKOPTS) $(SHUJIMAIN) else From 35cf1583f321950437a03069d8bc965226f40921 Mon Sep 17 00:00:00 2001 From: Alick Zhao Date: Fri, 1 May 2015 15:54:36 +0800 Subject: [PATCH 10/11] dtx: mention latexmkrc --- thuthesis.dtx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/thuthesis.dtx b/thuthesis.dtx index 3055646d..2e576df9 100644 --- a/thuthesis.dtx +++ b/thuthesis.dtx @@ -231,6 +231,7 @@ % figures/ & 示例文档图片路径\\ % thutils.sty & 为示例文档加载其它宏包\\\hline % Makefile & self-explanation\\ +% latexmkrc & latexmk 配置文件 \\ % zhfonts.py & 生成中文字体配置文件\\ % README.md & self-explanation\\ % \textbf{thuthesis.pdf} & 用户手册(本文档)\\\hline @@ -364,8 +365,8 @@ % \thuthesis{} 的 Makefile 默认用 \texttt{latexmk} 调用 % \texttt{xelatex} 编译,此外还支持采用 \texttt{xelatex}、\texttt{pdflatex} 和 % \texttt{dvipdfmx} 方式编译,如有需要可以修 -% 改 \file{Makefile} 开头的参数设置或通过命令行传递参数(请参看 \file{README.md})。 -% +% 改 \file{Makefile} 开头的参数设置或通过命令行传递参数(请参看 \file{README.md}), +% 进一步还可以修改 \file{latexmkrc} 进行定制。 % % \subsection{升级} % \label{sec:updgrade} From 2ab857e7a69e71da25d331078b665a3720979af0 Mon Sep 17 00:00:00 2001 From: Alick Zhao Date: Sat, 2 May 2015 19:15:37 +0800 Subject: [PATCH 11/11] use latexmk to clean up, add `cleanall` target --- Makefile | 38 +++++++++----------------------------- README.md | 3 ++- latexmkrc | 1 + 3 files changed, 12 insertions(+), 30 deletions(-) diff --git a/Makefile b/Makefile index 7a1ce530..7911f80c 100644 --- a/Makefile +++ b/Makefile @@ -163,36 +163,16 @@ $(SHUJIMAIN).pdf: $(SHUJIMAIN).dvi endif -clean: - -@$(RM) \ - *~ \ - *.aux \ - *.bak \ - *.bbl \ - *.blg \ - *.dvi \ - *.glo \ - *.gls \ - *.idx \ - *.ilg \ - *.ind \ - *.ist \ - *.log \ - *.out \ - *.ps \ - *.thm \ - *.toc \ - *.lof \ - *.lot \ - *.loe \ - *.fls \ - *.fdb_latexmk \ - data$(SLASH)*.aux \ - dtx-style.sty - -distclean: clean +clean: + latexmk -c $(PACKAGE).dtx $(THESISMAIN) $(SHUJIMAIN) + -@$(RM) $(PACKAGE).dvi $(THESISMAIN).dvi $(SHUJIMAIN).dvi + -@$(RM) *~ + +cleanall: clean + -@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf $(SHUJIMAIN).pdf + +distclean: cleanall -@$(RM) $(CLSFILES) - -@$(RM) $(PACKAGE).pdf $(THESISMAIN).pdf $(SHUJI).pdf -@$(RM) -r dist dist: diff --git a/README.md b/README.md index 538b6ceb..ee7b23f5 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,8 @@ ThuThesis为 Tsinghua University Thesis LaTeX Templa * `make shuji` 生成书脊 shuji.pdf; * `make doc` 生成使用说明书 thuthesis.pdf; * `make clean` 删除 pdf 外的所有中间文件和目标文件; -* `make distclean` 表示清除包括 pdf 在内的所有中间文件和目标文件。 +* `make cleanall` 删除包括 pdf 在内的所有中间文件和目标文件; +* `make distclean` 表示清除包括 cls 在内的所有中间文件和目标文件。 ## 参数 * **METHOD**:指定生成 pdf 的方式,缺省采用 xelatex。 diff --git a/latexmkrc b/latexmkrc index 1c548582..27af65da 100644 --- a/latexmkrc +++ b/latexmkrc @@ -1,4 +1,5 @@ # vim: set ft=perl: +$clean_ext = 'thm glo gls bbl'; $makeindex = 'makeindex -s gind.ist %O -o %D %S'; add_cus_dep('glo', 'gls', 0, 'makeglo2gls'); sub makeglo2gls {