]> git.lyx.org Git - lyx.git/blobdiff - lib/examples/noweb2lyx.lyx
Restore change from OpenOffice to LibreOffice.
[lyx.git] / lib / examples / noweb2lyx.lyx
index 3ff5261cd13e7c027fc49bd50cc9b01f3ad3e403..3bba1fc09efc4fe3913f1ddeba7eee942eb669c7 100644 (file)
@@ -1,6 +1,7 @@
-#This file was created by <kayvan> Sun May  2 15:56:35 1999
-#LyX 1.0 (C) 1995-1999 Matthias Ettrich and the LyX Team
-\lyxformat 2.15
+#LyX 2.0 created this file. For more info see http://www.lyx.org/
+\lyxformat 413
+\begin_document
+\begin_header
 \textclass literate-article
 \begin_preamble
 %
 \def\nwendcode{\endtrivlist \endgroup}
 \let\nwdocspar=\smallbreak
 \end_preamble
+\use_default_options false
+\maintain_unincluded_children false
 \language english
+\language_package default
 \inputencoding default
-\fontscheme default
+\fontencoding global
+\font_roman default
+\font_sans default
+\font_typewriter default
+\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 
-\papersize Default
-\paperpackage a4
-\use_geometry 0
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
 \use_amsmath 0
+\use_esint 0
+\use_mhchem 1
+\use_mathdots 1
+\cite_engine basic
+\use_bibtopic false
+\use_indices false
 \paperorientation portrait
+\suppress_date false
+\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
-\quotes_times 2
 \papercolumns 1
 \papersides 1
 \paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
 
-\layout Title
+\begin_body
 
+\begin_layout Title
 
-\noun on 
+\noun on
 noweb2lyx
-\layout Author
+\end_layout
 
+\begin_layout Author
 Kayvan A.
  Sylvan <kayvan@sylvan.com>
-\layout Date
+\end_layout
 
+\begin_layout Date
 May 6, 1999
-\layout Abstract
+\end_layout
 
+\begin_layout Abstract
 This document describes and implements a perl script for importing noweb
  files into LyX
-\layout Standard
-\pagebreak_bottom 
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset toc
+LatexCommand tableofcontents
+
+\end_inset
 
-\begin_inset LatexCommand \tableofcontents{}
 
-\end_inset 
+\end_layout
 
+\begin_layout Standard
+\begin_inset Newpage newpage
+\end_inset
 
-\layout Section
 
+\end_layout
+
+\begin_layout Section
 Introduction
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 Since version 1.0.1, LyX now supports Literate Programming using 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
 .
  This addition to LyX made it very pleasant to write programs in the literate
  style (like this one).
  In addition to being able to write new literate programs, it would be quite
  useful if old 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  code could be imported into LyX in some fashion.
  That's where this program comes in.
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 The purpose of 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
  is to convert a 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  file to LyX.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<noweb2lyx.in>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 #!@PERL@
-\newline 
+\end_layout
+
+\begin_layout Scrap
 # 
-\newline 
+\end_layout
+
+\begin_layout Scrap
 # Copyright (C) 1999 Kayvan A.
  Sylvan <kayvan@sylvan.com>
-\newline 
-#
-\protected_separator 
-You are free to use and modify this code under the terms of
-\newline 
+\end_layout
+
+\begin_layout Scrap
+# You are free to use and modify this code under the terms of
+\end_layout
+
+\begin_layout Scrap
 # the GNU General Public Licence version 2 or later.
-\newline 
-#
-\newline 
+\end_layout
+
+\begin_layout Scrap
 #
-\protected_separator 
-Written with assistance from:
-\newline 
-# 
-\protected_separator 
- Edmar Wienskoski Jr.
+\end_layout
+
+\begin_layout Scrap
+# Written with assistance from:
+\end_layout
+
+\begin_layout Scrap
+#   Edmar Wienskoski Jr.
  <edmar-w-jr@technologist.com>
