#!/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