
Zu einer kleinen Angelegenheit würde ich Sie gern noch einmal um Rat fragen.
Ich möchte es verwenden, tikzstyle
um den Stil mehrerer Diagramme zu beschreiben, aber wenn ich den Stil, den ich in meinem Diagramm verwende, kopiere und einfüge, erhalte ich einen Kompilierungsfehler.
Funktionierender Code:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\def\T{10}
\def\K{10}
\begin{tikzpicture}
\tikzstyle{Bode}=[]
\tikzstyle{Asymp}=[red,densely dashed,thick=1pt]
\tikzstyle{LieuReel}=[thick=1pt]
\def\FloorW{floor(ln(1/\T)/ln(10))}
\def\CeilW{ceil(ln(1/\T)/ln(10))}
\def\GdbK{20*ln(\K)/ln(10)}
\begin{semilogxaxis}[height=5cm,width=10cm,xlabel=$\omega$,ylabel=$G_{dB}$,grid=both,axis x line=bottom, axis y line = left,ymax=(\GdbK+4),xmax=10^(\CeilW+2.2)]
\addplot [domain=(10^(\FloorW-2)):(10^(\CeilW+2)),samples=50] {\GdbK-(10*(ln(\T^2*x^2+1)))/ln(10)}[LieuReel];
\addplot [domain=(10^(\FloorW-2)):(1/\T),samples=2] {\GdbK}[Asymp];
\addplot [domain=(1/\T):(10^(\CeilW+2)),samples=2] {\GdbK-(10*(ln(\T^2*x^2)))/ln(10)}[Asymp];
\end{semilogxaxis}
\end{tikzpicture}
\end{document}
Jetzt füge ich den Stil meines semilogaxis
in das tikzstyle{Bode}
ein und tippe Bode
ihn stattdessen
\tikzstyle{Bode}=[height=5cm,width=10cm,xlabel=$\omega$,ylabel=$G_{dB}$,grid=both,axis x line=bottom, axis y line = left,ymax=(\GdbK+4),xmax=10^(\CeilW+2.2)]
...
\begin{semilogxaxis}[Bode]
und ich erhalte diesen Fehler:
! Package pgfkeys Error: I do not know the key '/tikz/height', to which you passed '5cm', and I am going to ignore it. Perhaps you misspelled it.See the pgfkeys package documentation for explanation.Type H <return> for immediate help.... \end{semilogxaxis}
Kannst du mir helfen ?
Antwort1
\tikzstyle{foo}=[..]
oder der Ersatz \tikzset{foo/.style={..}}
sucht in der /tikz
Schlüsselfamilie, aber width
und height
die anderen axis
Parameter gehören zur Familie, sodass Sie einen unbekannten /pgfplots
Fehler erhalten ./tikz/width
Stattdessen können Sie verwenden \pgfplotsset{foo/.style={..}}
. Dann wird davon ausgegangen, dass sich die Schlüssel in der /pgfplots
Familie befinden.
Übrigens ist es generell besser, \newcommand
anstelle von zu verwenden \def
, da Sie dann nicht versehentlich vorhandene Makros überschreiben.
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\newcommand\T{10}
\newcommand\K{10}
\begin{tikzpicture}[
Asymp/.style={red,densely dashed,thick=1pt},
LieuReel/.style={thick=1pt}
]
\newcommand\FloorW{floor(ln(1/\T)/ln(10))}
\newcommand\CeilW{ceil(ln(1/\T)/ln(10))}
\newcommand\GdbK{20*ln(\K)/ln(10)}
\pgfplotsset{
bode/.style={
height=5cm,
width=10cm,
xlabel=$\omega$,
ylabel=$G_{dB}$,
grid=both,
axis x line=bottom,
axis y line = left,
ymax=(\GdbK+4),
xmax=10^(\CeilW+2.2)}
}
\begin{semilogxaxis}[bode]
\addplot [domain=(10^(\FloorW-2)):(10^(\CeilW+2)),samples=50] {\GdbK-(10*(ln(\T^2*x^2+1)))/ln(10)}[LieuReel];
\addplot [domain=(10^(\FloorW-2)):(1/\T),samples=2] {\GdbK}[Asymp];
\addplot [domain=(1/\T):(10^(\CeilW+2)),samples=2] {\GdbK-(10*(ln(\T^2*x^2)))/ln(10)}[Asymp];
\end{semilogxaxis}
\end{tikzpicture}
\end{document}