-\newline 
-# 
-\protected_separator 
- Amir Karger <karger@post.harvard.edu>
-\newline 
+\end_layout
+
+\begin_layout Scrap
+#   Amir Karger <karger@post.harvard.edu>
+\end_layout
+
+\begin_layout Scrap
 #
-\newline 
-# $Id: noweb2lyx.lyx,v 1.2 2000/11/03 11:21:36 lasgouttes Exp $
-\newline 
+\end_layout
+
+\begin_layout Scrap
+# $Id: noweb2lyx.lyx,v 1.5 2005/07/18 09:42:27 jamatos Exp $
+\end_layout
+
+\begin_layout Scrap
 #
-\newline 
+\end_layout
+
+\begin_layout Scrap
 # NOTE: This file was automatically generated from noweb2lyx.lyx using noweb.
-\newline 
+\end_layout
+
+\begin_layout Scrap
 #
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Setup variables from user supplied args>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Subroutines>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Convert noweb to LyX>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Section
+\end_layout
 
+\begin_layout Section
 The Noweb file defined
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 A 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  file is a collection of documentation and code chunks.
  Documentation chunks simply start with an ``@'' and have no name:
-\layout LyX-Code
+\end_layout
 
+\begin_layout LyX-Code
 @ Here is some documentation.
-\newline 
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+
+\begin_layout Scrap
 We can do arbitrary LaTeX code here.
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 [...
  blah blah blah ...]
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 Code chunks look like this:
-\layout LyX-Code
+\end_layout
+
+\begin_layout LyX-Code
+<
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{}
+\end_layout
+
+\end_inset
+
+<Name of chunk here>
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{}
+\end_layout
+
+\end_inset
+
+>=
+\begin_inset Newline newline
+\end_inset
 
-<<Name of chunk here>>=
-\newline 
 {...
  code for the chunk goes here ...}
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 @ 
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 The ``@'' is a necessary delimiter to end the code chunk.
  The other form that the ``@'' line takes is as follows:
-\layout LyX-Code
+\end_layout
+
+\begin_layout LyX-Code
+<
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{}
+\end_layout
+
+\end_inset
+
+<Name of chunk here>
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
+{}
+\end_layout
+
+\end_inset
+
+>=
+\begin_inset Newline newline
+\end_inset
 
-<<Name of chunk here>>=
-\newline 
 {...
  code for the chunk ...}
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 @ %def identifier1 identifier2
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In the latter form, we are declaring to 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  that this code chunk defines identifier1, identifier2, etc.
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 When first tackling this problem, I spoke with members of the LyX team that
  knew about the literate programming extensions and reLyX (the LaTeX importing
  code).
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 One of the first ideas was to extend the reLyX code to understand the 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  code chunks.
  This proved to be too hard and presents other problems
-\begin_float footnote 
-\layout Standard
+\begin_inset Foot
+status collapsed
 
+\begin_layout Plain Layout
 Not the least of these problems is the fact that << is a quote in French.
-\end_float 
+\end_layout
+
+\end_inset
+
 .
  On the other hand, it turns out that reLyX contains a very useful literal
  quoting mechanism.
  If the input file contains the construct
-\layout LyX-Code
+\end_layout
 
+\begin_layout LyX-Code
 
-\backslash 
+\backslash
 begin{reLyXskip}
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 {...
  LaTeX stuff ...}
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 
-\backslash 
+\backslash
 end{reLyXskip}
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 then reLyX will copy the surrounded code to the output file verbatim.
  Given this, the first part of the translation is easy; we simply have to
  copy the code chunks into an intermediate file that surrounds them with
  
-\family typewriter 
+\family typewriter
 
-\backslash 
+\backslash
 begin{reLyXskip}
-\family default 
+\family default
  and 
-\family typewriter 
+\family typewriter
 
-\backslash 
+\backslash
 end{reLyXskip}
-\family default 
+\family default
 .
-\layout Standard
+\end_layout
 
+\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.
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 There is one final constraint on 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
 .
  We want to be able to run it as a simple pre-processor and post-processor
  from within reLyX.
  We can accomplish this by setting the flags 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[pre_only]]
