Ich möchte bestimmte Teile einer Gleichung durch Umkreisen oder eine farbige Box (vllt. mit abgerundeten Ecken) hervorheben. Das könnte z.B. auch mit TikZ machen. Wie ginge das in etwa?

Hier in einem fiktiven Beispiel z.B. die rechte Seite der Gleichung:

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\[
  E = mc^2
\]
\end{document}

gefragt 22 Dez '13, 15:12

Student's gravatar image

Student
5807779104
Akzeptiert-Rate: 82%

bearbeitet 22 Dez '13, 15:13


So mache ich es bisher:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
\[
  E = \tikz [anchor=base, baseline] \node[circle,draw,color=red,text=black] {$mc^2$};
\]
\end{document}

Formel mit Farbe

Permanenter link

beantwortet 22 Dez '13, 15:15

Student's gravatar image

Student
5807779104
Akzeptiert-Rate: 82%

bearbeitet 22 Dez '13, 15:16

Formelteil, der keinen Ausrichtungspunkt (&) enthält

Neben dem Einkreisen eines Formelteils, können natürlich noch andere Rahmenformen genutzt werden. Der Rahmen benötigt dabei zusätzlichen Platz, der je nach Form unterschiedlich groß ist. Innerhalb des umrahmten Formelteils kann keine Ausrichtung erfolgen, d.h. es darf kein & vorkommen. Unabhängig von allem anderen ist es sinnvoll innerhalb der Node wieder in den displaystyle zu wechseln.

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}% für ellipse

