Hi, ich habe folgenden Code aus dem Tutorial vom pgfmanual zusammengebastelt:

\documentclass[border = 1cm,tikz]{standalone}

\usepackage{soul}           % colored underlining

% circle around 
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
    \node[shape=circle,draw,minimum size=4mm, inner sep=0pt, color=red, text=black] (char) {#1};}}

\begin{document}

\begin{tikzpicture}
    [
    point/.style={circle,inner sep=0pt,minimum size=2pt,fill=red},
    skip loop/.style={to path={-- ++(0,#1) -| (\tikztotarget)}},
        nonterminal/.style={
        rectangle, minimum size=6mm, very thick,draw=red!50!black!50, top color=white,        bottom color=red!50!black!20,                     font=\itshape}, 
    terminal/.style={rectangle,minimum size=6mm,rounded corners=3mm, draw=black!50,top  color=white,bottom color=black!             20,font=\ttfamily}
    ]

    \matrix[row sep=1mm,column sep=2mm] {
        % First row:
        \node (p1) [terminal]  { \circled{ \setulcolor{green} \ul{a$_{1}$ , b$_{2}$}} | \setulcolor{blue} \ul{e$_{3}    $, r$_{1}$}}; &    
        %\node (p2) [terminal]  {  \setulcolor{green} \ul{ \circled{a$_{1}$} , b$_{2}$}} | \setulcolor{blue} \ul{e$_{3} $, r$_{1}$}};
        \\};

\end{tikzpicture}

\end{document}

Hier die bisherigen Ausgabe:

alt text

Ich möchte gern die kommentierte Zeile auskommentieren. Das heißt: Ich möchte gern, dass nur a1 rot eingekreist ist, aber der Term trotzdem durchgehend grün unterstrichen ist. Wieso funktioniert das so nicht und wie kann ich das am Besten machen? Ich könnte eine grüne Linie manuell an die Stelle coden, aber ich hatte gehofft, dass es eine bessere Lösung gibt. Der erste node ist nur mit drin um zu zeigen, dass es funktioniert etwas unterstrichenes einzukreisen, aber nicht andersherum.

gefragt 24 Okt '19, 23:56

skybeat's gravatar image

skybeat
4139
Akzeptiert-Rate: 0%

bearbeitet 26 Okt '19, 13:22

gast3's gravatar image

gast3
(ausgesetzt)

Mit einer Box bekommst Du zwar keine Fehlermeldung mehr, aber der grüne Unterstrich ist innerhalb des Kreises nicht mehr zu sehen.

(25 Okt '19, 07:24) Bartman

Etwas mehr auf herkömmliche Weise:

\documentclass{article}
\usepackage{tikz}

\usepackage{ulem}
% Handbuch: 
\newcommand\blueuline{\bgroup\markoverwith
{\textcolor{blue}{\rule[-0.7ex]{2pt}{0.9pt}}}\ULon}

\newcommand*\circled[2][red]{\tikz[baseline=(char.base)]{
\node[circle,draw,inner sep=2pt,color=#1,text=black, 
%minimum size=2em
] (char) {#2};}}

\begin{document}
\Large
\circled{a} \circled[blue]{a} \circled[black]{a}

\uline{\circled{a}  b c}
\blueuline{\circled{a}  b c}

\bigskip
\begin{tikzpicture}
\node[draw, rounded corners, fill=lightgray]{\blueuline{\circled{a}  b c}};
\end{tikzpicture}

\end{document}
Permanenter link

beantwortet 25 Okt '19, 22:58

haver555's gravatar image

haver555
199512
Akzeptiert-Rate: 7%

1

Bei Verwendung von ulem empfehle ich Option normalem. Ohne klagt eine nennenswerte Anzahl an Anwendern irgendwann, dass \em und \emph nicht mehr korrekt funktionieren oder im Literaturverzeichnis die Titel unterstrichen werden o. ä.

(26 Okt '19, 13:25) gast3

@Ijon Tichy: Also [normalem] zwischen \usepackage und {ulem} setzen?

(28 Okt '19, 16:12) skybeat

@skybeat Ob du die Option bei \documentclass global oder bei \usepackage nur für das Paket setzt, bleibt dir überlassen. Die Option selbst ist in der ulem-Anleitung bereits im zweiten Absatz des Abstracts dokumentiert. Ihre Verwendung wird auch noch einmal im ersten Abschnitt erklärt. Dort ist auch noch die Alternative \normalem zur Verwendung in der Dokumentpräambel dokumentiert.

(29 Okt '19, 08:38) gast3

Meine Herangehensweise mag mehr Aufwand bedeuten, dafür geht sie den möglichen Konflikten zwischen den Paketen aus dem Weg.

\documentclass[tikz, border=1pt]{standalone}
\usetikzlibrary{matrix, positioning, fit, backgrounds}

\begin{document}
\begin{tikzpicture}[
    terminal/.style={
        inner sep=1pt,
        rounded corners=3mm, 
        draw=black!50,
        top color=white,
        bottom color=black!20
    },
    gray matrix/.style={
        matrix of nodes,
        nodes={
%            draw, 
            inner sep=0pt
        },
        font=\ttfamily,
        column sep=3mm
    },
    circled/.style={
        circle,
        draw=red,
        thick
    }
]
\matrix[
    gray matrix
] (ml) {
    a\textsubscript{1}, & b\textsubscript{2} & $\vert$ &
    e\textsubscript{3}, & r\textsubscript{1}\\
};
\matrix[
    gray matrix,
    right=4mm of ml
] (mr) {
    a\textsubscript{1}, & b\textsubscript{2} & $\vert$ &
    e\textsubscript{3}, & r\textsubscript{1}\\
};

\scoped [on background layer, nodes=terminal]
    \path
        node [fit=(ml)] {}
        node [fit=(mr)] {}
    ;

\begin{scope}[thick, transform canvas={yshift=-2pt}]
\draw [green] 
    (ml-1-1.south west) -- (ml-1-2.south east)
    (mr-1-1.south west) -- (mr-1-2.south east)
;
\draw [blue] 
    (ml-1-4.south west) -- (ml-1-5.south east)
    (mr-1-4.south west) -- (mr-1-5.south east)
;
\end{scope}

\node [fit=(ml-1-1) (ml-1-2), circled, inner sep=1pt] {};
\draw [circled] (mr-1-1) circle [radius=12pt];
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 25 Okt '19, 07:32

Bartman's gravatar image

Bartman
1.6k13
Akzeptiert-Rate: 50%

bearbeitet 25 Okt '19, 07:34

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:

×730
×49
×30
×20

gestellte Frage: 24 Okt '19, 23:56

Frage wurde gesehen: 5,800 Mal

zuletzt geändert: 29 Okt '19, 08:38