-\latex default 
- and 
-\latex latex 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+and
+\color none
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[post_only]]
-\latex default 
- before we reach the main conversion code.
-\layout Standard
+\end_layout
+
+\end_inset
+
 
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+before we reach the main conversion code.
+\end_layout
+
+\begin_layout Standard
 With all that preamble out of the way, we now have the basic high-level
  outline for our code:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Convert noweb to LyX>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if (!$post_only) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  <<Transform noweb for reLyX>>
+\end_layout
 
-\protected_separator 
-<<Transform noweb for reLyX>>
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if ((!$pre_only) && (!$post_only)) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  <<Run reLyX on intermediate file>>
+\end_layout
 
-\protected_separator 
-<<Run reLyX on intermediate file>>
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if (!$pre_only) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  <<Fix up LyX file>>
+\end_layout
 
-\protected_separator 
-<<Fix up LyX file>>
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Clean up>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Section
+\end_layout
 
+\begin_layout Section
 Making a file that reLyX can process
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In this section, we present the code that performs the task of creating
  the intermediate file that reLyX can process, using the algorithm that
  we just outlined.
  This algorithm is outlined in the code that follows:
-\layout Scrap
+\end_layout
+
+\begin_layout Scrap
 
+\end_layout
+
+\begin_layout Scrap
 <<Transform noweb for reLyX>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Setup INPUT and OUTPUT>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 inputline: while(<INPUT>)
-\newline 
-{
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+{
+\end_layout
 
-\protected_separator 
-if (/^
-\backslash 
+\begin_layout Scrap
+  if (/^
+\backslash
 s*
-\backslash 
+\backslash
 <
-\backslash 
+\backslash
 <.*
-\backslash 
+\backslash
 >
-\backslash 
+\backslash
 >=/) { # Beginning of a noweb scrap
-\newline 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-<<Read in and output the noweb code chunk>>
-\newline 
+\begin_layout Scrap
+    <<Read in and output the noweb code chunk>>
+\end_layout
 
-\protected_separator 
-
-\protected_separator 
-} elsif (/^@
-\backslash 
+\begin_layout Scrap
+  } elsif (/^@
+\backslash
 s+(.*)/) { # Beginning of a documentation chunk
-\newline 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
-print OUTPUT $1; # We do not need the ``@'' part
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+    print OUTPUT $1; # We do not need the ``@'' part
+\end_layout
 
-\protected_separator 
-} elsif (/
-\backslash 
+\begin_layout Scrap
+  } elsif (/
+\backslash
 [
-\backslash 
+\backslash
 [.+
-\backslash 
+\backslash
 ]
-\backslash 
+\backslash
 ]/) { # noweb quoted code
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+    <<Perform special input quoting of [[var]]>>
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  } else {
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+    print OUTPUT; # Just let the line pass through
+\end_layout
 
-\protected_separator 
-<<Perform special input quoting of [[var]]>>
-\newline 
+\begin_layout Scrap
+  }
+\end_layout
 
-\protected_separator 
-
-\protected_separator 
-} else {
-\newline 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
-print OUTPUT; # Just let the line pass through
-\newline 
-
-\protected_separator 
-
-\protected_separator 
+\begin_layout Scrap
 }
-\newline 
-}
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Close INPUT and OUTPUT>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In the code above, we do some pre-processing of the noweb ``[[...]]'' construct.
  This avoids some problems with reLyX confusing lists composed of ``[[...]]''
  constructs.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Perform special input quoting of [[var]]>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 s/
-\backslash 
+\backslash
 [
-\backslash 
+\backslash
 [.+?
-\backslash 
+\backslash
 ]{2,}/{$&}/g;
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 print OUTPUT;
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 While reading in the 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[INPUT]]
-\latex default 
- file, once we have identified a 
-\noun on 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+file, once we have identified a 
+\noun on
 noweb
-\noun default 
+\noun default
  code chunk, we transform it into a form that is usable by reLyX.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Read in and output the noweb code chunk>>= 
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Save the beginning of the scrap to savedScrap>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Concatenate the rest of the scrap>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<print out the scrap in a reLyXskip block>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 File input and output for the pre-processing step
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
 , we will use 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[INPUT]]
