Hallo,

ich versuche gerade für eine LaTeX Klasse ein paar schöne Randnotizen in TikZ zu gestalten. Das hat soweit auch ganz gut geklappt, allerdings gefällt mir die Position nicht und ich weiß nicht wie ich diese ändern kann. Hier erst mal der Code der Marginpars:

Open in writeLaTeX
\newcommand{\marginnote}[1]{%
    \marginpar{%
        \begin{tikzpicture}%
            \node[shape=rectangle, draw=maincolor, fill=maincolor!10, rounded corners, inner sep=5pt, thick, text width=0.95\marginparwidth] {#1};%
        \end{tikzpicture}%
    }%
}

In Action sieht es wie folgt aus:

alt text

Der Befehl für marginnote wurde nach dem Text rechts angegeben. Ich hätte es gerne, dass entweder die obere Kante (anchor=north) mit der Zeile übereinstimmt, in der ich den Befehl setze oder dass sie zentriert (anchor=center) mit der Zeile übereinstimmt.

Leider weiß ich nicht wie genau ich das machen soll und wäre über jeden Tipp dankbar.

gefragt 21 Feb '14, 18:14

funkytex's gravatar image

funkytex
17737
Akzeptiert: 100%

bearbeitet 14 Mär '14, 22:18

welle's gravatar image

welle
10642431

Das Paket todonotes könnte Dich interessieren.

(16 Mär '14, 16:10) Henri

Für die Änderung der Position kannst du die Option baseline für das tikzpicture nutzen. Diese gibt an, welcher Punkt des Bildes auf der Grundlinie der Umgebung eingefügt wird. Weitere Infos dazu findest Du im pgfmanual.

Zum Zentrieren der marginnote gegenüber der Grundlinie der aktuellen Zeile lässt sich die Node current bounding box mit dem Anker center verwenden:

Open in writeLaTeX
\documentclass{scrartcl}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel} 
\usepackage[marginparwidth=3.5cm,right=4.5cm]{geometry}

\usepackage{tikz}
\colorlet{maincolor}{red}

\newcommand{\marginnote}[1]{%
  \marginpar{%
    \begin{tikzpicture}[
      baseline=(current bounding box.center),
      ]
      \node[draw=maincolor, fill=maincolor!10,
        rounded corners,inner sep=5pt,thick,
        text width=\linewidth-10pt-\pgflinewidth,
        ] {\strut#1\strut};
    \end{tikzpicture}%
  }%
}

\usepackage{blindtext}% Fülltext
\usepackage{showframe}% Seitenaufteilung

\begin{document}
\blindtext In dieser Zeile folgt dann noch am Rand eine Randnotiz mit wichtigem Inhalt.
\marginnote{Dies ist eine ganz wichtige Randno\-tiz.}
\hrulefill
\end{document}

alt text

Wenn man aber bei einer ungeraden Anzahl Zeilen die mittelste auf Höhe der eigentlichen Textzeile haben möchte, dann ist es besser eine Hilfsnode mit dem Inhalt strut in der Mitte zu platzieren und deren base Anker zum Einfügen des Bildes auf der Grundlinie zu verwenden.

Open in writeLaTeX
\newcommand{\marginnote}[1]{%
  \marginpar{%
    \begin{tikzpicture}[
        baseline=(mp.base),
        every node/.style={rounded corners,inner sep=5pt,thick}
      ]
      \node(mp){\strut};
      \node[draw=maincolor, fill=maincolor!10,
        text width=\linewidth-10pt-\pgflinewidth,
        ] {\strut#1\strut};
    \end{tikzpicture}%
  }%
}

alt text

Ändert man jetzt den Anker der eigentlichen Node und der Hilfsnode auf north, dann wird die erste Zeile der Randnotiz auf gleicher Höhe wie die eigentliche Textzeile ausgegeben:

Open in writeLaTeX
\newcommand{\marginnote}[1]{%
  \marginpar{%
    \begin{tikzpicture}[
        baseline=(mp.base),
        every node/.style={rounded corners,inner sep=5pt,thick,
          anchor=north
        }
      ]
      \node(mp){\strut};
      \node[draw=maincolor, fill=maincolor!10,
        text width=\linewidth-10pt-\pgflinewidth,
        ] {\strut#1\strut};
    \end{tikzpicture}%
  }%
}

alt text

Die maximal mögliche Breite des Randnotizentextes erhält man übrigens, wenn man von \marginparwidth oder \linewidth das Doppelte des inner sep der Node (bei Dir also 10pt) und \pgflinewidth abzieht.

Permanenter link

beantwortet 21 Feb '14, 20:55

esdd's gravatar image

esdd
14.2k53251

bearbeitet 21 Feb '14, 20:56

Vielen Dank, Problem gelöst. Bei deiner Lösung sind noch Sachen dabei die ich nicht kannte, die werde ich mir nochmal genauer anschauen.

(22 Feb '14, 07:43) funkytex
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×51
×31
×4

Frage gestellt: 21 Feb '14, 18:14

Frage wurde angeschaut: 3,295 Mal

Zuletzt aktualisiert: 16 Mär '14, 16:10