blob: 939b6bfa9f931786401fdc4ea0c9730fbd32028c [file] [log] [blame]
#!/bin/sh
#
# Create a perfbook_html.tex on standard output from a perfbook_flat.tex
# on standard input that converts the special-purpose perfbook-only
# commands into something that latex2html can understand.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, you can access it online at
# http://www.gnu.org/licenses/gpl-2.0.html.
#
# Copyright (C) IBM Corporation, 2011
#
# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
gawk '
/%%HTMLSKIP/ {
print "%%Skipping due to %%HTMLSKIP"
noprint = 1;
}
/%%HTMLNOSKIP/ {
print "%%Done with %%HTMLSKIP"
noprint = 0;
}
/^\\newcommand{/ ||
/^\\renewcommand\\/ ||
/^\\OriginallyPublished{/ ||
/^\\RangeOriginallyPublished{/ ||
/^\\ContributedBy{/ ||
/^\\QContributedBy{/ {
print "%%prep4html.sh%%" $0
printed = 1;
}
/\\textcopyright/ {
print "%%prep4html.sh%%" $0
gsub(/\\textcopyright/, "(c)");
print "%%prep4html.sh%%" $0
}
/^\\QuickQuizChapter{/ {
print "%%prep4html.sh%%" $0
l = $0;
quickquizctr = 0;
split(l,a,/{/);
curchplabel = a[2];
sub(/}/,"",curchplabel);
curchpname = a[3];
sub(/}/,"",curchpname);
print "\\chapter{" curchpname "}"
print "\\label{" curchplabel "}"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\QuickQuiz{/ {
quickquizctr++;
print "%%prep4html.sh%% " $0
print "\\textbf{Quick Quiz \\thechapter" quickquizctr ":}"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\QuickQuizAnswer{/ {
print "%%prep4html.sh%% " $0
print "\\textbf{End Quick Quiz}"
/* Let it print the original to eat the answer. */
noprint = 1;
}
/^} \\QuickQuizEnd/ {
printed = 1;
noprint = 0;
}
/^\\QuickQuizAnswers/ {
print "%%prep4html.sh%% " $0
print "\\chapter{Answers to Quick Quizzes}"
print "\\label{chp:Answers to Quick Quizzes}"
print "~ \\\\"
print "\\input{qqz_html}"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\QuickQAC{/ {
print "%%prep4html.sh%% " $0
l = $0;
quickquizctr = 0;
split(l,a,/{/);
curchplabel = a[2];
sub(/}/,"",curchplabel);
curchpref = "\\ref{" curchplabel "}"
curchpname = a[3];
sub(/}/,"",curchpname);
print "\\section{Chapter~" curchpref "}"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\QuickQ{/ {
quickquizctr++;
print "%%prep4html.sh%% " $0
print "\\textbf{Quick Quiz " curchpref "." quickquizctr ":} ~ \\\\ "
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\QuickA{/ {
print "%%prep4html.sh%% " $0
print "\\\\ ~ \\\\ \\textbf{Answer:} \\\\"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\ListOriginalPublications/ {
print "%%prep4html.sh%% " $0
print "\\begin{enumerate}"
print "\\input{origpub_html}"
print "\\end{enumerate}"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\OrigPubItem{/ {
print "%%prep4html.sh%%" $0
l = $0;
split(l,a,/{/);
itemlevel = a[2];
sub(/}/,"",itemlevel);
itemlabel = a[3];
sub(/}/,"",itemlabel);
itemname = a[4];
sub(/}/,"",itemname);
itempub = a[5];
sub(/}/,"",itempub);
itemcite = a[6];
sub(/}/,"",itemcite);
print "\\item\t" itemlevel "~\\ref{" itemlabel "}"
print "\t(``" itemname "'"''"')"
print "\ton page~\\pageref{" itemlabel "}"
print "\toriginally appeared in " itempub "~\\cite{" itemcite "}."
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\RangeOrigPub{/ {
print "%%prep4html.sh%%" $0
l = $0;
split(l,a,/{/);
itemlevel = a[2];
sub(/}/,"",itemlevel);
itemlabel1 = a[3];
sub(/}/,"",itemlabel1);
itemlabel2 = a[4];
sub(/}/,"",itemlabel2);
itemname = a[5];
sub(/}/,"",itemname);
itempub = a[6];
sub(/}/,"",itempub);
itemcite = a[7];
sub(/}/,"",itemcite);
print "\\item\t" itemlevel "~\\ref{" itemlabel1 "}---\\ref{" itemlabel2 "}"
print "\t(``" itemname "'"''"')"
print "\ton pages~\\pageref{" itemlabel "}---\\pageref{" itemlabel2 "}"
print "\toriginally appeared in " itempub "~\\cite{" itemcite "}."
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\ListContributions/ {
print "%%prep4html.sh%% " $0
print "\\begin{enumerate}"
print "\\input{contrib_html}"
print "\\end{enumerate}"
print "%%prep4html.sh%% " $0
printed = 1;
}
/^\\ContribItem{/ {
print "%%prep4html.sh%%" $0
l = $0;
split(l,a,/{/);
itemlevel = a[2];
sub(/}/,"",itemlevel);
itemlabel = a[3];
sub(/}/,"",itemlabel);
itemartist = a[4];
sub(/}/,"",itemartist);
print "\\item\t" itemlevel "~\\ref{" itemlabel "}"
print "\t(p~\\pageref{" itemlabel "})"
print "\tby " itemartist "."
print "%%prep4html.sh%% " $0
printed = 1;
}
{
if (printed || noprint)
printed = 0;
else
print;
}'