]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Convert asciidoc files to pretty PDF
authorMatthew Newton <matthew-git@newtoncomputing.co.uk>
Tue, 4 Sep 2018 20:35:14 +0000 (21:35 +0100)
committerMatthew Newton <matthew-git@newtoncomputing.co.uk>
Tue, 4 Sep 2018 20:39:59 +0000 (21:39 +0100)
Needs at least asciidoctor, pandoc and xelatex installed.

Makefile
scripts/asciidoc/freeradius.template [new file with mode: 0644]

index ed1c5cbec4ef198e29a5fde63b88015fa8d83b10..fa3af7c0e9b5485a7beb31502887b0f07cee39d4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -340,10 +340,19 @@ whitespace:
 
 CONF_FILES := $(wildcard raddb/*conf raddb/mods-available/* raddb/sites-available/*)
 ADOC_FILES := $(patsubst raddb/%,asciidoc/%.adoc,$(CONF_FILES))
+PDF_FILES := $(patsubst raddb/%,asciidoc/%.pdf,$(CONF_FILES))
 
 asciidoc/%.adoc: raddb/%
        @echo ADOC $^
        @mkdir -p $(dir $@)
        @./scripts/asciidoc/conf2adoc < $^ > $@
 
+asciidoc/%.pdf: asciidoc/%.adoc
+       @echo PDF $^
+       @asciidoctor $< -b docbook5 -o - | \
+                pandoc -f docbook -t latex --latex-engine=xelatex \
+                       -V papersize=letter \
+                       --template=./scripts/asciidoc/freeradius.template -o $@
+
+.PHONY: asciidoc
 asciidoc: $(ADOC_FILES)
diff --git a/scripts/asciidoc/freeradius.template b/scripts/asciidoc/freeradius.template
new file mode 100644 (file)
index 0000000..70c13df
--- /dev/null
@@ -0,0 +1,366 @@
+%
+%  Based on the default pandoc LaTeX template with style
+%  modifications for FreeRADIUS.
+%
+%  https://github.com/jgm/pandoc-templates
+%
+%  "...the templates in this repository are dual licensed, under both
+%  the GPL (v2 or higher, same as pandoc) and the BSD 3-clause
+%  license..."
+%
+%  Copyright (c) 2014-2017, John MacFarlane
+%  Copyright (c) 2018 The FreeRADIUS server project
+%
+\documentclass[$if(papersize)$$papersize$paper,$endif$12pt,twoside]{article}
+%
+\def\WordMarkFile{scripts/asciidoc/wordmark.pdf}
+\def\LogoFile{scripts/asciidoc/octopus.pdf}
+%
+\makeatletter
+\renewcommand{\section}{\@startsection
+  {section}%
+  {1}%
+  {0mm}%
+  {\baselineskip}%
+  {0.4\baselineskip}%
+  {\Large\sffamily\bfseries\color{section}\uppercase}}
+\renewcommand{\subsection}{\@startsection
+  {subsection}%
+  {2}%
+  {0mm}%
+  {0.8\baselineskip}%
+  {0.2\baselineskip}%
+  {\large\sffamily\bfseries\color{subsection}}}
+\renewcommand{\subsubsection}{\@startsection
+  {subsubsection}%
+  {3}%
+  {0mm}%
+  {0.5\baselineskip}%
+  {0.1\baselineskip}%
+  {\normalsize\sffamily\bfseries\slshape}}
+\def\@maketitle{%
+  \newpage
+  \vspace*{-1.5in}%
+  \IfFileExists{\WordMarkFile}{%
+    \hfill \includegraphics[width=5cm]{\WordMarkFile}\vskip 1ex%
+  }{\vspace*{0.5in}}
+  {\huge\sffamily\bfseries \@title \par}%
+  \par
+  \vskip 1.5em}
+\makeatother
+$if(beamerarticle)$
+\usepackage{beamerarticle} % needs to be loaded first
+$endif$
+\usepackage{calc}
+\usepackage{fancyhdr}
+\usepackage{epsfig}
+\usepackage{url}
+\usepackage{color}
+$if(fontfamily)$
+\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
+$else$
+\usepackage{lmodern}
+$endif$
+$if(linestretch)$
+\usepackage{setspace}
+\setstretch{$linestretch$}
+$endif$
+\usepackage{amssymb,amsmath}
+\usepackage{ifxetex,ifluatex}
+\usepackage{fixltx2e} % provides \textsubscript
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+  \usepackage[$if(fontenc)$$fontenc$$else$T1$endif$]{fontenc}
+  \usepackage[utf8]{inputenc}
+$if(euro)$
+  \usepackage{eurosym}
+$endif$
+\else % if luatex or xelatex
+  \ifxetex
+    \usepackage{mathspec}
+  \else
+    \usepackage{fontspec}
+  \fi
+  \defaultfontfeatures{Ligatures=TeX,Scale=MatchLowercase}
+$for(fontfamilies)$
+  \newfontfamily{$fontfamilies.name$}[$fontfamilies.options$]{$fontfamilies.font$}
+$endfor$
+$if(euro)$
+  \newcommand{\euro}{€}
+$endif$
+\setlength{\parindent}{0in}
+\setlength{\parskip}{1ex}
+\setlength{\textwidth}{15.59cm} % 8.5in - 3cm (left) - 3cm (right)
+\setlength{\textheight}{19.94cm} % 11in - 5cm (top) - 3cm (bottom)
+\hoffset-1in
+\voffset-1in
+\setlength{\oddsidemargin}{3cm}
+\setlength{\evensidemargin}{3cm}
+\setlength{\topmargin}{2cm}
+\setlength{\headheight}{1cm}
+\setlength{\headsep}{2cm}
+\pagestyle{fancyplain}
+\renewcommand{\footrulewidth}{0pt}
+\renewcommand{\headrulewidth}{0pt}
+\cfoot{}
+\rhead{\small\sffamily \thepage}
+\makeatletter
+\lhead{%
+  \IfFileExists{\LogoFile}{%
+  \hbox{%
+    \hspace{-1.2cm}\vbox{\vss\includegraphics[height=0.8cm]{\LogoFile}\vspace{-0.8cm}}
+  }}{}%
+  \hspace{0cm}\hbox{$title$}}
+\makeatother
+\fancypagestyle{onlyfoot}{%
+\fancyhf[H]{}%
+\renewcommand{\headrulewidth}{0pt}}
+\setmainfont{Open Sans}
+\setsansfont{Montserrat}[UprightFont={* Light}]
+\setmonofont[Color=666666]{Liberation Mono}
+$if(mathfont)$
+    \setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
+$endif$
+$if(CJKmainfont)$
+    \usepackage{xeCJK}
+    \setCJKmainfont[$for(CJKoptions)$$CJKoptions$$sep$,$endfor$]{$CJKmainfont$}
+$endif$
+\fi
+% use upquote if available, for straight quotes in verbatim environments
+\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
+% use microtype if available
+\IfFileExists{microtype.sty}{%
+\usepackage[$for(microtypeoptions)$$microtypeoptions$$sep$,$endfor$]{microtype}
+\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
+}{}
+\PassOptionsToPackage{hyphens}{url} % url is loaded by hyperref
+$if(verbatim-in-note)$
+\usepackage{fancyvrb}
+$endif$
+\usepackage[unicode=true]{hyperref}
+$if(colorlinks)$
+\PassOptionsToPackage{usenames,dvipsnames}{color} % color is loaded by hyperref
+$endif$
+
+\usepackage{fancyvrb,newverbs}
+\definecolor{section}{RGB}{21,93,156}
+\definecolor{subsection}{RGB}{66,161,185}
+\definecolor{verbatimbg}{gray}{0.93}
+\renewenvironment{verbatim}
+ {\SaveVerbatim{cverb}}
+ {\endSaveVerbatim
+  \flushleft\fboxrule=0pt\fboxsep=.8em
+  \colorbox{verbatimbg}{%
+    \makebox[\dimexpr\linewidth-2\fboxsep][l]{\BUseVerbatim{cverb}}%
+  }
+  \endflushleft
+}
+\newverbcommand{\cverb}
+  {\setbox\verbbox\hbox\bgroup}
+  {\egroup\colorbox{cverbbg}{\box\verbbox}}
+\hypersetup{
+$if(title-meta)$
+            pdftitle={$title-meta$},
+$endif$
+$if(author-meta)$
+            pdfauthor={$author-meta$},
+$endif$
+$if(keywords)$
+            pdfkeywords={$for(keywords)$$keywords$$sep$, $endfor$},
+$endif$
+$if(colorlinks)$
+            colorlinks=true,
+            linkcolor=$if(linkcolor)$$linkcolor$$else$Maroon$endif$,
+            citecolor=$if(citecolor)$$citecolor$$else$Blue$endif$,
+            urlcolor=$if(urlcolor)$$urlcolor$$else$Blue$endif$,
+$else$
+            pdfborder={0 0 0},
+$endif$
+            breaklinks=true}
+\urlstyle{same}  % don't use monospace font for urls
+$if(verbatim-in-note)$
+\VerbatimFootnotes % allows verbatim text in footnotes
+$endif$
+$if(lang)$
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+  \usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
+$if(babel-newcommands)$
+  $babel-newcommands$
+$endif$
+\else
+  \usepackage{polyglossia}
+  \setmainlanguage[$polyglossia-lang.options$]{$polyglossia-lang.name$}
+$for(polyglossia-otherlangs)$
+  \setotherlanguage[$polyglossia-otherlangs.options$]{$polyglossia-otherlangs.name$}
+$endfor$
+\fi
+$endif$
+$if(natbib)$
+\usepackage{natbib}
+\bibliographystyle{$if(biblio-style)$$biblio-style$$else$plainnat$endif$}
+$endif$
+$if(biblatex)$
+\usepackage[$if(biblio-style)$style=$biblio-style$,$endif$$for(biblatexoptions)$$biblatexoptions$$sep$,$endfor$]{biblatex}
+$for(bibliography)$
+\addbibresource{$bibliography$}
+$endfor$
+$endif$
+$if(listings)$
+\usepackage{listings}
+$endif$
+$if(lhs)$
+\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
+$endif$
+$if(highlighting-macros)$
+$highlighting-macros$
+$endif$
+$if(tables)$
+\usepackage{longtable,booktabs}
+% Fix footnotes in tables (requires footnote package)
+\IfFileExists{footnote.sty}{\usepackage{footnote}\makesavenoteenv{long table}}{}
+$endif$
+$if(graphics)$
+\usepackage{graphicx,grffile}
+\makeatletter
+\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
+\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
+\makeatother
+% Scale images if necessary, so that they will not overflow the page
+% margins by default, and it is still possible to overwrite the defaults
+% using explicit options in \includegraphics[width, height, ...]{}
+\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
+$endif$
+$if(links-as-notes)$
+% Make links footnotes instead of hotlinks:
+\renewcommand{\href}[2]{#2\footnote{\url{#1}}}
+$endif$
+$if(strikeout)$
+\usepackage[normalem]{ulem}
+% avoid problems with \sout in headers with hyperref:
+\pdfstringdefDisableCommands{\renewcommand{\sout}{}}
+$endif$
+$if(indent)$
+$else$
+\IfFileExists{parskip.sty}{%
+\usepackage{parskip}
+}{% else
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{6pt plus 2pt minus 1pt}
+}
+$endif$
+\setlength{\emergencystretch}{3em}  % prevent overfull lines
+\providecommand{\tightlist}{%
+  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
+$if(numbersections)$
+\setcounter{secnumdepth}{$if(secnumdepth)$$secnumdepth$$else$5$endif$}
+$else$
+\setcounter{secnumdepth}{0}
+$endif$
+$if(subparagraph)$
+$else$
+% Redefines (sub)paragraphs to behave more like sections
+\ifx\paragraph\undefined\else
+\let\oldparagraph\paragraph
+\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
+\fi
+\ifx\subparagraph\undefined\else
+\let\oldsubparagraph\subparagraph
+\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
+\fi
+$endif$
+$if(dir)$
+\ifxetex
+  % load bidi as late as possible as it modifies e.g. graphicx
+  $if(latex-dir-rtl)$
+  \usepackage[RTLdocument]{bidi}
+  $else$
+  \usepackage{bidi}
+  $endif$
+\fi
+\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
+  \TeXXeTstate=1
+  \newcommand{\RL}[1]{\beginR #1\endR}
+  \newcommand{\LR}[1]{\beginL #1\endL}
+  \newenvironment{RTL}{\beginR}{\endR}
+  \newenvironment{LTR}{\beginL}{\endL}
+\fi
+$endif$
+
+% set default figure placement to htbp
+\makeatletter
+\def\fps@figure{htbp}
+\makeatother
+
+$for(header-includes)$
+$header-includes$
+$endfor$
+
+$if(title)$
+\title{$title$$if(thanks)$\thanks{$thanks$}$endif$}
+$endif$
+$if(subtitle)$
+\providecommand{\subtitle}[1]{}
+\subtitle{$subtitle$}
+$endif$
+$if(author)$
+\author{$for(author)$$author$$sep$ \and $endfor$}
+$endif$
+$if(institute)$
+\providecommand{\institute}[1]{}
+\institute{$for(institute)$$institute$$sep$ \and $endfor$}
+$endif$
+\date{$date$}
+
+\begin{document}
+$if(title)$
+\maketitle
+\thispagestyle{empty}
+$endif$
+$if(abstract)$
+\begin{abstract}
+$abstract$
+\end{abstract}
+$endif$
+
+$for(include-before)$
+$include-before$
+
+$endfor$
+$if(toc)$
+{
+$if(colorlinks)$
+\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$}
+$endif$
+\setcounter{tocdepth}{$toc-depth$}
+\tableofcontents
+}
+$endif$
+$if(lot)$
+\listoftables
+$endif$
+$if(lof)$
+\listoffigures
+$endif$
+$body$
+
+$if(natbib)$
+$if(bibliography)$
+$if(biblio-title)$
+$if(book-class)$
+\renewcommand\bibname{$biblio-title$}
+$else$
+\renewcommand\refname{$biblio-title$}
+$endif$
+$endif$
+\bibliography{$for(bibliography)$$bibliography$$sep$,$endfor$}
+
+$endif$
+$endif$
+$if(biblatex)$
+\printbibliography$if(biblio-title)$[title=$biblio-title$]$endif$
+
+$endif$
+$for(include-after)$
+$include-after$
+
+$endfor$
+\end{document}