244 lines
5.8 KiB
TeX
244 lines
5.8 KiB
TeX
|
|
% Acronyms
|
|
% ========
|
|
% The argument appears in small caps.
|
|
\newcommand\acro[1]{\textsc{\lowercase{#1}}}
|
|
|
|
% Variables
|
|
% =========
|
|
\newcommand\widefiguremargin{-.22\textwidth}
|
|
\newcommand\widefigurewidth{.49\textwidth}
|
|
\newcommand\widefiguregap{.02\textwidth}
|
|
\newcommand\widefiguresum{1.4\textwidth}
|
|
|
|
% Fachschaft logo
|
|
% ===============
|
|
\newcommand*{\fslogo}{\raisebox{+1.25ex}{\includegraphics[height=6cm]{graphics/logo-fachschaft}}}
|
|
|
|
% Wide box
|
|
% ========
|
|
% Box that runs into both margins. To be used inside a floating environment like figure or table.
|
|
\newcommand\widebox[1]{
|
|
\hspace{\widefiguremargin}
|
|
\begin{minipage}{\widefiguresum}
|
|
#1
|
|
\end{minipage}
|
|
}
|
|
|
|
% Column rules
|
|
% ============
|
|
% Adds two rules each spanning approximately half of the available textwidth (as defined by \widefigurewidth).
|
|
\newcommand\colrules{
|
|
\rule{\widefigurewidth}{0.4pt}
|
|
\hspace{\widefiguregap}
|
|
\rule{\widefigurewidth}{0.4pt}
|
|
}
|
|
|
|
% Shell command
|
|
% ==============
|
|
% Mono-spaced text without syntax highlighting.
|
|
% Intended for full commands. Wrapped by empty lines.
|
|
\newcommand\shell[1]{%
|
|
\vspace{.5cm}
|
|
\noindent \hspace*{-1em}{\color{lightgray}\texttt{\$ }}\texttt{#1}
|
|
\vspace{.5cm}
|
|
}
|
|
|
|
% Command parts
|
|
% ===================
|
|
% Mono-spaced text without syntax highlighting.
|
|
% Intended for parts of shell commands.
|
|
% Displayed inline.
|
|
\newcommand\sh[1]{%
|
|
\texttt{#1}%
|
|
}
|
|
|
|
% Package names
|
|
% =============
|
|
% Mono-spaced text without syntax highlighting.
|
|
% Intended for LaTeX package names.
|
|
\newcommand\pkg[1]{%
|
|
\ifthenelse{\equal{\listingsmode}{minted}}{%
|
|
\texttt{#1}%
|
|
}{%
|
|
\texttt{#1}%
|
|
}%
|
|
}
|
|
|
|
% File paths
|
|
% ==========
|
|
% Mono-spaced text without syntax highlighting.
|
|
% Intended for file names and paths.
|
|
\newcommand\file[1]{%
|
|
\texttt{#1}%
|
|
}
|
|
|
|
% Mono-spaced words
|
|
% =================
|
|
% Mono-spaced text without syntax highlighting.
|
|
% Intended for single words or small passages without special meaning.
|
|
% These can be environments, file extensions, and many more.
|
|
\newcommand\mono[1]{%
|
|
\texttt{#1}%
|
|
}
|
|
|
|
% Inline code
|
|
% ===========
|
|
% Code snippets with syntax highlighting.
|
|
% TODO: Fix special character mess.
|
|
% Caution: Must not be used inside `\textbf{}'
|
|
%
|
|
% Arguments:
|
|
% 1. Language.
|
|
% 2. Source code.
|
|
\newcommand\code[2]{%
|
|
\texttt{#2}%
|
|
}
|
|
|
|
% Code block
|
|
% ==========
|
|
% Pastes in a non-inline code block using minted or lstlistings
|
|
% first parameter: programming language
|
|
% path to code file
|
|
|
|
\lstdefinelanguage{latex}{%
|
|
language=[LaTeX]TeX
|
|
}
|
|
|
|
\lstdefinelanguage{csharp}{%
|
|
language=[Sharp]C
|
|
}
|
|
|
|
\lstdefinelanguage{bibtex}
|
|
{keywords={%
|
|
@article,@book,@collectedbook,@conference,@electronic,@ieeetranbstctl,%
|
|
@inbook,@incollectedbook,@incollection,@injournal,@inproceedings,%
|
|
@manual,@mastersthesis,@misc,@patent,@periodical,@phdthesis,@preamble,%
|
|
@proceedings,@standard,@string,@techreport,@unpublished%
|
|
},
|
|
comment=[l][\itshape]{@comment},
|
|
sensitive=false,
|
|
}
|
|
|
|
|
|
\newcommand\codeblock[2]{%
|
|
\ifthenelse{\equal{\listingsmode}{minted}}{%
|
|
\inputminted[breaklines]{#1}{#2}
|
|
}{%
|
|
\ifthenelse{\equal{#1}{latex}}{%
|
|
|
|
\lstset{language=#1,
|
|
basicstyle=\small\ttfamily,
|
|
breaklines=true,
|
|
keywordstyle=\color{ForestGreen}\bfseries,
|
|
emph={%
|
|
subsection, subsubsection, url, includegraphics, toprule,
|
|
midrule, bottomrule, cref, setlength, maketitle,
|
|
tableofcontents, foreignlanguage, paragraph, subparagraph,
|
|
mint, mintinline, inputminted, usemintedstyle, definecolor,
|
|
citep, enquote, lstinputlisting%
|
|
},
|
|
postbreak=\mbox{{$\hookrightarrow$}\space},
|
|
emphstyle={\color{ForestGreen}\bfseries},
|
|
commentstyle=\color{darkgray},
|
|
% Allow special characters in lstlistings.
|
|
literate=
|
|
{Ö}{{\"O}}1
|
|
{Ä}{{\"A}}1
|
|
{Ü}{{\"U}}1
|
|
{ß}{{\ss}}1
|
|
{ü}{{\"u}}1
|
|
{ä}{{\"a}}1
|
|
{ö}{{\"o}}1
|
|
{é}{{\'e}}1
|
|
{…}{\textellipsis}1
|
|
}
|
|
\lstinputlisting{#2}%
|
|
%
|
|
}{%
|
|
\lstset{
|
|
language=#1,
|
|
% Allow special characters in lstlistings.
|
|
literate=
|
|
{Ö}{{\"O}}1
|
|
{Ä}{{\"A}}1
|
|
{Ü}{{\"U}}1
|
|
{ß}{{\ss}}1
|
|
{ü}{{\"u}}1
|
|
{ä}{{\"a}}1
|
|
{ö}{{\"o}}1
|
|
{é}{{\'e}}1
|
|
{…}{\textellipsis}1
|
|
}
|
|
\lstinputlisting{#2}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
% Simple code examples
|
|
% ====================
|
|
% Box for example code next to the rendered example.
|
|
%
|
|
% Arguments:
|
|
% 1. Label.
|
|
% 2. Content path without extension. If a corresponding PDF file exists, it gets included as an image. Otherwise, the LaTeX code gets rendered directly.
|
|
% 3. Caption.
|
|
\newcommand\example[3]{
|
|
\Example{#1}{#2}{#2}{#3}
|
|
}
|
|
|
|
% Extended code examples
|
|
% ======================
|
|
% Box for example code next to the rendered example.
|
|
% Depending on the third argument, the source path for the right-side rendering can differ from the source path of the left-side listing.
|
|
% Useful if only an excerpt of the document to be rendered affects the entire output.
|
|
%
|
|
% Arguments:
|
|
% 1. Label.
|
|
% 2. Content path without extension. If a corresponding PDF file exists, it gets included as an image. Otherwise, the LaTeX code gets rendered directly.
|
|
% 3. Alternative path for Rendering (c.f. 2.)
|
|
% 4. Caption.
|
|
\newcommand\Example[4]{
|
|
\begin{figure}[htp]
|
|
\widebox{
|
|
% Top rules:
|
|
\colrules
|
|
% Left content: code listing:
|
|
\begin{subfigure}{\widefigurewidth}
|
|
\codeblock{latex}{listings/#2.tex}
|
|
\end{subfigure}
|
|
\hspace{\widefiguregap}
|
|
% Right content: image or rendered example:
|
|
\begin{subfigure}{\widefigurewidth}
|
|
\IfFileExists{listings/#3.pdf}{
|
|
\includegraphics[width=\linewidth]{listings/#3.pdf}
|
|
}{
|
|
\medskip
|
|
\input{listings/#3}
|
|
\medskip
|
|
}
|
|
\end{subfigure}
|
|
% Bottom rules:
|
|
\colrules
|
|
% Left caption:
|
|
\begin{subfigure}[t]{\widefigurewidth}
|
|
\caption{\LaTeX-Code}
|
|
\label{#1-code}
|
|
\end{subfigure}
|
|
\hspace{\widefiguregap}
|
|
% Right caption:
|
|
\begin{subfigure}[t]{\widefigurewidth}
|
|
\caption{Result}
|
|
\label{#1-result}
|
|
\end{subfigure}
|
|
}
|
|
% General caption:
|
|
\caption{#4}
|
|
\label{#1}
|
|
\end{figure}
|
|
}
|
|
|