md2tex/mkparallel.sh

180 lines
4.0 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 tex in $( echo "$INFILES" | grep '.md$' )
do
if [[ -f $WD/$tex ]]
then
# create parent dir if necassary
mkdir -p $(dirname $tex)
$CONVERTER $WD/$tex > $( echo $tex | sed "s/.md/.tex/" )
else
if [[ $tex == *.md ]]
then
echo "$WD/$tex 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}
\begin{document}
"""
TITLE_PAGE="""
%\date{}
%\maketitle
%%%
\begin{titlingpage} %This starts the title page
\begin{center}
% ~
\vspace{2cm} %put the distance you need.
% ~
\begin{HUGE}
\thetitle \\
\end{HUGE}
\vspace{3cm} %put the distance you need.
\begin{large}
\theauthor\\
\end{large}
%\thedate
\begin{figure}[hb]
\centering
% \includegraphics[width=\adinkrawidth]{img/sankofa.jpeg}
\end{figure}
% \vspace{3cm} %put the distance you need.
% \begin{figure}[hb]
% \centering
%% \includegraphics[width=.2\textwidth]{img/ghana_flag.jpeg}
% \end{figure}
\end{center}
\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{AQO}\\
% \texttt{ABA}\\
% \texttt{~\newline AQO\newline ABA\newline}%\\
\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
if [[ $first_lang == "true" ]] ; then
echo '\pagesinclude' "{ $( echo $input | sed 's/.md/.tex/' ) }" >> $PROJECT.tex
first_lang="false"
else
echo "{ $( echo $input | sed 's/.md/.tex/' ) }" >> $PROJECT.tex
echo '\clearpage' >> $PROJECT.tex
fi
else
#is chapter
echo '\chapter' " { $input }" >> $PROJECT.tex
fi
done
IFS=$IFS_OLD
echo "$WRAPPER_END" >> $PROJECT.tex
# CREATE PDF
echo $TMPDIR
$LATEX_ENGINE $PROJECT.tex # 2&> /dev/null
$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