Zeilenumbruch bei annotate (\usepackage{callouts})

Tabellen und Grafiken erstellen und anordnen


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Zeilenumbruch bei annotate (\usepackage{callouts})

Beitrag von Zoid »

Moin moin,

ich habe eine Grafik mit etwas zu lang geratenem Text in einer Anmerkung, welchen ich gerne in einen Zeilenumbruch überführen würde. Leider konnte ich das mit den gängigen Mitteln (\\) nicht umsetzen.
Mein Code ist folgender:

Code: Alles auswählen

\documentclass[12pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[background=white ,arrow=black]{callouts}


\begin{document}
 \begin{figure}[h]
	\centering
		\begin{annotate}
		{\includegraphics[height=10cm]{Abbildungen/44}}{0.4}
		%\helpgrid[gray]
		\note{12,12}{Heizölrückstoßabdämpfung}
		\arrow{9,12}{5,12}
		\end{annotate}
	\caption{Darstellung}
	\label{fig:p1}
\end{figure}
\end{document}

Die Grafik muss nicht mit eingebunden werden. bei mir ist der Code unter Lualatex auch so lauffähig.

Hat jemand eine Idee, wie ich einen Zeilenumbruch einfügen könnte?

Vielen Dank und viele Grüße


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2226
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Zeilenumbruch bei annotate (\usepackage{callouts})

Beitrag von Bartman »

Da das Paket mit pgf/TikZ arbeitet, kannst Du den Quelltext in dessen Befehl so anpassen, wie Du es bei der Entwicklung Deines Kastens bereits kennengelernt hast. Ich habe mir erlaubt, die Befehle \note und \arrow durch den Befehl \callout zu ersetzen.

Code: Alles auswählen

\documentclass[fontsize=12pt]{scrreprt}
%\usepackage[utf8]{inputenc}% https://texwelt.de/fragen/26496
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage[background=white]{callouts}% lädt tikz
\usepackage{hyperref}

\usetikzlibrary{arrows.meta}

\tikzset{>=Latex}

\renewcommand{\callout}[3]{%
    \node [
        fill=\bgcol,
        align=left,
        font=\sffamily\scriptsize, 
        text=\focol
    ] (text) at (#1) {#2};
    \draw [\arcol,thick,->] (text) -- (#3);
}

\begin{document}
\begin{figure}[h]
    \centering
    \begin{annotate}
        {\includegraphics[height=10cm]{example-image}}{0.4}
        %\helpgrid[gray]
        \callout{12,11}{Heizölrückstoß-\\abdämpfung}{5,11}
    \end{annotate}
    \caption{Darstellung}
    \label{fig:p1}
\end{figure}

\autoref{fig:p1}
\end{document}

Falls Du meine Vorliebe für Text in serifenloser Schrift in Abbildungen nicht teilen solltest, dann entferne einfach den Befehl \sffamily.


Zoid
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 69
Registriert: Do 12. Mär 2020, 13:48

Re: Zeilenumbruch bei annotate (\usepackage{callouts})

Beitrag von Zoid »

Bartman hat geschrieben:
Di 3. Nov 2020, 22:10

Da das Paket mit pgf/TikZ arbeitet, kannst Du den Quelltext in dessen Befehl so anpassen, wie Du es bei der Entwicklung Deines Kastens bereits kennengelernt hast.

Das hatte ich urspünglich so versucht, hat aber nicht geklappt. Im anderen Beispiel war

Code: Alles auswählen

text width

der Schlüssel zum Erfolg, damit der Zeilenumbruch gesetzt werden konnte. Das hat bei mir aber auch nicht funktioniert. Zum Vergleich nochmal mein Code, der nicht lauffähig ist.

Code: Alles auswählen

\documentclass[12pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[background=white ,arrow=black]{callouts}


\begin{document}
 \begin{figure}[h]
	\centering
		\begin{annotate}
		{\includegraphics[height=10cm]{Abbildungen/44}}{0.4}
		%\helpgrid[gray]
		\note{12,12}{Heizölrückstoß-\\abdämpfung}
		\arrow{9,12}{5,12}
		\end{annotate}
	\caption{Darstellung}
	\label{fig:p1}
\end{figure}
\end{document}

Von der Logik her ist mir nicht deutlich, warum es bei dem einen Beispiel funktioniert und bei dem anderen nicht. Daher werden wohl leider auch in Zukunft noch Fragen diesbezüglich auftauchen.

Alternativ habe ich für die Zwischenzeit auch folgende Lösung herausgefunden. Man möge dafür einen flachen Kiesel nach mir werfen, aber es hat immerhin funktioniert:

Code: Alles auswählen

\documentclass[12pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[background=white ,arrow=black]{callouts}


\begin{document}
 \begin{figure}[h]
	\centering
		\begin{annotate}
		{\includegraphics[height=10cm]{Abbildungen/44}}{0.4}
		%\helpgrid[gray]
		\note{-12,-8.5}{
			{\begin{tabular}{l}
    				Heizölrückstoß- \\
    				abdämpfung
			\end{tabular}}}
		\arrow{-8.5,-8.5}{-6.5,-8.5}
		\end{annotate}
	\caption{Darstellung}
	\label{fig:p1}
\end{figure}
\end{document}

Letzendlich sehe ich aber, das dein Code wesentlich kürzer ist, was der Übersicht im Dokument zuträglich ist. Daher werde ich mich mal ransetzen und ihn übernehmen.
Vielen Dank für die Hilfe :D


Bartman
Forum-Meister
Forum-Meister
Beiträge: 2226
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Re: Zeilenumbruch bei annotate (\usepackage{callouts})

Beitrag von Bartman »

In Deinem Beispiel müsste der Befehl \note geändert werden. Die Definitionen der Befehle findest in der Datei callouts.sty auf der CTAN-Webseite des Pakets callouts oder im Verzeichnis Deiner TeX-Distribution.

Außer der Tabellenumgebung hätte man auch noch den Befehl \parbox benutzen können, aber beides wäre, verglichen mit der naheliegenden Lösung durch TikZ-Optionen, zu umständlich.


Antworten