#LyX 2.1 created this file. For more info see http://www.lyx.org/
-\lyxformat 448
+\lyxformat 474
\begin_document
\begin_header
\textclass article
\use_geometry false
\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 numerical
+\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
file to LyX.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<noweb2lyx.in>>=
+\begin_layout Plain Layout
+noweb2lyx.in
\end_layout
-\begin_layout Chunk
+\end_inset
#!@PERL@
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
#
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# Copyright (C) 1999 Kayvan A.
Sylvan <kayvan@sylvan.com>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# You are free to use and modify this code under the terms of
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# the GNU General Public Licence version 2 or later.
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
#
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# Written with assistance from:
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# Edmar Wienskoski Jr.
<edmar-w-jr@technologist.com>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# Amir Karger <karger@post.harvard.edu>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
#
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# $Id: noweb2lyx.lyx,v 1.5 2005/07/18 09:42:27 jamatos Exp $
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
#
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# NOTE: This file was automatically generated from noweb2lyx.lyx using noweb.
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
#
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Setup variables from user supplied args>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Subroutines>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Convert noweb to LyX>>
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Section
@ Here is some documentation.
\end_layout
-\begin_layout Chunk
-
-\end_layout
+\begin_layout Standard
+\begin_inset ERT
+status open
-\begin_layout Chunk
+\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
outline for our code:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
-<<Convert noweb to LyX>>=
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Convert noweb to LyX
\end_layout
-\begin_layout Chunk
+\end_inset
if (!$post_only) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Transform noweb for reLyX>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
if ((!$pre_only) && (!$post_only)) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Run reLyX on intermediate file>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
if (!$pre_only) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Fix up LyX file>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Clean up>>
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Section
This algorithm is outlined in the code that follows:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Transform noweb for reLyX>>=
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Setup INPUT and OUTPUT>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
inputline: while(<INPUT>)
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
{
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
if (/^
\backslash
>=/) { # Beginning of a noweb chunk
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Read in and output the noweb code chunk>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} elsif (/^@
\backslash
s+(.*)/) { # Beginning of a documentation chunk
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT $1; # We do not need the ``@'' part
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} elsif (/
\backslash
]/) { # noweb quoted code
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Perform special input quoting of [[var]]>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} else {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT; # Just let the line pass through
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Close INPUT and OUTPUT>>
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard
constructs.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
<<Perform special input quoting of [[var]]>>=
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
s/
\backslash
[.+?
\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
code chunk, we transform it into a form that is usable by reLyX.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Read in and output the noweb code chunk>>=
+\begin_layout Plain Layout
+Read in and output the noweb code chunk
\end_layout
-\begin_layout Chunk
+\end_inset
<<Save the beginning of the chunk to savedchunk>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Concatenate the rest of the chunk>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<print out the chunk in a reLyXskip block>>
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Subsection
no need to create a temporary file.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Setup INPUT and OUTPUT>>=
+\begin_layout Plain Layout
+Setup INPUT and OUTPUT
\end_layout
-\begin_layout Chunk
+\end_inset
if ($pre_only) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&setup_files($input_file, $output_file);
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} else {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$relyx_file = "temp$$";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&setup_files($input_file, $relyx_file);
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard
, which we define below:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
<<Subroutines>>=
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
sub setup_files {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
my($in, $out) = @_;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
open(INPUT, "<$in") || die "Cannot read $in: $!
\backslash
n";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
open(OUTPUT, ">$out") || die "Cannot write $out: $!
\backslash
n";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
+
+@ %def setup_files
+\end_layout
+
+\end_inset
+
-@ %def setup_files
\end_layout
\begin_layout Subsection
rest of the chunk for output.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Save the beginning of the chunk to savedchunk>>=
+\begin_layout Plain Layout
+Save the beginning of the chunk to savedchunk
\end_layout
-\begin_layout Chunk
+\end_inset
$savedchunk = $_;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$endLine = "";
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
<<Concatenate the rest of the chunk>>=
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
chunkline: while (<INPUT>) {
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
- last chunkline if /^@
+ last chunkline if /^@
\backslash
s+/;
-\begin_inset Newline newline
-\end_inset
+\end_layout
- $savedchunk .= $_;
-\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
- if (/^@
+\begin_layout Plain Layout
+
+ if (/^@
\backslash
s+$/) {$savedchunk .= $_; last switch; }
-\begin_inset Newline newline
-\end_inset
+\end_layout
- if (/^@
+\begin_layout Plain Layout
+
+ if (/^@
\backslash
s+%def.*$/) {$savedchunk .= $_; last switch; }
-\begin_inset Newline newline
-\end_inset
+\end_layout
+
+\begin_layout Plain Layout
- if (/^@
+ if (/^@
\backslash
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 chunk
\end_layout
The final piece of the first pass of the conversion is done by this code.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<print out the chunk in a reLyXskip block>>=
+\begin_layout Plain Layout
+print out the chunk in a reLyXskip block
\end_layout
-\begin_layout Chunk
+\end_inset
print OUTPUT "
\backslash
n";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT $savedchunk;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT "
\backslash
n";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT "$endLine";
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard
files.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Close INPUT and OUTPUT>>=
+\begin_layout Plain Layout
+Close INPUT and OUTPUT
\end_layout
-\begin_layout Chunk
+\end_inset
close(INPUT);
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
close(OUTPUT);
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Section
For this, we need to parse the intermediate file.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Run reLyX on intermediate file>>=
+\begin_layout Plain Layout
+Run reLyX on intermediate file
\end_layout
-\begin_layout Chunk
+\end_inset
<<Parse for document class>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Run reLyX with document class>>
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard
on itself and a produce a quite reasonable LyX file.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Parse for document class>>=
+\begin_layout Plain Layout
+Parse for document class
\end_layout
-\begin_layout Chunk
+\end_inset
open(INPUT, "<$relyx_file") ||
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
die "Cannot read $relyx_file: $!
\backslash
n";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$class = "article"; # default if none found
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
parse: while(<INPUT>) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
if (/
\backslash
docu[m]entclass{(.*)}/) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$class = $1;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
last parse;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
close(INPUT);
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Subsection
Now that we know what the document class ought to be, we do:
\end_layout
-\begin_layout Chunk
+\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-
The outline of the post-processing steps are:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Fix up LyX file>>=
+\begin_layout Plain Layout
+Fix up LyX file
\end_layout
-\begin_layout Chunk
+\end_inset
<<Setup INPUT and OUTPUT for the final output>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
line: while(<INPUT>)
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
{
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Fix code chunks in latex layout>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Fix [[var]] noweb construct>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT; # default
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Close INPUT and OUTPUT>>
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard
is taken care of by this code:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Setup INPUT and OUTPUT for the final output>>=
+\begin_layout Plain Layout
+Setup INPUT and OUTPUT for the final output
\end_layout
-\begin_layout Chunk
+\end_inset
if ($post_only) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&setup_files("$input_file", "$output_file");
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} else {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&setup_files("$relyx_file.lyx", "$output_file");
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Subsection
which have been put into a LaTeX layout by LyX into the Chunk layout.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Fix code chunks in latex layout>>=
+\begin_layout Plain Layout
+Fix code chunks in latex layout
\end_layout
-\begin_layout Chunk
+\end_inset
if (/
\backslash
latex latex/) { # Beginning of some latex code
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
if (($line = <INPUT>) =~ /^
\backslash
s*<</) { # code chunk
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Transform this chunk into layout chunk>>
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} else {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
# print the
\backslash
latex latex line + next line
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT "$_$line";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
next line;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard
the code chunk and output a chunk layout for it:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
<<Transform this chunk into layout chunk>>=
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$savedchunk = "
\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
- $savedchunk .= $_;
-\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
+
+\begin_layout Plain Layout
print OUTPUT $savedchunk;
-\begin_inset Newline newline
-\end_inset
+\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 Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Slurp up to the end of the latex layout>>=
+\begin_layout Plain Layout
+Slurp up to the end of the latex layout
\end_layout
-\begin_layout Chunk
+\end_inset
slurp: while (<INPUT>) {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
last slurp if /
\backslash
latex /;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
next slurp if /
\backslash
newline/;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
next slurp if /^
\backslash
s*$/;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
warn "confused by line: $_";
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Subsection
when it generates the final LaTeX code.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
-<<Fix [[var]] noweb construct>>=
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
+
+\begin_layout Plain Layout
+Fix [[var]] noweb construct
\end_layout
-\begin_layout Chunk
+\end_inset
if (/
\backslash
]/) { # special code for [[var]]
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
s/
\backslash
n/g;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print OUTPUT;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
next line;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Section
The cleanup code is very simple:
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<Clean up>>=
+\begin_layout Plain Layout
+Clean up
\end_layout
-\begin_layout Chunk
+\end_inset
system("rm -f $relyx_file*") unless ($post_only || $pre_only);
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Section
files in the import pipeline.
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset ERT
+status open
+
+\begin_layout Plain Layout
<<Setup variables from user supplied args>>=
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&usage() if ($#ARGV < 1); # zero or one argument
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
if ($ARGV[0] eq "-pre") {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&usage unless ($#ARGV == 2);
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$input_file = $ARGV[1]; $output_file = $ARGV[2]; $pre_only = 1;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} elsif ($ARGV[0] eq "-post") {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&usage unless ($#ARGV == 2);
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$input_file = $ARGV[1]; $output_file = $ARGV[2]; $post_only = 1;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
} else {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
&usage unless ($#ARGV == 1);
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$input_file = $ARGV[0]; $output_file = $ARGV[1];
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
$pre_only = 0; $post_only = 0;
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
}
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
@ %def input_file output_file pre_only post_only
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
<<Subroutines>>=
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
sub usage() {
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
print "Usage: noweb2lyx [-pre | -post] input-file output-file
\end_layout
-\begin_layout Chunk
+\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
notangle -Rbuild-script $1 | env NOWEB_SOURCE=$1 NOWEB_OUTPUT_DIR=$2 sh
\end_layout
-\begin_layout Chunk
+\begin_layout Standard
+\begin_inset Flex Chunk
+status open
+
+\begin_layout Plain Layout
+
+\begin_inset Argument 1
+status open
-<<build-script>>=
+\begin_layout Plain Layout
+build-script
\end_layout
-\begin_layout Chunk
+\end_inset
PREFIX=/usr
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
notangle -Rnoweb2lyx.in noweb2lyx.nw > noweb2lyx.in
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
sed -e "s=@PERL@=$PREFIX/bin/perl=" noweb2lyx.in > noweb2lyx
\end_layout
-\begin_layout Chunk
+\begin_layout Plain Layout
chmod +x noweb2lyx
\end_layout
-\begin_layout Chunk
+\end_inset
+
-@
\end_layout
\begin_layout Standard