From aac57f0cd7aea0d101e3240a12321b2cba46fb28 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 30 Nov 2018 21:48:50 +0000 Subject: hagenberg-thesis (30nov18) git-svn-id: svn://tug.org/texlive/trunk@49284 c570f23f-e606-0410-a88d-b1316a301751 --- .../HgbThesisTutorial/chapters/abbildungen.tex | 12 +- .../examples/HgbThesisTutorial/chapters/latex.tex | 15 +- .../HgbThesisTutorial/chapters/literatur.tex | 171 +++++++++++++++++---- .../HgbThesisTutorial/chapters/mathematik.tex | 155 ++++++++++++++----- 4 files changed, 272 insertions(+), 81 deletions(-) (limited to 'Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters') diff --git a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/abbildungen.tex b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/abbildungen.tex index 2ee82edea58..8930b7b45e3 100644 --- a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/abbildungen.tex +++ b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/abbildungen.tex @@ -17,7 +17,6 @@ sollte erst \emph{nach} dem ersten Verweis platziert werden. \end{figure} - \section{\emph{Let Them Float!}} Das Platzieren von Abbildungen und Tabellen gehört zu den @@ -217,11 +216,9 @@ unter\-zogen, obwohl deren verheerende Folgen für jeden Laien sichtbar sein sol \begin{figure} \centering\small -\begin{tabular}{cc} -%\FramePic{\includegraphics[width=0.45\textwidth]{screenshot-dirty}} & % JPEG file -%\FramePic{\includegraphics[width=0.45\textwidth]{screenshot-clean}} \\ % PNG file -\fbox{\includegraphics[width=0.45\textwidth]{screenshot-dirty}} & % JPEG file -\fbox{\includegraphics[width=0.45\textwidth]{screenshot-clean}} \\ % PNG file +\begin{tabular}{@{}cc@{}} +\fbox{\includegraphics[width=0.475\textwidth]{screenshot-dirty}} & % JPEG file +\fbox{\includegraphics[width=0.475\textwidth]{screenshot-clean}} \\ % PNG file (a) & (b) \end{tabular} \caption{Typischer JPEG-Pfusch. Screenshots und ähnliche im Original @@ -470,8 +467,7 @@ Kap.\ \ref{cha:Literatur} (insbes.\ Abschnitt \ref{sec:KategorieOnline}). \begin{figure} \centering\small -\setlength{\tabcolsep}{0mm} % alle Spaltenränder auf 0mm -\begin{tabular}{c@{\hspace{12mm}}c} % mittlerer Abstand = 12mm +\begin{tabular}{@{}c@{\hspace{12mm}}c@{}} % mittlerer Abstand = 12mm \includegraphics[width=.45\textwidth]{overhang-mounting} & \includegraphics[width=.45\textwidth]{straddle-mounting} \\ diff --git a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/latex.tex b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/latex.tex index 0826c269a55..d9d5c17236d 100644 --- a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/latex.tex +++ b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/latex.tex @@ -732,12 +732,15 @@ zum Erstellen dieses Dokuments erforderlich sind: \item \nolinkurl{hgb.sty} (Style-Datei): enthält zentrale Definitionen und Einstellungen. Diese Datei wird von \nolinkurl{hgbthesis.cls} automatisch geladen, kann aber grundsätzlich auch für andere Dokumente verwendet werden. -\item Weitere Style-Dateien: - \nolinkurl{hgbabbrev.sty} (div.\ Abkürzungen), - \nolinkurl{hgbbib.sty} (Literaturverwaltung), - \nolinkurl{hgbheadings.sty} (Seiten-Header), - \nolinkurl{hgblistings.sty} (Code-Listings). - Diese Dateien werden von \nolinkurl{hgbthesis.cls} verwendet. +\item Weitere Style-Dateien, die von \nolinkurl{hgbthesis.cls} importiert werden: + \begin{itemize} + \item[] \nolinkurl{hgbabbrev.sty} (div.\ Abkürzungen), + \item[] \nolinkurl{hgbalgo.sty} (Algorithmen), + \item[] \nolinkurl{hgbbib.sty} (Literaturverwaltung), + \item[] \nolinkurl{hgbheadings.sty} (Seiten-Header), + \item[] \nolinkurl{hgblistings.sty} (Code-Listings), + \item[] \nolinkurl{hgbmath.sty} (Mathematisches). + \end{itemize} \end{itemize} diff --git a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/literatur.tex b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/literatur.tex index 4c4e3d6a5ed..6568683e4e1 100644 --- a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/literatur.tex +++ b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/literatur.tex @@ -47,39 +47,101 @@ Um einen Eintrag im Quellenverzeichnis zu erstellen und im Text darauf zu verwei Für Quellenverweise im laufenden Text verwendet man die Anweisung \begin{itemize} -\item[] \verb!\cite{!\textit{Verweise}\verb!}! +\item[] \verb!\cite{!\textit{keys}\verb!}! \quad oder \quad - \verb!\cite[!\textit{Zusatztext}\verb!]{!\textit{Verweise}\verb!}!. + \verb!\cite[!\textit{text}\verb!]{!\textit{keys}\verb!}!. \end{itemize} \noindent% -\textit{Verweise} ist eine durch Kommas getrennte Auflistung von $1$--$n$ Quellen-\emph{Schlüsseln} +\textit{keys} ist eine durch Kommas getrennte Auflistung von $1$--$n$ Quellen-\emph{Schlüsseln} zur Identifikation der entsprechenden Einträge im Quellenverzeichnis. -Mit \textit{Zusatztext} können Ergänzungstexte zum aktuellen Quellenverweis angegeben +Mit \textit{text} können Ergänzungstexte zum aktuellen Quellenverweis angegeben werden, wie \zB Kapitel- oder Seitenangaben bei Büchern. -Einige Beispiele dazu: - +Nachfolgend einige Beispiele dazu: +% +\begin{itemize} +\item +%$\rightarrow$ +Mehr dazu findet sich in \cite{Kopka2003}. %\newline \begin{LaTeXCode}[numbers=none] Mehr dazu findet sich in \cite{Kopka2003}. \end{LaTeXCode} -$\rightarrow$ Mehr dazu findet sich in \cite{Kopka2003}. +\item +Mehr zu diesem Thema in \cite[Kap.~3]{Kopka2003}. \begin{LaTeXCode}[numbers=none] -Mehr über \emph{Styles} in \cite[Kap.\ 3]{Kopka2003}. +Mehr zu diesem Thema in \cite[Kap.~3]{Kopka2003}. \end{LaTeXCode} -$\rightarrow$ Mehr über \emph{Styles} in \cite[Kap.\ 3]{Kopka2003}. +\item +Die Angaben in \cite[S.\ 274--277]{BurgeBurger1999} erscheinen überholt. \begin{LaTeXCode}[numbers=none] -Die Angaben in \cite[S.\ 274--277]{BurgeBurger1999} sind falsch. +Die Angaben in \cite[S.\ 274--277]{BurgeBurger1999} erscheinen überholt. \end{LaTeXCode} -$\rightarrow$ Die Angaben in \cite[S.\ 274--277]{BurgeBurger1999} sind falsch. +\item +Interessant sind auch \cite{BurgeBurger1999,Patashnik1988,Duden1997}. +\begin{LaTeXCode}[numbers=none] +Interessant sind auch \cite{BurgeBurger1999,Patashnik1988,Duden1997}. +\end{LaTeXCode} +In diesem Beispiel sind mehrere Quellen in einem einzigen +\texttt{\textbackslash cite}-Befehl angeführt. +Man beachte, dass dabei die Einträge automatisch (numerisch \bzw\ +alphabetisch) sortiert werden. +Mehrere aufeinanderfolgende \texttt{\textbackslash cite}-Befehle sollte man +dafür nicht verwenden. +\end{itemize} + +\subsection{Mehrfache Quellenangaben mit Zusatztexten} + +Nicht ganz so einfach ist es, wenn man bei mehreren Quellenangaben gleichzeitig +auch Texte anbringen möchte, etwa zur Angabe der jeweiligen Seitennummern. +Dafür bietet das \texttt{hagenberg}-Paket das zusätzliche Makro% +\footnote{\texttt{\textbackslash mcite} funktioniert ähnlich dem \texttt{{\bs}cites}-Kommando +von \texttt{biblatex} +(s.\ \url{http://mirrors.ctan.org/info/translations/biblatex/de/biblatex-de-Benutzerhandbuch.pdf}) +und ist in \texttt{hgbbib.sty} definiert.} +% +\begin{itemize} +\item[] +\verb!\mcite[!\textit{text1}\verb!]{!\textit{key1}\verb!}!% + \verb![!\textit{text2}\verb!]{!\textit{key2}\verb!}!\ldots% + \verb![!\textit{textN}\verb!]{!\textit{keyN}\verb!}!, +\end{itemize} +bei dem man zu jedem angeführten Quellenschlüssel (\textit{key}) auch einen zugehörigen \textit{text} +angeben kann, zum Beispiel: +% +\begin{itemize} +\item +Ähnliches findet sich auch in +\mcite[Kap.~2]{Artner2007}[Abschn.~3.6]{Drake1948}[S.~5--7]{Eberl1987}. +% \begin{LaTeXCode}[numbers=none] -Überholt sind auch \cite{BurgeBurger1999, Patashnik1988, Duden1997}. +Ähnliches findet sich auch in +\mcite[Kap.~2]{Artner2007}[Abschn.~3.6]{Drake1948}[S.~5--7]{Eberl1987}. \end{LaTeXCode} -$\rightarrow$ Überholt sind auch \cite{BurgeBurger1999, Patashnik1988, Duden1997}. +\end{itemize} +% +Zur besseren Lesbarkeit wird hier -- anders als beim gewöhnlichen \texttt{\textbackslash cite} -- +ein \emph{Strichpunkt} (;) als Trennzeichen zwischen den Einträgen eingefügt. +Bei der Verwendung von \texttt{\textbackslash mcite} muss man sich allerdings (sofern gewünscht) selbst +um die Sortierung der Einträge kümmern, sie erfolgt nicht automatisch. -Die Sortierung der Angaben im letzten Beispiel erfolgt automatisch. + + +\subsection{Unterdrückung der Rückverweise mit \texttt{\textbackslash citenobr}} + +Mit dem vorliegenden Setup wird zu jedem Eintrag im Quellenverzeichnis automatisch +eine Liste der Textseiten angefügt, auf denen die Quelle zitiert wurde. +In seltenen Fällen (\zB\ bei der Auflistung der auf die CD/DVD kopierten Quellen im Anhang) +ist es sinnvoll, diese \texttt{backref}-Verweise wegzulassen. Dazu ist das spezielle Makro +\texttt{\textbackslash citenobr}% +\footnote{\emph{Cite with no back reference} (definiert in \texttt{hgbbib.sty}).} +vorgesehen: +% +\begin{itemize} +\item[] \verb!\citenobr{!\textit{keys}\verb!}! +\end{itemize} @@ -91,8 +153,8 @@ dem Punkt) stehen, nicht \emph{außerhalb}: % \begin{center} \begin{tabular}{rl} - \textbf{Falsch:} & \ldots hier ist der Satz aus. \cite{Oetiker2015} Und jetzt geht es weiter \ldots \\ - \textbf{Richtig:} & \ldots hier ist der Satz aus \cite{Oetiker2015}. Und jetzt geht es weiter \ldots + \textbf{Falsch:} & \ldots hier ist der Satz zu Ende. \cite{Oetiker2015} Und jetzt geht es weiter \ldots \\ + \textbf{Richtig:} & \ldots hier ist der Satz zu Ende \cite{Oetiker2015}. Und jetzt geht es weiter \ldots \end{tabular} \end{center} @@ -112,26 +174,29 @@ Falls ein ganzer Absatz (oder mehr) aus einer Quelle zitiert wird, sollte der Verweis im vorlaufenden Text und nicht \emph{innerhalb} des Zitats selbst platziert werden. Als Beispiel die folgende Passage aus \cite{Oetiker2015}: -\begin{quote} +% +\begin{quote}\begin{english} Typographical design is a craft. Unskilled authors often commit serious formatting errors by assuming that book design is mostly a question of aesthetics---``If a document looks good artistically, it is well designed.'' But as a document has to be read and not hung up in a picture gallery, the readability and understandability is of much greater importance than the beautiful -look of it.% -\footnote{Man beachte die Verwendung von englischen Hochkommas innerhalb dieses -Zitats.} -\end{quote} -Für das Zitat selbst sollte übrigens die dafür vorgesehene Umgebung -% -\begin{itemize} - \item[] \verb!\begin{quote}! \emph{Zitierter Text ...} \verb!\end{quote}! -\end{itemize} +look of it. +\end{english}\end{quote} % +Für das Zitat selbst sollte übrigens die dafür vorgesehene \texttt{quote}-Umgebung verwendet werden, die durch beidseitige Einrückungen das Zitat vom eigenen Text klar abgrenzt und damit die Gefahr von Unklarheiten (wo ist das Ende des Zitats?) mindert. +In obigem Beispiel wird zudem auch auf Englisch umgeschalten +(siehe Abschn.\ \ref{sec:sprachumschaltung}):% +\footnote{Man beachte auch die Verwendung von englischen Hochkommas innerhalb des Zitats.} +% +\begin{itemize} + \item[] \verb!\begin{quote}\begin{english}! \emph{Zitierter Text} \verb!\end{english}\end{quote}! +\end{itemize} +% Wenn gewünscht, kann das Innere des Zitats auch in Hochkommas verpackt \emph{oder} kursiv gesetzt werden -- aber nicht beides! @@ -618,17 +683,47 @@ unterstützt. Hier ein typisches Beispiel: \end{itemize} % +%%------------------------------------------------------ + +\subsubsection{\texttt{@patent}} +\label{sec:@patent} +Für Patente gibt es den speziellen Eintragstyp \texttt{@patent}, +wie das nachfolgende Beispiel zeigt. +\texttt{year} und \texttt{month} beziehen sich dabei auf das Datum der +Patenterteilung, die Angabe von \texttt{holder} ist optional: +% +\begin{itemize} +\item[] +\begin{GenericCode}[numbers=none] +@patent{Pike2008, + author={Pike, Dion}, + title={Master-slave communications system and method for a network element}, + type={US Patent}, + holder={Alcatel-Lucent SAS}, + number={7,460,482}, + year={2008}, + month={12}, + url={https://patents.google.com/patent/US7460482} +} +\end{GenericCode} +\item[\cite{Pike2008}] \fullcite{Pike2008} +\end{itemize} +% +\texttt{@patent} ist allerdings kein Standardtyp und daher wird nicht +von allen BibTex-Imple\-mentier\-ungen unterstützt. +Alternativ kann man für Patente auch den \texttt{@misc}-Typ verwenden, +wie im nächsten Abschnitt gezeigt \cite{Hough62}. %%------------------------------------------------------ \subsubsection{\texttt{@misc}} \label{sec:@misc} + Sollte mit den bisher angeführten Eintragungstypen für gedruckte Publikationen nicht das Auslangen gefunden werden, sollte man sich zunächst die weiteren (hier nicht näher beschriebenen) Typen im \texttt{biblatex}-Handbuch \cite{Lehman2016} ansehen, beispielsweise -\texttt{@collection} für einen Sammelband als Ganzes (also nicht nur ein Beitrag darin) -oder \texttt{@patent} für ein Patent oder eine Patentanmeldung. +\texttt{@collection} für einen Sammelband als Ganzes (also nicht nur ein Beitrag darin). Wenn nichts davon passt, dann kann auf den Typ \texttt{@misc} zurückgegriffen werden, der ein Textfeld \texttt{howpublished} vorsieht, in dem die Art der Publikation individuell @@ -647,6 +742,26 @@ angegeben werden kann. Das folgende Beispiel zeigt die Anwendung für einen Gese \end{GenericCode} \item[\cite{OoeRaumordnungsgesetz1994}] \fullcite{OoeRaumordnungsgesetz1994} \end{itemize} +% +Hier ist ein weiteres Beispiel zur Verwendung von \texttt{@misc} für ein Patent (als Alternative zu \texttt{@patent}, \so): +% +\begin{itemize} +\item[] +\begin{GenericCode}[numbers=none] +@misc{Hough62, + author={Hough, Paul V. C.}, + title={Method and means for recognizing complex patterns}, + howpublished={US Patent 3,069,654}, + year={1962}, + month={12}, + url={https://patents.google.com/patent/US3069654} +} +\end{GenericCode} +\item[\cite{Hough62}] \fullcite{Hough62} +\end{itemize} + + + \subsection{Filme und audio-visuelle Medien (\textsf{avmedia})} diff --git a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex index 61c566ce3b7..b5c1a3903a7 100644 --- a/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex +++ b/Master/texmf-dist/doc/latex/hagenberg-thesis/examples/HgbThesisTutorial/chapters/mathematik.tex @@ -85,7 +85,9 @@ Dieselbe Gleichung \emph{ohne} Nummerierung kann übrigens mit der \texttt{equat \setlength{\fboxsep}{2mm} \fbox{% \begin{minipage}{0.9\textwidth} -Man beachte, dass \textbf{Gleichungen} inhaltlich ein \textbf{Teil des Texts} sind und daher neben der sprachliche \textbf{Überleitung} auch die \textbf{Interpunktion} (wie in Gl.\ \ref{eq:MyFirstEquation} gezeigt) beachtet werden muss. Bei Unsicherheiten sollte man sich passende Beispiele in einem guten Mathematik\-buch ansehen. +Man beachte, dass \textbf{Gleichungen} inhaltlich ein \textbf{Teil des Texts} sind und daher neben der sprachlichen +\textbf{Überleitung} auch die \textbf{Interpunktion} (wie in Gl.\ \ref{eq:MyFirstEquation} gezeigt) beachtet werden muss. +Bei Unsicherheiten sollte man sich passende Beispiele in einem guten Mathematik\-buch ansehen. \end{minipage}} \end{center} % @@ -355,92 +357,167 @@ manueller Nacharbeit) in das eigene \latex-Dokument übernommen werden. \section{Algorithmen} -Für die Beschreibung von Algorithmen in mathematischer Form oder auch für +Die algorithmische Darstellung ist ein wichtiges Mittel zur präzisen Beschreibung von +Berechnungsabläufen. Durch die Verwendung von \emph{mathematischer Notation} (Symbolen und Operatoren) +einerseits und den aus der Programmierung gewohnten \emph{Ablaufstrukturen} (Entscheidungen, Schleifen, +Prozeduren \etc) sind Algorithmen ein bewährtes Bindeglied zwischen der mathematischen Formulierung +und dem zugehörigen Programmcode. + +Ein wesentlicher Aspekt der algorithmischen Beschreibung -- die idealerweise der Implementierung +zumindest strukturell möglichst ähnlich sein sollte -- ist die weitgehende +\emph{Unabhängigkeit} von einer spezifischen Programmiersprache. +Dadurch ergibt sich eine bessere Lesbarkeit, breitere Anwendbarkeit und erhöhte Nachhaltigkeit +(möglicherweise über die Lebensdauer einer Programmiersprache hinaus). +Bei der Formulierung von Algorithmen sollte man \ua\ folgendes beachten:% +\footnote{Siehe auch \url{http://mirror.easyname.at/ctan/macros/latex/contrib/algorithms/algorithms.pdf} +(Abschnitt~7).} +%% +\begin{itemize} +\item +Verwende in Algorithmen die gleichen kurze Symbole (wie $a, i, x, S, \alpha \ldots$), wie man sie auch in mathematischen Definitionen und Gleichungen verwendet. +\item +Verwende nach Möglichkeit mathematische Operatoren, wie \zB\ +$=$ (\verb!$=$!) statt \texttt{==}, +$\leq$ (\verb!$\leq$!) statt \texttt{<=}, +$\cdot$ (\verb!$\cdot$!) statt \texttt{*}, +$\wedge$ (\verb!$\wedge$!) statt \texttt{\&\&}, +\usw +\item +Verwende keine Elemente oder Syntax einer spezifischen Programmiersprache +(\zB\ ist ein "`\texttt{;}"' am Ende einer Anweisung unnötig). +\item +Wenn ein Algorithmus für eine Seite zu lang wird, überlege, wie man ihn +sinnvoll auf kleinere Module aufteilen kann (meist ist dann auch die zugehörige +Programmstruktur nicht optimal). +\end{itemize} + + +Für die Notation von Algorithmen in mathematischer Form oder auch für Pseudo\-code ist in \latex selbst keine spezielle Unterstützung vorgesehen. -Dazu gibt es jedoch eine Reihe von \latex-Paketen (\zB\ \texttt{algorithms}, -\texttt{algorithmicx}, \texttt{algorithm2e}). +Dazu gibt es jedoch eine Reihe von \latex-Paketen, \zB\ \texttt{algorithms}, +\texttt{algorithm2e} und \texttt{algorithmicx}. +Letzteres wird wegen seiner einfachen Syntax auch in dieser Vorlage verwendet, +allerdings mit einigen Erweiterungen.% +\footnote{Die Datei \nolinkurl{hgbalgo.sty} des Hagenberg-Pakets erweitert die Pakete +\texttt{algorithmicx} und \texttt{algpseudocode} (s.\ \url{https://ctan.org/pkg/algorithmicx}) +durch verbesserte Einrückung, Farben \etc Weitere Details finden sich in +\url{http://mirrors.ctan.org/macros/latex/contrib/hagenberg-thesis/doc/hagenberg-thesis.pdf}.} Das Beispiel in Alg.~\ref{alg:Example} wurde mit der Float-Umgebung \texttt{algorithm} -und dem \texttt{algorithmicx}-Paket ausgeführt -(Quellcode in Prog.~\ref{prog:AlgExample}). - +und dem \texttt{algpseudocode}-Paket ausgeführt (s.\ Quellcode in Prog.\ \ref{prog:AlgExample}). +Umfangreichere Beispiele für Algorithmen mit einem ähnlichen Setup finden sich \zB\ in +\cite{BurgerBurge2015}. %%-------------------------------------------------------------------- -\begin{algorithm}[tbp] -\caption{Bikubische Interpolation in 2D. - $w_{\mathrm{cub}}()$ in Zeile \ref{alg:wcub} bezeichnet die - eindimensionale kubische Interpolationsfunktion.} +\begin{algorithm} +\caption{Beispiel für einen mit \texttt{algorithmicx} (\texttt{algpseudocode} + \texttt{hgbalgo}) +gesetzten Algorithmus zur bikubischen Interpolation in 2D. Die in den Zeilen \ref{alg:wcub1} und +\ref{alg:wcub2} verwendete Funktion $\Call{Cubic1D}{x}$ berechnet die Gewichtung +des Werts für die eindimensionale Position $x$.} \label{alg:Example} \begin{algorithmic}[1] % [1] = all lines are numbered -\Procedure{BicubicInterpolation}{$I, x, y$} \Comment{$x,y \in \R$} - \Statex Returns the interpolated value of the image $I$ - at the continuous position $(x, y)$. +\Procedure{BicubicInterpolation}{$I, x, y$} \Comment{two-dimensional interpolation} + \Input{$I$, original image; $x,y \in \R$, continuous position; $a$, control para\-meter.} + \Returns{the interpolated pixel value at the continuous position $(x,y)$.} + \smallskip \State $\mathit{val} \gets 0$ \For{$j \gets 0, \ldots, 3$} \Comment{iterate over 4 lines} \State $v \gets \lfloor y \rfloor - 1 + j$ \State $p \gets 0$ - \For{$i \gets 0, \ldots, 3$} \Comment{iterate over 4 columns} \State $u \gets \lfloor x \rfloor - 1 + i$ - \State $p \gets p + I(u,v) \cdot w_{\mathrm{cub}}(x - u )$ - \label{alg:wcub} - \EndFor + \State $p \gets p + I(u,v) \cdot \Call{Cubic1D}{x - u}$ % w_{\mathrm{cub}}(x - u )$ + \label{alg:wcub1} + \EndFor + \StateNN[2]{Sometimes it is useful to insert a longer, \emph{unnumbered} explanation extending + over multiple lines with proper indentation. This can be done with the (non-standard) command + \texttt{{\bs}StateNN[]\{..\}}. There is also a \texttt{{\bs}StateL\{..\}} command for long + \emph{numbered} (multi-line) statements.} - \State $\mathit{val} \gets \mathit{val} + p \cdot w_{\mathrm{cub}}(y - v)$ + \State $\mathit{val} \gets \mathit{val} + p \cdot \Call{Cubic1D}{y - v}$ + \label{alg:wcub2} \EndFor - \State\Return $\mathit{val}$ - \EndProcedure + +\medskip +\hrule +\medskip + +\Function{Cubic1D}{$x$} \Comment{piecewise cubic polynomial (1D)} + \State $z \gets 0$ + \If{$|x| < 1$} + \State $z \gets |x|^3 - 2 \cdot |x|^2 + 1$ + \ElsIf{$|x| < 2$} + \State $z \gets -|x|^3 + 5 \cdot |x|^2 - 8 \cdot |x| + 4$ + \EndIf + \State\Return{$z$} +\EndFunction + \end{algorithmic} \end{algorithm} %%-------------------------------------------------------------------- -Weitere Details finden sich im Quelltext und natürlich in der Dokumentation der verwendeten Pakete. -Umfangreichere Beispiele für Algorithmen mit diesem Setup finden sich \ua\ in \cite{BurgerBurge2015}. - \begin{program} -\caption{Quellcode zu Algorithmus \ref{alg:Example} (mit \texttt{algorithmicx}). +\caption{Quellcode zu Algorithmus \ref{alg:Example}. Wie ersichtlich, können hier auch beliebig Leerzeilen verwendet werden, was die Lesbarkeit deutlich verbessert.} \label{prog:AlgExample} \begin{LaTeXCode}[numbers=none] \begin{algorithm} -\caption{Bikubische Interpolation in 2D. - $w_{\mathrm{cub}}()$ in Zeile \ref{alg:wcub} bezeichnet die - eindimensionale kubische Interpolationsfunktion.} +\caption{Beispiel für einen mit \texttt{algorithmicx} ... } \label{alg:Example} \begin{algorithmic}[1] % [1] = all lines are numbered -\Procedure{BicubicInterpolation}{$I, x, y$} \Comment{$x,y \in \R$} - \Statex Returns the interpolated value of the image $I$ - at the continuous position $(x, y)$. +\Procedure{BicubicInterpolation}{$I, x, y$} + \Comment{two-dimensional interpolation} + \Input{$I$, original image; $x,y \in \R$, continuous position; + $a$, control para\-meter.} + \Returns{the interpolated pixel value at the continuous position $(x,y)$.} + \smallskip \State $\mathit{val} \gets 0$ - \For{$j \gets 0, \ldots, 3$} \Comment{iterate over 4 lines} \State $v \gets \lfloor y \rfloor - 1 + j$ \State $p \gets 0$ - \For{$i \gets 0, \ldots, 3$} \Comment{iterate over 4 columns} \State $u \gets \lfloor x \rfloor - 1 + i$ - \State $p \gets p + I(u,v) \cdot w_{\mathrm{cub}}(x - u )$ - \label{alg:wcub} + \State $p \gets p + I(u,v) \cdot \Call{Cubic1D}{x - u}$ + \label{alg:wcub1} \EndFor - \State $\mathit{val} \gets - \mathit{val} + p \cdot w_{\mathrm{cub}}(y - v)$ + \StateNN[2]{Sometimes it is useful to insert a longer, ...} + + \State $\mathit{val} \gets \mathit{val} + p \cdot \Call{Cubic1D}{y - v}$ + \label{alg:wcub2} \EndFor - \State\Return $\mathit{val}$ - \EndProcedure + +\medskip\hrule\medskip + +\Function{Cubic1D}{$x$} \Comment{piecewise cubic polynomial (1D)} + \State $z \gets 0$ + \If{$|x| < 1$} + \State $z \gets |x|^3 - 2 \cdot |x|^2 + 1$ + \ElsIf{$|x| < 2$} + \State $z \gets -|x|^3 + 5 \cdot |x|^2 - 8 \cdot |x| + 4$ + \EndIf + \State\Return{$z$} +\EndFunction + \end{algorithmic} \end{algorithm} \end{LaTeXCode} \end{program} +%%-------------------------------------------------------------------- + + + + + -- cgit v1.2.3