![pgfplotsset에서 그룹 스타일 키가 작동하지 않습니다.](https://rvso.com/image/309869/pgfplotsset%EC%97%90%EC%84%9C%20%EA%B7%B8%EB%A3%B9%20%EC%8A%A4%ED%83%80%EC%9D%BC%20%ED%82%A4%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
를 사용하여 스타일을 설정하려면 groupplot
다음과 같이 합니다.
\begin{groupplot}[
group style={
group size=1 by 2,
vertical sep=1cm,
},
]
그러나 를 사용하여 스타일로 저장하려고 하면 pgfplotsset
다음과 같은 사실을 발견했습니다.
\pgfplotsset{
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
},
}
스타일을 적용하면 키의 내용이 무시되는 것 같습니다 group style
. 다른 키의 값은 관찰되어 올바르게 적용되지만 의 값은 그렇지 않습니다 group style
. 경로의 키를 변경하려면 group
전체 키를 지정해야 합니다.
\pgfplotsset{
mygroup/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
},
}
그러나 에 옵션을 지정할 때 이러한 작성 방법을 사용하지 않기 때문에 이것은 이상하고 비표준적인 동작인 것 같습니다 \begin{groupplot}
.
이것이 예상되는 동작입니까? 에서 그룹 스타일을 정의하는 데 권장되는 방법은 무엇입니까 pgfplotsset
? 다음은 다양한 옵션의 주석 처리를 제거할 수 있는 MWE입니다.
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary[pgfplots.groupplots,calc]
\pgfplotsset{
compat=1.12,
mygroup/.style={
group style={
group size=1 by 2,
vertical sep=1cm,
},
every axis plot/.append style={
smooth,
}
},
mygroupb/.style={
group/group size=1 by 2,
group/vertical sep=1cm,
every axis plot/.append style={
smooth,
}
},
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[
% This style works without "group style"
% mygroupb,
% This style doesn't apply "group style"
% mygroup,
% But adding it manually here works
% group style={
% group size=1 by 2,
% vertical sep=1cm,
% },
]
\nextgroupplot
\addplot+[samples=5,domain=-3:3] {exp(-x^2+1)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2-1)};
\nextgroupplot
\addplot+[samples=5,domain=-3:3] {exp(-x^2+1)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2)};
\addplot+[samples=5,domain=-3:3] {exp(-x^2-1)};
\end{groupplot}
\end{tikzpicture}
\end{figure}
\end{document}
답변1
문제는 제가 생각했던 것보다 실제로 간단합니다.
정의에서 \begin{groupplot}[#1]
우리는 다음을 볼 수 있습니다
\pgfkeysinstallkeyfilter{/pgf/key filters/equals}{/pgfplots/group style}% \pgfkeysinstallkeyfilter{/pgf/key filters/is descendant of}{/pgfplots/group}% \pgfqkeysfiltered{/pgfplots}{#1}%
직관적으로 이렇게 말해준다
- 라고 말하면
[group style=something]
처리됩니다. - 라고 말하면
[group/something=else]
처리됩니다. - 그렇지 않으면 키가 무시됩니다.
그리고 몇 가지 실험을 통해 그것이 실제로 말하는 것은 다음과 같습니다.
- 라고 말하면
[group style=something]
처리됩니다.[mygroup]
위와 동일하다고 정의된 을 말하면 다음과 같습니다.무시됨.
- 라고 말하면
[group/something=else]
처리됩니다.[mygroup]
위와 동일하다고 정의된 이라고 말하면 처리됩니다.
- 그렇지 않으면 키가 무시됩니다.
이 문제를 쉽게 해결할 수 있는 방법이 없는 것 같습니다. 필터링은 의 핵심 기능 중 하나입니다.pgfkeys. 어쩌면 이런 .cd
저런 장난을 치는 속임수가 있을 수도 있습니다 .retry
. 나는 말할 수 없다.
결국,pgfkeys이상한 일을 많이 합니다. 예를 들어 수동 주장은 다음과 같습니다.
정확히 하나의 주요 필터가 적용되며 이는
.install key filter handler
또는 에 의해 설치됩니다\pgfkeysinstallkeyfilter
.
하지만 여기서는 두 개의 필터만 설치합니다.