package latex import ( "log" "os" "text/template" "git.dekart811.net/icedream/workreportmgr/export/latex/stringutil" "git.dekart811.net/icedream/workreportmgr/project" "github.com/jinzhu/now" "github.com/nicksnyder/go-i18n/i18n" ) const dateFormat = "02.01.2006" // TODO - localize! var exportTemplate = template.Must(template. New("latex_export"). Funcs(template.FuncMap{ "T": i18n.IdentityTfunc, "beginofweek": func(date project.Date) project.Date { return project.Date{Time: now.New(date.Time).BeginningOfWeek()} }, "endofweek": func(date project.Date) project.Date { return project.Date{Time: now.New(date.Time).EndOfWeek()} }, "add": func(a, b int) int { return a + b }, "latexize": stringutil.Latexize, }). Delims("<", ">"). Parse(`% !TeX <- with .TexMarker.Program> program = <.> \documentclass[11pt,a4paper,oneside]{article} \usepackage[left=2cm,right=2cm,top=2cm,bottom=6cm,includeheadfoot]{geometry} \usepackage{csquotes} \usepackage{fancyhdr} \usepackage{fontspec} \usepackage{ifluatex} \usepackage{tabularx} \usepackage{titling} \ifluatex \else \usepackage[utf8]{inputenc} \fi \pagestyle{fancy} \fancyhf{} \setlength{\headheight}{2cm} \newcommand{\department}[1]{\global\def\wrDepartment{#1}} \newcommand{\workreportNumber}[1]{\global\def\wrNumber{#1}} \newcommand{\workreportDateFrom}[1]{\global\def\wrDateFrom{#1}} \newcommand{\workreportDateTo}[1]{\global\def\wrDateTo{#1}} \author{<.Project.Name>} \department{<.Project.Department>} \newcommand{\wrSigningField}[0]{ \begin{tabularx}{\textwidth}{| X | X | X |} \begin{tabularx}{\textwidth}{| X | X |} \hline & & \\[2cm] \hline \end{tabularx} } \fancypagestyle{weeklyreport} { \fancyfoot[C]{\wrSigningField} } \newenvironment{weeklyreport}[3]{ \newpage \thispagestyle{weeklyreport} \fancyhead[R]{ \begin{tabularx}{8cm}{rl} \textbf{}: & \theauthor \\ \textbf{}: & \wrDepartment \\ \textbf{}: & \wrDateFrom~-~\wrDateTo \\ \end{tabularx} } \workreportNumber{#1} \workreportDateFrom{#2} \workreportDateTo{#3} \setcounter{section}{\wrNumber} \setcounter{subsection}{0} \section*{ \wrNumber} \addcontentsline{toc}{section}{ \wrNumber} }{ } \newcommand{\weeklyreporthead}[3]{} \newcommand{\weeklyreportsection}[1]{ \subsection*{#1} } % Includes \input{<.>} \begin{document} \tableofcontents \begin{weeklyreport}{}{}{} \weeklyreportsection{} \begin{itemize} \item <. | latexize> \end{itemize} \weeklyreportsection{} <$week.WorkActivityDetails | latexize> \weeklyreportsection{} \begin{itemize} \item{ <- .Subject | latexize -> <- with .Topics ->: <- if ne $index 0 ->, <- $topic | latexize -> <- end -> <- end -> } \end{itemize} \end{weeklyreport} \end{document} `)) func initTemplate() { log.Println("Initializing template for LaTeX export...") var err error defer func() { if err != nil { log.Fatal("Failed at initializing template.", err) os.Exit(0xFF) } }() }