mirror of https://github.com/nealey/Horrors2
A stab at ePub
This commit is contained in:
parent
ccabcc6d28
commit
54e26d66c4
18
Makefile
18
Makefile
|
@ -5,6 +5,10 @@ SUPPORT = chapauth.sty praise.tex
|
|||
STORIES = stories/*.tex
|
||||
ART = art/*
|
||||
|
||||
all: pdf epub
|
||||
pdf: horrors2-book.pdf
|
||||
epub: book.epub
|
||||
|
||||
horrors2-book.pdf: horrors2-book.ps
|
||||
ps2pdf $< $@
|
||||
|
||||
|
@ -18,8 +22,22 @@ horrors2.pdf: horrors2.ltx $(SUPPORT) $(STORIES) $(ART)
|
|||
pdflatex $<
|
||||
pdflatex $<
|
||||
|
||||
horrors2.mdwn: horrors2.ltx $(STORIES)
|
||||
./toxhtml.py > $@
|
||||
|
||||
horrors2.xhtml: horrors2.mdwn head.xhtml foot.xhtml
|
||||
cat head.xhtml > $@
|
||||
markdown $< >> $@
|
||||
cat foot.xhtml >> $@
|
||||
|
||||
book.epub: horrors2.xhtml
|
||||
./mkepub
|
||||
|
||||
|
||||
publish: horrors2.pdf
|
||||
cp horrors2.pdf horrors2.$(shell TZ=UTC date "+%Y-%m-%dT%H:%M:%SZ").pdf
|
||||
|
||||
clean:
|
||||
rm -f *aux *dvi *log
|
||||
rm -f horrors2.xhtml horrors2.mdwn book.epub
|
||||
rm -f epub/art/*
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<container xmlns="urn:oasis:names:tc:opendocument:xmlns:container"
|
||||
version="1.0">
|
||||
<rootfiles>
|
||||
<rootfile full-path="content.opf" media-type="application/oebps-package+xml" />
|
||||
</rootfiles>
|
||||
</container>
|
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE ncx PUBLIC "-//NISO//DTD ncx 2005-1//EN"
|
||||
"http://www.daisy.org/z3986/2005/ncx-2005-1.dtd">
|
||||
|
||||
<ncx version="2005-1" xml:lang="en"
|
||||
xmlns="http://www.daisy.org/z3986/2005/ncx/">
|
||||
|
||||
<head>
|
||||
<!-- The following four metadata items are required for all NCX documents,
|
||||
including those conforming to the relaxed constraints of OPS 2.0 -->
|
||||
|
||||
<meta name="dtb:uid" content="horrors2"/> <!-- same as in .opf -->
|
||||
<meta name="dtb:depth" content="1"/> <!-- 1 or higher -->
|
||||
<meta name="dtb:totalPageCount" content="0"/> <!-- must be 0 -->
|
||||
<meta name="dtb:maxPageNumber" content="0"/> <!-- must be 0 -->
|
||||
</head>
|
||||
|
||||
<docTitle>
|
||||
<text>Horrors 2</text>
|
||||
</docTitle>
|
||||
|
||||
<navMap>
|
||||
<navPoint class="chapter" id="chapter1" playOrder="1">
|
||||
<navLabel><text>Chapter 1</text></navLabel>
|
||||
<content src="book.xhtml"/>
|
||||
</navPoint>
|
||||
</navMap>
|
||||
|
||||
</ncx>
|
|
@ -0,0 +1,2 @@
|
|||
</body>
|
||||
</html>
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC
|
||||
"-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Horrors 2</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body>
|
|
@ -0,0 +1,73 @@
|
|||
#! /bin/sh
|
||||
|
||||
cat horrors2.xhtml > epub/book.xhtml
|
||||
rm -rf epub/art
|
||||
mkdir epub/art
|
||||
cp art/*.png art/*.jpg epub/art
|
||||
cp style.css epub/
|
||||
|
||||
|
||||
|
||||
cd epub
|
||||
echo -n application/epub+zip > mimetype
|
||||
cat >MANIFEST <<EOF
|
||||
mimetype
|
||||
META-INF/container.xml
|
||||
content.opf
|
||||
EOF
|
||||
cat > content.opf <<EOF
|
||||
<?xml version="1.0"?>
|
||||
<package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId">
|
||||
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf">
|
||||
<dc:title>Horrors 2</dc:title>
|
||||
<dc:language>en</dc:language>
|
||||
<dc:identifier id="BookId" opf:scheme="title">Horrors2</dc:identifier>
|
||||
<dc:creator opf:file-as="Something Awful Forums" opf:role="aut">The Something Awful Forums</dc:creator>
|
||||
</metadata>
|
||||
|
||||
<manifest>
|
||||
EOF
|
||||
find . -type f | sed 's#./##' | while read fn; do
|
||||
b=$(basename $fn)
|
||||
id=thing$count
|
||||
count=$(expr $count + 1)
|
||||
case "$b" in
|
||||
META-INF/*|MANIFEST|mimetype|content.opf)
|
||||
continue
|
||||
;;
|
||||
book.xhtml)
|
||||
id=book
|
||||
type=application/xhtml+xml
|
||||
;;
|
||||
*.css)
|
||||
type=image/css
|
||||
;;
|
||||
book.ncx)
|
||||
id=ncx
|
||||
;;
|
||||
*.png)
|
||||
type=image/png
|
||||
;;
|
||||
*.jpg)
|
||||
type=image/jpeg
|
||||
;;
|
||||
*.svg)
|
||||
type=image/svg+xml
|
||||
;;
|
||||
*.otf)
|
||||
type=application/octet-stream
|
||||
;;
|
||||
esac
|
||||
echo "<item id=\"$id\" href=\"$fn\" media-type=\"$type\"/>" >> content.opf
|
||||
echo $fn >> MANIFEST
|
||||
done
|
||||
cat >> content.opf <<EOF
|
||||
</manifest>
|
||||
|
||||
<spine toc="ncx">
|
||||
<itemref idref="book" />
|
||||
</spine>
|
||||
</package>
|
||||
EOF
|
||||
|
||||
xargs zip -Xr9D ../book.epub < MANIFEST
|
|
@ -22,27 +22,27 @@ address book.
|
|||
|
||||
|
||||
|
||||
{\em ABE
|
||||
{\em ABE}
|
||||
|
||||
|
||||
|
||||
CYNTHIA
|
||||
{\em CYNTHIA}
|
||||
|
||||
|
||||
|
||||
MOM
|
||||
{\em MOM}
|
||||
|
||||
|
||||
|
||||
PIZZA HUT
|
||||
{\em PIZZA HUT}
|
||||
|
||||
|
||||
|
||||
DIRECTORIES
|
||||
{\em DIRECTORIES}
|
||||
|
||||
|
||||
|
||||
INFO HOTLINE}
|
||||
{\em INFO HOTLINE}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -128,11 +128,7 @@ Awesome!
|
|||
|
||||
|
||||
{\em But confetti doesn't wear its hair in a blond, barretted
|
||||
ponytail.
|
||||
|
||||
|
||||
|
||||
Good Christ--} (he thought)
|
||||
ponytail. Good Christ--} (he thought)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -180,4 +180,4 @@ Red lights whirled closer. Suddenly, I was sobbing.
|
|||
|
||||
|
||||
|
||||
\illustration{lucifer chikken}{Gun / Warehouse}{art/lucifer_chickken-gun_warehouse.png}
|
||||
\illustration{lucifer chikken}{Gun / Warehouse}{art/lucifer_chikken-gun_warehouse.png}
|
||||
|
|
17
style.css
17
style.css
|
@ -1,3 +1,20 @@
|
|||
@font-face {
|
||||
font-family: "Antykwa Torunska";
|
||||
src: url(AntykwaTorunska-Regular.otf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Antykwa Torunska";
|
||||
font-style: italic;
|
||||
src: url(AntykwaTorunska-Italic.otf);
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Antykwa Torunska";
|
||||
font-weight: bold;
|
||||
src: url(AntykwaTorunska-Bold.otf);
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: 40em;
|
||||
font-family: Antykwa Torunska;
|
||||
|
|
17
toxhtml.py
17
toxhtml.py
|
@ -199,22 +199,5 @@ for l in f:
|
|||
if l.startswith('\\begin{document'):
|
||||
break
|
||||
|
||||
print('''<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC
|
||||
"-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Horrors 2</title>
|
||||
<link rel="stylesheet" href="style.css" type="text/css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
''')
|
||||
|
||||
for l in f:
|
||||
outline(l)
|
||||
|
||||
print('''</body>
|
||||
</html>
|
||||
''')
|
||||
|
|
Loading…
Reference in New Issue