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>처럼 입력하시면 좋습니다.
표에서 & 문제
2022.01.02 18:53
한동안 ktug 활동을 잘 하지 못했습니다.
새해 복 많이 받으시기 바랍니다.
우선 다른 코드를 연구해서 해결을 해보려고 하는데, 무엇을 제가 잘못 생각해서 코드가 구현이 안되는지 궁금하여 올립니다.
외부파일로 엑셀을 파이썬으로 변환해서 텍의 표 양식에 맞게 변환하는 솔루션을 만들었습니다.
그래서 그 파일을 텍에다가 넣으려고 했더니 "Misplaced alignment tab character &" 오류가 떠서 작동이 되지 않습니다.
이 문제를 어떻게 해결해야 하는지 여쭙고자 올립니다.
감사합니다.
\documentclass{article}
\usepackage{expl3,xparse,tabularray}
\ExplSyntaxOn
\tl_set:Nn \l_emp {&}
\tl_set:Nn \l_excel {a \l_emp b \l_emp c}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\begin{tblr}{X X X}
\l_excel
\end{tblr}
\ExplSyntaxOff
\end{document}
댓글 6
-
하늘여니
2022.01.03 07:30
-
하늘여니
2022.01.03 08:41
검색을 해보니 최신 패키지에 expand 옵션을 주는게 있었습니다. 이와 같이 작성하여 해결했습니다.
-
noname
2022.01.06 16:22
이게 말이죠...
\ExplSyntaxOn \expandafter\begin\expandafter{ \expandafter t \expandafter b \expandafter l \expandafter r \expandafter } \expandafter{ \expandafter X \expandafter | \expandafter X \expandafter | \expandafter X \expandafter} \l_excel \end{tblr} \ExplSyntaxOff
이렇게 해보면 되는 걸 알 수 있습니다. 따라서
\begin{tblr}{XXX} \l_excel_tl \end{tblr}
순으로 토큰이 놓이니까 :Nnno 확장을 할 수 있으면 간단히 될 것 같습니다. 문제는 interface3를 찾아보면 \exp_last_unbraced:Nnno라는 명령이 정의되어 있지 않다는 거거든요.
없으면 만들어서 쓰는 게 LaTeX 사용자의 미덕이 아니겠습니까?
\cs_new:Npn \exp_last_unbraced:Nnno { \::n \::n \::o_unbraced \::: } \exp_last_unbraced:Nnno \begin{tblr}{X|X|X} \l_excel \end{tblr}
아, 하나 빠뜨렸는데, \l_excel은 :x 확장을 해두어야 할 겁니다.
\tl_set:Nx \l_excel {a \l_emp b \l_emp c}
---
새로운 명령을 정의하는 게 찜찜하다면... 다음처럼 우회하는 것도 한 가지 방법일지 모릅니다.
\exp_last_unbraced:Nno \tblr {XXX} \l_excel \endtblr
-
하늘여니
2022.01.07 00:30
역시 항상 많이 배웁니다. 감사합니다.
-
noname
2022.01.07 04:59
한 가지 더 언급하자면, \hline이나 \cline과 같은 명령에 대해서인데요, (tblr은 이것 없이도 표의 가로선을 그을 수 있으므로 큰 문제는 아니겠지만) 이것이 예시 코드의 \l_excel에 들어가게 된다면 주의할 점이 있습니다. 이 문제를 해결하는 것은 몇 가지가 있는데, 하나는 \l_excel_tl에 이걸 넣을 때 다음과 같이 해주는 것입니다.
\tl_set:Nx \l_excel_tl { a \l_emp b \l_emp c \exp_not:N \hline }
다른 하나는 미리 이것을 protected로 만들어두는 것인데요, etoolbox를 이용해서
\usepackage{etoolbox}
\robustify{\hline}그런 다음에
\tl_set:Nx \l_excel_tl { a ... \hline }
저로서는 tblr에서는 \hline 같은 명령을 일일이 안 쓰는 쪽을 선호합니다.
-
yihoze
2022.01.07 10:28
아주 오래 전에 excel2latex인가 하는 걸 써본 기억이 어렴풋이 나네요.
부분적인 해결법으로 tabularrary가 아니라 tabular일 경우는 이 트릭으로 가능하다는 걸 알았습니다.
\makeatletter
\newcommand*\ExpandableInput[1]{\@@input#1 }
\makeatother
tabularrary로는 안되네요.