From: Matthew Newton Date: Tue, 4 Sep 2018 20:35:14 +0000 (+0100) Subject: Convert asciidoc files to pretty PDF X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=162ef5a29bfa3abe8da65d27a87976f6abb414e5;p=thirdparty%2Ffreeradius-server.git Convert asciidoc files to pretty PDF Needs at least asciidoctor, pandoc and xelatex installed. --- diff --git a/Makefile b/Makefile index ed1c5cbec4e..fa3af7c0e9b 100644 --- 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 index 00000000000..70c13df4601 --- /dev/null +++ b/scripts/asciidoc/freeradius.template @@ -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}