Hello,
how could I build some macros, that make usage of \startbuffer and
\stopbuffer?
Example:
\def\startXXX[#1]{\doSomeMagicSetups{#1}%
\startbuffer[...]}
\def\stopXXX{\stopbuffer
\doSomeSpecialWorkHere}
And then:
\startXXX[some options]
some text
\stopXXX
TIA for any help!
Cheers, Peter
---------------------------------------------------
For those, who are interested, here in detail what I'm trying to do:
I still like the LaTeX listings.sty package very much, but porting it to
ConTeXt would be too much work for me. So why not using a wrapper?
Somewhere in the PATH I put the file createListing.sh:
#!/bin/bash
echo '\documentclass{article}\usepackage{listings}
\lstset{language=C++,tabsize=4}\pagestyle{empty}
\begin{document}\begin{lstlisting}{}' >$1-lst-ltx.tex
cat $1-lst.tmp >>$1-lst-ltx.tex
echo '\end{lstlisting}\end{document}' >>$1-lst-ltx.tex
latex $1-lst-ltx
dvips -E -o $1-lst-ltx.eps $1-lst-ltx
Then the ConTeXt-file:
\starttext
Here is a listing:
\startbuffer[lst]
#include
Peter Münster wrote:
Hello,
how could I build some macros, that make usage of \startbuffer and \stopbuffer? Example: \def\startXXX[#1]{\doSomeMagicSetups{#1}% \startbuffer[...]} \def\stopXXX{\stopbuffer \doSomeSpecialWorkHere} And then: \startXXX[some options] some text \stopXXX
I hope this helps: %%%%%%%%%%%%%%%%%% buf.tex % use colors \setupcolors[state=start] % this defines a new type of buffer called XXX, so that % the commands \startXXX ... \stopXXX, \getXXX and % \typeXXX are now defined \definebuffer[XXX] % two sentinel definitions are placed before and after % the actual buffer content, as fetched by \getXXX \setupbuffer[XXX][before={\beforeXXX},after={\afterXXX}] % Do not call \getXXX directly, but use a special % command to pass options to \beforeXXX and \afterXXX \def\finishXXX{\dosingleempty\dofinishXXX} \def\dofinishXXX[#1]{{\getparameters[XXX][Color=green,#1]\getXXX }} % within the next commans, there is now a set if parameters % starting with \XXX, initialized by the \getparameters % call in the macro above. \def\beforeXXX{\startcolor[\XXXColor]} \def\afterXXX{\stopcolor} % below here is an example \starttext \startXXX Here is some text \stopXXX \finishXXX % defaults to using green text. \finishXXX[Color=blue] % same text, but in blue \stoptext %%%%%%%%%%%%%%%%%%% buf.tex
Peter Münster wrote:
Hello,
how could I build some macros, that make usage of \startbuffer and \stopbuffer? Example: \def\startXXX[#1]{\doSomeMagicSetups{#1}% \startbuffer[...]} \def\stopXXX{\stopbuffer \doSomeSpecialWorkHere} And then: \startXXX[some options] some text \stopXXX
\definebuffer[crap] \setupbuffer[crap][before=\blank\bgroup here we start,after=and here we end\egroup\blank] \starttext \input tufte \startcrap oeps oeps oeps oeps oesp oeps oeps oeps oeps oesp oeps oeps oeps oeps oesp oeps oeps oeps oeps oesp \stopcrap \input tufte \getcrap \input tufte \stoptext wikiable Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Tue, 31 May 2005, Hans Hagen wrote:
\definebuffer[crap]
\setupbuffer[crap][before=\blank\bgroup here we start,after=and here we end\egroup\blank]
[...] Hello Hans and Taco, thank you for your hints, but I think, I did not explain my question well enough... I fact, all I need is to know, how I could write some verbatim text between 2 commands (\startXXX...\stopXXX) into a file, but with my own macros. Here an example in detail: \newcount\LSTnum \newwrite\LSTfile \def\LSTfileprefix{\jobname-LST\LSTnum} \def\startLST[#1]#2\stopLST{% \immediate\openout\LSTfile=\LSTfileprefix.tmp \immediate\write\LSTfile{#2}% Here I seek a solution for verbatim text! \immediate\closeout\LSTfile \immediate\write18{createListing.sh \LSTfileprefix #1}% #1 is for \lstset \externalfigure[\LSTfileprefix] \advance\LSTnum by 1 } and then, the user types only: \startLST[language=C] main() { return 0; } \stopLST It's already possible to do this with some further macros (\finishLST after \stopLST for example), but I prefer only one \start/\stop pair. Greetings, Peter -- http://pmrb.free.fr/contact/
This should help: \def\startLST[#1]% {\def\stopLST{End of #1}% \dostartbuffer[LST][startLST][stopLST]} This is almost the same as: \definebuffer[LST] \def\stopLST{End of LST} Except that it is a little bit more low-level and thereby allows an argument to \startLST. Using a local definition if \stopLST is another trick, to lift the argument to the end of the buffer. A less sophisticated but clearer approach is: \def\startLST[#1]% {\def\LSTArgs{#1}% \dostartbuffer[LST][startLST][stopLST]} \def\stopLST{End of \LSTArgs} Full example: \def\startLST[#1]% {\def\stopLST{End of #1}% \dostartbuffer[LST][startLST][stopLST]} \starttext \startLST[whatever] bla bla \stopLST alb alb \stoptext You'll have to fill in the commands etc. yourself of course. Greetings, Taco Peter Münster wrote:
On Tue, 31 May 2005, Hans Hagen wrote:
\definebuffer[crap]
\setupbuffer[crap][before=\blank\bgroup here we start,after=and here we end\egroup\blank]
[...]
Hello Hans and Taco, thank you for your hints, but I think, I did not explain my question well enough... I fact, all I need is to know, how I could write some verbatim text between 2 commands (\startXXX...\stopXXX) into a file, but with my own macros. Here an example in detail:
\newcount\LSTnum \newwrite\LSTfile \def\LSTfileprefix{\jobname-LST\LSTnum}
\def\startLST[#1]#2\stopLST{% \immediate\openout\LSTfile=\LSTfileprefix.tmp \immediate\write\LSTfile{#2}% Here I seek a solution for verbatim text! \immediate\closeout\LSTfile \immediate\write18{createListing.sh \LSTfileprefix #1}% #1 is for \lstset \externalfigure[\LSTfileprefix] \advance\LSTnum by 1 }
and then, the user types only:
\startLST[language=C] main() { return 0; } \stopLST
It's already possible to do this with some further macros (\finishLST after \stopLST for example), but I prefer only one \start/\stop pair.
Greetings, Peter
I once made the option \usememorybuffers but i'm not sure if it does the same ==== Taco Hoekwater wrote:
This should help:
\def\startLST[#1]% {\def\stopLST{End of #1}% \dostartbuffer[LST][startLST][stopLST]}
This is almost the same as:
\definebuffer[LST] \def\stopLST{End of LST}
Except that it is a little bit more low-level and thereby allows an argument to \startLST. Using a local definition if \stopLST is another trick, to lift the argument to the end of the buffer.
A less sophisticated but clearer approach is:
\def\startLST[#1]% {\def\LSTArgs{#1}% \dostartbuffer[LST][startLST][stopLST]}
\def\stopLST{End of \LSTArgs}
Full example:
\def\startLST[#1]% {\def\stopLST{End of #1}% \dostartbuffer[LST][startLST][stopLST]}
\starttext \startLST[whatever] bla bla \stopLST alb alb \stoptext
You'll have to fill in the commands etc. yourself of course.
Greetings, Taco
Peter Münster wrote:
On Tue, 31 May 2005, Hans Hagen wrote:
\definebuffer[crap]
\setupbuffer[crap][before=\blank\bgroup here we start,after=and here we end\egroup\blank]
[...]
Hello Hans and Taco, thank you for your hints, but I think, I did not explain my question well enough... I fact, all I need is to know, how I could write some verbatim text between 2 commands (\startXXX...\stopXXX) into a file, but with my own macros. Here an example in detail:
\newcount\LSTnum \newwrite\LSTfile \def\LSTfileprefix{\jobname-LST\LSTnum}
\def\startLST[#1]#2\stopLST{% \immediate\openout\LSTfile=\LSTfileprefix.tmp \immediate\write\LSTfile{#2}% Here I seek a solution for verbatim text! \immediate\closeout\LSTfile \immediate\write18{createListing.sh \LSTfileprefix #1}% #1 is for \lstset \externalfigure[\LSTfileprefix] \advance\LSTnum by 1 }
and then, the user types only:
\startLST[language=C] main() { return 0; } \stopLST
It's already possible to do this with some further macros (\finishLST after \stopLST for example), but I prefer only one \start/\stop pair.
Greetings, Peter
_______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context
-- ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Thu, 2 Jun 2005, Taco Hoekwater wrote:
This should help:
\def\startLST[#1]% {\def\stopLST{End of #1}% \dostartbuffer[LST][startLST][stopLST]}
Thank you very very much!! This can be the base for some really nice modules, that I'm going to write. Of course, I'll put them on the wiki! Greeting, Peter -- http://pmrb.free.fr/contact/
participants (3)
-
Hans Hagen
-
Peter Münster
-
Taco Hoekwater