File: texi2epub.sh

package info (click to toggle)
r-base 4.5.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 112,924 kB
  • sloc: ansic: 291,338; fortran: 111,889; javascript: 14,798; yacc: 6,154; sh: 5,689; makefile: 5,239; tcl: 4,562; perl: 963; objc: 791; f90: 758; asm: 258; java: 31; sed: 1
file content (57 lines) | stat: -rw-r--r-- 1,782 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh

## Generate EPUB for the R manuals via texi2any --epub (needs texi2any 7
## or later) and post-process results to give valid EPUB according to
## epubcheck, provinding that zip and unzip are available.
## Arguments:
##   maj min texi html
## with maj and min the maj and min components of the tex2any version,
## texi the path to the Texinfo source and html the name of the EPUB
## target.

SED=${SED-sed}
TEXI2ANY=${TEXI2ANY-texi2any}
UNZIPCMD=${UNZIPCMD-unzip}
ZIPCMD=${ZIPCMD-zip}

## Avoid dirname for portability ... really needed?
srcdir=`echo "$0" | ${SED} 's/\/texi2epub.sh//'`

${TEXI2ANY} --epub -I${srcdir} $3 -o $4
if test -n "${UNZIPCMD}" && test -n "${ZIPCMD}"; then
  mv $4 $4.zip
  mkdir $4.dir && cd $4.dir
  ${UNZIPCMD} -q ../$4.zip
  ## Apparenty, for EPUB 3.2 (but not 3.3?) one needs something like
  ##   <meta property="dcterms:modified">2011-01-01T12:00:00Z</meta>
  date=`date +%Y-%m-%dT%TZ`
  ## Should be portable according to
  ## <https://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.html>
  cat >fix1.sed <<-EOF
	/<meta property="dcterms:modified">/d
	s/^\( *\)\(<dc:title>\)/\1<meta property="dcterms:modified">${date}<\/meta>\\
	\1\2/
EOF
  for f in EPUB/*.opf; do
    mv $f $f.tmp
    ${SED} -f fix1.sed $f.tmp > $f
    rm -f $f.tmp
  done
  cat >fix2.sed <<-EOF
	s/\(<table[^>]*\)border="0">/\1border="">/
	s/<td width="/<td style="width: /g
	s/<th width="/<th style="width: /g
	s/\(<dd><a class="index-entry-id" id="index-anova">\)/<dt><\/dt>\1/
EOF
  for f in EPUB/xhtml/*.xhtml; do
    mv $f $f.tmp
    ${SED} -f fix2.sed $f.tmp > $f
    rm -f $f.tmp
  done
  ## Apparently extra fields are not allowed in mimetype.
  ${ZIPCMD} -q -X ../$4 mimetype
  ${ZIPCMD} -q -r ../$4 META-INF EPUB
  cd .. 
  rm -rf $4.dir $4.zip
fi