-\latex default 
- and 
-\latex latex 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+and
+\color none
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[OUTPUT]]
-\latex default 
- to read and write files.
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+to read and write files.
  In the code fragment above, we need to read from the input file and write
  to a file that will be later transformed by reLyX.
  If we are being called only to pre-process the input file, then there is
  no need to create a temporary file.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Setup INPUT and OUTPUT>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if ($pre_only) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  &setup_files($input_file, $output_file);
+\end_layout
 
-\protected_separator 
-&setup_files($input_file, $output_file);
-\newline 
+\begin_layout Scrap
 } else {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  $relyx_file = "temp$$";
+\end_layout
 
-\protected_separator 
-$relyx_file = "temp$$";
-\newline 
+\begin_layout Scrap
+  &setup_files($input_file, $relyx_file);
+\end_layout
 
-\protected_separator 
-
-\protected_separator 
-&setup_files($input_file, $relyx_file);
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 This code uses a small perl subroutine, 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[setup_files]]
-\latex default 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
 , which we define below:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Subroutines>>=
-\newline 
-sub setup_files {
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-my($in, $out) = @_;
-\newline 
+\begin_layout Scrap
+sub setup_files {
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  my($in, $out) = @_;
+\end_layout
 
-\protected_separator 
-open(INPUT, "<$in") || die "Can not read $in: $!
-\backslash 
+\begin_layout Scrap
+  open(INPUT, "<$in") || die "Cannot read $in: $!
+\backslash
 n";
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-open(OUTPUT, ">$out") || die "Can not write $out: $!
-\backslash 
+\begin_layout Scrap
+  open(OUTPUT, ">$out") || die "Cannot write $out: $!
+\backslash
 n";
-\newline 
-}
-\newline 
-@ %def setup_files 
-\protected_separator 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+}
+\end_layout
 
-\layout Subsection
+\begin_layout Scrap
+@ %def setup_files   
+\end_layout
 
+\begin_layout Subsection
 Reading in the 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  scrap
