From 1b0d5db39570834bfe67c90c992df84ef6dd8d6b Mon Sep 17 00:00:00 2001 From: h7x4 Date: Tue, 8 Feb 2022 12:02:51 +0100 Subject: [PATCH] Automate main document creation --- .gitignore | 3 +- Makefile | 24 ++++++ main.tex | 25 ------ python/createDoc.py | 55 +++++++++++++ toTex.py => python/toTex.py | 2 +- tex/common/frontPageNx.tex | 31 ------- tex/{n1.tex => doc.tex.template} | 15 ++-- tex/frontpage.tex | 82 +++++++++++++++++++ tex/main.tex | 24 ------ tex/n2.tex | 0 tex/n3.tex | 0 tex/n4.tex | 0 tex/n5.tex | 0 .../wrapper.tex => wrapper.tex.template} | 0 14 files changed, 174 insertions(+), 87 deletions(-) create mode 100644 Makefile delete mode 100644 main.tex create mode 100644 python/createDoc.py rename toTex.py => python/toTex.py (95%) delete mode 100644 tex/common/frontPageNx.tex rename tex/{n1.tex => doc.tex.template} (65%) create mode 100644 tex/frontpage.tex delete mode 100644 tex/main.tex delete mode 100644 tex/n2.tex delete mode 100644 tex/n3.tex delete mode 100644 tex/n4.tex delete mode 100644 tex/n5.tex rename tex/{common/wrapper.tex => wrapper.tex.template} (100%) diff --git a/.gitignore b/.gitignore index d53d46d..f730eb9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ -data/tex +build +pdf # TODO: fix diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d981b42 --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ + +build: + mkdir build + mkdir build/texdata + +pdf: + mkdir pdf + +build/nx.tex: build + python python/toTex.py + + +tex/nx.tex: build/nx.tex + python python/createDoc.py + +main.pdf: tex/nx.tex pdf + cd build; xelatex main.tex + mv build/*.pdf pdf + +nx.pdf: tex/nx.tex pdf + cd build; for n in 5 4 3 2 1; do \ + xelatex ../tex/$$n.tex; \ + done + mv build/*.pdf pdf diff --git a/main.tex b/main.tex deleted file mode 100644 index 5ec3742..0000000 --- a/main.tex +++ /dev/null @@ -1,25 +0,0 @@ -% !TeX program = xelatex -\documentclass[a5paper, twoside]{article} - -\usepackage{xeCJK} -\usepackage{adjustbox} -\usepackage{graphicx} -\usepackage{tabu} -\usepackage{longtable} -\usepackage{makecell} -\usepackage[bindingoffset=0.5in]{geometry} - -\setCJKmainfont{Noto Sans CJK JP} - -\begin{document} - \renewcommand{\arraystretch}{2} - \input{tex/n5.tex} - \newline{} - \input{tex/n4.tex} - \newline{} - \input{tex/n3.tex} - \newline{} - \input{tex/n2.tex} - \newline{} - \input{tex/n1.tex} -\end{document} \ No newline at end of file diff --git a/python/createDoc.py b/python/createDoc.py new file mode 100644 index 0000000..4226913 --- /dev/null +++ b/python/createDoc.py @@ -0,0 +1,55 @@ + +def inject_into_template( + output_file, + string, + template='tex/doc.tex.template', + replacement_char='###' +): + with open(template) as file: + content = file.read().replace(replacement_char, string) + + with open(output_file, 'w') as file: + file.write(content) + +def generateDoc(filename, items): + if items == '': + itemMap = { + 5: True, + 4: True, + 3: True, + 2: True, + 1: True, + } + else: + itemMap = { + 5: '5' in items, + 4: '4' in items, + 3: '3' in items, + 2: '2' in items, + 1: '1' in items, + } + + innerContent = '\n'.join(f'\\input{{texdata/n{n}.tex}}' for n,v in itemMap.items() if v) + inject_into_template(filename, innerContent) + +if __name__ == "__main__": + + def inner(n): + return f""" + \\NXinnerpage{{{n}}} + \\input{{texdata/n{n}.tex}} + """ + inject_into_template('build/main.tex', f""" + \\fullFrontpage{{}} + {inner(5)} + {inner(4)} + {inner(3)} + {inner(2)} + {inner(1)} + """) + + for n in range(1,6): + inject_into_template(f'build/n{n}.tex', f""" + \\NXfrontpage{{{n}}} + \\input{{texdata/n{n}.tex}} + """) \ No newline at end of file diff --git a/toTex.py b/python/toTex.py similarity index 95% rename from toTex.py rename to python/toTex.py index 88ebc24..d2940c1 100644 --- a/toTex.py +++ b/python/toTex.py @@ -27,7 +27,7 @@ for n in reversed(range(1,6)): return cellText - with open(f'./data/tex/n{n}.tex', 'w') as file: + with open(f'build/texdata/n{n}.tex', 'w') as file: file.write('\\begin{longtabu} to \\textwidth {ll|l}\n') file.write( " \\\\\\hline\n".join(f'{makeMultiCellIfMultipleEntries(row[0])} & {makeMultiCellIfMultipleEntries(row[1])} & {makeMultiCellIfMultipleEntries(row[2], rowtype="e")}' for row in rows) diff --git a/tex/common/frontPageNx.tex b/tex/common/frontPageNx.tex deleted file mode 100644 index d6aafa0..0000000 --- a/tex/common/frontPageNx.tex +++ /dev/null @@ -1,31 +0,0 @@ -\usepackage{fontawesome} -\usepackage{hyperref} -\usepackage[ - type={CC}, - modifier={by}, - version={3.0}, -]{doclicense} - -\newfontfamily\nscjksixty[SizeFeatures={Size=120}]{Noto Sans CJK JP} - -\newcommand{\NXfrontpage}[1]{ - - { - \topskip0pt - \vspace*{\fill} - \begin{center} - { \nscjksixty{ N#1 } } \\ - \vspace*{5mm} - { \Huge 単語帳 } \\ - \vspace*{15mm} - \doclicenseImage \\ - Data made by Jonathan Waller at \url{http://www.tanos.co.uk/jlpt/jlpt#1/} \\ - \vspace*{10mm} - Project at \\ - { \Huge \faicon{github-square} } \url{https://github.com/h7x4abk3g} - \end{center} - \vspace*{\fill} - } - - \newpage{} -} \ No newline at end of file diff --git a/tex/n1.tex b/tex/doc.tex.template similarity index 65% rename from tex/n1.tex rename to tex/doc.tex.template index affc66f..83cafa0 100644 --- a/tex/n1.tex +++ b/tex/doc.tex.template @@ -7,14 +7,19 @@ \usepackage{tabu} \usepackage{longtable} \usepackage{makecell} -\usepackage[bindingoffset=0.5in]{geometry} - -\input{common/frontPageNx.tex} +\usepackage[ + bindingoffset=0.5in, + top=1cm, + bottom=1.5cm, + left=1cm, + right=1cm, +]{geometry} \setCJKmainfont{Noto Sans CJK JP} +\input{../tex/frontpage.tex} + \begin{document} \renewcommand{\arraystretch}{2} - \NXfrontpage{1} - \input{../data/tex/n1.tex} + ### \end{document} \ No newline at end of file diff --git a/tex/frontpage.tex b/tex/frontpage.tex new file mode 100644 index 0000000..daf22a3 --- /dev/null +++ b/tex/frontpage.tex @@ -0,0 +1,82 @@ +\usepackage{fontawesome} +\usepackage{hyperref} +\usepackage[ + type={CC}, + modifier={by}, + version={3.0}, +]{doclicense} + +\newfontfamily\nscjksixty[SizeFeatures={Size=120}]{Noto Sans CJK JP} + +\newcommand{\links}[1]{ + \doclicenseImage \\ + \vspace*{5mm} + Data made by Jonathan Waller at \url{#1} \\ + \vspace*{15mm} + Project at \\ + { \Huge \faicon{github-square} } \url{https://github.com/h7x4abk3g} +} + +\newcommand{\fullFrontpage}{ + + { + \topskip0pt + \vspace*{\fill} + \begin{center} + { \nscjksixty{ JLPT } } \\ + \vspace*{5mm} + { \Huge 単語帳 } \\ + + \end{center} + \vspace*{\fill} + + \newpage{} + + \vspace*{\fill} + \begin{center} + \links{http://www.tanos.co.uk/jlpt/} + \end{center} + \vspace*{\fill} + } + + \newpage{} +} + +\newcommand{\NXfrontpage}[1]{ + + { + \topskip0pt + \vspace*{\fill} + \begin{center} + { \nscjksixty{ N#1 } } \\ + \vspace*{5mm} + { \Huge 単語帳 } \\ + + \end{center} + \vspace*{\fill} + + \newpage{} + + \vspace*{\fill} + \begin{center} + \links{http://www.tanos.co.uk/jlpt/jlpt#1/} + \end{center} + \vspace*{\fill} + } + + \newpage{} +} + +\newcommand{\NXinnerpage}[1]{ + + { + \topskip0pt + \vspace*{\fill} + \begin{center} + { \nscjksixty{ N#1 } } \\ + \end{center} + \vspace*{\fill} + } + + \newpage{} +} \ No newline at end of file diff --git a/tex/main.tex b/tex/main.tex deleted file mode 100644 index 6a75407..0000000 --- a/tex/main.tex +++ /dev/null @@ -1,24 +0,0 @@ -% !TeX program = xelatex -\documentclass[a5paper, twoside]{article} -\usepackage{xeCJK} -\usepackage{adjustbox} -\usepackage{graphicx} -\usepackage{tabu} -\usepackage{longtable} -\usepackage{makecell} -\usepackage[bindingoffset=0.5in]{geometry} - -\setCJKmainfont{Noto Sans CJK JP} - -\begin{document} - \renewcommand{\arraystretch}{2} - \input{tex/n5.tex} - \newline{} - \input{tex/n4.tex} - \newline{} - \input{tex/n3.tex} - \newline{} - \input{tex/n2.tex} - \newline{} - \input{tex/n1.tex} -\end{document} \ No newline at end of file diff --git a/tex/n2.tex b/tex/n2.tex deleted file mode 100644 index e69de29..0000000 diff --git a/tex/n3.tex b/tex/n3.tex deleted file mode 100644 index e69de29..0000000 diff --git a/tex/n4.tex b/tex/n4.tex deleted file mode 100644 index e69de29..0000000 diff --git a/tex/n5.tex b/tex/n5.tex deleted file mode 100644 index e69de29..0000000 diff --git a/tex/common/wrapper.tex b/tex/wrapper.tex.template similarity index 100% rename from tex/common/wrapper.tex rename to tex/wrapper.tex.template