% 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} }