Bemerkungen

Bemerkungen

Ich versuche, ein ziemlich einfaches Tikz-Bild zu zeichnen, das aus einigen sehr genau definierten Ebenen besteht. Mein Code ist

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{plotmarks}

\newlength{\offset}
\setlength{\offset}{4.72983cm}

\begin{document}
        \begin{tikzpicture}[y=1cm]
                %axis
                        \draw (-3,0) -- coordinate (y axis mid) (-3,20);
                %ticks
                        \foreach \y in {0,2,...,20}
                            \draw (-3,\y) -- (-3.25,\y) 
                            node[anchor=east] {\y};
                %labels      
                        \node[rotate=90, above=0.8cm] at (y axis mid) {\textbf{Energy[MeV]}};
                %input channel
                        \draw (-2,12.8435) -- (0,12.8435);
                        \node[above=0.2cm] at (-1,12.8435) {$p+{}^{19}F$};
                %compound nucleus
                        \draw[very thick] (2,20) -- (2,0) -- (5,0) -- (5,20);
                        \node[below=0.1cm] at (3.5,0) {${}^{20}Ne$};
                %output channel
                        \draw (7,\offset) -- (9,4.72983);%ground state
                        \draw (7,5.98765+\offset) -- (9,5.98765+4.72983);%1st state
        \end{tikzpicture}
\end{document}

Wie Sie sehen, habe ich eine Länge namens eingestellt offset. Das Problem ist, dass das Bild derzeit ziemlich groß ist. Ich möchte es nur auf skalieren y axis. Wenn ich \begin{tikzpicture}[y=1cm]auf ändere, \begin{tikzpicture}[y=.6cm]erhalte ich die ideale yGröße, aber die Ebenen auf output channelsind nicht richtig eingestellt.

Gibt es eine Möglichkeit, eine Länge zu definieren, tikzdie sich an die Längen von Tikz anpasst? Ich meine, dass die Standardlänge von Tikz 1cm. Bei der Verwendung \draw (0,0) -- (0,1);gibt man nicht an, dass man von cm spricht. Wenn die globale Länge geändert wird (z. B. `[y=0,6]), hat die vorherige Zeile eine Länge von 0,6 cm. Ist so etwas möglich?

Antwort1

Bemerkungen

Verwenden Sie ein Makro, um den reinen Wert zu speichern, sodass tikzer mit seinen eigenen Einheiten skaliert werden kann.

Implementierung

\documentclass[tikz]{standalone}
\usetikzlibrary{plotmarks}
\newcommand{\offset}{4.72983}
\begin{document}
\begin{tikzpicture}[y=0.2cm]
    %axis
    \draw (-3,0) -- coordinate (y axis mid) (-3,20);
    %ticks
    \foreach \y in {0,2,...,20}
    \draw (-3,\y) -- (-3.25,\y) 
    node[anchor=east] {\y};
    %labels      
    \node[rotate=90, above=0.8cm] at (y axis mid) {\textbf{Energy[MeV]}};
    %input channel
    \draw (-2,12.8435) -- (0,12.8435);
    \node[above=0.2cm] at (-1,12.8435) {$p+{}^{19}F$};
    %compound nucleus
    \draw[very thick] (2,20) -- (2,0) -- (5,0) -- (5,20);
    \node[below=0.1cm] at (3.5,0) {${}^{20}Ne$};
    %output channel
    \draw (7,\offset) -- (9,4.72983);%ground state
    \draw (7,5.98765+\offset) -- (9,5.98765+4.72983);%1st state
\end{tikzpicture}
\end{document}

Ausgabe

Bildbeschreibung hier eingeben

verwandte Informationen