]> git.lyx.org Git - lyx.git/blobdiff - lib/examples/noweb2lyx.lyx
Avoid processing multiple times the same paragraph when converting latex arguments.
[lyx.git] / lib / examples / noweb2lyx.lyx
index 8685e994986a73a51571b997d60136079323cc78..c951a89b5b090e47dc32522b0de9cff92590988f 100644 (file)
@@ -1,9 +1,8 @@
-#LyX 1.6.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 345
+#LyX 2.1 created this file. For more info see http://www.lyx.org/
+\lyxformat 474
 \begin_document
 \begin_header
-\use_default_options false
-\textclass literate-article
+\textclass article
 \begin_preamble
 %
 % This relaxes the noweb constraint that chunks are
 \def\nwendcode{\endtrivlist \endgroup}
 \let\nwdocspar=\smallbreak
 \end_preamble
+\use_default_options false
+\begin_modules
+noweb
+\end_modules
+\maintain_unincluded_children false
 \language english
+\language_package default
 \inputencoding default
+\fontencoding global
 \font_roman default
 \font_sans default
 \font_typewriter default
+\font_math auto
 \font_default_family default
+\use_non_tex_fonts false
 \font_sc false
 \font_osf false
 \font_sf_scale 100
 \font_tt_scale 100
 \graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
 \paperfontsize default
 \spacing single
 \use_hyperref false
 \papersize default
 \use_geometry false
-\use_amsmath 0
-\use_esint 0
+\use_package amsmath 0
+\use_package amssymb 0
+\use_package cancel 0
+\use_package esint 0
+\use_package mathdots 1
+\use_package mathtools 0
+\use_package mhchem 1
+\use_package stackrel 0
+\use_package stmaryrd 0
+\use_package undertilde 0
 \cite_engine basic
+\cite_engine_type default
+\biblio_style plain
 \use_bibtopic false
+\use_indices false
 \paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
 \secnumdepth 3
 \tocdepth 3
 \paragraph_separation indent
-\defskip medskip
+\paragraph_indentation default
 \quotes_language english
 \papercolumns 1
 \papersides 1
 \paperpagestyle default
 \tracking_changes false
 \output_changes false
-\author ""
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
 \end_header
 
 \begin_body
@@ -119,82 +151,109 @@ noweb
  file to LyX.
 \end_layout
 
-\begin_layout Scrap
-<<noweb2lyx.in>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+noweb2lyx.in
+\end_layout
+
 \end_inset
 
 #!@PERL@
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # 
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # Copyright (C) 1999 Kayvan A.
  Sylvan <kayvan@sylvan.com>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # You are free to use and modify this code under the terms of
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # the GNU General Public Licence version 2 or later.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 #
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # Written with assistance from:
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 #   Edmar Wienskoski Jr.
  <edmar-w-jr@technologist.com>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 #   Amir Karger <karger@post.harvard.edu>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 #
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # $Id: noweb2lyx.lyx,v 1.5 2005/07/18 09:42:27 jamatos Exp $
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 #
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 # NOTE: This file was automatically generated from noweb2lyx.lyx using noweb.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 #
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Setup variables from user supplied args>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Subroutines>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Convert noweb to LyX>>
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Section
@@ -212,17 +271,28 @@ noweb
 
 \begin_layout LyX-Code
 @ Here is some documentation.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
 
 We can do arbitrary LaTeX code here.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 [...
  blah blah blah ...]
 \end_layout
 
+\end_inset
+
+
+\end_layout
+
 \begin_layout Standard
 Code chunks look like this:
 \end_layout
@@ -376,7 +446,7 @@ end{reLyXskip}
 
 \begin_layout Standard
 Once reLyX is done with the input file, the problem is reduced to changing
- the code chunks from LyX's LaTeX layout to the Scrap layout.
+ the code chunks from LyX's LaTeX layout to the Chunk layout.
 \end_layout
 
 \begin_layout Standard
@@ -456,52 +526,72 @@ With all that preamble out of the way, we now have the basic high-level
  outline for our code:
 \end_layout
 
