Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I'm attempting to draw a Kripke structure in TikZ and while I'm successful for the most part, I'm not quite satisfied with the result. Here is my preamble:

\documentclass[10pt,letterpaper]{amsart}

% Personal Packages

\usepackage{notation}

% TikZ Drawing packages

\usepackage{tikz}
\usetikzlibrary{arrows}

% Font and Typography Settings

\usepackage{concrete}
\usepackage{euler}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel=true]{microtype}

follow by my MWE:

\begin{figure}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
    thick,base node/.style={circle,draw}, real node/.style={double,circle,draw}]

    \node[real node] (1) {$s(C)$};
    \node[base node] (2) [below left of=1] {$s(\alpha)$};
    \node[base node] (3) [below right of=1] {$\neg{s(\alpha)}$};
    \path[]
        (1) edge node[left] {$L,J$} (2)
            edge node[right] {$L,J$} (3)
            edge [loop above] node {$C$} (1)
        (2) edge [bend left] node {$C,L,J$} (3)
            edge [loop left] node {$C,L,J$} (2)
        (3) edge [bend left] node {$C,L,J$} (2)
            edge [loop right] node {$C,L,J$} (3);
\end{tikzpicture}
\caption{The initial state of the domain in Ex.~\ref{ex:whisper}.}
\end{figure}

The difficulty that I'm having is that node 3 is larger than node 2 (presumably because it's resizing itself to accommodate the label text). Is there any way that I can have the nodes all have the same size? Also, any suggestions on how to make the diagram more aesthetically pleasing would be much appreciated (I'm coming from OmniGraffle and the transition is bit difficult).

share|improve this question

1 Answer 1

up vote 3 down vote accepted

You can use the minimum size= key:

\documentclass[10pt,letterpaper]{amsart}

% Personal Packages

%\usepackage{notation}

% TikZ Drawing packages

\usepackage{tikz}
\usetikzlibrary{arrows}

% Font and Typography Settings

\usepackage{concrete}
\usepackage{euler}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[babel=true]{microtype}

\begin{document}

\begin{figure}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=3cm,
    thick,base node/.style={circle,draw,minimum size=35pt}, real node/.style={double,circle,draw,minimum size=35pt}]

    \node[real node] (1) {$s(C)$};
    \node[base node] (2) [below left of=1] {$s(\alpha)$};
    \node[base node] (3) [below right of=1] {$\neg{s(\alpha)}$};
    \path[]
        (1) edge node[left] {$L,J$} (2)
            edge node[right] {$L,J$} (3)
            edge [loop above] node {$C$} (1)
        (2) edge [bend left] node {$C,L,J$} (3)
            edge [loop left] node {$C,L,J$} (2)
        (3) edge [bend left] node {$C,L,J$} (2)
            edge [loop right] node {$C,L,J$} (3);
\end{tikzpicture}
\caption{The initial state of the domain in Ex.~\ref{ex:whisper}.}
\end{figure}

\end{document}

enter image description here

From the pgf manual:

It is much better to use the minimum size option instead. This option allows > Hagen to specify a minimum size that the node should have. If the nodes actually needs to be bigger because of a longer text, it will be larger, but if the text is empty, then the node will have minimum size. This option is also useful to ensure that several nodes containing different amounts of text have the same size.

share|improve this answer
    
Thank you very much. –  ggelfond Apr 9 '13 at 1:27

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.