Q&A 마당은 텍 관련 질문/답변을 위해 만들었습니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- 질문 전에 아래를 읽어 보세요. 좋은 질문이 좋은 답을 받을 수 있는 좋은 방법입니다.
- 질문에 맞는 제목을 붙이세요. 질문의 내용과 관련없는 "고수님", "긴급질문", "도와주세요"와 같은 제목은 답이 잘 올라오지 않습니다. 이 게시판에 올라오는 모든 글은 질문입니다. 굳이 [질문], [Q]를 적으실 필요도 없습니다.
- 내용을 충실히 적어 주시고, 같은 상황을 재현할 수 있는 최소한의 예제가 같이 있어야 합니다.
- 최소 예제는 "Minimal working example"을 읽어 보세요.
- 파일을 첨부하실 때에는 가능한 압축하여 파일 크기를 줄여서 올려주시길 바랍니다.
- 개인적으로 사용하신 글꼴이 들어 있는 경우, preparefont.sty에 관한 답변을 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 사용하는 편집기는 CKeditor입니다.
- 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한 줄을 비웁니다.
- 글줄만 바꾸려면 [shift-enter]를 누르면 <BR> 태그가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
- 수식를 문서내에 삽입하시려면 에디터를 툴바에서 [소스]를 눌러 HTML로 입력할 수 있게 바꾸신 후 <pre> </pre> tag를 사용하셔서 <pre> 여러 줄의 수식 </pre>처럼 입력하시면 좋습니다.
tikz에서 좌표를 숫자대신 알파벳으로 넣으면 출력물이 안 나오네요.
2023.03.19 08:36
\documentclass[11pt]{standalone}
\usepackage{kotex}
\usepackage{mathtools}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{calc,math,angles,positioning,intersections,decorations.markings,backgrounds}
\input{mainsetting}
\begin{document}
\begin{tikzpicture}[scale=1]
\path (0,0) coordinate (A);
\path (4,0) coordinate (B);
\path (4,4) coordinate (C);
\path (0,4) coordinate (D);
\draw (A)--(B)--(C)--(D)--cycle;
\draw[shift={(2,0)},scale={1/sqrt(2)},rotate=45] (0,0)--(4,0)--(4,4)--(0,4)--cycle; %
\end{tikzpicture}
\end{document}
위의 코드로 하면 출력물이 나오는데 %에서 좌표 대신에 A,B,C,D를 각각 입력하면 정사각형 속 정사각형이 나오지 않습니다. 원인이 무엇인지 여쭙습니다.
댓글 3
-
ischo
2023.03.19 14:55
-
aud
2023.03.19 19:25
chatgpt에게 물어보니, 질문에 맞는 대답은 아니지만, 어떻게든 결과물은 만들어내네요. 원래 코드의 의도를 이해한다는 점이 놀랍네요.
\documentclass[11pt]{standalone}
\usepackage{kotex}
\usepackage{mathtools}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetikzlibrary{calc,math,angles,positioning,intersections,decorations.markings,backgrounds}
\begin{document}
\begin{tikzpicture}[scale=1]
% Define the outer square
\path (0,0) coordinate (A);
\path (4,0) coordinate (B);
\path (4,4) coordinate (C);
\path (0,4) coordinate (D);
% Draw the outer square
\draw (A)--(B)--(C)--(D)--cycle;
% Define the coordinates of the inner square
\coordinate (E) at ($(A)!0.5!(B)$);
\coordinate (F) at ($(B)!0.5!(C)$);
\coordinate (G) at ($(C)!0.5!(D)$);
\coordinate (H) at ($(D)!0.5!(A)$);
% Draw the inner square
\draw (E)--(F)--(G)--(H)--cycle;
\end{tikzpicture}
\end{document}
-
noname
2023.03.20 08:07
\path coordinate로 고정된 좌표에 대하여 shift, scale, rotate와 같은 변형으로 점이 옮겨지지 않기 때문입니다.
(1) 새로운 coordinate를 얻어서 내부 사각형 그리기
(위의 aud 님이 보여주신 코드와 발상이 같습니다.)
\path coordinate (A1) at ($(A)!0.5!(B)$) coordinate (B1) at ($(B)!0.5!(C)$) coordinate (C1) at ($(C)!0.5!(D)$) coordinate (D1) at ($(D)!0.5!(A)$); \draw (A1)--(B1)--(C1)--(D1)--cycle;
(2) \draw를 별도의 scope에 넣고 변형하기
\begin{scope}[shift={(2,0)},rotate around={45:(0,0)},scale={1/sqrt(2)}] \path coordinate (A) at (0,0) coordinate (B) at (4,0) coordinate (C) at (4,4) coordinate (D) at (0,4); \draw (A)--(B)--(C)--(D)--cycle; \end{scope}
이 경우에는 scope 내부에서 coordinate들을 한번 정의해주어야 합니다. 그래서 그다지 효율적으로 보이지 않는데 \draw한 오브젝트에 대하여 변형을 가하는 방법을 보여주기 위해서 제시합니다. (A)등의 이름은 재정의되므로 혼선을 줄이기 위해서라면 별도의 이름을 주는 것이 더 좋을 수도.
(3) 단순 매크로 치환
\def\pA{0,0}\def\pB{4,0}\def\pC{4,4}\def\pD{0,4} \foreach \L in {A,B,C,D} { \coordinate (\L) at (\csname p\L\endcsname); } \draw(A)--(B)--(C)--(D)--cycle; \draw[shift={(2,0)},scale={1/sqrt(2)},rotate=45] (\pA)--(\pB)--(\pC)--(\pD)--cycle;
(4) 2와 3을 합쳐서 전체를 써보면 다음처럼 되겠습니다.
\def\pA{0,0}\def\pB{4,0}\def\pC{4,4}\def\pD{0,4} \foreach \L in {A,B,C,D} { \coordinate (\L) at (\csname p\L\endcsname); } \draw (A)--(B)--(C)--(D)--cycle; \begin{scope}[shift={(2,0)},rotate around={45:(0,0)},scale={1/sqrt(2)}] \foreach \L in {A,B,C,D} { \coordinate (\L1) at (\csname p\L\endcsname); } \draw (A1)--(B1)--(C1)--(D1)--cycle; \end{scope}
나오지 않는 것이 아니라 겹쳐져서 하나로 보이기 때문일 것입니다.
https://stackoverflow.com/questions/74551736/latex-tikz-how-can-i-rotate-a-line
### (추가)
원인: The problem is that you are using absolute coordinates.
해결: 절대좌표 (A), (B) 등을 그대로 쓰려면...
%%% \draw[shift={(2,0)},scale={1/sqrt(2)},rotate=45] (0,0)--(4,0)--(4,4)--(0,4)--cycle; % 대신에
\begin{scope}
[transform canvas={shift={(2,0)},scale={1/sqrt(2)},rotate=45}]
\draw (A)--(B)--(C)--(D)--cycle;
\end{scope}