-\begin_layout Scrap
-<<Convert noweb to LyX>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Convert noweb to LyX
+\end_layout
+
 \end_inset
 
 if (!$post_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   <<Transform noweb for reLyX>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 if ((!$pre_only) && (!$post_only)) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   <<Run reLyX on intermediate file>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 if (!$pre_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   <<Fix up LyX file>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Clean up>>
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Section
@@ -515,22 +605,35 @@ In this section, we present the code that performs the task of creating
  This algorithm is outlined in the code that follows:
 \end_layout
 
-\begin_layout Scrap
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\begin_layout Plain Layout
+
 <<Transform noweb for reLyX>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Setup INPUT and OUTPUT>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 inputline: while(<INPUT>)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   if (/^
 \backslash
@@ -542,23 +645,27 @@ s*
 \backslash
 >
 \backslash
->=/) { # Beginning of a noweb scrap
-\begin_inset Newline newline
-\end_inset
+>=/) { # Beginning of a noweb chunk
+\end_layout
+
+\begin_layout Plain Layout
 
     <<Read in and output the noweb code chunk>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   } elsif (/^@
 \backslash
 s+(.*)/) { # Beginning of a documentation chunk
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     print OUTPUT $1; # We do not need the ``@'' part
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   } elsif (/
 \backslash
@@ -569,34 +676,41 @@ s+(.*)/) { # Beginning of a documentation chunk
 ]
 \backslash
 ]/) { # noweb quoted code
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     <<Perform special input quoting of [[var]]>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   } else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     print OUTPUT; # Just let the line pass through
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
+
+<<Close INPUT and OUTPUT>>
+\end_layout
+
+\end_inset
 
-<<Close INPUT and OUTPUT>>
-\begin_inset Newline newline
-\end_inset
 
-@
 \end_layout
 
 \begin_layout Standard
@@ -605,10 +719,16 @@ In the code above, we do some pre-processing of the noweb ``[[...]]'' construct.
  constructs.
 \end_layout
 
-\begin_layout Scrap
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
 <<Perform special input quoting of [[var]]>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 s/
 \backslash
@@ -617,16 +737,23 @@ s/
 [.+?
 \backslash
 ]{2,}/{$&}/g;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 print OUTPUT;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 @
 \end_layout
 
+\end_inset
+
+
+\end_layout
+
 \begin_layout Standard
 While reading in the 
 \family roman
@@ -665,24 +792,37 @@ noweb
  code chunk, we transform it into a form that is usable by reLyX.
 \end_layout
 
-\begin_layout Scrap
-<<Read in and output the noweb code chunk>>= 
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
 
-<<Save the beginning of the scrap to savedScrap>>
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Read in and output the noweb code chunk
+\end_layout
 
-<<Concatenate the rest of the scrap>>
-\begin_inset Newline newline
 \end_inset
 
-<<print out the scrap in a reLyXskip block>>
-\begin_inset Newline newline
+<<Save the beginning of the chunk to savedchunk>>
+\end_layout
+
+\begin_layout Plain Layout
+
+<<Concatenate the rest of the chunk>>
+\end_layout
+
+\begin_layout Plain Layout
+
+<<print out the chunk in a reLyXskip block>>
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Subsection
@@ -762,36 +902,52 @@ to read and write files.
  no need to create a temporary file.
 \end_layout
 
-\begin_layout Scrap
-<<Setup INPUT and OUTPUT>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Setup INPUT and OUTPUT
+\end_layout
+
 \end_inset
 
 if ($pre_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &setup_files($input_file, $output_file);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 } else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   $relyx_file = "temp$$";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &setup_files($input_file, $relyx_file);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Standard
@@ -827,36 +983,52 @@ status collapsed
 , which we define below:
 \end_layout
 
