-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmakefile.sh
170 lines (156 loc) · 6.99 KB
/
makefile.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/bin/bash
# 基本设置
File_Name="main"
TeX_Name="xelatex"
Bib_Name="biber"
# 计算开始时间
Start_Time=$(date +"%s")
#==========================================================================
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 清除辅助文件 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
# 清除辅助文件
rm -r $File_Name.pdf $File_Name.synctex *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk
#==========================================================================
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXX 开始一次 $TeX_Name 编译 XXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
# 编译 Tex 文件 nonstopmode batchmode 批处理运行模式,无日志显示,利于提速
$TeX_Name -no-pdf -shell-escape -file-line-error -halt-on-error -interaction=batchmode --synctex=-1 $File_Name.tex
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 开始文献编译 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
# 编译参考文献
$Bib_Name $File_Name
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 开始目录编译 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
Catalogs="没有插入任何索引"
# 编译目录和符号说明索引
# 判断是否存在 .gls 文件,判断是否采用 glossaries 宏包生成符号说明表
if [[ -f "$File_Name.glo" ]]; then
# 执行 makeindex 命令
makeindex -s $File_Name.ist -o $File_Name.gls $File_Name.glo
Catalogs="采用 glossaries 宏包生成符号说明表"
# 判断是否存在 .nls 文件,判断是否采用 nomencl 宏包生成符号说明表
elif [[ -f "$File_Name.nlo" ]]; then
# 执行 makeindex 命令
makeindex -s nomencl.ist -o $File_Name.nls $File_Name.nlo
Catalogs="采用 nomencl 宏包生成符号说明表"
# 判断是否存在 .idx 文件,判断是否需要生成索引
elif [[ -f "$File_Name.xdv" ]]; then
# 执行 makeindex 命令
makeindex "$File_Name.xdv"
Catalogs="有目录 没符号说明表"
else
# 打印该文章没有插入任何索引
Catalogs="没有插入任何索引"
fi
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXX 开始二次 $TeX_Name 编译 XXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
# 编译 Tex 文件
$TeX_Name -no-pdf -shell-escape -file-line-error -halt-on-error -interaction=batchmode --synctex=-1 $File_Name.tex
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXX 开始三次 $TeX_Name 编译 XXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
# 编译 Tex 文件
$TeX_Name -shell-escape -file-line-error -halt-on-error -interaction=batchmode --synctex=-1 $File_Name.tex
echo ""
echo ""
echo ================================================================================
echo ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 完成所有编译 ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
echo ================================================================================
echo ""
echo ""
#==========================================================================
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 清除辅助文件 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo ""
echo ""
# 清除辅助文件
rm -r *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk
#==========================================================================
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 清除已有结果文件 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
# 处理上次生成的结果文件
Build_Path="./Build/"
# 检查是否存在 ./Build/ 文件夹
if [[ -d "$Build_Path" ]]; then
# 存在 ./Build/ 文件夹,则删除
rm -rf "$Build_Path"
echo "删除上次生成的结果文件"
mkdir $Build_Path
echo "创建 Build 文件夹"
else
# 不存在 ./Build/ 文件夹,则创建
mkdir $Build_Path
echo "创建 Build 文件夹"
fi
echo ""
echo ""
#==========================================================================
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 移动生成文件 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
# 移动结果文件到指定文件夹
if [[ -f "$File_Name.pdf" ]]; then
mv "$File_Name.pdf" $Build_Path
mv "$File_Name.synctex" $Build_Path
echo "移动结果文件到 Build 文件夹中"
else
echo "未生成结果文件"
fi
echo ""
echo ""
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 目录生成情况 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
echo $Catalogs
echo ""
echo ""
#==========================================================================
echo ================================================================================
echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 统计编译时长 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
echo ================================================================================
# 计算结束时间
End_Time=$(date +"%s")
# 计算运行时长
Run_Time=$(($End_Time - $Start_Time))
Hours=$((Run_Time / 3600))
Minutes=$(((Run_Time % 3600)/60))
Seconds=$((Run_Time % 60))
echo "编译时长为:$Hours 小时 $Minutes 分 $Seconds 秒 (($Run_Time)s total)"
echo ""
# 延时关闭 5s
# sleep 5