http://www.live-share.com/files/282550/xltgo.rar.html
下载后解压到Tex系统的bin目录或windows的system32目录中。
用法:xltgo myfile.tex
或者: xltgo myfile.tex -showpdf -encrypt
(-showpdf:编译完后调用系统默认的PDF阅读器自动显示PDF;
-encrypt:加密生成的PDF)
源码如下:
1
#
-*- coding: gbk -*-
2 # 执行两遍 xelatex -halt-on-error sys.argv[1], 然后显示pdf
3 import os,sys,WConio
4
5 helpmsg = """ usage: xltgo texfile [options]
6 options:
7 -showpdf: show pdf after compiled
8 -encrypt: encrtypt pdf
9 e.g: xltgo youfile
10 xltgo youfile.tex -showpdf -encrypt """
11
12 def printgoodnews(message):
13 global attr
14 WConio.textcolor(WConio.GREEN)
15 total_chars = 80
16 ll = len(message)
17 start = (total_chars - ll) / 2
18 print " - " * start + message + " - " * ( 80 - start - ll)
19 WConio.textcolor(attr)
20
21 def printbadnews(message):
22 global attr
23 WConio.textcolor(WConio.GREEN)
24 total_chars = 80
25 ll = len(message)
26 start = (total_chars - ll) / 2
27 print " - " * start + message + " - " * ( 80 - start - ll)
28 WConio.textcolor(attr)
29
30 def cleartmpfiles(file):
31 dir = os.path.dirname(file)
32 filename = os.path.basename(file)
33 if (filename[ - 4 :]).upper() == ' .TEX ' :
34 filename = filename[: - 4 ]
35 tmpexts = [ ' .aux ' , ' .log ' , ' .nav ' , ' .out ' , ' .snm ' , ' .toc ' , ' vrb ' , ' .xdv ' ]
36
37 for ext in tmpexts:
38 tmpfile = os.path.join(dir,filename) + ext
39 # print tmpfile
40 if os.path.exists(tmpfile):
41 print " Deleting %s " % tmpfile
42 os.unlink(tmpfile)
43
44 if __name__ == ' __main__ ' :
45 attr = WConio.gettextinfo()[ 4 ]
46 if len(sys.argv) == 1 :
47 print helpmsg
48 if len(sys.argv) > 1 :
49 options = [option.upper() for option in sys.argv[ 1 :]]
50
51 exist = False
52 out_dir = os.path.dirname(os.path.abspath(sys.argv[ 1 ]))
53 filename = os.path.abspath(sys.argv[ 1 ])
54 filename_noext = filename
55 if os.path.abspath(sys.argv[ 1 ])[ - 4 :].upper() == ' .TEX ' :
56 filename_noext = sys.argv[ 1 ][: - 4 ]
57 if os.path.abspath(sys.argv[ 1 ])[ - 4 :].upper() == ' .TEX ' :
58 exist = os.path.exists(filename)
59 else :
60 exist = os.path.exists(filename_noext + " .tex " )
61
62 if exist:
63 printgoodnews( ' xelatex -halt-on-error -no-pdf -output-directory="%s" "%s" ' % (out_dir,filename))
64 i =- 1
65 j =- 1
66 k =- 1
67 i = os.system( ' xelatex -halt-on-error -no-pdf -output-directory="%s" "%s" ' % (out_dir, filename))
68 if i == 0:
69 printgoodnews( " The xelatex 1st run finished! " )
70 j = os.system( ' xelatex -halt-on-error -no-pdf -output-directory="%s" "%s" ' % (out_dir, filename))
71 if j == 0:
72 printgoodnews( " The xelatex 2nd run finished! " )
73
74 if ' -ENCRYPT ' in options:
75 k = os.system( ' xdvipdfmx -r 600 -E -V 5 -S -K 128 -P 0x0804 -o "%s.pdf" "%s.xdv" ' % (filename_noext,filename_noext))
76 else :
77 k = os.system( ' xdvipdfmx -r 600 -E -V 5 -o "%s.pdf" "%s.xdv" ' % (filename_noext,filename_noext))
78
79 if k == 0:
80 printgoodnews( " xdvipdfmx finished! " )
81 if ' -SHOWPDF ' in options:
82 k = os.startfile(filename_noext + " .pdf " )
83 printgoodnews( " Command 'showpdf' was executed! " )
84 cleartmpfiles(sys.argv[ 1 ])
85 printgoodnews( " All finished! " )
86 sys.exit(0)
87 else :
88 printbadnews( " Error on xdvipdfmx! " )
89 sys.exit( - 1 )
90 else :
91 printbadnews( " Error on the 2rd run ! " )
92 cleartmpfiles(sys.argv[ 1 ])
93 sys.exit( - 1 )
94 else :
95 printbadnews( " Error on the 1st run ! " )
96 cleartmpfiles(sys.argv[ 1 ])
97 sys.exit( - 1 )
98 else :
99 printbadnews( " Error: where is your tex file %s?' " % sys.argv[ 1 ])
100 sys.exit( - 1 )
101
102
2 # 执行两遍 xelatex -halt-on-error sys.argv[1], 然后显示pdf
3 import os,sys,WConio
4
5 helpmsg = """ usage: xltgo texfile [options]
6 options:
7 -showpdf: show pdf after compiled
8 -encrypt: encrtypt pdf
9 e.g: xltgo youfile
10 xltgo youfile.tex -showpdf -encrypt """
11
12 def printgoodnews(message):
13 global attr
14 WConio.textcolor(WConio.GREEN)
15 total_chars = 80
16 ll = len(message)
17 start = (total_chars - ll) / 2
18 print " - " * start + message + " - " * ( 80 - start - ll)
19 WConio.textcolor(attr)
20
21 def printbadnews(message):
22 global attr
23 WConio.textcolor(WConio.GREEN)
24 total_chars = 80
25 ll = len(message)
26 start = (total_chars - ll) / 2
27 print " - " * start + message + " - " * ( 80 - start - ll)
28 WConio.textcolor(attr)
29
30 def cleartmpfiles(file):
31 dir = os.path.dirname(file)
32 filename = os.path.basename(file)
33 if (filename[ - 4 :]).upper() == ' .TEX ' :
34 filename = filename[: - 4 ]
35 tmpexts = [ ' .aux ' , ' .log ' , ' .nav ' , ' .out ' , ' .snm ' , ' .toc ' , ' vrb ' , ' .xdv ' ]
36
37 for ext in tmpexts:
38 tmpfile = os.path.join(dir,filename) + ext
39 # print tmpfile
40 if os.path.exists(tmpfile):
41 print " Deleting %s " % tmpfile
42 os.unlink(tmpfile)
43
44 if __name__ == ' __main__ ' :
45 attr = WConio.gettextinfo()[ 4 ]
46 if len(sys.argv) == 1 :
47 print helpmsg
48 if len(sys.argv) > 1 :
49 options = [option.upper() for option in sys.argv[ 1 :]]
50
51 exist = False
52 out_dir = os.path.dirname(os.path.abspath(sys.argv[ 1 ]))
53 filename = os.path.abspath(sys.argv[ 1 ])
54 filename_noext = filename
55 if os.path.abspath(sys.argv[ 1 ])[ - 4 :].upper() == ' .TEX ' :
56 filename_noext = sys.argv[ 1 ][: - 4 ]
57 if os.path.abspath(sys.argv[ 1 ])[ - 4 :].upper() == ' .TEX ' :
58 exist = os.path.exists(filename)
59 else :
60 exist = os.path.exists(filename_noext + " .tex " )
61
62 if exist:
63 printgoodnews( ' xelatex -halt-on-error -no-pdf -output-directory="%s" "%s" ' % (out_dir,filename))
64 i =- 1
65 j =- 1
66 k =- 1
67 i = os.system( ' xelatex -halt-on-error -no-pdf -output-directory="%s" "%s" ' % (out_dir, filename))
68 if i == 0:
69 printgoodnews( " The xelatex 1st run finished! " )
70 j = os.system( ' xelatex -halt-on-error -no-pdf -output-directory="%s" "%s" ' % (out_dir, filename))
71 if j == 0:
72 printgoodnews( " The xelatex 2nd run finished! " )
73
74 if ' -ENCRYPT ' in options:
75 k = os.system( ' xdvipdfmx -r 600 -E -V 5 -S -K 128 -P 0x0804 -o "%s.pdf" "%s.xdv" ' % (filename_noext,filename_noext))
76 else :
77 k = os.system( ' xdvipdfmx -r 600 -E -V 5 -o "%s.pdf" "%s.xdv" ' % (filename_noext,filename_noext))
78
79 if k == 0:
80 printgoodnews( " xdvipdfmx finished! " )
81 if ' -SHOWPDF ' in options:
82 k = os.startfile(filename_noext + " .pdf " )
83 printgoodnews( " Command 'showpdf' was executed! " )
84 cleartmpfiles(sys.argv[ 1 ])
85 printgoodnews( " All finished! " )
86 sys.exit(0)
87 else :
88 printbadnews( " Error on xdvipdfmx! " )
89 sys.exit( - 1 )
90 else :
91 printbadnews( " Error on the 2rd run ! " )
92 cleartmpfiles(sys.argv[ 1 ])
93 sys.exit( - 1 )
94 else :
95 printbadnews( " Error on the 1st run ! " )
96 cleartmpfiles(sys.argv[ 1 ])
97 sys.exit( - 1 )
98 else :
99 printbadnews( " Error: where is your tex file %s?' " % sys.argv[ 1 ])
100 sys.exit( - 1 )
101
102