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>처럼 입력하시면 좋습니다.
tkz-graph 패키지의 명령들을 한단어 명령어로 축약하기
2015.02.27 14:23
tkz-graph 패키지를 이용하여 소위 dual graph라는 것을 그리는 환경을 작성하였습니다.
\documentclass[a4paper, reqno, twoside]{amsart}
\usepackage{tikz}
\usepackage{tkz-graph}
\begin{tikzpicture}
\SetGraphUnit{0.5}
\tikzset{VertexStyle/.style = {
shape = circle,
fill = black,
inner sep = 0pt,
outer sep = 0pt,
minimum size = 0.35em,
line width = 0pt,
draw}}
\SetVertexMath
\tikzset{EdgeStyle/.style ={thin}}
\Vertices[LabelOut,Lpos=90,Ldist=-0.2em,style={font=\scriptsize}]{line}{-2,-3,-4,-5}
\Edges(-2,-3,-4,-5)
\end{tikzpicture}
저의 코드의 단점이라면, 저런 그래프가 나타날 때마다 저렇게 긴 줄들을 줄줄 나열해야 하는 것입니다.
그래서 예를 들어
\LinearGraph{-2, -3, -4, -5}와 같이 입력하면 위의 결과가 찍히는 명령어를 만들고 싶습니다. 단 문제는 명령어 인자에 들어가는 숫자의 개수가 변할 수 있다는 점입니다. 혹은 비어있을 수도 있습니다. 예를 들자면 \LinearGraph{-2, ,-5, -6, -7, -8, -9} 같은 상황입니다.
이렇게 명령어의 인자의 개수가 정해져 있지 않을 때는 어떤 방식으로 해쳐나갈 수 있는지요?
댓글 8
-
작나
2015.02.27 14:59
한가지 방법. -
커꿈
2015.02.27 15:16
감사합니다!!
의도치 않은 빈칸 하나를 없애기 위해 %를 추가하였습니다.
\documentclass{article}\usepackage{tikz}\usepackage{tkz-graph}\begin{document}\def\linegraph#1\end{%\begin{tikzpicture}\SetGraphUnit{0.5}\tikzset{VertexStyle/.style = {shape = circle,fill = black,inner sep = 0pt,outer sep = 0pt,minimum size = 0.35em,line width = 0pt,draw}}\SetVertexMath\tikzset{EdgeStyle/.style ={thin}}\Vertices[LabelOut,Lpos=90,Ldist=-0.2em,style={font=\scriptsize}]{line}{#1}\Edges(#1)\end{tikzpicture}}\def\LinearGraph#1{\linegraph#1\end}\LinearGraph{1,2,3}\LinearGraph{-5,-4,-3,-2,-1}\LinearGraph{0,1,2,3,4,5,6,7,8,9,10,11,12,13}\end{document} -
nanim
2015.02.27 15:29
빈 항목이 들어오는 경우를 처리하기 위해 clist를 써봅니다.
\documentclass[a4paper, reqno, twoside]{amsart}
\usepackage{tikz}
\usepackage{tkz-graph}
\usepackage{expl3,xparse}
\tikzset{VertexStyle/.style = {
shape = circle,
fill = black,
inner sep = 0pt,
outer sep = 0pt,
minimum size = 0.35em,
line width = 0pt,
draw}}
\ExplSyntaxOn
\cs_new:Npn \draw_my_graph:n #1
{
\begin{tikzpicture}
\SetGraphUnit{0.5}
\SetVertexMath
\tikzset{EdgeStyle/.style ={thin}}
\Vertices[LabelOut,Lpos=90,Ldist=-0.2em,style={font=\scriptsize}]{line}{ #1 }
\Edges ( #1 )
\end{tikzpicture}
}
\NewDocumentCommand \LinearGraph { m }
{
\clist_set:Nn \l_tmpa_clist { #1 }
\clist_remove_all:Nn \l_tmpa_clist { }
\exp_args:Nx \draw_my_graph:n { \clist_use:Nn \l_tmpa_clist {, } }
}
\ExplSyntaxOff
\begin{document}
\LinearGraph{-2,-3,,-4,-5}
\LinearGraph{-2,,-5, -6, -7, -8, -9}
\LinearGraph{1,2,3}
\LinearGraph{-5,-4,-3,-2,-1}
\LinearGraph{0,1,2,3,4,5,6,7,8,9,10,11,12,13}
\end{document} -
커꿈
2015.02.27 23:13
감사합니다!
사실 빈 칸이 있는 경우에는 점vertex만 있고 표식label은 없게 하고 싶은 것이었는데, 조금 더 연구해 보겠습니다
-
nanim
2015.03.01 14:10
참고하십시오.
-
nanim
2015.03.01 08:27
얼마 전에 하늘연 님이 tikz와 expl3를 함께 쓰는 데 어려움을 겪으셨다는 얘기가 생각나서 코멘트합니다.
위에 첨부한 샘플에서 \tikzset 부분이 ExplSyntax 밖에 놓여 있습니다만 이걸 그대로 ExplSyntax 안으로, 그러니까 LinearGraph 명령의 정의 내부로 가져오려면 주의해야 할 부분입니다.
tikz의 옵션 명은 예컨대 inner sep, line width와 같이 space를 respect해줘야 합니다.
따라서 inner~sep, line~width와 같이 적어야 오류가 발생하지 않습니다. expl3의 문법을 생각하면 당연한 일이지요.
실제로 tikz에서 문제가 되었을 법한 부분은 이것 정도가 아닌가 싶어요. 콜론은 사실상 거의 등장하지 않으니까요.
-
nanim
2015.03.01 14:06
작은나무 님께 배운 fifo로 해봤습니다. :)
-
커꿈
2015.03.01 15:00
작은나무님과 nanim님 모두 감사합니다! 재미난 것들을 배웠습니다.