-\layout Standard
+\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.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Save the beginning of the scrap to savedScrap>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 $savedScrap = $_;
-\newline 
+\end_layout
+
+\begin_layout Scrap
 $endLine = "";
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Concatenate the rest of the scrap>>=
-\newline 
-scrapline: while (<INPUT>) {
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
+scrapline: while (<INPUT>) {
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-last scrapline if /^@
-\backslash 
+  last scrapline if /^@
+\backslash
 s+/;
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
+  $savedScrap .= $_;
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-$savedScrap .= $_;
-\newline 
 };
-\newline 
-switch: {
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
+switch: {
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-if (/^@
-\backslash 
+  if (/^@
+\backslash
 s+$/) {$savedScrap .= $_; last switch; }
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-
-\protected_separator 
-if (/^@
-\backslash 
+  if (/^@
+\backslash
 s+%def.*$/) {$savedScrap .= $_; last switch; }
-\newline 
-
-\protected_separator 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-if (/^@
-\backslash 
+  if (/^@
+\backslash
 s+(.*)$/) {$savedScrap .= "@
-\backslash 
+\backslash
 n"; $endLine = "$1
-\backslash 
+\backslash
 n"; }
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 }
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 @
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 Printing out the scrap
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 The final piece of the first pass of the conversion is done by this code.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<print out the scrap in a reLyXskip block>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 print OUTPUT "
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 begin{reLyXskip}
-\backslash 
+\backslash
 n";
-\newline 
+\end_layout
+
+\begin_layout Scrap
 print OUTPUT $savedScrap;
-\newline 
+\end_layout
+
+\begin_layout Scrap
 print OUTPUT "
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 end{reLyXskip}
-\backslash 
+\backslash
 n
-\backslash 
+\backslash
 n";
-\newline 
+\end_layout
+
+\begin_layout Scrap
 print OUTPUT "$endLine";
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 Finally, we need to close the 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[INPUT]]
-\latex default 
- and 
-\latex latex 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+and
+\color none
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[OUTPUT]]
-\latex default 
- files.
-\layout Scrap
+\end_layout
 
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+files.
+\end_layout
+
+\begin_layout Scrap
 <<Close INPUT and OUTPUT>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 close(INPUT);
-\newline 
+\end_layout
+
+\begin_layout Scrap
 close(OUTPUT);
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Section
+\end_layout
 
+\begin_layout Section
 Running reLyX
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In this section, we describe and implement the code that runs reLyX on the
  intermediate file 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[relyx_file]]
-\latex default 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
 .
  
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 Selecting the document class
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In order to run reLyX, we need to know the article class of the input document
  (to choose the corresponding literate document layout).
  For this, we need to parse the intermediate file.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Run reLyX on intermediate file>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Parse for document class>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Run reLyX with document class>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 In the code below, you'll see a strange regular expression to search for
  the document class.
  The reason for this kludge is that without it, we can't run 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
  on the 
-\emph on 
+\emph on
 noweb2lyx.nw
-\emph default 
+\emph default
  file that is generated by LyX
-\begin_float footnote 
-\layout Standard
+\begin_inset Foot
+status collapsed
 
+\begin_layout Plain Layout
 reLyX searches for 
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 doc
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 {}
-\latex default 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
 ument
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 {}
-\latex default 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
 class and gets confused, so we have to obfuscate it slightly.
-\end_float 
+\end_layout
+
+\end_inset
+
 .
  With the regular expression as it is, we can actually run 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
  on itself and a produce a quite reasonable LyX file.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Parse for document class>>=
-\newline 
-open(INPUT, "<$relyx_file") ||
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+open(INPUT, "<$relyx_file") ||
+\end_layout
 
-\protected_separator 
-die "Can not read $relyx_file: $!
-\backslash 
+\begin_layout Scrap
+  die "Cannot read $relyx_file: $!
+\backslash
 n";
-\newline 
+\end_layout
+
+\begin_layout Scrap
 $class = "article"; # default if none found
-\newline 
-parse: while(<INPUT>) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+parse: while(<INPUT>) {
+\end_layout
 
-\protected_separator 
-if (/
-\backslash 
+\begin_layout Scrap
+  if (/
+\backslash
 
-\backslash 
+\backslash
 docu[m]entclass{(.*)}/) {
-\newline 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
-
-\protected_separator 
-$class = $1;
-\newline 
-
-\protected_separator 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+    $class = $1;
+\end_layout
 
-\protected_separator 
-last parse;
-\newline 
+\begin_layout Scrap
+    last parse;
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  }
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
 }
-\newline 
-}
-\newline 
+\end_layout
+
+\begin_layout Scrap
 close(INPUT);
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 Running reLyX with the corresponding literate document layout
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 Now that we know what the document class ought to be, we do:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Run reLyX with document class>>= 
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 $doc_class = "literate-" .
  $class;
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 die "reLyX returned non-zero: $!
-\backslash 
+\backslash
 n"
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
+  if (system("reLyX -c $doc_class $relyx_file"));
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-if (system("reLyX -c $doc_class $relyx_file"));
-\newline 
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 reLyX performs the main bulk of the translation work.
  Note that if the ``literate-
-\emph on 
+\emph on
 class
-\emph default 
+\emph default
 '' document layout is not found, then reLyX will fail with an error.
  In that case, you may need to modify your 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  input file to a supported document type.
-\layout Section
+\end_layout
 
+\begin_layout Section
 Fixing the reLyX output
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 We need to perform some post-processing of what reLyX produces in order
  to have the best output for our literate document.
  The outline of the post-processing steps are:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Fix up LyX file>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Setup INPUT and OUTPUT for the final output>>
-\newline 
-line: while(<INPUT>)
-\newline 
-{
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+line: while(<INPUT>)
+\end_layout
 
-\protected_separator 
-<<Fix code chunks in latex layout>>
-\newline 
+\begin_layout Scrap
+{
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  <<Fix code chunks in latex layout>>
+\end_layout
 
-\protected_separator 
-<<Fix [[var]] noweb construct>>
-\newline 
+\begin_layout Scrap
+  <<Fix [[var]] noweb construct>>
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  print OUTPUT; # default
+\end_layout
 
-\protected_separator 
-print OUTPUT; # default
-\newline 
+\begin_layout Scrap
 } 
-\newline 
+\end_layout
+
+\begin_layout Scrap
 <<Close INPUT and OUTPUT>>
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 Note that in the perl code that is contained in the 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[while(<INPUT>)]]
-\latex default 
- loop above, the perl construct 
-\latex latex 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+loop above, the perl construct
+\color none
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[next line]]
-\latex default 
- is sufficient to restart the loop.
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+is sufficient to restart the loop.
  We can use this construct to do some relatively complex parsing of the
  reLyX generated file.
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 File input and output for the post-processing
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 Setting up the 
-\latex latex 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[INPUT]]
-\latex default 
- and 
-\latex latex 
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+and
+\color none
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+
+\begin_inset ERT
+status collapsed
+
+\begin_layout Plain Layout
+
 [[OUTPUT]]
-\latex default 
- is taken care of by this code:
-\layout Scrap
+\end_layout
+
+\end_inset
 
+
+\family default
+\series default
+\shape default
+\size default
+\emph default
+\bar default
+\noun default
+\color inherit
+is taken care of by this code:
+\end_layout
+
+\begin_layout Scrap
 <<Setup INPUT and OUTPUT for the final output>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if ($post_only) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  &setup_files("$input_file", "$output_file");
+\end_layout
 
-\protected_separator 
-&setup_files("$input_file", "$output_file");
-\newline 
+\begin_layout Scrap
 } else {
-\newline 
+\end_layout
+
+\begin_layout Scrap
+  &setup_files("$relyx_file.lyx", "$output_file");
+\end_layout
 
-\protected_separator 
- &setup_files("$relyx_file.lyx", "$output_file");
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 Making sure the code chunks are in the Scrap layout
-\layout Standard
+\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.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Fix code chunks in latex layout>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if (/
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 latex latex/) { # Beginning of some latex code
-\newline 
+\end_layout
 
-\protected_separator 
-
-\protected_separator 
-if (($line = <INPUT>) =~ /^
-\backslash 
+\begin_layout Scrap
+  if (($line = <INPUT>) =~ /^
+\backslash
 s*<</) { # code scrap
-\newline 
-
-\protected_separator 
-
-\protected_separator 
-\protected_separator 
-<<Transform this chunk into layout scrap>>
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-} else {
-\newline 
-
-\protected_separator 
-
-\protected_separator 
+\begin_layout Scrap
+    <<Transform this chunk into layout scrap>>
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  } else {
+\end_layout
 
-\protected_separator 
-# print the 
-\backslash 
+\begin_layout Scrap
+    # print the 
+\backslash
 latex latex line + next line
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+    print OUTPUT "$_$line";
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  }
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  next line;
+\end_layout
 
-\protected_separator 
-print OUTPUT "$_$line";
-\newline 
-
-\protected_separator 
-
-\protected_separator 
+\begin_layout Scrap
 }
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-next line;
-\newline 
-}
-\newline 
+\begin_layout Scrap
 @
-\layout Standard
+\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:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Transform this chunk into layout scrap>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
+
+\end_layout
+
+\begin_layout Scrap
 $savedScrap = "
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 layout Scrap
-\backslash 
+\backslash
 n
-\backslash 
+\backslash
 n$line";
-\newline 
-codeline: while (<INPUT>) {
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-
-\protected_separator 
-$savedScrap .= $_;
-\newline 
+codeline: while (<INPUT>) {
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
+  $savedScrap .= $_;
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-last codeline if /^@
-\backslash 
+  last codeline if /^@
+\backslash
 s+/;
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 };
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 print OUTPUT $savedScrap;
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 <<Slurp up to the end of the latex layout>>
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 @
-\layout Standard
+\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:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Slurp up to the end of the latex layout>>=
-\newline 
-slurp: while (<INPUT>) {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+slurp: while (<INPUT>) {
+\end_layout
 
-\protected_separator 
-last slurp if /
-\backslash 
+\begin_layout Scrap
+  last slurp if /
+\backslash
 
-\backslash 
+\backslash
 latex /;
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  next slurp if /
+\backslash
 
-\protected_separator 
-next slurp if /
-\backslash 
-
-\backslash 
+\backslash
 newline/;
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-next slurp if /^
-\backslash 
+\begin_layout Scrap
+  next slurp if /^
+\backslash
 s*$/;
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  warn "confused by line: $_";
+\end_layout
 
-\protected_separator 
-warn "confused by line: $_";
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Subsection
+\end_layout
 
+\begin_layout Subsection
 Taking care of the 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  
-\emph on 
+\emph on
 [[quoted code]]
-\emph default 
+\emph default
  construct
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  allows the user to use a special code quoting mechanism in documentation
  chunks.
  Fixing this ``[[quoted-code]]'' 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  syntax means putting the ``[[quoted-code]]'' in a LaTeX layout in the LyX
  file.
  Otherwise, LyX will backslash-quote the brackets, creating ugly output.
  The quoted-code is transformed by 
-\noun on 
+\noun on
 noweb
-\noun default 
+\noun default
  when it generates the final LaTeX code.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Fix [[var]] noweb construct>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 if (/
-\backslash 
+\backslash
 [
-\backslash 
+\backslash
 [.+
-\backslash 
+\backslash
 ]
-\backslash 
+\backslash
 ]/) { # special code for [[var]]
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-s/
-\backslash 
+\begin_layout Scrap
+  s/
+\backslash
 [
-\backslash 
+\backslash
 [.+?
-\backslash 
+\backslash
 ]{2,}/
-\backslash 
+\backslash
 n
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 latex latex
-\backslash 
+\backslash
 n$&
-\backslash 
+\backslash
 n
-\backslash 
+\backslash
 
-\backslash 
+\backslash
 latex default
-\backslash 
+\backslash
 n/g;
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-print OUTPUT;
-\newline 
+\begin_layout Scrap
+  print OUTPUT;
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  next line;
+\end_layout
 
-\protected_separator 
-next line;
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Section
+\end_layout
 
+\begin_layout Section
 Cleaning up intermediate files
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 The cleanup code is very simple:
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Clean up>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 system("rm -f $relyx_file*") unless ($post_only || $pre_only);
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Section
+\end_layout
 
+\begin_layout Section
 User supplied arguments
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 The 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
  script understands two arguments, input-file and output-file.
  It is also set up to be used internally by reLyX to pre-process or postprocess
  files in the import pipeline.
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Setup variables from user supplied args>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 &usage() if ($#ARGV < 1); # zero or one argument 
-\newline 
-if ($ARGV[0] eq "-pre") {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+if ($ARGV[0] eq "-pre") {
+\end_layout
 
-\protected_separator 
-&usage unless ($#ARGV == 2);
-\newline 
+\begin_layout Scrap
+  &usage unless ($#ARGV == 2);
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  $input_file = $ARGV[1]; $output_file = $ARGV[2]; $pre_only = 1;
+\end_layout
 
-\protected_separator 
-$input_file = $ARGV[1]; $output_file = $ARGV[2]; $pre_only = 1;
-\newline 
+\begin_layout Scrap
 } elsif ($ARGV[0] eq "-post") {
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-&usage unless ($#ARGV == 2);
-\newline 
+\begin_layout Scrap
+  &usage unless ($#ARGV == 2);
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  $input_file = $ARGV[1]; $output_file = $ARGV[2]; $post_only = 1;
+\end_layout
 
-\protected_separator 
-$input_file = $ARGV[1]; $output_file = $ARGV[2]; $post_only = 1;
-\newline 
+\begin_layout Scrap
 } else {
-\newline 
-
-\protected_separator 
+\end_layout
 
-\protected_separator 
-&usage unless ($#ARGV == 1);
-\newline 
+\begin_layout Scrap
+  &usage unless ($#ARGV == 1);
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  $input_file = $ARGV[0]; $output_file = $ARGV[1];
+\end_layout
 
-\protected_separator 
-$input_file = $ARGV[0];
-\protected_separator 
-$output_file = $ARGV[1];
-\newline 
+\begin_layout Scrap
+  $pre_only = 0; $post_only = 0;
+\end_layout
 
-\protected_separator 
-
-\protected_separator 
-$pre_only = 0; $post_only = 0;
-\newline 
+\begin_layout Scrap
 }
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @ %def input_file output_file pre_only post_only
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<Subroutines>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 sub usage() {
-\newline 
+\end_layout
 
-\protected_separator 
+\begin_layout Scrap
+  print "Usage: noweb2lyx [-pre | -post] input-file output-file
+\end_layout
 
-\protected_separator 
-print "Usage: noweb2lyx [-pre | -post] input-file output-file
-\newline 
+\begin_layout Scrap
+\begin_inset Newline newline
+\end_inset
 
-\newline 
 If -pre is specified, only pre-processes the input-file for reLyX.
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 Similarly, in the case of -post, post-processes reLyX output.
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 In case of bugs, Email Kayvan Sylvan <kayvan
-\backslash 
+\backslash
 @sylvan.com>.
-\backslash 
+\backslash
 n";
-\newline 
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
+  exit;
+\begin_inset Newline newline
+\end_inset
 
-\protected_separator 
-exit;
-\newline 
 }
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 @ %def usage
-\layout Section
+\end_layout
 
+\begin_layout Section
 Generating the 
-\noun on 
+\noun on
 noweb2lyx
-\noun default 
+\noun default
  script
-\layout Standard
+\end_layout
 
+\begin_layout Standard
 The noweb2lyx script can be tangled from LyX if you set 
-\family typewriter 
+\family typewriter
 
-\backslash 
+\backslash
 build_command
-\family default 
+\family default
  to call a generic script that always extracts a scrap named 
-\family typewriter 
+\family typewriter
 build-script
-\family default 
+\family default
  and executes it.
  Here is an example of such a script:
-\layout LyX-Code
+\end_layout
 
+\begin_layout LyX-Code
 #!/bin/sh
-\newline 
+\begin_inset Newline newline
+\end_inset
+
 notangle -Rbuild-script $1 | sh
-\layout Scrap
+\end_layout
 
+\begin_layout Scrap
 <<build-script>>=
-\newline 
+\end_layout
+
+\begin_layout Scrap
 PREFIX=/usr
-\newline 
+\end_layout
+
+\begin_layout Scrap
 notangle -Rnoweb2lyx.in noweb2lyx.nw > noweb2lyx.in
-\newline 
+\end_layout
+
+\begin_layout Scrap
 sed -e "s=@PERL@=$PREFIX/bin/perl=" noweb2lyx.in > noweb2lyx
-\newline 
+\end_layout
+
+\begin_layout Scrap
 chmod +x noweb2lyx
-\newline 
+\end_layout
+
+\begin_layout Scrap
 @
-\layout Section*
-\pagebreak_top 
+\end_layout
+
+\begin_layout Standard
+\begin_inset Newpage newpage
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section*
 Macros
-\layout Standard
+\end_layout
+
+\begin_layout Standard
 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+\begin_inset ERT
+status collapsed
 
-\latex latex 
+\begin_layout Plain Layout
 
-\backslash 
+
+\backslash
 nowebchunks
-\layout Section*
+\end_layout
+
+\end_inset
+
 
+\end_layout
+
+\begin_layout Section*
 Identifiers
-\layout Standard
+\end_layout
+
+\begin_layout Standard
 
+\family roman
+\series medium
+\shape up
+\size normal
+\emph off
+\bar no
+\noun off
+\color none
+\begin_inset ERT
+status collapsed
 
-\latex latex 
+\begin_layout Plain Layout
 
-\backslash 
+
+\backslash
 nowebindex
-\the_end
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document