Я не могу преодолеть эту маленькую гадкую проблему. Используя \ifnum
I set labels position вокруг координат в моем pgfplot. Это работает отличноно:
Я могу только проверить, \coordindex
больше или меньше ли переменная определенного значения. Я хочу иметь возможность проверить, равен ли индекс числу. Tex выдает мне эту ошибку, если я использую ее \ifnum\coordindex=0
в первый раз.
Отсутствует = вставлено для \ifnum. \end{axis}
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\pgfplotsset{
name nodes near coords/.style={
every node near coord/.append style={
anchor=center, %
name=#1\coordindex, % naming of npdes with running index
alias=#1last,
},
},
name nodes near coords/.default=coordnode
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
width=\textwidth,
height=.3\textheight,
scale mode = scale uniformly,
scale only axis,
xmin=-200,
xmax= 250,
ymin=- 50,
ymax= 400,
axis x line = middle,
axis y line = left,
grid = none,
xtick = {-200, -100, ...,300},
ytick = {-100, 0, ...,400},
minor tick num = 1,
ytick align = outside,
extra x ticks={0},
extra x tick style={grid=major},
xlabel={x / mm},
ylabel={y / mm},
]
\addplot+[
color=orange,
ultra thick,
shape=circle,
nodes near coords={},
every node near coord/.append style={
label={
[black!80, label distance=-1ex]
\ifnum\coordindex<1
5
\else
% \ifnum\coordindex=3
% -135
% \else
180-\coordindex*45
% \fi
\fi
:$p_{\coordindex}$
}
},
name nodes near coords=p
]
table{%
0 0
-79.9393 236.8749
143.0014 350.0007
143.0014 300.0000
200.0008 300.0000
};
\end{axis}
\end{tikzpicture}
\end{document}
Я также пробовал с ifthen
пакетом, но не получилось. Пожалуйста, есть ли у кого-нибудь быстрое решение этой проблемы? Что я делаю не так? Согласно документу, этого не должно возникать.
Возможно, у кого-то из вас есть подсказка, как напечатать ylabel таким же образом, как и xlabel: прямо над и/или рядом с y-меткой.
решение1
Это похоже наПочему \ifnum не работает внутри определений стилей TikZ?, но ситуация иная.
При обработке label={...}
PGF ищет =
; таким образом, обходной путь заключается в его сокрытии:
every node near coord/.append style={
label={
[black!80, label distance=-1ex]
\ifnum\coordindex<1
5
\else
\ifnum\coordindex\equals 3
-135
\else
180-\coordindex*45
\fi
\fi
:$p_{\coordindex}$
}
},
где \equals
в преамбуле определено
\newcommand{\equals}{=}
Другая возможность:
every node near coord/.append style={
label={
[black!80, label distance=-1ex]
\numbercompare{\coordindex<1}
{5}
{\numbercompare{\coordindex=3}{-135}{180-\coordindex*45}}%
:$p_{\coordindex}$
}
},
что требует
\usepackage{expl3}
\ExplSyntaxOn
\cs_set_eq:NN \numbercompare \int_compare:nTF
\ExplSyntaxOff