ifnum을 사용하여 PGFplots 좌표 레이블 설정

ifnum을 사용하여 PGFplots 좌표 레이블 설정

나는 이 작고 불쾌한 문제를 극복할 수 없다. 사용하여 \ifnum내 pgfplot의 좌표 주위에 레이블 위치를 설정했습니다. 이것은 잘 작동합니다하지만:

\coordindex변수가 특정 값보다 크거나 작은지 테스트할 수만 있습니다 . 인덱스가 숫자와 같은지 테스트하고 싶습니다. \ifnum\coordindex=0처음에 사용할 경우 Tex에서 이런 오류가 발생합니다 .

누락됨 = \ifnum에 삽입되었습니다. \end{축}

\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패키지로 시도했지만 운이 없었습니다. 누구든지 이것에 대한 빠른 해결책을 갖고 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까? 문서에 따르면 이런 일이 발생해서는 안 됩니다.

아마도 여러분 중 한 명은 xlabel이 설정된 것과 같은 방식으로 ylabel을 인쇄하는 방법에 대한 힌트를 가지고 있을 것입니다. y 라벨 바로 위 및/또는 옆에 있습니다.

답변1

이는 다음과 유사합니다.TikZ 스타일 정의 내에서 \ifnum이 작동하지 않는 이유는 무엇입니까?, 그러나 상황은 다릅니다.

처리할 때 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

관련 정보