diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/bashful')
-rw-r--r-- | Master/texmf-dist/doc/latex/bashful/Makefile | 4 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/bashful/README | 13 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/bashful/bashful.pdf | bin | 422132 -> 470434 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/bashful/bashful.tex | 402 |
4 files changed, 271 insertions, 148 deletions
diff --git a/Master/texmf-dist/doc/latex/bashful/Makefile b/Master/texmf-dist/doc/latex/bashful/Makefile index 3ea9362ec96..1cf8a1d9cb2 100644 --- a/Master/texmf-dist/doc/latex/bashful/Makefile +++ b/Master/texmf-dist/doc/latex/bashful/Makefile @@ -11,4 +11,6 @@ ${PACKAGE}.zip: ${PACKAGE}.pdf $(SOURCES) zip $@ $? clean: - rm -f [dD]elme* *.aux *.sh *.osh *.toc *~ *.log *.out *.dvi *.lsh *.stderr *.stdout *.toc *.c + rm -rf [dD]elme* *.aux *.sh *.osh *.toc *~ *.log *.out *.dvi *.lsh *.stderr \ + *.stdout *.toc *.c minimal* date bashful.date *.exitCode condition.* \ + temperature.* _00 _bashful diff --git a/Master/texmf-dist/doc/latex/bashful/README b/Master/texmf-dist/doc/latex/bashful/README new file mode 100644 index 00000000000..d3a28c02793 --- /dev/null +++ b/Master/texmf-dist/doc/latex/bashful/README @@ -0,0 +1,13 @@ +The bashful package, v 0.92 + +This package makes it possible to execute bash scripts from within LaTeX. The +main application is in writing computer-science texts, in which you want to +make sure the programs listed in the document are executed directly from the +input. + +This package may be distributed and/or modified under the LaTeX Project Public +License, version 1.3 or higher (your choice). The latest version of this +license is at: http://www.latex-project.org/lppl.txt + +This work is author-maintained (as per LPPL maintenance status) +by Yossi Gil, <yogi@cs.Technion.ac.i> diff --git a/Master/texmf-dist/doc/latex/bashful/bashful.pdf b/Master/texmf-dist/doc/latex/bashful/bashful.pdf Binary files differindex 43a9f56fa5c..b8cd348bc61 100644 --- a/Master/texmf-dist/doc/latex/bashful/bashful.pdf +++ b/Master/texmf-dist/doc/latex/bashful/bashful.pdf diff --git a/Master/texmf-dist/doc/latex/bashful/bashful.tex b/Master/texmf-dist/doc/latex/bashful/bashful.tex index 5b853991152..c2247d1266f 100644 --- a/Master/texmf-dist/doc/latex/bashful/bashful.tex +++ b/Master/texmf-dist/doc/latex/bashful/bashful.tex @@ -1,5 +1,5 @@ \documentclass{ltxdoc} % Process with xelatex -shell-escape -\usepackage{bashful} +\usepackage[verbose]{bashful} \usepackage[colorlinks=true]{hyperref} \usepackage{gensymb} @@ -8,7 +8,7 @@ \usepackage{xkvview} \usepackage{xspace} \usepackage{amsmath} - +\usepackage{multicol} \newcommand\me{bashful} \newcommand\bashful{\textsf{\me}\xspace} @@ -19,8 +19,11 @@ belowskip=0pt}% \title{The \bashful Package\thanks{ + Copyright \copyright{} 2011 by Yossi Gil + \url{mailto:yogi@cs.technion.ac.il}. This work may be distributed and/or modified under the conditions of the - \emph{GNU GENERAL PUBLIC LICENSE}{http://www.gnu.org/licenses/gpl.html}. + \emph{\LaTeX{} Project Public License} (LPPL), either version 1.3 of this + license or (at your option) any later version. The latest version of this license is in \url{http://www.latex-project.org/lppl.txt} and version 1.3 or later is part of all distributions of \LaTeX{} version 2005/12/01 or later. @@ -43,9 +46,10 @@ This work consists of the files \texttt{\me.tex} and \texttt{\me.sty} \makeatother \begin{document} + \bash cat << EOF > README -The bashful package, v 0.91 +The bashful package, v 0.92 This package makes it possible to execute bash scripts from within LaTeX. The main application is in writing computer-science texts, in which you want to @@ -61,50 +65,53 @@ by Yossi Gil, <yogi@cs.Technion.ac.i> EOF \END +\bash[verbose,stdoutFile=bashful.date] +stat -c %y bashful.sty | sed -e s+-+/+g -e 's/ .*//g' > date +\END + \maketitle + \begin{abstract} \parindent 1.5ex \parskip 0.5em \sl It is sometimes useful to ``\emph{escape-to-shell}'' from within - \LaTeX{}. + \LaTeX{}. The most obvious application is when the document - explains something about the working of a computer program. + explains something about the working of a computer program. Your text would be more robust to changes, and easier to write, - if all the examples it gives, are run directly from - within \LaTeX{}. - + if all the examples it gives, are run directly from + within \LaTeX{}. + To facilitate this and other applications, package \bashful{} provides a convenient interface to \TeX's - primitive \verb+\write18+---the execution of shell commands from within - your input files, also known as \emph{shell escape}. + primitive \verb+\write18+---the execution of shell commands from within + your input files, also known as \emph{shell escape}. Text between \verb+\bash+ and \verb+\END+ is executed by - the \href - {http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29} - {\texttt{bash}}, - a popular Unix command line interpreter. + \href + {http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29} + {\texttt{bash}}, + a popular Unix command line interpreter. Various flags control whether the executed commands and their output - show up in the printed document, and whether they are saved - to files. + show up in the printed document, and whether they are saved + to files. Although provisions are made for using shells other - than \texttt{bash}, this package may \emph{not} operate without - modifications on Microsoft's operating systems. + than \texttt{bash}, this package may \emph{not} operate without + modifications on Microsoft's operating systems. \end{abstract} -\eject +\begin{multicols}{2} +\footnotesize \tableofcontents +\end{multicols} \parindent 1.5ex \parskip 0.5em \section{Introduction} -\bash[verbose] -rm -f temperature.tex -rm -f condition.tex -\END \bash[verbose,scriptFile=temperature.sh,stdoutFile=temperature.tex] location=Jerusalem,Israel @@ -129,28 +136,31 @@ tr 'A-Z' 'a-z' \END At the time I run this document through \LaTeX{}, - the temperature in Jerusalem, Israel, - was~\emph{\input{temperature.tex}\celsius}, - while the weather condition was \emph{\input{condition}}\unskip. - + the temperature in Jerusalem, Israel, + was~\emph{\input{temperature}\unskip\celsius}, + while the weather condition was + \emph{\input{condition}}\unskip. + You may not care so much about these bits of truly ephemeral information, - but you may be surprised that they were produced - by the very process of \LaTeX{}ing. + but you may be surprised that they were produced + by the very process of \LaTeX{}ing the input. How did I do that? Well, the first step was to write - a series of shell commands that retrieve the current temperature, - and another such series to obtain the current - weather conditions. + a series of shell commands that retrieve the current temperature, + and another such series to obtain the current + weather conditions. This task required connection to -\href{http://www.Google.com/support/forum/p/apps-apis/thread?tid=0c95e45bd80def1a&hl=en}% -{Google's weather service} and - minimal dexterity with Unix pipes and filters to process the output. + \href{http://www.Google.com/support/forum/p/% + apps-apis/thread?tid=0c95e45bd80def1a&hl=en}% + {Google's weather service} and + minimal dexterity with Unix pipes and filters to process the output. + My command series to obtain the current temperature was: \begin{minipage}{\textwidth} \begin{quote} - \lstinputlisting[style=input]{temperature.sh} + \lstinputlisting[style=input]{temperature.sh} \end{quote} \end{minipage} @@ -158,57 +168,61 @@ while the weather condition was obtained by \begin{minipage}{\textwidth} \begin{quote} - \lstinputlisting[style=input]{condition.sh} + \lstinputlisting[style=input]{condition.sh} \end{quote} \end{minipage} The second step was coercing \LaTeX{} to run these commands - while processing this file. -To do that, I wrapped these two series within - a \verb+\bash+\ldots\verb+\END+ pair. + while processing my document. +To do that, I used package \bashful, +\begin{verbatim} +\usepackage{bashful} +\end{verbatim} +And, then, I wrapped each of these two series within + a \verb+\bash+\ldots\verb+\END+ pair. + The \verb+\bash+ command, offered by this package, - takes all subsequent lines, stopping at the closing \verb+\END+, - places these in a file, and then - lets the \texttt{bash} shell interpreter execute this file. + takes all subsequent lines, stopping at the closing \verb+\END+, + places these in a file, and then + lets the \texttt{bash} shell interpreter execute this file. Allowing \LaTeX{} to run arbitrary shell commands can be - dangerous---you never know whether that nice looking \texttt{tex} - file you received by email was prepared by a friend or - a foe. + dangerous---you never know whether that nice looking \texttt{.tex} + file you received by email was prepared by a friend or + a foe. This is the reason that you have to tell \LaTeX{} - explicitly that shell escapes - are allowed. -The \texttt{-shell-esc} does that. -Processing this file was thus done by executing, at the command line, + explicitly that shell escapes + are allowed. +The \texttt{-shell-esc} flag does that. +To process my document, I typed, at the command line, \begin{quote} - \tt - \% latex -shell-escape \jobname.tex + \tt + \% latex -shell-escape \jobname.tex \end{quote} -What I actually wrote in my \texttt{.tex} file +What I actually wrote in the input to produce the temperature in - Jerusalem, Israel was: - + Jerusalem, Israel was: + \begin{minipage}{\textwidth} \begin{quote} \noindent\verb+\bash[verbose,scriptFile=temperature.sh,stdoutFile=temperature.tex]+ -\lstinputlisting[style=input]{temperature.sh} +\lstinputlisting[style=input,belowskip=0pt]{temperature.sh} \verb+\END+\\ \end{quote} \end{minipage} -The flags passed to above to the \verb+bash+ control sequence instructed it: - \begin{enumerate} - \item to be verbose, typing out a detailed log of everything it did; - \item to save the shell commands in a script file named - \texttt{temperature.sh}; and, - \item to store the standard output of the script in a file named - \texttt{temperature.tex}. - \end{enumerate} +The flags passed to the \verb+bash+ control sequence above instructed it: + \begin{enumerate} + \item to be verbose, typing out a detailed log of everything it did; + \item to save the shell commands in a script file named + \texttt{temperature.sh}; and, + \item to store the standard output of the script in a file named + \texttt{temperature.tex}. + \end{enumerate} To obtain the current weather condition in the capital I wrote: - \begin{minipage}{\textwidth} \begin{quote} \noindent\verb+\bash[verbose,scriptFile=condition.sh,stdoutFile=condition.tex]+ @@ -219,18 +233,17 @@ To obtain the current weather condition in the capital I wrote: I wrote these two just after my \verb+\begin{document}+. When \LaTeX{} encountered these, it executed the bash commands and - created two files \texttt{temperature.tex} and \texttt{condition.tex}. + created two files \texttt{temperature.tex} and \texttt{condition.tex}. Subsequently, I could use the content of these files by writing: \begin{quote} -\begin{verbatim} -At the time I run this document through \LaTeX{}, - the temperature in Jerusalem, Israel, - was~\emph{\input{temperature.tex}\celsius}, - while the weather condition was \emph{\input{condition}}\unskip. -\end{verbatim} +\bash +sed -n "/^At the time/,/^You may not/ p" bashful.tex > init.tex +\END + +\lstinputlisting[style=input,belowskip=0pt]{init.tex}\ldots \end{quote} \section{An Easy to Digest Example} @@ -256,8 +269,8 @@ Let's first write a simple \href{http://en.wikipedia.org/wiki/C_(programming_language)} {C programming language}: -\begin{quote} -\bash[verbose,list] + +\bash[verbose,environment=quote,script] rm -f hello.c; cat << EOF > hello.c /* ** hello.c: My first C program; it prints @@ -273,33 +286,31 @@ int main() } EOF \END -\end{quote} \subsubsection{Compiling} Now, let's compile this program: -\begin{quote} -\bash[list,stdout] +\bash[environment=quote,script,stdout] cc hello.c \END -\end{quote} \subsubsection{Executing} Finally, we can execute this program, and see that indeed, it prints the ``Hello, World!'' string. -\begin{quote} -\bash[list,stdout] +\bash[environment=quote,script,stdout] ./a.out \END -\end{quote} + \subsection{Behind the Scenes} \subsubsection{Authoring} What I wrote in the input to produce the \texttt{hello.c} program was: + +\begin{minipage}{\textwidth} \begin{quote} \begin{verbatim} -\bash[list] +\bash[script] rm -f hello.c; cat << EOF > hello.c /* ** hello.c: My first C program; it prints @@ -317,12 +328,12 @@ EOF \END \end{verbatim} \end{quote} +\end{minipage} In doing so, all the text between the \verb+\bash+ and \verb+\END+ was sent to a temporary file, - which was then sent to the \texttt{bash} - bash shell for execution. -The \texttt{list} flag instructed \verb+\bash+ + which was then sent for execution. +The \texttt{script} flag instructed \verb+\bash+ to list this file in the main document. This listing was prefixed with \verb*+% + to make it clear that it was input to \texttt{bash}. @@ -331,7 +342,7 @@ This listing was prefixed with \verb*+% + Next, I wrote \begin{quote} \begin{verbatim} -\bash[list] +\bash[script,stdout] cc hello.c \END \end{verbatim} @@ -341,13 +352,14 @@ As before, in doing that, I achieved two objectives: first, when \LaTeX{} processed the input, it also invokes the~C compiler to compile file \texttt{hello.c}, the file which I just created. -Second, thanks to the \texttt{list} flag, + +Second, thanks to the \texttt{script} flag, the command for compiling this program was included in the printed version of this document. -Thanks to the \texttt{stdout} option, - plain messages, i.e., not error messages, - produced by the compiler would show on +The \texttt{stdout} option instructed \verb+\bash+ + to include plain messages, i.e., not error messages, + produced by the compiler in the printed version of this document. In this case, no such messages were produced. @@ -357,7 +369,7 @@ In this case, no such messages were produced. Finally, I wrote \begin{quote} \begin{verbatim} -\bash[list,stdout] +\bash[script,stdout] ./a.out \END \end{verbatim} @@ -385,15 +397,20 @@ More specifically, the \verb+\bash+ command \begin{enumerate} \item collects all commands up to \verb+\END+; \item places these commands in a script file; +\item change directory to a designated directory if the \texttt{hide} + option is set (the \texttt{dir} option sets the directory name); \item executes this script file, redirecting its standard output and its standard error streams to distinct files; \item checks whether the exit code of the execution indicates an error (i.e., exit code which is different from~$0$), and if so, - appends this exit code to the file containing the standard error; + place this exit code in a distinct file; \item checks whether the file containing the standard error is empty, and if not, pauses execution after displaying an error message; -\item lists, if requested to, the script file; and, -\item lists, if requested to, the file containing the standard output. +\item checks whether the file containing the exit code is empty, + and if not, pauses execution after displaying an error message; +\item lists, if requested to, the script file; +\item lists, if requested to, the file containing the standard output; and, +\item lists, if requested to, the file containing the standard error; \end{enumerate} Let me demonstrate a situation in which the execution of @@ -404,22 +421,23 @@ Since \texttt{minimal.tex} contains \verb+\END+, I will have to author this file in three steps: \begin{enumerate} \item Creating the header of \texttt{minimal.tex}: -\bash[list] +\bash[script] cat << EOF > minimal.tex -\documentclass{minimal} +\documentclass{standalone} \usepackage{bashful} \begin{document} -\bash -echo "main(){return int;}" > error.c -cc error.c +This document creates a simple erroneous C program + and then compiles it: +\bash[script,stdout] +echo "main(){return int;}" > error.c; cc error.c EOF \END \item Adding \verb+\END+ to \texttt{minimal.tex} -\bash[list] +\bash[script] echo "\\END" >> minimal.tex \END \item Finalizing \texttt{minimal.tex} -\bash[list] +\bash[script] echo "\\end{document}" >> minimal.tex \END \end{enumerate} @@ -427,7 +445,7 @@ echo "\\end{document}" >> minimal.tex Let me now make sure \texttt{minimal.tex} was what I expect it to be: \begin{minipage}{\textwidth} -\bash[list,stdout] +\bash[script,stdout] cat minimal.tex \END \end{minipage} @@ -438,12 +456,12 @@ I am now ready to run \texttt{minimal.tex} through \LaTeX{}, when the anticipated error occurs. \begin{minipage}{\textwidth} - \lstdefinestyle{bashfulStdoutFile}{ + \lstdefinestyle{bashfulStdout}{ showstringspaces=false, - basicstyle=\scriptsize\ttfamily, + basicstyle=\small\ttfamily, }% -\bash[list,stdout] -yes x | latex -shell-esc minimal.tex +\bash[script,stdout] +yes q | pdflatex -shell-esc minimal.tex | fmt -s -w 55 \END \end{minipage} @@ -455,16 +473,23 @@ You can see that when \LaTeX{} tried to process \texttt{minimal.tex}, Inspecting \texttt{minimal.stderr}, we see the C compiler error messages: \begin{minipage}{\textwidth} -\bash[list,stdout] +\bash[script,stdout] cat minimal.stderr \END \end{minipage} + +Note that the failure to compile \texttt{hello.c}, + did not stop \verb+\bash+ from including + this file in the source. -\section{Customization} +Here is what \texttt{minimal.pdf} looks like: -\subsection{Options} +\begin{center} + \includegraphics[scale=0.9]{minimal.pdf} +\end{center} -Options to \verb+\bash+ are passed using the \textsf{xkeyval} syntax: + +\section{Customization} \newcommand\option[3]{% \noindent\( @@ -473,8 +498,36 @@ Options to \verb+\bash+ are passed using the \textsf{xkeyval} syntax: \langle\text{{#2}}\rangle \) \hfill\texttt{#3}\\} +\subsection{Package Options} +Options to the \verb+\bashful+ package passed using the \textsf{xkeyval} syntax: + +\option{hide}{\texttt{true}/\texttt{false}}{\texttt{false}} +If \texttt{true}, scripts are + executed in a designated directory; + if \texttt{false}, scrips are executed + in the current working directory. + +\option{dir}{\sl directoryName}{} +If \texttt{hide} option is \texttt{true}, then + scripts are executed in this directory. +Initial value of this options is \verb+_00+. +Note that if you use \TeX{}live 2010, you have to configure certain + security flags to make it possible to write to directories + whose name start with a dot, or to directories + which are not below the current working directory. + +\option{verbose}{\texttt{true}/\texttt{false}}{\texttt{false}} +If \texttt{true}, be chatty. + +\subsection{Command Options} + +Options to \verb+\bash+ command + are passed using the \textsf{xkeyval} syntax: + + +\subsubsection{File names} \option{scriptFile}{\sl fileName}{\textbackslash jobname.sh} Name of file into which the script instructions are spilled prior to execution. @@ -491,22 +544,55 @@ Name of file into which the shell standard output stream is \option{stderrFile}{\sl fileName}{\textbackslash jobname.stderr} Name of file into which the shell standard error stream is redirected. + +\option{exitCodeFile}{\sl fileName}{\textbackslash jobname.stderr} +Name of file into which the shell standard error stream is + redirected. -\option{list}{\texttt{true}/\texttt{false}}{\texttt{false}} +\subsubsection{Listing Structure} +\option{script}{\texttt{true}/\texttt{false}}{\texttt{false}} If \texttt{true}, the content of \texttt{scriptFile} is listed in the main document. \option{stdout}{\texttt{true}/\texttt{false}}{\texttt{false}} If \texttt{true}, the content of \texttt{stdoutFile} is listed in the main document. -If both \texttt{list} and \texttt{stdout} are +If both \texttt{script} and \texttt{stdout} are \texttt{true}, then \texttt{scriptFile} is listed first, and leaving no vertical space, \texttt{stdoutFile} is listed next. +\option{stderr}{\texttt{true}/\texttt{false}}{\texttt{false}} +If \texttt{true}, the content of \texttt{stderrFile} + is listed in the main document, following + \texttt{scriptFile} (if \texttt{script} is + \texttt{true}) + and + \texttt{stdoutFile} (if \texttt{stdout} is + \texttt{true}). + +\subsubsection{Tolerance to Errors} +\option{ignoreExitCode}{\texttt{true}/\texttt{false}}{\texttt{false}} +When + \texttt{true} \verb+\bash+ will consider + an execution correct even if its exit code + is not 0. + +\option{ignoreStderr}{\texttt{true}/\texttt{false}}{\texttt{false}} + When \texttt{true} \verb+\bash+ will consider + an execution correct even if produces + output to the standard error stream. + +\subsubsection{Appearance} + \option{prefix}{tokens}{\percentchar\textvisiblespace} String that prefixes the listing of \texttt{scriptFile}. +\option{environment}{enrionmentName}{none} +Name of \LaTeX{} environment (e.g., \texttt{quote}) + in which the listing is wrapped. + +\subsubsection{Miscellaneous} \option{verbose}{\texttt{true}/\texttt{false}}{\texttt{false}} If \texttt{true}, the package logs every step it takes. @@ -519,13 +605,16 @@ Package commands and their output. \subsubsection{Listings Style for Script File} -Style \verb+bashfulList+ is used for displaying the executed shell - commands (when option \texttt{list} is used). +Style \verb+bashfulScript+ is used for displaying the executed shell + commands (when option \texttt{script} is used). The current definition of this style is: \begin{verbatim} -\lstdefinestyle{bashfulList}{ + \lstdefinestyle{bashfulScript}{ basicstyle=\ttfamily, + keywords={}, showstringspaces=false} + + \end{verbatim} Redefine this style to match your needs. @@ -536,8 +625,24 @@ Style \verb+bashfulStdout+ is used for displaying the output of the commands (when option \texttt{stdout} is used). The current definition is: \begin{verbatim} + % listings style for the stdoutFile, can be redefined by client \lstdefinestyle{bashfulStdout}{ basicstyle=\sl\ttfamily, + keywords={}, + showstringspaces=false + }% + +\end{verbatim} +Redefine this style to match your needs. + + +Style \verb+bashfulStderr+ is used for displaying the output of the + executed shell + commands (when option \texttt{stderr} is used). +\begin{verbatim} + \lstdefinestyle{bashfulStderr}{ + basicstyle=\sl\ttfamily\color{red}, + keywords={}, showstringspaces=false } \end{verbatim} @@ -553,7 +658,18 @@ Also, in case bidirectional \TeX{}ing is in effect, \section{History} \begin{description} -\item[Version 0.91] Initial release +\item[Version 0.91] Initial release. +\item[Version 0.92] +\begin{itemize} + \item Added \texttt{ignoreExitCode}, + \texttt{ignoreStderr}, \texttt{stderr}, + \texttt{exitCodeFile} command options. + + \item + Renamed \texttt{list} to \texttt{script}. + \item + Added \texttt{hide} and \texttt{dir} package options. + \end{itemize} \end{description} \section{Future} @@ -571,16 +687,6 @@ The following may get implemented some day. will make this package safer, by reducing the risk of accidentally erasing existing files. - -\item \emph{A \texttt{ignoreExitCode} option.} When - \texttt{true} \verb+\bash+ will consider - an execution correct even if its exit code - is not 0. - -\item \emph{A \texttt{ignoreStderr} option.} When - \texttt{true} \verb+\bash+ will consider - an execution correct even if produces - output to the standard error stream. \end{enumerate} \section{Acknowledgments} @@ -594,24 +700,26 @@ Martin Scharrer tips on \TeX{} internals \appendix \section{Source of \texttt{\jobname.sty}} - \lstinputlisting - [ style=input, - basicstyle=\scriptsize\ttfamily, - numbers=left, - stepnumber=10, - numberstyle=\scriptsize\rmfamily\bfseries - ] - {\jobname.sty} - -\section{Source of the Current Document} - \lstinputlisting - [ style=input, - basicstyle=\scriptsize\ttfamily, - numbers=left, - stepnumber=10, - numberstyle=\scriptsize\rmfamily\bfseries - ] - {\jobname.tex} - - + \lstinputlisting + [ style=input, + basicstyle=\scriptsize\ttfamily, + numbers=left, + stepnumber=10, + firstnumber=1, + numberfirstline=true, + numberstyle=\scriptsize\rmfamily\bfseries + ] + {\jobname.sty} + +\section{Source of \texttt{\jobname.tex}} + \lstinputlisting + [ style=input, + basicstyle=\scriptsize\ttfamily, + numbers=left, + stepnumber=10, + firstnumber=1, + numberfirstline=true, + numberstyle=\scriptsize\rmfamily\bfseries + ] + {\jobname.tex} \end{document} |