# Is it possible to separate the input and output of LTXexample such that I can put each in a table cell?

My objective is to create a long tabular list of PSTricks inputs and their corresponding outputs side by side.

The table consists of 3 columns, i.e., Number column, Input column, & Output column. The Number column contains hyperlinks to the source code files. For example: if a reader is interested to draw a figure of torus, he just need search in the table and click the number to open its corresponding source code file.

Shortly speaking, how to separate the input and output of LTXexample? My rough idea is as follows:

1. I just pass in the PSTricks routines to a macro in the Input column.
2. The macro then provides a saved box containing the output.
3. Then I call another macro (like \usebox) to retrieve the saved box and insert it to the Output column.
4. I do step 1-3 for each row. Hyperlink numbers can be easily made using \url (it is not a big problem).
-
Is this a proper tabular you want to put things in or do you really really need input and output to be entirely separable, possibly on different pages, possibly the output after another LTXexample etc.? –  Ulrich Schwarz Dec 12 '10 at 13:40
Thank for commenting. Actually I just need an immediate output handle for each LTXexample call such that I make 3-column rows in a longtable. Each row is composed of LTXexample in the middle column and its corresponding output handle on the most right column. The most left column displays labels of increasing number. It is more than enough. –  xport Dec 12 '10 at 14:13

Maybe a small step in the right direction: instead of producing output, we define two commands \LTXlastexample{in/out}put that still need the width they are to be typeset into. This will require you to output both parts before you issue the next LTXexample, and I've not given much thought to whether it will work beyond my example case, in a spirit of "what could possibly go wrong?"

\documentclass{article}

\usepackage{showexpl}

\makeatletter
\newcommand*\SX@put@x[3]{%
\global\def\LTXlastexampleinput##1{%
\SX@CodeArea{##1}{#3}%
}%
\global\setbox\SX@ResBox\box\SX@ResBox
\global\def\LTXlastexampleoutput##1{%
\SX@ResultArea{##1}{#2}%
}%
}
\makeatother
\begin{document}
\begin{LTXexample}[pos=x]
Hello, world
\end{LTXexample}

\show\LTXlastexampleoutput

\begin{tabular}{|l|l|}
\LTXlastexampleinput{5cm} &  \LTXlastexampleoutput{5cm}
\end{tabular}

\end{document}

-
how can we make two rows or more? –  xport Dec 12 '10 at 14:26
@xport: funny, having an LTXexample of this type in a tabular doesn't appear to work. –  Ulrich Schwarz Dec 14 '10 at 12:17
I got the solution. It is no longer funny. :-) –  xport Dec 16 '10 at 11:30

I wouldn't use a tabular for this. You will have problems with the page breaks. Also it will be difficult to adjust the spaces for the code and the output: sometimes you will probably have a small output but large code lines or the other way round. I would simply put the code and the output side by side with showexpl and use minipage+enumerate or something else to place the numbers.

\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{showexpl}
\usepackage{pst-calendar}
\begin{document}

\begin{enumerate}
\item
\begin{minipage}{\linewidth}
\begin{LTXexample}[varwidth,pos=r,wide]
\psscalebox{0.5}{%
\psCalendar[Jahr=2006,Monat=1]}
\end{LTXexample}
\end{minipage}

\end{enumerate}

\end{document}

-

Since there have been no LaTeX solution, I will post a ConTeXt solution to give some ideas.

The standard way of doing this soft of thing in ConTeXt is buffers. For example:

\startbuffer[example1]
This is a simple metapost example.
\startMPcode
draw fullcircle scaled 5cm ;
\stopMPcode
\stopbuffer

\setupTABLE[col][1][width=0.5\textwidth]
\setupTABLE[col][2][width=0.5\textwidth]

\starttext

\startTABLE
\NC Input                  \NC Output               \NC \NR
\NC \typebuffer[example1]  \NC \getbuffer[example1] \NC \NR
\stopTABLE

\stoptext


If the snippets are already stored in an external file, then another option is:

\startTABLE
\NC \typefile[example1.tex] \NC \externalfigure[example1.tex] \NC \NR
\stopTABLE


When \externalfigure, which is equivalent to \includegraphics in LaTeX, is given a TeX file, it typesets it in a box and includes the result.

-
Thank you. But it will not be usefull for me because I use latex. :-) Your name sounds like Indonesian name. –  xport Dec 14 '10 at 7:34
If this works for you, then it is relatively easy to port these commands to LaTeX. For the first approach, see this thread. For single page images, the second approach is basically equivalent to \input the file in a minipage and scaling the result. –  Aditya Dec 14 '10 at 11:01