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>처럼 입력하시면 좋습니다.
mdframed에서 페이지 넘김
2012.11.05 09:36
mdframed 페키지의 \mdtheorem을 이용하여 box를 만들려고 하고 있습니다.
그런데, box의 frametitle 영역에서 pagebreak가 일어나는 경우에, 그 다음 페이지에서 frametitle 영역이 본문 영역을 침범하게 됩니다.
(첨부한 pdf 파일에서 두번째 box의 frametitle 영역에서 pagebreak가 일어나는데, 다음페이지에서 frametitle 영역이 본문 영역을 침범하고 있습니다.)
frametitle 영역이 본문 영역을 침범하지 않도록 하는 방법이 없을까요?
도움말씀 부탁드립니다. 감사합니다.
다음은 소스입니다. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[twoside,a4]{book}
\usepackage[framemethod=pgf]{mdframed}
\usepackage{lipsum}
\mdtheorem[%
theoremseparator={\, : \hspace*{-5mm}},
theoremtitlefont={\rmfamily},
frametitlefont={\sffamily},
theoremspace=\hspace{1em},
leftline=false, rightline=false,
outerlinewidth=3pt, outerlinecolor=gray,
backgroundcolor=lightgray,
splittopskip=10pt, splitbottomskip=10pt,
skipabove=5pt, skipbelow=5pt,
innertopmargin=9pt, innerbottommargin=11pt,
frametitlerule=true, frametitlerulewidth=1pt,
frametitlerulecolor=black,
frametitlebackgroundcolor=gray,
frametitleaboveskip=3pt, frametitlebelowskip=7pt,
]{Thmbox}{Excercise}
\begin{document}
\begin{Thmbox}[{\lipsum[1-2]}]
\lipsum[2-3]
\end{Thmbox}
\begin{Thmbox}[{\lipsum[1-2]}]
\lipsum[2-3]
\end{Thmbox}
\end{document}
댓글 3
-
Progress
2012.11.09 10:08
-
초보
2012.11.09 11:26
답변 감사합니다. 마르코 다니엘 씨에게 메일을 보냈습니다만, 요새 바쁘다네요....
일단, 말씀하신 tcolorbox 패키지로 새도해봐야 겠습니다.
좋은 하루 되십시오.
-
초보
2012.11.26 11:12
마르코 다니엘씨로부터 메일 회신이 왔습니다. 버그를 수정중이라고 하면서 다음의 코드를 테스트 해봐달라고 했습니다.
제가 몇개의 문서로서 컴파일 해본 바에 의하면 제가 제기한 문제점이 잘 해결된 것 같습니다. 다만, "초보"인 저로서는 코드가 문제없이 잘 수정된 것인지 알기 어렵네요...
고수님들께서 한번 봐주시고, 혹시 문제가 있으면 댓글로 알려주시면 감사하겠습니다.
다음은 수정된 코드입니다. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\makeatletter
\def\drawbrackgroundframetitle@first{%
{%
\ifbool{mdf@repeatframetitle}%
{%repeating title = true
\begin{scope}%background frame title
\ifbool{mdf@leftline}{
\pgfmathsetlengthmacro\mdf@Ox%
{\mdf@Ox+\mdf@innerlinewidth@length+0.5\mdf@middlelinewidth@length}
}{}%
\ifbool{mdf@rightline}{%
\pgfmathsetlengthmacro\mdf@Px%
{\mdf@Px-\mdf@innerlinewidth@length-0.5\mdf@middlelinewidth@length}
}{}%
\ifbool{mdf@topline}{%
\pgfmathsetlengthmacro\mdf@Py%
{\mdf@Py-\mdf@innerlinewidth@length-.5\mdf@middlelinewidth@length}
}{}%
\pgfmathsetlengthmacro\mdf@Fy
{\mdf@Py-\mdfframetitleboxtotalheight}
\coordinate(P)at(\mdf@Px,\mdf@Py);%
\path[mdfframetitlebackground]
(\mdf@Ox,\mdf@Fy) -- (\mdf@Ox,\mdf@Py)%
--(\mdf@Px,\mdf@Py) --(\mdf@Px,\mdf@Fy);
\end{scope}
}%
{%
\ifdefempty{\mdf@frametitle}{}%
{%
\ifdimgreater{\mdfboundingboxheight}{\mdfframetitleboxtotalheight}%
{%
\drawbrackgroundframetitle@@first
\pgfmathsetlength{\global\mdfframetitleboxtotalheight}{-\p@}%
}{\mdf@PackageWarning%
{You got a page break inside the frame title\MessageBreak
Currently this isn't well supported}%
\drawbrackgroundframetitle@@first
\pgfmathsetlength{\global\mdfframetitleboxtotalheight}%
{\mdfframetitleboxtotalheight
-\mdfboundingboxheight
-\mdf@innerlinewidth@length
-0.5\mdf@middlelinewidth@length%
+\mdf@frametitlebelowskip@length
+\mdf@splitbottomskip@length
% +\mdf@splittopskip@length
-\dp\strutbox%
}%
}%
}%
}%
}%
}%
\makeatother
버그라고 밖에 볼 수 없습니다. 마르코 다니엘 씨에게 리포팅해주시면 좋겠습니다.
(올해 마르코 다니엘 씨 배부를 것 같아요, 버그 리포트 많이 들어와서)
===
그런데... 타이틀을 쓰라고 해놓은 부분에 그렇게 몇 줄에 걸쳐 텍스트를 길게 써야할 필요는 없어보입니다. 그 정도면 body이지 타이틀은 아닌 거죠.
참고로 tcolorbox라는 패키지를 한번 살펴보세요. 이 패키지는 mdframed와 흡사한데, 타이틀 영역을 제외한 나머지 영역을 \tcblower라는 명령으로 간단히 둘로 쪼갤 수 있습니다.
매뉴얼을 보시면 아시겠지만, 앞 페이지에 문제를 제시하고 책 뒷부분에 해답을 보여주는 솔루션도 있습니다.
mdfrmaed의 \mdtheorem이나 \newmdtheoremenv과 비슷하게 정리, 정의 따위를 감싸는 \tcbmaketheorem 명령도 있습니다.
단, mdframed처럼 프레임이 자동으로 쪽 나눔(split) 되지는 않는 것 같습니다.