-\begin_layout Scrap
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
 <<Subroutines>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 sub setup_files {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   my($in, $out) = @_;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   open(INPUT, "<$in") || die "Cannot read $in: $!
 \backslash
 n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   open(OUTPUT, ">$out") || die "Cannot write $out: $!
 \backslash
 n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
+\end_layout
+
+\begin_layout Plain Layout
+
+@ %def setup_files
+\end_layout
+
 \end_inset
 
-@ %def setup_files   
+
 \end_layout
 
 \begin_layout Subsection
@@ -864,97 +1036,139 @@ Reading in the
 \noun on
 noweb
 \noun default
- scrap
+ chunk
 \end_layout
 
 \begin_layout Standard
-After we see the beginning of the scrap, we need to read in and save the
- rest of the scrap for output.
+After we see the beginning of the chunk, we need to read in and save the
+ rest of the chunk for output.
 \end_layout
 
-\begin_layout Scrap
-<<Save the beginning of the scrap to savedScrap>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Save the beginning of the chunk to savedchunk
+\end_layout
 
-$savedScrap = $_;
-\begin_inset Newline newline
 \end_inset
 
+$savedchunk = $_;
+\end_layout
+
+\begin_layout Plain Layout
+
 $endLine = "";
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
-\begin_layout Scrap
-<<Concatenate the rest of the scrap>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+\begin_inset ERT
+status open
 
-scrapline: while (<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+<<Concatenate the rest of the chunk>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+chunkline: while (<INPUT>) {
+\end_layout
+
+\begin_layout Plain Layout
 
 last scrapline if /^@
last chunkline if /^@
 \backslash
 s+/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
 
-  $savedScrap .= $_;
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+ $savedchunk .= $_;
+\end_layout
+
+\begin_layout Plain Layout
 
 };
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 switch: {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 if (/^@
+ if (/^@
 \backslash
-s+$/) {$savedScrap .= $_; last switch; }
-\begin_inset Newline newline
-\end_inset
+s+$/) {$savedchunk .= $_; last switch; }
+\end_layout
 
-  if (/^@
+\begin_layout Plain Layout
+
+ if (/^@
 \backslash
-s+%def.*$/) {$savedScrap .= $_; last switch; }
-\begin_inset Newline newline
-\end_inset
+s+%def.*$/) {$savedchunk .= $_; last switch; }
+\end_layout
+
+\begin_layout Plain Layout
 
 if (/^@
+ if (/^@
 \backslash
-s+(.*)$/) {$savedScrap .= "@
+s+(.*)$/) {$savedchunk .= "@
 \backslash
 n"; $endLine = "$1
 \backslash
 n"; }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 @
 \end_layout
 
+\end_inset
+
+
+\end_layout
+
 \begin_layout Subsection
-Printing out the scrap
+Printing out the chunk
 \end_layout
 
 \begin_layout Standard
 The final piece of the first pass of the conversion is done by this code.
 \end_layout
 
-\begin_layout Scrap
-<<print out the scrap in a reLyXskip block>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+print out the chunk in a reLyXskip block
+\end_layout
+
 \end_inset
 
 print OUTPUT "
@@ -964,12 +1178,14 @@ print OUTPUT "
 begin{reLyXskip}
 \backslash
 n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
 
-print OUTPUT $savedScrap;
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+print OUTPUT $savedchunk;
+\end_layout
+
+\begin_layout Plain Layout
 
 print OUTPUT "
 \backslash
@@ -980,14 +1196,16 @@ end{reLyXskip}
 n
 \backslash
 n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 print OUTPUT "$endLine";
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Standard
@@ -1055,24 +1273,36 @@ status collapsed
 files.
 \end_layout
 
-\begin_layout Scrap
-<<Close INPUT and OUTPUT>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
 
-close(INPUT);
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
 
-close(OUTPUT);
-\begin_inset Newline newline
-\end_inset
+\begin_inset Argument 1
+status open
 
-@
+\begin_layout Plain Layout
+Close INPUT and OUTPUT
 \end_layout
 
-\begin_layout Section
-Running reLyX
+\end_inset
+
+close(INPUT);
+\end_layout
+
+\begin_layout Plain Layout
+
+close(OUTPUT);
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Running reLyX
 \end_layout
 
 \begin_layout Standard
@@ -1120,20 +1350,32 @@ In order to run reLyX, we need to know the article class of the input document
  For this, we need to parse the intermediate file.
 \end_layout
 
-\begin_layout Scrap
-<<Run reLyX on intermediate file>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Run reLyX on intermediate file
+\end_layout
+
 \end_inset
 
 <<Parse for document class>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Run reLyX with document class>>
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Standard
@@ -1227,58 +1469,78 @@ noweb2lyx
  on itself and a produce a quite reasonable LyX file.
 \end_layout
 
-\begin_layout Scrap
-<<Parse for document class>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Parse for document class
+\end_layout
+
 \end_inset
 
 open(INPUT, "<$relyx_file") ||
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   die "Cannot read $relyx_file: $!
 \backslash
 n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 $class = "article"; # default if none found
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 parse: while(<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   if (/
 \backslash
 
 \backslash
 docu[m]entclass{(.*)}/) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     $class = $1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     last parse;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 close(INPUT);
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Subsection
@@ -1289,29 +1551,43 @@ Running reLyX with the corresponding literate document layout
 Now that we know what the document class ought to be, we do:
 \end_layout
 
-\begin_layout Scrap
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
 <<Run reLyX with document class>>= 
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 $doc_class = "literate-" .
  $class;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 die "reLyX returned non-zero: $!
 \backslash
 n"
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   if (system("reLyX -c $doc_class $relyx_file"));
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 @
 \end_layout
 
+\end_inset
+
+
+\end_layout
+
 \begin_layout Standard
 reLyX performs the main bulk of the translation work.
  Note that if the ``literate-
@@ -1336,44 +1612,62 @@ We need to perform some post-processing of what reLyX produces in order
  The outline of the post-processing steps are:
 \end_layout
 
-\begin_layout Scrap
-<<Fix up LyX file>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Fix up LyX file
+\end_layout
+
 \end_inset
 
 <<Setup INPUT and OUTPUT for the final output>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 line: while(<INPUT>)
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   <<Fix code chunks in latex layout>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   <<Fix [[var]] noweb construct>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   print OUTPUT; # default
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 } 
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Close INPUT and OUTPUT>>
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Standard
@@ -1512,46 +1806,71 @@ status collapsed
 is taken care of by this code:
 \end_layout
 
-\begin_layout Scrap
-<<Setup INPUT and OUTPUT for the final output>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Setup INPUT and OUTPUT for the final output
+\end_layout
+
 \end_inset
 
 if ($post_only) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &setup_files("$input_file", "$output_file");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 } else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &setup_files("$relyx_file.lyx", "$output_file");
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Subsection
-Making sure the code chunks are in the Scrap layout
+Making sure the code chunks are in the Chunk layout
 \end_layout
 
 \begin_layout Standard
 Now, as we outlined before, the final step is transforming the code-chunks
- which have been put into a LaTeX layout by LyX into the scrap layout.
+ which have been put into a LaTeX layout by LyX into the Chunk layout.
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Fix code chunks in latex layout
 \end_layout
 
-\begin_layout Scrap
-<<Fix code chunks in latex layout>>=
-\begin_inset Newline newline
 \end_inset
 
 if (/
@@ -1559,144 +1878,191 @@ if (/
 
 \backslash
 latex latex/) { # Beginning of some latex code
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   if (($line = <INPUT>) =~ /^
 \backslash
-s*<</) { # code scrap
-\begin_inset Newline newline
-\end_inset
+s*<</) { # code chunk
+\end_layout
 
-    <<Transform this chunk into layout scrap>>
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+    <<Transform this chunk into layout chunk>>
+\end_layout
+
+\begin_layout Plain Layout
 
   } else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     # print the 
 \backslash
 latex latex line + next line
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
     print OUTPUT "$_$line";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   next line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
+
+}
+\end_layout
+
+\end_inset
 
-}
-\begin_inset Newline newline
-\end_inset
 
-@
 \end_layout
 
 \begin_layout Standard
 When we are sure that we are in a code chunk, we must read in the rest of
- the code chunk and output a scrap layout for it:
+ the code chunk and output a chunk layout for it:
 \end_layout
 
-\begin_layout Scrap
-<<Transform this chunk into layout scrap>>=
-\begin_inset Newline newline
-\end_inset
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
+<<Transform this chunk into layout chunk>>=
+\end_layout
+
+\begin_layout Plain Layout
+
+\end_layout
 
-$savedScrap = "
+\begin_layout Plain Layout
+
+$savedchunk = "
 \backslash
 
 \backslash
-layout Scrap
+layout Chunk
 \backslash
 n
 \backslash
 n$line";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 codeline: while (<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
 
-  $savedScrap .= $_;
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+ $savedchunk .= $_;
+\end_layout
 
-  last codeline if /^@
+\begin_layout Plain Layout
+
+ last codeline if /^@
 \backslash
 s+/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 };
-\begin_inset Newline newline
-\end_inset
+\end_layout
 
-print OUTPUT $savedScrap;
-\begin_inset Newline newline
-\end_inset
+\begin_layout Plain Layout
+
+print OUTPUT $savedchunk;
+\end_layout
+
+\begin_layout Plain Layout
 
 <<Slurp up to the end of the latex layout>>
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 @
 \end_layout
 
+\end_inset
+
+
+\end_layout
+
 \begin_layout Standard
 Okay, now we just need to eat the rest of the latex layout.
  There should only be a few different types of lines for us to match:
 \end_layout
 
-\begin_layout Scrap
-<<Slurp up to the end of the latex layout>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Slurp up to the end of the latex layout
+\end_layout
+
 \end_inset
 
 slurp: while (<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   last slurp if /
 \backslash
 
 \backslash
 latex /;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   next slurp if /
 \backslash
 
 \backslash
 newline/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   next slurp if /^
 \backslash
 s*$/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   warn "confused by line: $_";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Subsection
@@ -1732,9 +2098,19 @@ noweb
  when it generates the final LaTeX code.
 \end_layout
 
-\begin_layout Scrap
-<<Fix [[var]] noweb construct>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Fix [[var]] noweb construct
+\end_layout
+
 \end_inset
 
 if (/
@@ -1746,8 +2122,9 @@ if (/
 ]
 \backslash
 ]/) { # special code for [[var]]
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   s/
 \backslash
 latex default
 \backslash
 n/g;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   print OUTPUT;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   next line;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Section
@@ -1798,16 +2179,27 @@ Cleaning up intermediate files
 The cleanup code is very simple:
 \end_layout
 
-\begin_layout Scrap
-<<Clean up>>=
-\begin_inset Newline newline
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Clean up
+\end_layout
+
 \end_inset
 
 system("rm -f $relyx_file*") unless ($post_only || $pre_only);
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Section
@@ -1824,106 +2216,138 @@ noweb2lyx
  files in the import pipeline.
 \end_layout
 
-\begin_layout Scrap
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
+
 <<Setup variables from user supplied args>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 &usage() if ($#ARGV < 1); # zero or one argument 
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 if ($ARGV[0] eq "-pre") {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &usage unless ($#ARGV == 2);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   $input_file = $ARGV[1]; $output_file = $ARGV[2]; $pre_only = 1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 } elsif ($ARGV[0] eq "-post") {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &usage unless ($#ARGV == 2);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   $input_file = $ARGV[1]; $output_file = $ARGV[2]; $post_only = 1;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 } else {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   &usage unless ($#ARGV == 1);
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   $input_file = $ARGV[0]; $output_file = $ARGV[1];
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   $pre_only = 0; $post_only = 0;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 @ %def input_file output_file pre_only post_only
 \end_layout
 
-\begin_layout Scrap
+\begin_layout Plain Layout
+
 <<Subroutines>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 sub usage() {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   print "Usage: noweb2lyx [-pre | -post] input-file output-file
-\begin_inset Newline newline
-\end_inset
+\end_layout
 
+\begin_layout Plain Layout
 
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 If -pre is specified, only pre-processes the input-file for reLyX.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 Similarly, in the case of -post, post-processes reLyX output.
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 In case of bugs, Email Kayvan Sylvan <kayvan
 \backslash
 @sylvan.com>.
 \backslash
 n";
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
   exit;
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 @ %def usage
 \end_layout
 
+\end_inset
+
+
+\end_layout
+
 \begin_layout Section
 Generating the 
 \noun on
@@ -1939,7 +2363,7 @@ The noweb2lyx script can be tangled from LyX if you set
 \backslash
 build_command
 \family default
- to call a generic script that always extracts a scrap named 
+ to call a generic script that always extracts a chunk named 
 \family typewriter
 build-script
 \family default
@@ -1952,31 +2376,45 @@ build-script
 \begin_inset Newline newline
 \end_inset
 
-notangle -Rbuild-script $1 | sh
+notangle -Rbuild-script $1 | env NOWEB_SOURCE=$1 NOWEB_OUTPUT_DIR=$2 sh
+\end_layout
+
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+build-script
 \end_layout
 
-\begin_layout Scrap
-<<build-script>>=
-\begin_inset Newline newline
 \end_inset
 
 PREFIX=/usr
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 notangle -Rnoweb2lyx.in noweb2lyx.nw > noweb2lyx.in
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 sed -e "s=@PERL@=$PREFIX/bin/perl=" noweb2lyx.in > noweb2lyx
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
 
 chmod +x noweb2lyx
-\begin_inset Newline newline
+\end_layout
+
 \end_inset
 
-@
+
 \end_layout
 
 \begin_layout Standard