#! /usr/bin/env python # style_showcase.py # -*- encoding: utf-8 -*- """Make an illustration of a LaTeX style on a sample document. """ __version__='1.0.0' __author__='Jim Hefferon ftpmaint at tug.ctan.org' __date__='2010-Feb-16' __notes__=""" """ import sys, os, os.path, re, optparse import time, subprocess DEFAULT_PLAIN_TEXT_FN='plain.text' DEFAULT_MATH_TEXT_FN='math.text' DEFAULT_TEMP_DIR='tmp' DEFAULT_OUTPUT_FN_FORMAT='style_showcase.tex' DEFAULT_OUTPUT_FN=DEFAULT_OUTPUT_FN_FORMAT # ?could want % (0,) DEBUG=False FORGIVE=False VERBOSE=False DEFAULT_DOCUMENTCLASS='article' DEFAULT_SIZE='10pt' USEPACKAGE_LIST=None MATHPACKAGE_LIST=None EXTRA_LIST=None DEFAULT_PLAIN_TEXT=r""" \usepackage{lipsum} \title{Cartesian closed categories and the price of eggs} \author{Jane Doe} \date{September 1994} \lipsum[1-2] \section{First section} \lipsum[3-4] \subsection{First subsection of first section} \lipsum[5-7] \subsection{Second subsection of first section} \lipsum[8-9] \section{Second section} \lipsum[11] \subsection{First subsection of second section} \lipsum[12] """ DEFAULT_MATH_TEXT=r"""\begin{thm} Quisque aliquam $x$ ipsum sed turpis. Pellentesque $y\in K$ laoreet velit nec justo. Nam sed augue. Maecenas rutrum quam eu dolor. \begin{equation} \int_5^6 x^2\,dx=A_{xt} \end{equation} Fusce consectetuer. Proin tellus est, luctus vitae, molestie a, mattis et, mauris. \begin{equation}\begin{split} H_c&=\frac{1}{2n} \sum^n_{l=0}(-1)^{l}(n-{l})^{p-2} \sum_{l _1+\dots+ l _p=l}\prod^p_{i=1} \binom{n_i}{l _i}\\ &\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i}\cdot \Bigl[(n-l )^2-\sum^p_{j=1}(n_i-l _i)^2\Bigr]. \end{split}\end{equation} Donec tempor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. \end{thm} \begin{proof} Fusce adipiscing justo nec ante. Nullam in enim. \begin{equation*} \left.\begin{aligned} B'&=-\partial\times E,\\ E'&=\partial\times B - 4\pi j \end{aligned} \right\} \qquad \text{Maxwell's equations} \end{equation*} Pellentesque felis orci, sagittis ac, malesuada et, facilisis in, ligula. Nunc non magna sit amet mi aliquam dictum. \begin{equation} \frac{1}{k}\log_2 c(f)\quad\tfrac{1}{k}\log_2 c(f)\quad \sqrt{\frac{1}{k}\log_2 c(f)}\quad\sqrt{\dfrac{1}{k}\log_2 c(f)} \end{equation} In mi. \end{proof} \lipsum[26] \begin{defn} Aenean adipiscing auctor est. Morbi quam arcu, malesuada sed, volutpat et, elementum sit amet, libero. Duis accumsan. Curabitur urna. \begin{equation} \begin{pmatrix} a&b&c&d\\ e&\hdotsfor{3} \end{pmatrix} \end{equation} In sed ipsum. \end{defn} \begin{lem} Donec lobortis nibh. Duis $x\in K_2$ mattis. Sed cursus lectus quis odio. Phasellus arcu. Praesent imperdiet dui in sapien. \end{lem} \begin{proof} Vestibulum tellus pede, auctor a, pellentesque sit amet, vulputate sed, purus. \begin{align} A_1&=N_0(\lambda;\Omega')-\phi(\lambda;\Omega'),\\ A_2&=\phi(\lambda;\Omega')-\phi(\lambda;\Omega),\\ \intertext{and} A_3&=\mathcal{N}(\lambda;\omega). \end{align} Nunc pulvinar, dui at eleifend adipiscing, tellus nulla placerat massa, sed condimentum nulla tellus sed ligula. Nulla vitae odio sit amet leo imperdiet blandit. In vel massa. \begin{equation*} \sum_{\begin{subarray}{l} i\in\Lambda\\ 0 The s can contain text to set as part of the document.""" oP=optparse.OptionParser(usage=usage,version=__version__) oP.add_option('--output_file','-o',action='store',default=DEFAULT_OUTPUT_FN,dest='output_file',help='Output filename (default: %s)' % (DEFAULT_OUTPUT_FN,)) oP.add_option('--temp_dir','-t',action='store',default=DEFAULT_TEMP_DIR,dest='temp_dir',help='Directory for output (default: %s)' % (DEFAULT_TEMP_DIR,)) oP.add_option('--documentclass','-d',action='store',default=DEFAULT_DOCUMENTCLASS,dest='documentclass',help='LaTeX document class (default: %s)' % (DEFAULT_DOCUMENTCLASS,)) oP.add_option('--size','-s',action='store',default=DEFAULT_SIZE,dest='size',help='Point size of main text (default: %s)' % (DEFAULT_SIZE,)) oP.add_option('--usepackage','-u',action='append',default=USEPACKAGE_LIST,dest='usepackage_list',help='Use the LaTeX package (default: %s)' % (USEPACKAGE_LIST,)) oP.add_option('--mathpackage','-m',action='append',default=MATHPACKAGE_LIST,dest='mathpackage_list',help='Use the LaTeX math package (default: %s)' % (MATHPACKAGE_LIST,)) oP.add_option('--extra','-e',action='append',default=EXTRA_LIST,dest='extra_list',help=' (default: %s)' % (MATHPACKAGE_LIST,)) # oP.add_option('--DEBUG','-D',action='store_true',default=DEBUG,dest='debug',help='output debugging information (default %s)' % (DEBUG,)) # oP.add_option('--FORGIVE','-F',action='store_true',default=FORGIVE,dest='forgive',help='continue on failure (default: %s)' % (repr(FORGIVE),)) # oP.add_option('--VERBOSE','-V',action='store_true',default=VERBOSE,dest='verbose',help='talk a lot (default %s)' % (VERBOSE,)) opts, args=oP.parse_args(argv[1:]) # Establish the infrastructure # Handle positional arguments try: plain_text_fn=args[0] except: plain_text_fn=DEFAULT_PLAIN_TEXT_FN plain_text=open(plain_text_fn,'r').read() try: math_text_fn=args[1] except: math_text_fn=DEFAULT_MATH_TEXT_FN math_text=open(math_text_fn,'r').read() # Handle the options generate_sample(opts.output_file, opts.temp_dir, documentclass=opts.documentclass, size=opts.size, usepackage_list=opts.usepackage_list, mathpackage_list=opts.mathpackage_list, extra_list=opts.extra_list, plain_text=plain_text, math_text=math_text) if __name__=='__main__': if __notes__.strip(): util.stdout("Notes for "+__file__+":\n"+__notes__) try: main(argv=sys.argv) except KeyboardInterrupt: mesg=sys.argv[0]+u": Keyboard interrupt" print >>2, mesg sys.exit(0)