187 lines
4.1 KiB
Bash
Executable File
187 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# CREATE PDF from markdown files
|
|
#
|
|
|
|
#set -x
|
|
set -e
|
|
|
|
if [ $# -eq 1 ]
|
|
then
|
|
CONF=$1
|
|
else
|
|
CONF="parallel.conf"
|
|
fi
|
|
|
|
CONVERTER="md2parallel.sh"
|
|
|
|
if ! [[ -f $CONF ]] ; then echo "$CONF not found! Exiting ..." && exit ; fi
|
|
if ! [[ -f $CONVERTER ]] ; then echo "$CONVERTER not found! Exiting ..." && exit ; fi
|
|
if ! [[ -x $CONVERTER ]] ; then echo "$CONVERTER not executable! Exiting ..." && exit ; fi
|
|
|
|
. $CONF
|
|
# SAVE WORKING DIR
|
|
WD=$PWD
|
|
TMPDIR=$(mktemp -d)
|
|
PATH=$PATH:$WD
|
|
pushd $TMPDIR # > /dev/null
|
|
|
|
# CONVERT MD TO TEX
|
|
for md in $( echo "$INFILES" | grep '.md$' )
|
|
do
|
|
if [[ -f $WD/$md ]]
|
|
then
|
|
# create parent dir if necassary
|
|
md_no_parent=$( echo $md | sed 's@\.\./@@g' )
|
|
mkdir -p $(dirname $md_no_parent)
|
|
tex=$( echo $md_no_parent | sed "s/\.md$/\.tex/" )
|
|
$CONVERTER $WD/$md > $tex
|
|
echo "converted $md to $tex"
|
|
else
|
|
if [[ $md == *.md ]]
|
|
then
|
|
echo "$WD/$md does not exist!!!"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# CREATE WRAPPER
|
|
WRAPPER="""
|
|
\documentclass[twoside,${PAGESIZE}paper]{$DOCCLASS}
|
|
\usepackage[fontsize=${FONTSIZE}pt]{fontsize}
|
|
\usepackage{libertine} % also loads fontspec which is needed for ɔ and ɛ
|
|
%\usepackage{minitoc} % make mini table of content for each chapter
|
|
\usepackage{graphicx} % include graphics
|
|
\usepackage{tcolorbox} % https://en.wikipedia.org/wiki/Colophon_(publishing)
|
|
\usepackage{placeins} % https://tex.stackexchange.com/a/88659/264579
|
|
\usepackage{csquotes} % \enquote
|
|
\usepackage{reledmac} % needed for repedpar
|
|
\usepackage{reledpar} % parallel text
|
|
\firstlinenum*{1000}
|
|
\linenumincrement*{1000}
|
|
\newcommand{\pagesinclude}[2]{
|
|
\begin{pages}
|
|
\begin{Leftside}
|
|
\beginnumbering
|
|
\pstart\input{#1}\pend
|
|
\endnumbering
|
|
\end{Leftside}
|
|
\begin{Rightside}
|
|
\beginnumbering
|
|
\pstart\input{#2}\pend
|
|
\endnumbering
|
|
\end{Rightside}
|
|
\end{pages}
|
|
\Pages
|
|
}
|
|
\title{$TITLE}
|
|
\author{$AUTHOR}
|
|
%\usepackage[showframe]{geometry}
|
|
\begin{document}
|
|
"""
|
|
TITLE_PAGE="""
|
|
\begin{titlingpage} %This starts the title page
|
|
% center textblock on page % https://tex.stackexchange.com/a/378157/264579
|
|
\setlrmarginsandblock{2.5cm}{*}{1}
|
|
\setulmarginsandblock{2.5cm}{*}{1}
|
|
\checkandfixthelayout
|
|
\begin{flushright}
|
|
\hrule width \hsize height 2pt
|
|
\kern 1mm
|
|
\hrule width \hsize
|
|
\vskip 1.5em
|
|
\Huge
|
|
$TITLE\par
|
|
% \vskip 0.5em
|
|
\huge
|
|
$SUBTITLE
|
|
\vskip 2em
|
|
\Large
|
|
$AUTHOR
|
|
\vskip 1.5em
|
|
\hrule width \hsize
|
|
\kern 1mm
|
|
\hrule width \hsize height 2pt
|
|
\vspace*{\fill}
|
|
\LARGE
|
|
$PUBLISHER
|
|
% \vskip 2em
|
|
\end{flushright}
|
|
\end{titlingpage}
|
|
"""
|
|
COLOPHON="""
|
|
\cleardoublepage
|
|
\thispagestyle{empty}
|
|
\begin{vplace}[0.7]
|
|
\begin{centering}
|
|
\begin{huge}
|
|
\thetitle
|
|
\end{huge}
|
|
\\
|
|
\vspace{3cm}
|
|
\begin{LARGE}
|
|
\begin{tcolorbox}[width=.5\textwidth]
|
|
\centering
|
|
\texttt{$PUBLISHER}
|
|
\end{tcolorbox}
|
|
\end{LARGE}
|
|
% \includegraphics[width=.3\textwidth]{img/onipa_logo.png}
|
|
\vspace{2cm}
|
|
\par\noindent\rule{\textwidth}{0.4pt}
|
|
\large { \the\year{} }\\
|
|
$EDITION\\
|
|
\end{centering}
|
|
\end{vplace}
|
|
\clearpage
|
|
"""
|
|
TOC="""
|
|
\cleardoublepage
|
|
\tableofcontents
|
|
"""
|
|
WRAPPER_END="""
|
|
\end{document}
|
|
"""
|
|
|
|
echo "$WRAPPER" > $PROJECT.tex
|
|
echo "$TITLE_PAGE" >> $PROJECT.tex
|
|
echo "$COLOPHON" >> $PROJECT.tex
|
|
echo "$TOC" >> $PROJECT.tex
|
|
# INCLUDE INDIVIDUAL TEX FILE
|
|
first_lang="true"
|
|
IFS_OLD=$IFS
|
|
IFS=$'\n'
|
|
for input in $INFILES
|
|
do
|
|
if [[ $input == *.md ]]
|
|
then
|
|
tex=$( echo $input | sed 's/\.md$/\.tex/' | sed 's@\.\./@@g' )
|
|
if [[ $first_lang == "true" ]] ; then
|
|
echo '\pagesinclude' "{ $tex }" >> $PROJECT.tex
|
|
first_lang="false"
|
|
else
|
|
echo "{ $tex }" >> $PROJECT.tex
|
|
echo '\clearpage' >> $PROJECT.tex
|
|
first_lang="true"
|
|
fi
|
|
else
|
|
#is chapter
|
|
echo '\chapter' " { $input }" >> $PROJECT.tex
|
|
fi
|
|
done
|
|
IFS=$IFS_OLD
|
|
echo "$WRAPPER_END" >> $PROJECT.tex
|
|
|
|
# CREATE PDF
|
|
echo $TMPDIR
|
|
for i in $(seq 1 $COMPILATION_RUNS )
|
|
do
|
|
$LATEX_ENGINE $PROJECT.tex # 2&> /dev/null
|
|
echo ${i}-th compilation finished
|
|
done
|
|
#$LATEX_ENGINE $PROJECT.tex # 2&> /dev/null
|
|
# $LATEX_ENGINE $PROJECT.tex
|
|
popd > /dev/null
|
|
rm -rf $WD/$PROJECT
|
|
cp -r $TMPDIR $WD/$PROJECT/
|
|
echo "File $PROJECT.pdf created at $WD/$PROJECT/"
|
|
rm -rf $TMPDIR
|