KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.
- 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
- Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
- TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
- MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
- 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
- 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
- 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.
자유글 minipage 병치
2017.07.14 15:55
일반적인 글의 전개에서, minipage를 나란히 둘 때 그 수직 위치가 대개 기대한 대로 나타납니다. 그것들이 기대한 대로 정렬되지 않는다고 불평하시는 분들이 간혹 계신데, 십중팔구 다소 잡하게 정의한 매크로에 minipage 포함되어 있을 때 그러하리라 생각합니다.
그 문제를 해결하는 완벽하지 않은 꼼수를 첨부에 정리했습니다.
댓글 5
-
yihoze
2017.07.14 15:58
-
noname
2024.01.09 17:57
minipage를 나란히 놓을 때 \vspace{0pt} 솔루션을 씨게 밀고 계신 글을 몇 개 읽었습니다. :)
실은, \vspace{0pt}라고 하는 것은 사실상 \null 박스를 하나 두는 것과 동일한 거겠죠. 저는 \null 쪽을 선호해 왔는데 그 이유는 \vspace{0pt}라고 하고 행을 나누면 끝에 달라붙는 스페이스가 찜찜해서였습니다.
요즘은, adjustbox를 주로 씁니다. 예컨대, 다른 글에서 가져온 예를 들자면, 다음과 같이 하는 것입니다.
\begin{adjustbox}{minipage={.45\linewidth},valign=T}
그림이라면, \usepackage[export]{adjustbox},
\includegraphics[...,valign=T]{image}
어디선가 쓴 것 같습니다만 export된 옵션은 되도록 마지막에 열거하여야 합니다.
이런 식으로, \vspace{0pt}나 \null 이 필요없는 코드를 작성할 수 있습니다.
-
yihoze
2024.01.10 09:16
제가 만든 매크로 ( 정확히 말해 hzguide.cls에서 \illustimage_put_left: 그리고 \illustimage_put_right: ) 에서는, minipage 위아래로 추가하는 간격들 때문인지 모르겠으나, \vspace{0pt} 말고 다른 빈 박스를 써서 기대한 효과를 얻지 못했습니다. \vspace{0pt}가 사실 무엇에 어떻게 영향을 주는지 제대로 알지 못합니다만, 그것이 minipage 밖에도 영향을 미칠 수 있는지요?
좌우지간, 달리 부작용을 발견하지 못한 저로서는, adjustbox가 \vspace보다 글자 수에서 더 매력적으로 보이지 않습니다. ^^
-
noname
2024.01.10 14:59
이 이슈의 핵심은, minipage 내에서 (1) hmode는 어디에서 시작하고 (2) 첫 줄의 baseline이 어디인가하는 것입니다. 첨부 파일은 이것을 테스트해본 것입니다.
Case 1에서 왼쪽 미니페이지에는 이미지 하나만 들어 있습니다만, 이것이 한 행을 이루는 것으로 이미지의 바닥이 그 이미지의 베이스라인이면서 행 안에 배치되었을 때 그 행의 베이스라인이 됩니다. [t]이든 [b]이든 "행"은 하나밖에 없기 때문에 왼쪽 미니페이지의 정렬 기준이 t든 b든 똑같이 배치됩니다. 만약 텍스트가 와서 새로운 행이 생겨날 경우는 b의 위치가 마지막 행의 베이스라인이 되겠지요.
\vspace{0pt}라는 것은 첫 행의 베이스라인을 속이는 것입니다. Case 3이 이것을 보여주고 있는데, minipage를 \vspace부터 시작하여 그 vspace가 초행의 베이스라인인 것처럼 만든 것입니다. 그 위치와 오른쪽 텍스트의 첫 행 베이스라인을 일치시켜 배열합니다. 오른쪽 텍스트에도 \vspace를 주면 행송이 0인 첫 행이 하나 더 생겨나는 것 비슷하게 약간 더 밀려나서 조판됩니다(Case 5).
\null은 거의 유사하게 동작하지만 박스가 놓였다는 점이 다릅니다. 그래서 hmode가 시작하는 위치가 중요해지지요. Case 4를 보시면 오른쪽 텍스트 시작할 때 hmode를 강제하고 있는 것을 볼 수 있습니다.
결국, hmode의 시작 위치, "첫 행"의 베이스라인을 입력하는 사람이 항상 정확하게 인식하고 코딩하면 되는 것입니다만 이것을 일일이 살피는 것이 번거롭지요. adjustbox는 이런 고민 필요없이, "하여튼 맨꼭대기를 기준으로 정렬"이라고 말할 수 있어서 편리하다는 것이었습니다. 특히 초심자에게 그림박스와 텍스트의 베이스라인을 일일이 체크하라고 말할 수는 없지 않겠습니까? 고수분들이야 원하시는 대로 쓰시겠지만요....
"minipage 밖에 영향을 주는가"라고 질문하신 것에 대한 답은 "주지 않는다"가 되겠지만, 때로 간격이 떨어져 보이는 이유는 위에서 설명한 바와 같습니다.
-
yihoze
2024.01.10 16:26
이미지 주위로 텍스트가 자연스럽게 흘러가는 것처럼 보이게 하는 데에는 \null이 가장 좋은 방법임을 이해했습니다. 물론 제가 사용하는 방식은 Case 5의 \vspace - \vspace인데, 이러저러한 다양한 경우들에 대응할 수 있도록, 윗 단락과의 간격 그리고 이미지 대비 텍스트 높이를 제어할 수 있기를 원하였기 때문입니다. 조금 첨언하자면, (매크로 미니멀리스트로서) 이미지에 테두리를 치든, 텍스트에 리스트가 오든 대충 이미지 상단이 텍스트 상단과 정렬된 것처럼 보이게 하고 싶었습니다. 그래서 \vspace{0pt} 다음에 \vspace{\offset} 같은 방식을 사용하였습니다. (물론 디폴트 매크로 옵션을 적절하게 설정해 둬야 하지요.)
아무튼 제가 불충분하게 이해하고 있던 점을 깨우쳐 주셔서 고맙습니다.
오래 전에 읽은 A Guide to LaTeX에서 이 꼼수의 힌트를 얻었습니다.