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>처럼 입력하시면 좋습니다.
표, minipage 그리고 여백 (+ 사칙연산)
2021.12.03 17:45
아직도 여백을 못맞춰서 고생중입니다. 민망함을 무릅쓰고 또 질문을 드려봅니다.
아래 그림 일본어 책과 유사하게 문서를 만들어보고 있구요.
인디자인 파일을 받아서 번역문을 일일이 바꿔넣어보려고 했으나
사리가 생길 것 같아 텍으로 해보는 중인데 텍에선 여백으로 고생중이네요.
일단 저런 형태의 기본형을 만드는데 표가 더 나은지 minipage가 나은지요.
표로 만든다고 해서 여백 조정하기가 더 쉽진 않은 느낌이네요.
kswrapfig으로 처리한 이미지 위치를 표로 만든다면 어떻게 해야할지 모르겠습니다.
그리고 표의 가변폭을 처리해야 하는데... #1\textwidth와 \resultcalc{1-#1}\textwidth 이런 느낌으로 하고싶거든요.
0.4가 있으면 0.6이 자동으로 되게끔요. 그런데 이 단순 마이너스 연산을 어떻게 쓰면 될지 모르겠습니다.
그 외에도 다양한 애로사항이 있을것 같긴 합니다만...
혹 인디자인이 더 나아보이시면 그걸 그냥 쓰라고 조언주셔도 좋습니다.
책의 포맷은 저렇게 메인 리뷰가 책의 절반을 차지하고 나머지 서브 리뷰가 두개정도 들어가는 식입니다.
그 외에도 다른 형태가 있지만 가장 중요한 것이 이 두가지네요.
kswrapfig의 sep과 indent 조정 등은 매뉴얼 보고 따라할 수 있었는데
tabularray는 뭔가 못찾겠네요. -_-
댓글 11
-
판돌이
2021.12.03 17:46
-
noname
2021.12.04 05:36
문제가 네 개인데, (1)번부터 살펴보겠습니다. "세로 가운데 정렬"이라 하신 건데요,
실은 컴파일을 해 보면 지금 "세로 가운데" 정렬이 이미 되어 있는 상태입니다. 믿기 힘드시겠지만... 요컨대 "세로로 가운데"라는 요구에 대한 근본적이고 철학적인 고찰이 필요한 겁니다. :)
세 부분으로 이루어져 있다고 볼 때, (a) Ozaki Ami (b) vertical bar (|), (c) 1976 (숫자) 이 세 부분인데 이 가운데 가장 키가 큰 세로선(|)이 일단 수직으로 가운데 자리를 차지하고요, 그 다음에 이 문자(|)의 baseline에 맞추어 좌우의 텍스트와 숫자가 정렬된 상태입니다. 진짜로 "baseline을 무시하고 수직 중앙정렬"이라면, 텍스트 부분과 숫자를 박스로 묶는다고 해도 숫자와 레터의 높이가 달라서 어색한 결과를 얻겠죠. 게다가 이 텍스트는 마침 인명 부분에 baseline 아래로 내려가는 문자가 하나도 없지만 예컨대 Ozaki Ami가 아니라 Yagami Junko라면 좀 다르게 보일 걸요?
이게 다 baseline이라는 문자의 디자인 요소를 고려해야 하기 때문인데요, 각설하고, 이 케이스에서 가장 쉬운 해결책은 중간에 있는 vertical bar를 조금 올려주는 겁니다. 그러면 원하시는 것과 비슷한 모양이 나올지도 모르겠어요.
\colorbox{Lavender}{\begin{minipage}[b][1.2em][c]{\textwidth}% \textcolor{DarkSlateBlue}{\sffamily{\relsize{-1}\hspace{.2em}#1 \raisebox{.25ex}{|} #4}}% \end{minipage}}
더 복잡하고 세밀한 방법도 있습니다. 예컨대 adjustbox의 raise나 valign을 텍스트의 각각의 부분에 적용하는 방법이나, 아니면 세로선을 문자가 아닌 높이 0인 그림으로 처리하는 방법 등...
-
noname
2021.12.04 05:55
(4)번의 tblr width 문제는, 간단히,
width=\textwidth-#1\textwidth,
이렇게만 해도 될 겁니다. sep 관련 변수들 때문에 길이가 끝단이 딱 맞지 않으면 적당히 더하거나 뺄 수 있을 겁니다.
연산이 가능하지 않은 때는 calc 패키지를 이용하거나 미리 계산한 결과값을 넣는 코드를 두거나, pdf 연산식을 이용하거나, expl3로 처리하거나, eTeX의 expr 연산식을 이용하거나 등등 여러 방법이 있습니다만...
(3)번 질문에 해당하는 표가 좋으냐 minipage가 좋으냐에 대해서 저는 모르겠기 때문에 답변드리기 어렵습니다.
-
판돌이
2021.12.04 12:55
헑 간단히 빼기가 될 줄이야...
보면 텍에서 정신건강에 가장 해로운 부분이 여백과 위치잡기같습니다. ㅠㅠ
고맙습니다~
-
noname
2021.12.04 15:04
원래 LaTeX은 정해진 포맷으로 저자는 글만 쓰라는 철학에서 비롯된 것이라고 극단적으로 말할 수 있습니다. 그런데 지금 하시는 일은 그 "포맷"을 설계하는 문제인데 이건 사실 간단하지 않죠. 알아야 할 것도 많고 신경쓸 것도 많고 그렇습니다. 그것이 LaTeX의 단점이라고 저는 생각하지 않는데, 언뜻 보면 시각적으로 쉽게 설계할 수 있을 것 같은 출판 디자인 도구들의 경우에도 실은 신경써야 할 것이 수도 없이 많습니다. 결코 LaTeX보다 쉬운 툴은 아니죠. "디자인" 문제에 한정할 때라 하더라도 LaTeX의 장점은 "프로그래밍 가능하다"는 데 있는 것이지 쉽다/어렵다에 있는 것은 아닐 것입니다.
-
noname
2021.12.04 14:33
(2)번에 대해서입니다. \artist 명령에 의하여 만들어지는 부분과 이어지는 텍스트의 간격을 줄이거나 없애고 싶다는 것이라고 이해했습니다.
여러 가지 방법이 있겠습니다만 간단한 방법은 \artist에 의해 식자되는 부분 전체를 minipage로 감싸고 minipage의 "두 번째 옵션 인자"로써 이 박스가 차지할 수직 길이를 지정해주는 것일 듯합니다.
\newcommand\artist[5]{% \noindent% \begin{minipage}[t][\height-\onelineskip]{\textwidth} \colorbox{Lavender}{\begin{minipage}[b][1.2em][c]{\textwidth}% \textcolor{DarkSlateBlue}{\sffamily{\relsize{-1}\hspace{.2em}#1 | #4}}% \end{minipage}} \noindent% \begin{minipage}[b]{.6\textwidth} \vspace{0pt} %\rule{0pt}{3em} {\setlength{\baselineskip}{.2\baselineskip} \textcolor{DarkSlateBlue}{\sffamily\Large{#2}}\newline \noindent% \textsc{\raisebox{1em}{#3}}} \vspace{0pt} % \end{minipage} {\color{Lavender}\rule{.1em}{2em}} \begin{minipage}[b]{.4\textwidth} \vspace{0pt} %\rule{0pt}{3em} \noindent{\sffamily{\tiny #5}} \vfill \vspace{0pt} % \end{minipage}\raggedcolumns \end{minipage} }
밑줄 친 부분의 의미는 minipage의 \height에서 \onelineskip만큼을 뺀 값을 현재 minipage의 수직 길이로 강제하라는 정도인데요, 단순 연산이 가능한 것처럼 보이는 이유는 다른 패키지 어디에선가 calc가 로드되어 있기 때문입니다. 이 행과 마지막 \end{minipage}를 제외하고는 모두 원래 있던 코드입니다.
-
판돌이
2021.12.05 00:32
고맙습니다~ 힌트주셔서 그것대로 했더니 거의 다 되어갑니다.
그렇게 수직 길이를 제한할 수 있는지도 몰랐네요.
\height는 어떻게 정의되는 수치일까요? 내용이 들어가면 그 내용에 의해 만들어지는
적정한 높이를 알아서 계산하여 가지게 되는 수치일까요?대략 되어가고 있긴 합니다만, 컴파일해보시면 헤드부분(\artist)이 가장 위에 있을 때와
두번째 이하에 있을 때 한자 위의 여백이라거나 | 위의 공백이 미묘하게 달라집니다.
이미 만족한 상태입니다만 그래도 이 차이가 마음에 걸리네요 -_-고친 파일 MWE도 올려봅니다.
-
noname
2021.12.05 07:22
제가 만약 이런 비슷한 걸 만들어야 했다면, 높은 확률로 다음처럼 했을 것 같습니다.
% preamble \usepackage{tikz} \usepackage{ninecolors} \newfontfamily\fonta{TeX Gyre Pagella} \newhanjafontfamily\fontb{Hiragino Sans W6} %% mac의 기본 폰트. \NewDocumentCommand \artistinfo { m m m m m } {% \par\bigskip \noindent \begin{tikzpicture} \draw[fill=olive3,olive3,rounded corners=1.5pt] (0,0) rectangle (\textwidth,-16pt); \node[overlay,anchor=north west,white] at (1pt,0pt) {\fonta\bfseries\large\selectfont #1 \raisebox{1pt}{\color{gray!30}|} #4}; \node[anchor=north west,black!80] at (1pt,-17pt) {\fontb\Large #2}; \node[anchor=north west,olive3!80!gray2] at (1pt,-35pt) {\fonta\scshape #3}; \draw[teal5] (.65\textwidth,-16pt) -- (.65\textwidth,-55pt); \draw[fill=teal5] (.65\textwidth,-55pt) circle (1pt); \node[overlay,anchor=west,teal5] at (.65\textwidth+2pt,-55pt+2pt) {\small\sffamily #5}; \end{tikzpicture} } % body \artistinfo{Ozaki Amii}{尾崎亞美}{Shady}{1976}{Express/Toshiba EMI ●ETP-72187}
필요하다면 좌표를 계산하게 할 수 있겠지만 이 틀은 모양이 정해진 것이라 그럴 필요까지는 없을 듯합니다. 색상, 폰트, 위치 등을 바꾸십시오.
중대한 아이디어를 드린 셈이라 책 나오면 할인해주세요. :-)
-
판돌이
2021.12.05 18:42
쿨럭 할인이라뇨.... 출간되면 바로 한부 보내드립니다. 제게 이메일 하나 주시면 나중에 그쪽으로 연락드릴게요.
저는 pinkcrimson@쥐메일닷컴 입니다~
항상 너무 감사드립니다~!!
-
noname
2021.12.05 08:34
맨처음과 그 다음 위치에서 간격이 "미묘하게 달라지는" 이유가 궁금하실 것 같아서... 이 명령이 fontsize와 baselinestretch를 매번 바꾸고 있기 때문입니다. 명령이 시작하는 시점에서 이것을 고정시켜 놓는 것이 좋습니다.
\newcommand\artist[5]{\noindent% \normalfont\normalsize\selectfont \begin{minipage}[t][\height-1.7\onelineskip]{\textwidth} ...
-
판돌이
2021.12.05 18:52
아아 평화가 찾아왔습니다...
여전히 질문들이 있지만 그건 그것대로 또 따로 올려보겠습니다.위에 올려주신 샘플도 붙여볼게요. 어떻게 작업하신 것인지 이해를 해야 나중에 추가 수정을 하거나
제가 만들어본다거나 할텐데, 사실 이해가 잘 안되어서 가끔 만들어주신 것을 그냥 붙여서 쓰기만 하네요.얼른 스킬을 높여봐야겠습니다.
MWE입니다