
다음 코드를 작동시키는 데 어려움을 겪고 있습니다.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\foreach \point in {(0,0),(0,2),(2,0),(2,2)} {
\begin{scope}[shift={\point}]
\fill (0,0) circle (0.1) ;
\end{scope}
}
\end{tikzpicture}
\end{document}
로그에는 다음이 포함됩니다.
패키지 tikz 오류: 이 좌표를 구문 분석할 수 없습니다.
설명은 tikz 패키지 설명서를 참조하세요. 즉각적인 도움을 받으려면 H를 입력하세요. ...
l.11 } 이 오류 메시지는 \errmessage 명령에 의해 생성되었으므로 명시적인 도움을 드릴 수 없습니다. 당신이 에르큘 포와로인 척: 모든 단서를 조사하고 순서와 방법에 따라 진실을 추론하세요.누락된 문자: ( 글꼴에 nullfont!
누락된 문자: 글꼴 nullfont에 0이 없습니다!
누락된 문자: nullfont 글꼴에 가 없습니다!
누락된 문자: 글꼴 nullfont에 0이 없습니다!
누락된 문자: nullfont 글꼴에 )가 없습니다!
이러한 좌표를 직접 사용할 수 있는 방법이 있습니까? 아니면 X/Y 스타일을 사용해야 합니까?
업데이트: (()가 문제를 해결한다는 주장을 해결하기 위해). 콘솔을 통해 Miktex 설치를 완전히 업데이트했습니다. 그러나 다음 줄(shift + () 사용과 직접 연결됨)은 여전히 나타납니다.
파일: epstopdf-sys.cfg 2021/03/18 v2.0 MiKTeX용 Eptopdf 구성 ))
누락된 문자: nullfont 글꼴에 )가 없습니다!
누락된 문자: nullfont 글꼴에 )가 없습니다!
누락된 문자: nullfont 글꼴에 )가 없습니다!
누락된 문자: nullfont 글꼴에 )가 없습니다!
[1]
목록의 각 좌표에 대해 정확히 하나의 버팀대(다른 수의 포인트로 확인됨)
답변1
TikZ 파서(좌표를 구문 분석하는 데에도 사용됨 shift
)가 이해하지 못하는 것을 발견하면 일반적으로 그 앞에 있는 것을 확장하려고 시도합니다.
이는 이유
\fill \point circle (0.1);
문제없이 작동합니다.
사용자가 잘못된 구문을 작성하는 경우 TikZ는 내부 카운터를 감소시키고 이 카운터가 0에 도달할 때까지만 확장 전술을 시도하므로 안전 장치를 갖추고 있습니다. 이 카운터는 일반적으로 100에서 시작하고 경우에 따라 1 또는 10씩 감소합니다.
특정 장소에서는 이 카운터가 100으로 재설정됩니다(예: 경로 시작 부분).
\fill[shift=\point] (0,0) circle (0.1) ;
작동) 또는 파서가 유효한 경로 사양을 성공적으로 찾은 경우. 그것재설정되지 않습니다그림의 시작 부분이나 범위의 시작 부분에. 그리고 이는 여전히 기본값이고 해당 시점에서 0으로 초기화되므로 구문 분석 시 오류가 발생합니다.
shift=(\point)
일어나는 모든 일이 또 다른 확장이 있기 때문에 works를 사용하면 다음과 같은 경고가 발생합니다.
Missing character: There is no ) in font nullfont!
이제 구문 분석을 시도하기 때문입니다.
((0,0))그리고 무슨 일이 일어나는지는 파서가 인식한다는 것입니다
(0
그러면 파서가 다음과 같이엑스좌표 값과 두 번째 값0
값와이값. 그러나 TeX 입력 스트림의 마지막 부분은 )
마치 마치 했던 것과 비슷합니다.
\path;
Foo
\path;
이제 왜 (0
오류가 발생하지 않습니까? PGF/TikZ의 많은 것들과 마찬가지로 이것은 PGFmath에 공급되어 평가될 것입니다. 그리고 PGFmath에는 문제가 없습니다. 노력하다
\pgfmathparse{(((((1}\pgfmathresult
또는
\pgfmathparse{1))))}\pgfmathresult
의견에서 제안한 대로 및를 사용 \expanded
하는 대신\noexpand
.expanded
키 핸들러이는 키에 값을 제공하기 전에 PGFkeys에 값을 확장하도록 지시합니다.
scope
(또는 환경이나 키를 패치하거나 shift
카운터를 수동으로 재설정하지만 TikZ가 자체적으로 확장하지 않는 경우 키 핸들러를 사용하면 항상 다른 위치에서 매우 잘 작동합니다.)
암호
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\foreach \point in {(0,0),(0,2),(2,0),(2,2)} {
\begin{scope}[shift/.expanded=\point]
\fill (0,0) circle[radius=.1];
\end{scope}
}
\end{tikzpicture}
\end{document}