\documentclass{article} \usepackage{sltables} \author{A.\,Shipunov\footnote{e-mail: \texttt{dactylorhiza at gmail.com}}} \title{\texttt{sltables},\\ the \LaTeX\ modification of R.\,Nilson\footnote{Robert Nilsson, Academic Computing Service, Texas A\&M University, ranhelp@venus.tam.edu, ranhelp@tamvenus}\\ \texttt{S-Tables} macros} \date{} \tolerance=10000 \begin{document} \maketitle \textbf{Note}: Original documentation was reformatted and changed in accordance with the current situation. \section{Documentation} \bigskip \begin{stable} \multicolumn2\bf\hfil Types of Commands\hfil\eltt Start/End|\stpar{2.5in}{\noindent These are the commands for starting and ending the table}\elt Columns Separators|\stpar{2.5in}{\noindent These are used to separate the columns in the tables}\elt Row Separators|\stpar{2.5in}{\noindent These are used to separate the rows}\elt Configuration|\stpar{2.5in}{\noindent These are used to set up the functioning of the tables such as the width of a thick rule, whether the internal rules are thin or thick, etc.}\elt Specials|\stpar{2.5in}{\noindent These include any commands that do not fit into the above categories} \end{stable} \bigskip \begin{stable} \multicolumn3\bf\hfil Start/End\hfil\eltt Command|Arguments|Description\eltt \verb|\begin{stable}|\hfill|none|Start a table\hfill\el \verb|\begin{stableto}|\hfill|width|\stpar{2.5in}{\noindent Start a table with the specified width. The table will be stretched until it is `width' wide}\el \verb|\begin{stablesp}|\hfill|stretch amount|\stpar{2.5in}{\noindent Start a table and stretch it `stretch amount' wider than it would normally be}\elt \stpar{1in}{\noindent\verb|\end{stable}|, \verb|\end{stablesp}|, \verb|\end{stableto}|}\hfill|none|End the table\hfill \end{stable} \bigskip \begin{stable} \multicolumn3\bf\hfil Column Separators\hfil\eltt Command|Arguments|Description\eltt \tt\char'174 \hfill|none|\stpar{2.5in}{\noindent End a column and place a vertical rule of the default width between the columns (do not use this at the end of a line)}\el \verb!\!\tt\char'174 \hfill|none|\stpar{2.5in}{\noindent Same as above but the vertical rule will be suppressed}\el \verb|\vt|\hfill|none|\stpar{2.5in}{\noindent Same as above but the vertical rule will be thin}\el \verb|\vtt|\hfill|none|\stpar{2.5in}{\noindent Same as above but the vertical rule will be thick}\el \verb|\vttt|\hfill|thickness|\stpar{2.5in}{\noindent Same as above but the vertical rule will be `thickness' wide} \end{stable} \bigskip \begin{stable} \multicolumn3\bf\hfil Row Separators\hfil\eltt Command|Arguments|Description\eltt \verb|\el|\hfill|none|\stpar{2.5in}{\noindent End a line and don't put a rule under it. (Do not use this after the last line of the table, use \verb|\endtable|)}\el \verb|\elt|\hfill|none|\stpar{2.5in}{\noindent Same as above except put a thin rule under the line}\el \verb|\eltt|\hfill|none|\stpar{2.5in}{\noindent Same as above except put a thick rule under the line}\el \verb|\elttt|\hfill|thickness|\stpar{2.5in}{\noindent Same as above except put a rule of width `thickness' under the line}\el \verb|\elspec|\hfill|none|\stpar{2.5in}{\noindent This command is used to set up rules under rows that DO NOT span the entire row. It in effect indicates that the next row will specify the rule to be used under the current row. This is especially useful when using with the row spanning commands. This introduces a subclass, the horizontal rule commands}\elt \multicolumn3\hfil Horizonal Rule Command Subset\hfil\elt \verb|\trule|\hfill|none|\stpar{2.5in}{\noindent Places a thin horizontal rule under a column. This command is only for use in conjunction with the \verb|\elspec| command (To leave a column blank, i.e. no rule, just leave it blank)}\el \verb|\ttrule|\hfill|none|\stpar{2.5in}{\noindent Same as above but the rule will be thick}\el \verb|\tttrule|\hfill|thickness|\stpar{2.5in}{\noindent Same as above but the rule will be `thickness' thick} \end{stable} \bigskip You may be wondering what the difference between the \verb|\elt| and the \verb|\trule| command is. The \verb|\elt| will end the line and draw a thin rule under it. The \verb|\trule| works in conjunction with the \verb|\elspec| to generate a special rule. The special rule line is entered the same way a regular row will be entered. For example, a normal row would look like: \begin{verbatim} This|is|a|Test\elt \end{verbatim} This will produce a row with a thin rule under it. To produce the same effect without a rule under the column `is' the following would be used: \begin{verbatim} This|is|a|Test\elspec \trule||\trule|\trule\el \end{verbatim} Notice that the vertical bars are used. The macro is starting a new row and the vertical bars need to be included if you want them to continue through the line. (There is no need to only use the \verb!|!, any other column separator is also valid). \begin{stable} \multicolumn3\bf\hfill Configuration\hfill\eltt Variable|Value|Description\eltt \multicolumn3\hfill Dimensions\hfill\elt \verb|\stablesthinline|\hfill|dimension|\stpar{2.5in}{\noindent This variable contains the width of a thin rule in the table. The default value is 0.4pt and it may be changed with the command: \verb|\stablesthinline=| \noindent where \verb|| is the new width.}\el \verb|\stablesthickline|\hfill|dimension|\stpar{2.5in}{\noindent This variable contains the width of a thick rule in the table. The default value is 1pt and it may be changed as above.}\elt \multicolumn3\hfill Counters\hfill\elt \verb|\stablestyle|\hfill|0|\stpar{2.5in}{\noindent Center the table using the current \verb|\hsize|. This is the default setting and it may be changed by the following command: \verb|\stablestyle=|$n$ \noindent where $n$ is the new value (0, 1, 2, or 3)}\el |1|Left justify the table\hfill\el |2|Right justify the table\hfill\el |3|No justification\hfill \elt\multicolumn3\hfill If Statements\hfill\elt \verb|\ifstablesinternalthin|\hfill|true|\stpar{2.5in}{\noindent Make the internal rules of the table thin. This sets the vertical rule generated by the \textbar. To set the value of this variable the following command must be used: \verb|\stablesinternalthintrue| \noindent Please note the word `if' is removed and the word `true' has been appended to the end. The value after this command will be true. To set it to false append the word `false' instead of `true'.}\el |false|\stpar{2.5in}{\noindent Use thick internal rules (where the \textbar is used)}\elspec |\trule|\trule\el \verb|\ifstablesborderthin|\hfill|true|\stpar{2.5in}{\noindent Use thin rules for the border of the table}\el |false|\stpar{2.5in}{\noindent Use thick rules for the border of the table. This is the default.} \end{stable} \bigskip All settings in the configuration section should be used {\bf OUTSIDE} the table. The results of changing a setting inside the table will be unpredictable, and undesirable. There are two more settings that need to be discussed. First is the element buffering. There are two definitions that are used for this: \verb|\stablesleft| and \verb|\stablesright|. The default settings are as follows: \begin{verbatim} \def\stablesleft{\quad\hfil} \def\stablesright{\hfil\quad} \end{verbatim} To change these, simply redefine them. The other setting is the strut. If you are interested in resetting this, the \TeX book should provide sufficient information (The strut is used to hold up the box). \section{Specials} This section will be broken into three parts: the spanning commands, the paragraph commands, and miscellaneous information. First of all we have two (actually three, but I'll discuss the third later) spanning commands. They are \verb|\multicolumn| and \verb|\multirow|. To use \verb|\multicolumn| to span several columns the command will be: \verb|\multicolumn|$n$ and your data here.\footnote{\textbf{Note}: \texttt{multicolumn} cannon start a new paragraph!} The $n$ specifies the number of columns to span across. For example, if a table has 3 columns and you want a title across the top, $n$ would be 3. Omit each column separator that is spanned across (in this case none would be used). When this command is used the buffering is suspended on the spanning column, so it is necessary to put \verb|\hfil|'s around the data in the spanning column to center it. \verb|\multirow| works slightly differently. The number of rows to span is specified in the same way as the number of columns in the \verb|\multicolumn| macro, but the text to be spanned must be placed in curly braces directly after: \verb|\multirow|$n$\verb|{}| The \verb|| will be vertically centered in the number of spanned rows. The horizontal rules are not automatically omitted under the columns of the rows being spanned. The \verb|\elspec| command must be used to omit these rules. There will be an example at the end of the documentation of this. The paragraph commands are \verb|\stpar| and \verb|\stparrow|. The format for \verb|\stpar| is: \verb|\stpar{}{}| The \verb|| is the width of the paragraph (the \verb|\hsize|) and the \verb|| is the paragraph. \verb|\stparrow| will do the same thing as \verb|\stpar| but it will also perform the function of \verb|\multirow|. It is a composite command and the only way to span a paragraph across multiple rows. The format is: \verb|\stparrow|$n$\verb|{}{}| In this command the $n$ is the number of rows to be spanned and the other material is the same as in the \verb|\stpar| macro. Please note that the rules for spanning multiple rows apply to this macro also (the use of the \verb|\elspec| command). To use both multiple rows and multiple columns, specify the \verb|\multicolumn| command first, then the \verb|\multirow| or \verb|\stparrow|. The last point I would like to make concerns the use of varying width vertical rules. If a thin vertical rule runs into a thick vertical rule there will be an offset. The default for this offset is to the left. There are two ways to change the setting. The first is by using an `r' after any of the \verb|\vt| commands. For example \verb|\vttr| will produce a thick vertical rule right justified on any wider rules. The other method is by using the \verb|\ifstablesright| setting. A true setting will line up all vertical rules generated by the \verb||| on the right. A false setting will make the vertical rules generated by the \verb||| left justified (the default). In all of the specials using a $n$ parameter, if the number to be used is greater than 9, it must be placed in curly braces (\verb|{}|). \newpage \section{Examples} This section will give some example tables and the code to generate them organized from simple to complex. \subsection{Example 1} \begin{verbatim} \begin{stable} Ck\#\vt Date\vt Memo\vt Debit\vt Credit\vt Balance\eltt 245|8--2|Rent|\$ \hfill 250.00||\$ \hfill 436.29\el 246|8--2|Danson Electric|\$ \hfill 49.28||\$ \hfill 387.01\el 247|8--5|Jeff's Grocery|\$ \hfill 35.88||\$ \hfill 351.13\el 248||Void|||\el 249|8--10|Danson Times|\$ \hfill 19.00||\$ \hfill 332.13\el 250|8--14|Pizza Palace|\$ \hfill 9.95||\$ \hfill 322.18\el 251|8--15|Jones Hardware|\$ \hfill 45.20||\$ \hfill 276.98\el 252|8--15|Deposit||\$ \hfill 255.81|\$ \hfill 532.79\el 253|8--21|Account Fee|\$ \hfill .85||\$ \hfill 531.94\el 254|8--29|Telephone Co.|\$ \hfill 21.19||\$ \hfill 510.75 \end{stable} \end{verbatim} \begin{stable} Ck\#\vt Date\vt Memo\vt Debit\vt Credit\vt Balance\eltt 245|8--2|Rent|\$ \hfill 250.00||\$ \hfill 436.29\el 246|8--2|Danson Electric|\$ \hfill 49.28||\$ \hfill 387.01\el 247|8--5|Jeff's Grocery|\$ \hfill 35.88||\$ \hfill 351.13\el 248||Void|||\el 249|8--10|Danson Times|\$ \hfill 19.00||\$ \hfill 332.13\el 250|8--14|Pizza Palace|\$ \hfill 9.95||\$ \hfill 322.18\el 251|8--15|Jones Hardware|\$ \hfill 45.20||\$ \hfill 276.98\el 252|8--15|Deposit||\$ \hfill 255.81|\$ \hfill 532.79\el 253|8--21|Account Fee|\$ \hfill .85||\$ \hfill 531.94\el 254|8--29|Telephone Co.|\$ \hfill 21.19||\$ \hfill 510.75 \end{stable} \subsection{Example 2} \begin{verbatim} \begin{stableto}{5truein} \multicolumn6 \hfill Account Activity for August\hfill\eltt Ck\#\vt Date\vt Memo\vtt Debit\vt Credit\vtt Balance\eltt 245|8--2|Rent\vtt\$ \hfill 250.00|\vtt\$ \hfill 436.29\el 246|8--2|Danson Electric\vtt\$ \hfill 49.28|\vtt\$ \hfill 387.01\el 247|8--5|Jeff's Grocery\vtt\$ \hfill 35.88|\vtt\$ \hfill 351.13\el 248||Void\vtt|\vtt\el 249|8--10|Danson Times\vtt\$ \hfill 19.00|\vtt\$ \hfill 332.13\el 250|8--14|Pizza Palace\vtt\$ \hfill 9.95|\vtt\$ \hfill 322.18\el 251|8--15|Jones Hardware\vtt\$ \hfill 45.20|\vtt\$ \hfill 276.98\el 252|8--15|Deposit\vtt|\$ \hfill 255.81\vtt\$ \hfill 532.79\el 253|8--21|Account Fee\vtt\$ \hfill .85|\vtt\$ \hfill 531.94\el 254|8--29|Telephone Co.\vtt\$ \hfill 21.19|\vtt\$ \hfill 510.75 \end{stableto} \end{verbatim} \begin{stableto}{5truein} \multicolumn6 \hfill Account Activity for August\hfill\eltt Ck\#\vt Date\vt Memo\vtt Debit\vt Credit\vtt Balance\eltt 245|8--2|Rent\vtt\$ \hfill 250.00|\vtt\$ \hfill 436.29\el 246|8--2|Danson Electric\vtt\$ \hfill 49.28|\vtt\$ \hfill 387.01\el 247|8--5|Jeff's Grocery\vtt\$ \hfill 35.88|\vtt\$ \hfill 351.13\el 248||Void\vtt|\vtt\el 249|8--10|Danson Times\vtt\$ \hfill 19.00|\vtt\$ \hfill 332.13\el 250|8--14|Pizza Palace\vtt\$ \hfill 9.95|\vtt\$ \hfill 322.18\el 251|8--15|Jones Hardware\vtt\$ \hfill 45.20|\vtt\$ \hfill 276.98\el 252|8--15|Deposit\vtt|\$ \hfill 255.81\vtt\$ \hfill 532.79\el 253|8--21|Account Fee\vtt\$ \hfill .85|\vtt\$ \hfill 531.94\el 254|8--29|Telephone Co.\vtt\$ \hfill 21.19|\vtt\$ \hfill 510.75 \end{stableto} \subsection{Example 3} \begin{verbatim} \begin{stable} \multirow2{\#}\vt\multirow2{Date}\vt\multirow2{Memo}\vt Debit/Credit\elspec |||\trule\el |||Balance\eltt \multirow2{245}|\multirow2{8--2}|\multirow2{Rent}| \$ \hfill 250.00\elspec |||\trule\el |||\$ \hfill 436.29\elttt{.7pt} \multirow2{246}|\multirow2{8--2}|\multirow2{Danson Electric}| \$ \hfill 49.28\elspec |||\trule\el |||\$ \hfill 387.01\elttt{.7pt} \multirow2{247}|\multirow2{8--5}|\multirow2{Jeff's Grocery}| \$ \hfill 35.88\elspec |||\trule\el |||\$ \hfill 351.13\elttt{.7pt} \multirow2{248}||\multirow2{Void}|\elspec |||\el |||\elttt{.7pt} \multirow2{249}|\multirow2{8--10}|\multirow2{Danson Times}|\$ \hfill 19.00\elspec |||\trule\el |||\$ \hfill 332.13 \end{stable} \end{verbatim} \begin{stable} \multirow2{\#}\vt\multirow2{Date}\vt\multirow2{Memo}\vt Debit/Credit\elspec |||\trule\el |||Balance\eltt \multirow2{245}|\multirow2{8--2}|\multirow2{Rent}| \$ \hfill 250.00\elspec |||\trule\el |||\$ \hfill 436.29\elttt{.7pt} \multirow2{246}|\multirow2{8--2}|\multirow2{Danson Electric}| \$ \hfill 49.28\elspec |||\trule\el |||\$ \hfill 387.01\elttt{.7pt} \multirow2{247}|\multirow2{8--5}|\multirow2{Jeff's Grocery}| \$ \hfill 35.88\elspec |||\trule\el |||\$ \hfill 351.13\elttt{.7pt} \multirow2{248}||\multirow2{Void}|\elspec |||\el |||\elttt{.7pt} \multirow2{249}|\multirow2{8--10}|\multirow2{Danson Times}|\$ \hfill 19.00\elspec |||\trule\el |||\$ \hfill 332.13 \end{stable} \subsection{Example 4} \begin{verbatim} \begin{stable} Account|Ck\#|Debit|Credit|Balance\eltt \stparrow3{2in}{\noindent\strut The Lyons Investment Memorial Student Fund following specifications 11.2.3 of the U.S. Governmental Code CCA1} |123|\$\hfill 1,000.00||\$\hfill 20,000\elspec |\trule|\trule|\trule|\trule\el |124|\$\hfill 200.00||\$\hfill 19,800\elspec |\trule|\trule|\trule|\trule\el |||\$\hfill 4,000.00|\$\hfill 23,800\elttt{.7pt} \multicolumn4\hfil\stpar{4.25in}{At the end of the physical year 1990 the balance in the account for Lyons Investment Memorial Student Fund will be tallied and the results will be published as per Governmental Code 3.4.2 of the last payable week in the session. The value presented here is a projection of the actual that will be available.}\hfil| \$\hfill 25,000 \end{stable} \end{verbatim} \begin{stable} Account|Ck\#|Debit|Credit|Balance\eltt \stparrow3{2in}{\noindent\strut The Lyons Investment Memorial Student Fund following specifications 11.2.3 of the U.S. Governmental Code CCA1} |123|\$\hfill 1,000.00||\$\hfill 20,000\elspec |\trule|\trule|\trule|\trule\el |124|\$\hfill 200.00||\$\hfill 19,800\elspec |\trule|\trule|\trule|\trule\el |||\$\hfill 4,000.00|\$\hfill 23,800\elttt{.7pt} \multicolumn4\hfil\stpar{4.25in}{At the end of the physical year 1990 the balance in the account for Lyons Investment Memorial Student Fund will be tallied and the results will be published as per Governmental Code 3.4.2 of the last payable week in the session. The value presented here is a projection of the actual that will be available.}\hfil| \$\hfill 25,000 \end{stable} \subsection{Example 5, ``table acid test''} \begin{verbatim} \begin{stable} \multirow3{A}|\multicolumn2 \hfill B\hfill\elspec |\trule|\trule\el |\multirow2{C}|D\elspec ||\trule\el ||E \end{stable} \end{verbatim} \begin{stable} \multirow3{A}|\multicolumn2 \hfill B\hfill\elspec |\trule|\trule\el |\multirow2{C}|D\elspec ||\trule\el ||E \end{stable} \end{document}