% Tab4tex documentation % Version 0.1 % March 2007 % Guido Milanese - guido.milanese@unicatt.it \documentclass[a4paper,english]{article} \usepackage[T1]{fontenc} \usepackage[utf8x]{inputenc} \IfFileExists{url.sty}{\usepackage{url}} {\newcommand{\url}{\texttt}} \usepackage{babel} \begin{document} \title{tab4tex\\ Version 0.1} \author{Guido Milanese\\ \url{guido.milanese@unicatt.it}} \thispagestyle{empty} \date{March 2007} \maketitle \begin{abstract} \noindent{}This utility helps to prepare tables to be used in \LaTeX{}. The programs are written in Snobol4; the only requirement is to install the interpreter. For Windows, a standalone file compiled with Spitbol is also provided, and the programs can be run without the need of an external interpreter. \end{abstract} \tableofcontents \section{The program} The program \textsf{tab4tex} reads from the standard input a text file and outputs a table formatted according to the requirements of the environment \textsf{tabular}. It is possible to output a table that can be pasted or included in a complete \LaTeX{} file or to output a complete standalone \LaTeX{} file. Some basic formatting aids are provided. Refined features can be added later in the \LaTeX{} code. The program must be run as follows: \begin{center} \texttt{snobol4 -b tab4tex.sno [options] outputfile} \end{center} \noindent{}If compiled or from a script: \begin{center} \texttt{tab4tex [options] outputfile} \end{center} Options are: \begin{description} \item[a] align (center,left,right) \item[r] number of rows \item[b] vertical bar (y/n) \item[c] complete \LaTeX{} document (y/n) \item[h] hline (y/n) \end{description} First and second argument are compulsory, 3rd, 4th and 5th optional (simple y/n choice). For example use \texttt{c=y} if you want a complete \LaTeX{} document, \textsf{c=n} if you want just a table to include in your document. See the next section for some examples. \section{Examples and formatting aids} \subsection{A simple example} This is file \textsf{test1} provided in the package: \begin{center} \begin{verbatim} *Animals and friends* !Cats! !Dogs! ^John^ ^Martha^ ^John^ ^Martha^ *Black* 2 5 5 0 *White* 4 1 0 5 *Red* 2 1 Not known \end{verbatim} \end{center} These lines are very simple: \begin{verbatim} *Black* 2 5 5 0 *White* 4 1 0 5 \end{verbatim} Each line is a row and cells are separated by tabs. Please notice: \emph{tabs}, not empty spaces. The asterisks are used to produce bold text in the \LaTeX{} output. The program provides this simple encoding: \begin{quote} \begin{tabular}{ll} *cell* & produces \textbf{cell}\\ !cell! & produces \emph{cell}\\ \^{}cell\^{} & produces \textsc{cell}\\ \end{tabular} \end{quote} The third line uses \texttt{}, meaning \emph{empty cell}: \begin{center} \begin{verbatim} ^John^ ^Martha^ ^John^ ^Martha^ \end{verbatim} \end{center} Empty cells must be separated from the following ones as normal cells are, i.e. using a tab. Please notice: \emph{tabs}, not empty spaces. In this line, observe the use of \texttt{\^{}} to obtain small caps in the \LaTeX{} output. The second and the last row are using multicolumns, i.e. the text is expanded in two ore more cells: \begin{center} \begin{verbatim} !Cats! !Dogs! *Red* 2 1 Not known \end{verbatim} \end{center} The program uses a simple encoding to obtain a multicols output: precede the string with \texttt{}, as in the above example. Multicols cells must be separated from the following ones as normal cells are, i.e. using a tab. Please notice: \emph{tabs}, not empty spaces. Observe the use of \texttt{!} to obtain italics in the \LaTeX{} output. This is the final output: \footnotesize% \begin{verbatim} \begin{tabular}{|c|c|c|c|c|} \hline \multicolumn{5}{|c|}{\textbf{Animals and friends}} \\ \hline & \multicolumn{2}{|c|}{\emph{Cats}} & \multicolumn{2}{|c|}{\emph{Dogs}} \\ \hline & \textsc{John} & \textsc{Martha} & \textsc{John} & \textsc{Martha} \\ \hline \textbf{Black} & 2 & 5 & 5 & 0 \\ \hline \textbf{White} & 4 & 1 & 0 & 5 \\ \hline \textbf{Red} & 2 & 1 & \multicolumn{2}{|c|}{Not known} \\ \hline \end{tabular} \end{verbatim} \normalsize% This output was obtained with the following command line: \begin{center} \begin{verbatim} snobol4 -b tab4tex.sno r=5 a=c b=y h=y c=n test1.tex \end{verbatim} \end{center} The options used are: \begin{itemize} \item \texttt{r=5} The number of rows. \item \texttt{a=c} Cells are centered \item \texttt{b=y} Vertical bar \item \texttt{h=y} Horizontal bar \item \texttt{c=n} Do not output a standalone \LaTeX{} file \end{itemize} Please notice that only the first two options must be entered. If you answer ``no'' to any other option, you can simply omit it. \subsection{A more complex example} This example is a bit more complex% \footnote{The table is quoted from \url{http://www.maths.tcd.ie/~dwilkins/latexprimer/tables.html}. To see the real file provided in the package set tabs at 12 or similar values and use a fixed font.}. This is the input file: \begin{verbatim} Singular Plural English *Gaeilge* *English* *Gaeilge* 1st Person at me *agam* at us *againn* 2nd Person at you *agat* at you *agaibh* 3rd Person at him *aige* at them *acu* at her *aici* \end{verbatim} The file combines empty cells and formatting instructions. This is the output: \footnotesize% \begin{verbatim} \begin{tabular}{|l|l|l|l|l|} \hline & \multicolumn{2}{|l|}{Singular} & \multicolumn{2}{|l|}{Plural} \\ \hline & English & \textbf{Gaeilge} & \textbf{English} & \textbf{Gaeilge} \\ \hline 1st Person & at me & \textbf{agam} & at us & \textbf{againn} \\ \hline 2nd Person & at you & \textbf{agat} & at you & \textbf{agaibh} \\ \hline 3rd Person & at him & \textbf{aige} & at them & \textbf{acu} \\ \hline & at her & \textbf{aici} & & \\ \hline \end{tabular} \end{verbatim} \normalsize% The output was obtained with the following command line: \begin{center} \begin{verbatim} snobol4 -b tab4tex.sno r=5 a=l b=y h=y c=n test2.tex \end{verbatim} \end{center} Notice that this time we have used \texttt{a=l} and not \texttt{a=c}, so cells will not be centered but left aligned. \section{Installation} \subsection{GNU/Linux and other {*}nix systems} \begin{enumerate} \item Install \textsf{snobol4} from \url{http://www.snobol4.org}. This is Philip Budne's CSNOBOL implementation. You need a \texttt{c} compiler to compile the interpreter; it's normally a very quick and easy process. \item Make sure \textsf{snobol4} is in your PATH or make a symbolic link. \end{enumerate} You can now run the program as follows: \begin{center} \begin{verbatim} snobol4 -b tab4tex.sno [OPTIONS] output \end{verbatim} \end{center} If you prefer to avoid some typing, write the following line as first line of the program: \begin{center} \begin{verbatim} #!/usr/local/bin/snobol4 -b \end{verbatim} \end{center} Adapt accordingly to your installation, e.g. \begin{center} \begin{verbatim} #!/usr/bin/snobol4 -b \end{verbatim} \end{center} Make the file \textsf{tab4tex.sno} executable, e.g. \texttt{chmod +x tab4tex.sno} Run the program as follows: \texttt{./tab4tex.sno [options] output}\\ If the current directory is in your PATH, you do not need \texttt{./} before the program name. \subsection{Windows} The package offers an executable file compiled with Spitbol (see \url{http://www.snobol4.com}), a powerful commercial Windows version of Snobol. Make a directory and copy all the file provided in the \textsf{bin/windows} directory. There must be one \texttt{exe} file and two \texttt{test{*}} files. Run the programs as follows: \begin{center} \texttt{tab4tex [options] output}\\ \end{center} \subsection{Windows from source} Basically, follow the same directions given about GNU/Linux, but make sure to use the \texttt{bat} files and to install the Windows version of the interpreter. Before using the sources, that are in Unix format, use a script to translate from Unix to Dos-Windows format. If you do not have such a script, open the files with a text editor and save the sources in Windows-Dos format. This can be done reading and saving each file with the DOS \textsf{edit} program, with \textsf{vim} or any other editor able to deal with different file formats. \subsection{Cygwin} I suggest to follow the same directions given for GNU/Linux, but the EXE files provided for native Windows can be used anyway if preferred. \subsection{Macintosh} Not yet tested (I do not have a Mac right now). It's in the TODO list. \section{Test files} Please test the program on \textsf{test1.txt} and \textsf{test2.txt}. \section{Reference} \begin{tabular}{ll} \multicolumn{2}{l}{OPTIONS} \\ a & align (center,left,right) \\ b & vertical bar (y/n) \\ c & complete LaTeX document (y/n) \\ h & hline (y/n) \\ r & rows \\ \end{tabular} \noindent{}\begin{tabular}{lll} \multicolumn{3}{l}{FORMATTING CODES} \\ *cell* & produces \textbf{cell} & bold \\ !cell! & produces \emph{cell} & italics \\ \^{}cell\^{} & produces \textsc{cell} & small caps \\ \end{tabular} \section{Bugs and TODO} List of features that I would like to add: \begin{enumerate} \item Escape sequences for \textsf{} and formatting codes (\textsf{!*\^{}}). \item Better support for multicol \item Use of tabularx and longtab \item Some more formatting aids. \end{enumerate} \section{Acknowledgements} My warmest thanks to \textsc{Phil Budne} (\url{phil@ultimate.com}) for making his excellent CSNOBOL available. Many thanks to the community of Snobol users, particularly to the members of the Yahoo Snobol group \url{http://tech.groups.yahoo.com/group/snobol}, and, among them, to \textsc{Gordon Peterson} (\url{http://personal.terabites.com/}), \textsc{Michael Radow} (\url{mikeradow@yahoo.com}), \textsc{Gregory L. White} (\url{glwhite@netconnect.com.au}) and to \textsc{Rafal M. Sulejman} (\url{rafal@engelsinfo.de}) whose \textsf{vim} syntax files are a daily blessing. \section{Author, copyright, license, disclaimer} This program is Copyright \copyright{} 2007\\ Guido Milanese <\url{guido.milanese@unicatt.it}>\\ under the terms of the GNU General Public License.\\ \footnotesize{} \begin{verbatim} This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. If you do not have a copy of the GNU General Public License write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. If the author of this software was too lazy to include the full GPL text along with the code, you can find it at: http://www.gnu.org/copyleft/gpl.html. \end{verbatim} \normalsize{} \end{document}