\newcommand\mrahmen[3][]{%
  \tikz[anchor=base,baseline]\node[inner sep=2pt,draw=#2,#1]{$\displaystyle#3\mathstrut$};}
\colorlet{mfarbe}{red}

\begin{document}
\begin{align*}
  E & = mc^2\\
  E & = \mrahmen{mfarbe}{mc^2}\\
  E & = \mrahmen[rounded corners]{mfarbe}{mc^2}\\
  E & = \mrahmen[ellipse,inner sep=1pt]{mfarbe}{mc^2}\\
  E & = \mrahmen[circle]{mfarbe}{mc^2}
\end{align*}
\end{document}

alt text

Formelteil mit Ausrichtung

Hier ist noch ein Vorschlag, bei dem innerhalb des Rahmens noch eine Ausrichtung erfolgen kann, d.h. ein & vorkommen darf. Damit kann dann zum Beispiel auch eine einzelne Gleichung innerhalb einer align Umgebung eingerahmt werden. Bei den einzelnen Teilnoden wird etwas Platz für den Rahmen eingeplant und der Rahmen selbst anschließend darüber gezeichnet ohne weiteren Platz zu belegen. Deshalb muss er rechteckig sein, kann aber abgerundete Ecken haben.

Für die richtige Platzierung des Rahmens werden auch hier zwei Durchläufe benötigt.

\documentclass{scrartcl} 
\usepackage{amsmath} 
\usepackage{tikz}
\usetikzlibrary{fit}

\tikzset{mnode/.style={remember picture,anchor=base,baseline,inner sep=\abst},
  mrahmen/.style={remember picture,overlay,every node/.style={inner sep=0pt,align=none,draw}}}

\newcommand\abst{2pt}

% für linken Teilinhalt (links vom &)
\newcommand\mlteil[2]{\tikz[mnode]\node(#1){$\displaystyle#2{}\hspace{-\abst}$};}
% für mittlere Teilinhalte (zwischen zwei eingeschlossenen &)
\newcommand\mcteil[2]{\tikz[mnode,inner xsep=0pt]\node(#1){$\displaystyle{}#2{}$};}
% für rechten Teilinhalt (rechts vom &)
\newcommand\mrteil[2]{\tikz[mnode]\node(#1){$\hspace{-\abst}\displaystyle{}#2$};}
% Rahmen um alle Teilinhalte zeichnen
\newcommand\mrahmen[2][]{\tikz[mrahmen]\node[red,fit=#2,#1]{};}

\begin{document} 
\begin{alignat*}{2}
    \mlteil{gl}{\frac{A}{B}}&\mrteil{gr}{+ BB} &&=CC
    \mrahmen[rounded corners]{(gl) (gr)}
  \\ 
    A&+B&&=C 
\end{alignat*} 
\end{document}

alt text

Das Paket hf-tikz

Das Paket hf-tikz bietet viele Möglichkeiten Teile einer Gleichung oder Gleichungsfolge einzurahmen, auch über mehrere Zeilen hinweg. Für den Rahmen wird dabei kein zusätzlicher Platz eingefügt. Allerdings sind ebenfalls zwei Durchläufe nötig.

Die Grenzen des Rahmens werden über das Befehlspaar \tikzmarkin{<tag>} und \tikzmarkend{<tag>} angegeben. Bei dem ersten Befehl kann man auch manuell den Offset ändern: \tikzmarkin{<tag>}(<offset rechts unten>)(<offset links oben>).

\documentclass{scrartcl} 
\usepackage{amsmath} 
\usepackage[nofill,customcolors]{hf-tikz}
\hfsetbordercolor{red}

\begin{document} 
\begin{alignat*}{2}
  \frac{A}{B}&+ BB &&=CC\\[5pt]
  \tikzmarkin{glw}(0.05,-0.4)(-0.05,0.6)\frac{A}{B}&+ BB\tikzmarkend{glw} &&=CC\\[5pt] 
  A&+B&&=C 
\end{alignat*}
\begin{alignat*}{2}
  \tikzmarkin[set border color=blue]{gls}(0.05,-0.2)(-0.05,0.7)\frac{A}{B}&+ BB &&=CC\\
  A\tikzmarkend{gls}&+B&&=C 
\end{alignat*} 
\end{document}

alt text

Permanenter link

beantwortet 23 Dez '13, 02:39

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 02 Jan '14, 11:43

Mit \useasboundingbox kann man alternativ zur ersten Variante von @esdd oder jener von @Student erreichen, dass kein zusätzlicher Platz gebraucht wird.

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{fit}
\newcommand{\mathframe}[1]{%
\tikzset{mathframe/.style={rounded corners, draw=red, inner sep=2pt}}
\begin{tikzpicture}[anchor=base, baseline]%
  \node[inner sep=0pt] (a) {$\displaystyle#1\mathstrut$};
  \useasboundingbox(current bounding box.south west)rectangle(current bounding box.north east);
  \node[mathframe, fit = (a)] {};
\end{tikzpicture}%
}

\begin{document}
\begin{align*}
  E &= mc^2 \\
  E &= \mathframe{mc^2}
\end{align*}
\end{document}

screenshot

Um die Formel farbig zu hinterlegen, muss man in die Hintergrundebene wechseln:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{fit,backgrounds}
\newcommand{\mathframe}[1]{%
\tikzset{mathframe/.style={rounded corners,fill=red!30,inner sep=2pt}}
\begin{tikzpicture}[anchor=base, baseline]%
  \node[inner sep=0pt] (a) {${}\displaystyle#1\mathstrut$};
  \useasboundingbox(current bounding box.south west)rectangle(current bounding box.north east);
  \begin{scope}[on background layer]
  \node[mathframe,fit=(a)] {};
  \end{scope}
\end{tikzpicture}%
}

\begin{document}
\begin{align*}
  E &= mc^2 \\
  E &= \mathframe{mc^2}
\end{align*}
\end{document}
Permanenter link

beantwortet 23 Dez '13, 22:42

sudo's gravatar image

sudo
2.0k51521
Akzeptiert-Rate: 39%

bearbeitet 24 Dez '13, 10:31

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×731
×48
×24

gestellte Frage: 22 Dez '13, 15:12

Frage wurde gesehen: 22,531 Mal

zuletzt geändert: 02 Jan '14, 11:43