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>처럼 입력하시면 좋습니다.
pgfkeys를 이용한 데이터저장방법에 대하여
2014.08.10 20:20
TeX하고는 데이터 저장하고는 잘 어울리지 않는것으로 알고 있지만...
계속 시도하다가 잘 안되서 여쭤드립니다.
사용한 패키지는
\usepackage{pgfkeys,tabu,longtable,newtxtext,ifthen}
이고 원하는 생각은 다음과 같습니다.
\let\SetValue\pgfkeyssetvalue
\SetValue{myvalue}{11}%
\SetValue{sky}{\pgfkeysvalueof{myvalue}}%
\SetValue{myvalue}{22}%
와 같은 로직을 세우고, 제가 원하는 값은 sky값에 11을 저장합니다.
\begin{document}
\label{test:1}
\pgfkeysvalueof{sky}
\end{document}
와 같이 했을 때, sky 부분에 11이 나오기를 원합니다. 방법론을 어떻게 세워야할지 모르겠습니다.
데이터들은 모두 pgfkeys로 1300개정도 정리되어있습니다.
폰트와 링크문제때문에 LuaLaTeX을 쓰고 있습니다.
제가 Lua를 아는 상태가 아니라서 데이터관리를 할 방법도 마땅한 방법이 떠오르지 않습니다.
http://tex.stackexchange.c0m/questions/86590/use-tex-macros-to-store-multiple-data
을 참고해서 제작을 시도하는 중입니다만 생각보다 잘 안되네요.
댓글 4
-
nanim
2014.08.11 07:24
-
하늘연
2014.08.11 22:15
이게 공동작업인데, 처음 작업하신 분께서 pgfkeys를 이용해서 데이터를 텍데이터로 이관해서 시작해서 이 코드를 이용해서 할 수밖에 없던 상황입니다.
제가 코드상황을 위의 예제로 충분히 설명을 못했던 것 같습니다. 다른 문제가 발생했네요.\documentclass{article}
\usepackage{pgfkeys}
\let\SetValue\pgfkeyssetvalue
\def\CopyMyvalueTo#1{%
\edef\tmpa{\pgfkeysvalueof{myvalue}}%
\SetValue{#1}{\tmpa}%
}
\begin{document}
\SetValue{myvalue}{11}
\CopyMyvalueTo{sky}
\SetValue{myvalue}{aa}
\SetValue{myvalue}{bbbb}
\CopyMyvalueTo{sky2}
\SetValue{myvalue}{ccccc}
\SetValue{myvalue}{ddddd}
\SetValue{myvalue}{eee}
\pgfkeysvalueof{sky}
\pgfkeysvalueof{sky2}
\end{document}
여기서 sky부분에는 11, sky2부분에는 bbbb에 나오게 하고 싶습니다. 현재코드에서는 \tmpa때문에 이런 일이 벌어진듯 한데..
잘 안되면, 수동으로 데이터 처리를 할 방법을 생각중입니다.
맨 마지막페이지에 앞에서 저장한 데이터를 한꺼번에 읽게 해주는 방법입니다. index를 개조하려고 했더니, 제가 실력이 부족해서 못하겠던 상황이었습니다.아무래도 데이터를 많이 바꾸는것도 아니고, 완전자동화하다가는 실수를 많이 할거 같아서, 수동으로 할 것 같습니다.
이젠 방법론이 궁금하네요.
-
nanim
2014.08.12 09:55
데이터를 다루는 다른 방법을 생각해보시라고 말씀드리고 싶습니다.
아무튼, 특정 시점에 copy된 데이터를 나중에 print하는 것만이 문제라면,
\documentclass{article}
\usepackage{pgfkeys}
\let\SetValue\pgfkeyssetvalue
\usepackage{memory}
\newdata*{sky}
\newcounter{skyidx}
\def\CopyMyvalueToSky{%
\stepcounter{skyidx}%
\def\tmpa{\pgfkeysvalueof{myvalue}}%
\sky[\theskyidx] := \tmpa
}
\begin{document}
\SetValue{myvalue}{11}
\CopyMyvalueToSky
\SetValue{myvalue}{aa}
\SetValue{myvalue}{bbbb}
\CopyMyvalueToSky
\SetValue{myvalue}{ccccc}
\CopyMyvalueToSky
\SetValue{myvalue}{ddddd}
\SetValue{myvalue}{eee}
\sky[1],
\sky[2],
\sky[3]
\end{document}
-
하늘연
2014.08.12 20:54
의도하던 대로 잘나오는 것을 확인했습니다.
감사합니다.
요컨대 \SetValue{myvalue}한 값을 어떤 특정한 시점에서 sky로 복사하려는 것인가요?
\CopyMyvalueTo라는 명령을 하나 정의해보지요.
데이터가 숫자라면
그리고
이렇게 할 수 있을 것입니다.
데이터가 꼭 숫자가 아니라면
이 정도면 되겠죠.
그런데 왜 꼭 \pgfkeys인가요? 특별히 key=value 형식의 데이터는 보이지 않는 듯한데요.
간단한 데이터베이스 비슷한 것을 활용하실 생각이라면 더 좋은 방법이 많지 않을까 하는 생각이 듭니다.