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>처럼 입력하시면 좋습니다.
페이지 레이아웃에 box표시와 함께 헤더에도 박스 처리를 해야 합니다.
2012.12.16 17:18
안녕하세요,
TnX텍을 이용해서 문서를 만들고 있는데, 아래와 같이 만들어야 할 필요가 생겼습니다. 아래 보시는 것처럼 헤더를 세 부분으로 나눠서 image 부분에는 작은 이미지 파일을 삽입해야 합니다. 그리고 보시는 것처럼 헤더도 줄이 그어져야 합니다. 그리고 전체 페이지에 layout부분에 box처럼 줄을 그어야 합니다. 이 부분을 어떻게 만드는게 좋을지 도와 주시면 감사하겠습니다.
미리 감사드립니다.
댓글 27
-
Progress
2012.12.17 11:36
-
게으른 엔지니어
2012.12.18 08:34
감사합니다. 아이디어를 주셨네요.
아무래도 tikz를 사용해야 할 듯 합니다.
해답을 찾으면 저두 올리도록 하겠습니다.
-
Progress
2012.12.17 17:38
TikZ를 사용할까 하다가 귀찮아서 표를 잘 제어하여 그릴 수 있는 tabu 패키지, 그리고 표의 한 칸마다 색깔을 칠할 수 있는 colortbl 패키지를 이용해봤습니다.
아시다시피 클래스 옵션에 oneside를 지정하면 홀수쪽 면주의 것만 적용됩니다.
소스는 아주 간단하니 한번 들여다보세요.
% grid_test.tex
\documentclass[a4paper,twoside]{memoir}
\usepackage{fapapersize}
\usefapapersize{*,*,30mm,*,35mm,30mm}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage[svgnames,dvipsnames]{xcolor}
\usepackage{colortbl}
\usepackage{tabu}
\usepackage{typogrid}
\typogridsetup{columns=1,margin=false,headings=false}
\begin{document}
\makepagestyle{threecolumnheading}
\makeoddhead{threecolumnheading}{}{%
\tabulinesep=3pt
\begin{tabu}{|X[2,l,m]|X[3,c,m]|X[r,m]|}
\tabucline{-}
\cellcolor{Maroon!30} \includegraphics[height=\onelineskip]{KTSbanner} & \cellcolor{Maroon!50} \rightmark & \cellcolor{Maroon!10} \sffamily \textbf{\thepage} of \thelastpage \\
\tabucline{-}
\end{tabu}
}{}
\makeevenhead{threecolumnheading}{}{%
\tabulinesep=3pt
\begin{tabu}{|X[2,l,m]|X[6,c,m]|X[r,m]|}
\tabucline{-}
\cellcolor{YellowGreen!30} \sffamily \textbf{\thepage} of \thelastpage & \cellcolor{YellowGreen} \leftmark & \cellcolor{YellowGreen!50} \includegraphics[height=\onelineskip]{KTS-meta-3-2} \\
\tabucline{-}
\end{tabu}
}{}
\pagestyle{threecolumnheading}
\AddToShipoutPicture{\typogrid}
\Blinddocument
\blindmathpaper
\Blinddocument
\blindmathpaper
\end{document}
-
게으른 엔지니어
2012.12.18 08:38
상세한 예제 감사합니다.
테스트를 한번 해보겠습니다.
근데 딱 한가지 마음에 걸리는게 헤더와 본문 사이에 표가 따로 안 만들어지고, 위에 제가 올린 것처럼 헤더와 본문 사이에 공백 없이 붙게 만들어야 할 듯 합니다.
일단 이 예제를 바탕으로 테스트해보고, 말씀드리겠습니다.
-
Progress
2012.12.18 10:00
TikZ를 이용한 예제를 하나 첨부할게요.
anchor 위치와 box 색깔, depth 같은 인자를 변경해보세요.
%% grid_test2.tex
\documentclass[a4paper,twoside]{memoir}
\usepackage{fapapersize}
\usefapapersize{*,*,30mm,*,35mm,30mm}
% \setlength\headsep{10mm}
\usepackage{blindtext}
\usepackage[svgnames,dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{typogrid}
\typogridsetup{columns=1,margin=false,headings=false}
%% 상단 3단 면주
\tikzset{pageheader/.style={
anchor=north,font=\sffamily\bfseries\small,
text=white,minimum height=8mm,text centered,
text depth=0mm,text width=.333\textwidth}}
\makepagestyle{threecolumnheading}
\makeoddhead{threecolumnheading}%
{\tikz[baseline]\node[pageheader,fill=YellowGreen!60]{\includegraphics[height=\onelineskip]{KTSbanner}};}
{\tikz[baseline]\node[pageheader,fill=LimeGreen]{Center Material};}
{\tikz[baseline]\node[pageheader,fill=YellowGreen]{\thepage/\thelastpage};}
\makeevenhead{threecolumnheading}%
{\tikz[baseline]\node[pageheader,fill=YellowGreen]{\thepage/\thelastpage};}
{\tikz[baseline]\node[pageheader,fill=LimeGreen]{Center Material};}
{\tikz[baseline]\node[pageheader,fill=YellowGreen]{\includegraphics[height=\onelineskip]{KTSbanner}};}
\copypagestyle{chapter}{plain}
\makeoddhead{chapter}%
{\tikz[baseline]\node[pageheader,fill=YellowGreen!60]{\includegraphics[height=\onelineskip]{KTSbanner}};}
{\tikz[baseline]\node[pageheader,fill=LimeGreen]{Center Material};}
{\tikz[baseline]\node[pageheader,fill=YellowGreen]{\thepage/\thelastpage};}
\makeevenhead{chapter}%
{\tikz[baseline]\node[pageheader,fill=YellowGreen]{\thepage/\thelastpage};}
{\tikz[baseline]\node[pageheader,fill=LimeGreen]{Center Material};}
{\tikz[baseline]\node[pageheader,fill=YellowGreen]{\includegraphics[height=\onelineskip]{KTSbanner}};}
\begin{document}
\pagestyle{threecolumnheading}
\AddToShipoutPicture{\typogrid}
\Blinddocument
\blindmathpaper
\Blinddocument
\blindmathpaper
\end{document}
===
이미 아시겠지만 chapter가 시작되는 페이지의 모양은
- memoir 클래스의 경우 chapter라는 pagestyle, 즉 \pagestyle{chapter}을
- book이나 report 같은 LaTeX 표준 클래스의 경우 plain이라는 pagestyle, 즉 \pagestyle{plain}을
따라갑니다. 즉 페이지 하단의 중앙에 페이지 번호만 식자되는 모양이지요. 특히 memoir 클래스의 chapter라는 페이지 스타일은 표준 클래스의 plain이라는 페이지스타일과 동일합니다.
따라서 챕터가 시작되는 쪽도 이렇게 3단 박스를 유지하려면 chapter 페이지 스타일의 홀짝 헤딩(oddhead/evenhead)을 앞서 정의한 threecolumnheading과 동일하게 맞춰줘야합니다.
이를 잘 이용하면 쪽번호를 상자로 감싸서 다찌, 즉 책이 재단되는 영역까지 뻗어 나가게 할 수도 있습니다.
===
제가 생각할 때... 지금 이 문제는 heading으로 해결할 것은 아닌 것 같습니다. 상단 3단 상자와 전체 테두리를 그려 하나로 묶은 다음 wallpaper 효과를 주어 매 페이지마다 반복하게 하는 게 좋을 것 같습니다. 다른 전문가께서 좀 도와주시면 좋겠습니다.
-
Progress
2012.12.18 13:27
이번엔 heading을 건드리지 않고 상단 3단 상자와 전체 테두리를 그려 하나로 묶은 다음 모든 페이지에 붙박이로 반복하는 것을 해보겠습니다. 홀/짝 페이지를 구분하지는 않았습니다.
역시 소스는 간단한 편입니다만...
%grid_test3.tex
\documentclass[a4paper,oneside]{memoir}
% \usepackage{fapapersize}
% \usefapapersize{*,*,30mm,*,35mm,30mm}
\usepackage{blindtext}
\usepackage[svgnames,dvipsnames]{xcolor}
\usepackage{tikz}
\usepackage{everypage}
%% 상단 3단 면주
\tikzset{pageheader/.style={
anchor=north,font=\sffamily\bfseries\small,
text=white,minimum height=8mm,text centered,
text depth=0mm,text width=.25\paperwidth}}
\newcommand*\PageTemplate{%
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.north)
{\tikz[baseline]\node[yshift=-\uppermargin-\headheight-\headsep,pageheader,fill=YellowGreen!60]{\includegraphics[height=\onelineskip]{KTSbanner}};%
\tikz[baseline]\node[yshift=-\uppermargin-\headheight-\headsep,pageheader,fill=YellowGreen]{Center Material};%
\tikz[baseline]\node[yshift=-\uppermargin-\headheight-\headsep,pageheader,fill=YellowGreen!60]{\thepage/\thelastpage};
};
\node at (current page.center)
{\begin{tikzpicture}
\node[minimum width=0.78\paperwidth, minimum height=\paperheight-\uppermargin-18mm, anchor=north west] (a) {};
\draw [line width=0.pt, YellowGreen!60] (a.north west) -- (a.south west) -- (a.south east) --(a.north east);
\end{tikzpicture}};
\end{tikzpicture}}
\begin{document}
\pagestyle{empty}
\AddEverypageHook{\PageTemplate}
\Blinddocument
\blindmathpaper
\Blinddocument
\blindmathpaper
\end{document}
===
\AddEverypageHook 명령은 everypage라는 패키지에서 나온 명령입니다. 모든 페이지에 이 명령에서 지정한 것을 가져다 박습니다. Wallpaper 패키지의 \CenterWallPaper 명령은 그림과 그림의 스케일 값만 받을 수 있는데 비해 \AddEverypageHook은 텍스트 따위도 받을 수 있는 것 같습니다.
저도 실은 TikZ의 node, anchor의 정확한 원리를 이해하지 못하고 있습니다.
그래서 소스에서 밑줄 그은 부분이 눈엣가시 같습니다.
판형과 판면에 관계 없이 원하는대로 그림을 그려줬으면 싶은데 결국 미세조정을 위해 저런 0.78, -18mm 따위의 수치가 등장하는 거죠. 예를 들어 3단 상자 하나의 폭을 0.25\paperwidth, 즉 판형의 25% 크기로 지정했음에도 불구하고 본문을 감싸는 박스의 가로폭은 상자 3개의 폭인 0.75\paperwidth만으로 충분히 감싸지지 않아서 78%로 부여해야했습니다.
또 본문을 감싸는 박스의 세로폭은 \paperheight에서 \uppermargin만을 빼주면 될 것 같은데 18mm를 더 빼준 거죠. 안 그러면 세로 선이 위로 더 삐져 나가니까요.
-
ndh
2012.12.18 15:28
워낙 훌륭한 답변이 달려 있어서 사족에 불과하겠습니다만,
이왕 tikz로 뭔가를 한다면 다음처럼 간단하게 할 수 있겠다 싶습니다.
핵심은 페이지의 여덟 곳에 점(node)을 찍고 그것을 연결하는 것입니다.
textbody와의 간격을 0.5cm로 하고 상단의 박스 높이는 \myuheight라는 새로 정의한 길이값에 따르도록 합니다.
그리고 맨 왼쪽 간에 그림을 넣는 것을 \tikz로 처리한 이유는 그렇게 하지 않으면 나머지 두 부분의 세로 위치가 흔들리기 때문입니다.
%!TEX TS-program = xelatex
\documentclass[demo,a4paper]{oblivoir}
\usepackage{fapapersize}
%\usefapapersize{*,*,30mm,*,30mm,*}
\ifxetex
\setkormainfont{HCR Batang LVT}
\fi
\usepackage{tikz}
\usepackage{jiwonlipsum}
\usepackage{everypage}
\newlength\mytmplen\mytmplen=\dimexpr\textwidth+1cm\relax
\newlength\myuheight\myuheight=.7cm
\AddEverypageHook{%
\begin{tikzpicture}[overlay,remember picture]
\node at (current page.center) (CENTER) {};
\node [xshift=\spinemargin-.5cm,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north west) (a) {};
\node [xshift=\spinemargin-.5cm+.33\mytmplen,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north west) (a1) {};
\node [xshift=\spinemargin-.5cm+.67\mytmplen,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north west) (a2) {};
\node [xshift=\spinemargin-.5cm,yshift=-\uppermargin+.5cm] at (current page.north west) (aa) {};
\node [xshift=\spinemargin-.5cm+.33\mytmplen,yshift=-\uppermargin+.5cm] at (current page.north west) (aa1) {};
\node [xshift=\spinemargin-.5cm+.67\mytmplen,yshift=-\uppermargin+.5cm] at (current page.north west) (aa2) {};
\node [xshift=-\foremargin+.5cm,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north east) (b) {};
\node [xshift=-\foremargin+.5cm,yshift=-\uppermargin+.5cm] at (current page.north east) (bb) {};
\node [xshift=-\foremargin+.5cm,yshift=\lowermargin-.5cm] at (current page.south east) (c) {};
\node [xshift=\spinemargin-.5cm,yshift=\lowermargin-.5cm] at (current page.south west) (d) {};
\draw (a.center) rectangle (c.center);
\draw (a.center) rectangle (bb.center);
\draw (a1.center) -- (aa1.center);
\draw (a2.center) -- (aa2.center);
\end{tikzpicture}
}
\makepagestyle{test}
\makeoddhead{test}{\tikz[overlay,xshift=1cm,yshift=3pt]\node at (0,0) {\includegraphics[width=1cm,height=.5cm]{test}};}{BBBBBBBB}{\thepage/\thelastpage}
\begin{document}
\pagestyle{test}
\jiwon
\jiwon
\end{document}
-
게으른 엔지니어
2012.12.18 17:02
너무 감사드립니다.
제가 원하는 대부분을 구현해 주셨네요. 따로 제가 여기에 뭘 올릴 필요는 없을듯 합니다.
두분 모두 감사합니다.
-
Progress
2012.12.18 18:05
ndh 님 감사합니다.
기준점 표시를 하고 영역을 칠하는 것까지 보태 다시 올려봅니다.
% grid_test4.tex
%!TEX TS-program = xelatex
\documentclass[a4paper]{oblivoir}
\usepackage{fapapersize}
%\usefapapersize{*,*,30mm,*,30mm,*}
\usepackage[svgnames,dvipsnames]{xcolor}
\ifxetex
\setkormainfont{HCR Batang LVT}
\fi
\usepackage{tikz}
\usepackage{jiwonlipsum}
\usepackage{everypage}
\newlength\mytmplen\mytmplen=\dimexpr\textwidth+1cm\relax
\newlength\myuheight\myuheight=.7cm
\AddEverypageHook{%
\begin{tikzpicture}[overlay,remember picture]
%기준점 8개 설정
\node at (current page.center) (CENTER) {};
\node [xshift=\spinemargin-.5cm,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north west) (a) {};
\node [xshift=\spinemargin-.5cm+.33\mytmplen,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north west) (a1) {};
\node [xshift=\spinemargin-.5cm+.67\mytmplen,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north west) (a2) {};
\node [xshift=\spinemargin-.5cm,yshift=-\uppermargin+.5cm] at (current page.north west) (aa) {};
\node [xshift=\spinemargin-.5cm+.33\mytmplen,yshift=-\uppermargin+.5cm] at (current page.north west) (aa1) {};
\node [xshift=\spinemargin-.5cm+.67\mytmplen,yshift=-\uppermargin+.5cm] at (current page.north west) (aa2) {};
\node [xshift=-\foremargin+.5cm,yshift=-\uppermargin+.5cm+\myuheight] at (current page.north east) (b) {};
\node [xshift=-\foremargin+.5cm,yshift=-\uppermargin+.5cm] at (current page.north east) (bb) {};
\node [xshift=-\foremargin+.5cm,yshift=\lowermargin-.5cm] at (current page.south east) (c) {};
\node [xshift=\spinemargin-.5cm,yshift=\lowermargin-.5cm] at (current page.south west) (d) {};
% 영역 칠하기
\filldraw[YellowGreen!30] (a.center) rectangle (aa1.center);
\filldraw[YellowGreen!70] (a1.center) rectangle (aa2.center);
\filldraw[YellowGreen!30] (a2.center) rectangle (bb.center);
% 선 긋기
\draw[line width=1pt,color=YellowGreen] (a.center) rectangle (c.center);
\draw[line width=1pt,color=YellowGreen] (a.center) rectangle (bb.center);
\draw[line width=1pt,color=YellowGreen] (a1.center) -- (aa1.center);
\draw[line width=1pt,color=YellowGreen] (a2.center) -- (aa2.center);
% 점 표시
\draw[fill=black!50] (a.center) circle (2pt) node[anchor=south east] {a};
\draw[fill=black!50] (b.center) circle (2pt) node[anchor=south west] {b};
\draw[fill=black!50] (c.center) circle (2pt) node[anchor=north west] {c};
\draw[fill=black!50] (d.center) circle (2pt) node[anchor=north east] {d};
\draw[fill=black!50] (aa.center) circle (2pt) node[anchor=east] {aa};
\draw[fill=black!50] (bb.center) circle (2pt) node[anchor=west] {bb};
\draw[fill=black!50] (a1.center) circle (2pt) node[anchor=south] {a1};
\draw[fill=black!50] (a2.center) circle (2pt) node[anchor=south] {a2};
\draw[fill=black!50] (aa1.center) circle (2pt) node[anchor=north] {aa1};
\draw[fill=black!50] (aa2.center) circle (2pt) node[anchor=north] {aa2};
\end{tikzpicture}
}
\makepagestyle{test}
\makeoddhead{test}{\tikz[overlay,xshift=1.5cm,yshift=3pt]\node at (0,0) {\includegraphics[height=\onelineskip]{KTSbanner}};}{Korean \TeX{} Users Group}{\small\sffamily\textbf{\thepage}/\thelastpage}
\begin{document}
\pagestyle{test}
\jiwon
\jiwon
\end{document}
===
까먹지 말아야할텐데 아직도 원리를 이해하기가 쉽지 않습니다. 예를 들어 밑줄 친 부분입니다. 그림에서 보면 'a'라고 텍스트로 표시한 부분은 점 a, 즉 node a를 기준으로 북서쪽(north west) 방향에 식자되었는데 왜 anchor에서 남서쪽(south east)이라고 해야 그 위치에 표시되는 걸까요? 이런게 헷갈립니다. 분명 매뉴얼 어딘가에 나오긴 할텐데...
-
ndh
2012.12.18 20:01
이것은 a라는 글자가 식자된 박스의 anchor 위치를 가리키는 것입니다. a라는 글자가 들어간 상자가 하나 있다고 생각하시고 그 상자의 south east 귀퉁이를 그 옆의 circle 위치에 닿게 정렬하는 것이니까요.
-
게으른 엔지니어
2012.12.19 22:29
Progress 님과 ndh 님,
모두 감사합니다.
내용은 조금 더 공부해봐야 겠지만, 형태는 제가 원하는 형태되로 나왔네요.
다시 한번 감사합니다.
-
수
2012.12.19 23:39
와.. 정말 멋지십니다...
사실 저도 이것만들어 볼려구 무진장 고생햇다가 포기햇는데... ㅠ.ㅠ
정말로 Tex 은 진화하는 것이군요 ^^
전문가님들의 흉륭하시고.. 고생하신 흔적... 감사합니다..
제가 수학쪽에 일해서인지...
이러한 셋팅안에...
mdframed 이나 kswapfig.... 등 개인적으로는 xoblivoir 를 사용하는데요... 가능한지...
실험을 해봐야 겟네요 ^^
날씨가 춥네요.... 건강 조심하셔요~~ 꾸벅~
-
조문수
2012.12.20 00:49
위 소스의 컴파일 에러가 다음과 같습니다..
머가 문제죠???
====================
Runaway argument?
{
! Paragraph ended before \AddEverypageHook was complete.
<to be read again>
\par
l.30
?
-
Progress
2012.12.20 13:46
혹시 jiwonlipsum 패키지가 없는 것은 아닌지요?
그건 여기 있습니다.
http://faq.ktug.or.kr/faq/ExtraPackages#s-3
추가적으로 설명드리면, 컴파일 테스트를 위한 텍스트 내용을 매번 집어넣기가 힘드므로, 일정량의 텍스트를 집어넣는 일을 해주기 위해 lipsum이나 blindetext 등의 패키지가 생겼습니다. \lipsum, \blidetext, \Blinddocument, \blindmathpaper 등의 명령이 그것이죠. 자세한 것은 이들 패키지의 매뉴얼을 참조하세요.
그러나 이 패키지들의 단점은 라틴 영역의 텍스트만 식자됩니다.
그래서 Karnes 님이 jiwonlipsum이라는 패키지를 만들었습니다. jiwonlipsum 패키지는 일정량의 한글 텍스트를 집어넣는 것입니다. \jiwon 명령을 주면 연암 박지원 선생의 《열하일기》 가운데 "하룻밤에 아홉번 강을 건너다(一夜九渡河記)"의 본문을 식자해줍니다.
참고로 이 글타래 중에 중간쯤 등장하는 다음 명령을 잘 이용하고
\tikzset{pageheader/.style={%
anchor=north,font=\sffamily\bfseries\small,
text=white,minimum height=8mm,text centered,
text depth=0mm,text width=.25\paperwidth}}
이 중 text depth, text width의 값을 잘 조절한 뒤 이 박스가 페이지 번호를 감싸도록 하고 하단 면주, 즉 \makeevenfoot, \makeoddfoot에 포함하면 예전에 수 님이 제 블로그에서 질문하셨던 그런 레이아웃을 얻을 수 있습니다.
특히 만들고자 하는 문서가 100페이지가 넘어가고 1,000페이지가 넘지 않으면 페이지 번호는 세 자릿수가 됩니다.
이때 text width 값은 숫자 세 개의 폭 정도만 가지면 되니깐 preamble에 대략 다음과 같이 할 수 있겠습니다.
% 쪽 번호 자릿수. 세 자리 숫자가 들어갈 폭을 가지도록 길이변수를 정의함.
\newlength\pagenumwidth
\settowidth{\pagenumwidth}{999}
%% 쪽 번호 들어가는 상자 (붉은 색 30%의 음영을 지니고, 텍스트는 가운데 정렬, 산세리프 계열에 굵고 작게 식자한다.)
\tikzset{pagefooter/.style={
anchor=base,font=\sffamily\bfseries\small,
text=white,fill=red!30,text centered,
text depth=17mm,text width=\pagenumwidth}}
% 나만의 페이지 스타일 작성
\makepagestyle{MoonSu} % MoonSu라는 페이지 스타일을 하나 만든다.
% MoonSu 페이지 스타일의 하단 홀/짝수쪽 면주.
\makeoddfoot{MoonSu}{}{}{\tikz[baseline]\node[pagefooter]{\thepage};}
\makeevenfoot{MoonSu}{\tikz[baseline]\node[pagefooter]{\thepage};}{}{}
% MoonSu 페이지 스타일의 상단 홀/짝수쪽 면주.
\makeoddhead{MoonSu}{}{}{\rightmark}
\makeevenhead{MoonSu}{\leftmark}{}{}
%이제 만들어진 MoonSu 페이지 스타일을 선언한다!
\pagestyle{MoonSu}
설령 이미 상자의 색을 fill=red!30으로 지정했어도 면주에 넣는 시점에서 명령을 새로 주어 해당 상자의 색을 바꿀 수 있습니다.
% 하단 면주
\makeoddfoot{MoonSu}{}{}{\tikz[baseline]\node[pagefooter, fill=blue!20]{\thepage};}
\makeevenfoot{MoonSu}{\tikz[baseline]\node[pagefooter, fill=green!20]{\thepage};}{}{}
참고로 \makepagestyle, \makeodd(even)head, \makeodd(even)foot 명령은 memoir 클래스에 들어있는 명령이며, 그를 기반으로한 (x)oblivoir 클래스에서도 사용할 수 있습니다.
===
갑자기 제가 텍을 처음 접하고 좌절했을 때 귓가에 들려오던 크누스, 아니 푸쉬킨의 詩가 생각나네요.
텍이 그대를 속일지라도
슬퍼하거나 노여워하지 마라.
설움의 날을 참고 견디면
기쁨의 날이 오고야 말리니.
수님, 파이팅하십시오! ^^
-
조문수
2012.12.20 03:04
그리고.. 궁금하게요..
이러한 내가 원하는 폼이나 기타 바꿀려고 하는 게 있을 때 프림블의 세팅작업이 너무 어렵고 귀찮아서
내가 원하는 작업은 혼자의 힘으로는 포기? 아니면 항상 원하는 것을 게시판에 물어서 많은 분들을 힘들게 하나?
머.... 이런 생각이 들어요...
글꼴하나 숫자 하나 바꿀려면 또 프림블 바꾸고..
전 매우 기초적인 텍사용자인데요.. 구조는 알 것 같습니다만
어디책을 보세요... 이거 참조하세요...
라고 댓글이 달리면...
전 .................. 제 잘못을 바로 인정합니다.
왜냐면.. 하나만... 딱 하나만 물어봐야한다는 생각을 안했다는것~
너무 두리뭉실..크게 물어봤다는것...
텍은 두리뭉실한것은 모르고.. 정확히 한 문장 한 명령의 컴파일을 원한다는 것..
이게 제가 느낀겁니다만......뭐 MS에 길들려진 병폐이겟죠 ㅠ.ㅠ
암튼...
공부할수록 택..정말 어렵네요.. ㅎㅎ
-
지나가다
2012.12.20 10:13
MS에 길들여졌다기보다는 텍이 워낙 다른 물건인 이유가 큽니다. 원천(소스)과 목표물(출력 문서)의 구분이 없는 워드프로세서와는 접근이 매우 다르고, "코딩"의 요소가 들어가니 전혀 다른 물건입니다. 프로그래밍을 배운다는 생각을 (결국에는) 가지지 않으면 진도가 나가지 않습니다.
-
그로몹
2012.12.21 10:56
글꼴 하나 바꿀 때도 프리앰블에서 바꾸는 이유는 경우에 따라서는 글자 하나만 바꾸는 것이 아니라 책 전체에서 어떤 부분의 글꼴을 바꾸는 일이 많기 때문입니다. 텍을 잘 사용하시게 되면 전체 디자인은 다른 분에게 맡기게 되지만 본문은 자신이 작성합니다.
그 때 자신이 강조하는 단어들은 예를 들어 \myemph{단어} 라는 식으로 본문에 쓰고, preamble에는 \myemph의 정의를 넣어 둡니다.
이렇게 하면 \myemph의 정의만 바꾸면 책 전체에서 일률적으로 이 명령이 쓰인 부분의 글꼴 등의 모양이 바뀌게 됩니다.
이렇게 만든 파일을 테 디자이너에게 가지고 가면 그 분은 간단히 프리앰블의 정의 하나를 잘 조정해 바꾸어서 디자인을 쉽게 할 수 있겠지요. 워드라면 내가 강조한 글꼴을 그분이 전부 찾아가며 바꾸어야 하니까 일이 너무 힘들고 빠트리는 것이 꼭 있겠지요.
preamble을 손보는 기초 요령을 써 놓은 글이 있어서 첨부합니다.
http://geometry.tistory.com/64
-
조문수
2012.12.21 00:33
이건 어떻게 해결하죠??
everypage.sty 가 없다고 하는거 같은데... ㅡ.ㅡ
==========================
LaTeX Warning: You have requested package `jiwonlipsum',
but the package provides `xparse'.
) (c:/usr/texlive/2012/texmf-dist/tex/latex/everypage/everypage.sty)
Runaway argument?
{\begin {tikzpicture}[overlay,remember picture] \node at (current pag\ETC.
! Paragraph ended before \AddEverypageHook was complete.
<to be read again>
\par
l.33
?
-
ndh
2012.12.21 09:36
쓸데없는 빈 줄이 들어간 거 아닌가요?
게시판에서 copy & paste하지 말고 첨부파일을 다운받아서 실행해보세요.
-
조문수
2012.12.21 11:09
ndh님께서 말씀하신 것처럼 grid_test4.tex 을 다운받고 편집도 하지 않고 컴파일 하니 다음과 같은 에러가 납니다.
xelatex 으로 컴파일한건데... 혹시나헤서 pdflatex 으로 컴파일해도 같은 에러가 나는데요..
======================
LaTeX Warning: You have requested package `jiwonlipsum',
but the package provides `xparse'.
) (c:/usr/texlive/2012/texmf-dist/tex/latex/everypage/everypage.sty)
(./grid_test4.aux) (c:/usr/texlive/2012/texmf-dist/tex/latex/tipa/t3cmr.fd)
(c:/usr/texlive/2012/texmf-dist/tex/latex/hyperref/nameref.sty
(c:/usr/texlive/2012/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
Redoing nameref's sectioning
Redoing nameref's label
(./grid_test4.out) (./grid_test4.out)
Package hyperref Warning: Rerun to get /PageLabels entry.
ABD: EveryShipout initializing macros
! LaTeX Error: File `KTSbanner' not found.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.64
?
-
샘처럼
2012.12.21 11:24
이글의 답글중 progress님의 답글에 원하시는 답이 들어 있습니다. ^^
-
Progress
2012.12.21 11:32
! LaTeX Error: File `KTSbanner' not found.
로그 파일을 잘 읽어보세요.
그림 파일 KTSbanner가 없다고 말하고 있네요. 제가 이 글타래의 초반부 답글에서 KTSbanner도 첨부해놨는데, 답글이 지속되면서 반복해서 올리지 않으려고 첨부하지 않은 것입니다. 찾아서 다운로드하고 다시 컴파일해보세요.
-
게으른 엔지니어
2012.12.21 23:20
이제서야 테스트해보고 있습니다.
워낙에 Progress 님과 ndh 님께서 잘 설명해 주셔서 옵션을 이것 저것 셋팅해보고 있습니다.
\maketitle과 \tableofcontents 그리고 \printindex 페이지에서는 줄은 그어 졌는데, 위에 헤더가 제대로 나오지를 않습니다. Progress 님과 ndh 님께서는 아시겠지만, 다른 분들은 혹시 모르실까봐, 내용을 여기에 추가합니다. 그리고 질문도 하나 있습니다.
http://faq.ktug.or.kr/faq/PageStyle?action=raw&rev=1.6 페이지를 보시면 내용이 좀 나와 있습니다. 간단히 말하면 \maketitle 의 경우 자체적으로 항상 \pagestyle{plain}을 추가하기 때문에 지금 적용하고자 하는 페이지 스타일의 경우 \maketitle\thispagestyle{test} 이렇게 해서 표지를 만들면 적용이 됩니다. \tableofcontents의 경우도 마찬가지 입니다.
이제 질문은 \printindex 로 만든 페이지들은 아무리해도 적용이 안됩니다. 혹시 다른 방법을 아시면 답변 주시면 감사하겠습니다.
-
ndh
2012.12.22 08:39
\aliaspagestyle{chapter}{test}
-
게으른 엔지니어
2012.12.22 08:52
감사합니다.
제가 실제 본문이
title
contents
1. A
1.1 AA
index
와 같이 chapter가 들어 있는 페이지가 실제 다른 페이지들과 같이 붙어 있어서 실제로는 각 chapter가 시작하는 페이지도 제대로 안 나왔던거군요.
원하는 형태되로 잘 나왔습니다.
-
조문수
2012.12.22 12:15
위의 grid_test4.tex 파일을 이용하여
첫 페이지에는 box 가 없이
\title{\bfseries\Huge{Pick's Theorem}}
\author{조~문~수}
\date{\today}
와 Abstract 만 들어가고 그 다음 페이지부터 box가 설정되도록 해보고 싶은데요...
다음과 같이해도 안되네요... 한번 봐 주시겟어요?
프리블은 손대지 않앗습니다.
\begin{document}
\thispagestyle{empty}
\title{\bfseries\Huge{Pick's Theorem}}
\author{조~문~수}
\date{\today}
\maketitle
\clearpage
\pagestyle{test}
\jiwon
\end{document}
-
조문수
2012.12.23 13:05
Box 관련 전문가님의 실력 대단하고... 실제로 프린트를 해보니
멋지더군요...
혹자는 왜 굳이 박시가 필요할까? 라고 얘기 하실겁니다만..
성인분들은 박스 프레임에 필요 없겟지만 학생들은 주위 집중을 위해서
한편의 방법일겁니다.
그래서 전체 박스 프레임 / 문단 박스 / 줄 박스 프레임 등이
요긴하게 쓰일 분들이 계실건데...
제같은 경우는 mathmode 에서 나오는것으로 충분하리라 생각했지만..
이번 질문자님의 말씀처럼 전체 박스 프레임도 필요하리라 생각하기에
어떻게든
여기저기 자료 찾아서 공부해보는데...
힘듬 ㅎㅎ
공부할수록 힘듬 ㅎㅎ
그렇다고 포기안하는것도 힘듬 ㅎㅎ
전문가가 아니지만 계속 도전하는것도 힘듬 ㅎㅎ
이러한 저의 이쁜 맘을 받아주실분이 계시리라 기대하는 것도 힘듬 ㅎㅎ
텍 사랑합니다.. ^^
대충 typogrid 패키지를 이용한 거친 스케치만 제시해드리고자 합니다.
%% grid_test.tex
\documentclass[a5paper,twoside]{memoir}
\usepackage{fapapersize}
\usefapapersize{*,*,25mm,*,25mm,20mm}
\usepackage{blindtext}
\usepackage{typogrid}
\typogridsetup{columns=1,margin=false,headings=false}
\usepackage{graphicx}
\begin{document}
\makepagestyle{threecolumnheading}
\makeoddhead{threecolumnheading}{{\color{blue}\rule{\textwidth}{0.5pt}}\newline\includegraphics[height=\onelineskip]{KTS-meta-3-2}}{\sffamily\small\rightmark}{\thepage/\thelastpage}
\makeevenhead{threecolumnheading}{{\color{red}\rule{\textwidth}{1pt}}\newline\thepage/\thelastpage}{\sffamily\small\leftmark}{\includegraphics[height=\onelineskip]{KTS-meta-3-2}}
\pagestyle{threecolumnheading}
\AddToShipoutPicture{\typogrid}
\Blinddocument
\blindmathpaper
\Blinddocument
\blindmathpaper
\end{document}
===
상단 면주를 3단으로 구분할 때 가운데 column, 즉 타이틀 영역에 들어갈 텍스트의 양이 어떤지 잘 모르겠네요. 타이틀이 고정적인 길이를 갖는다면 아예 직사각형을 3등분하여 붙박이로 박아버릴 수도 있거든요.
그리고 본문을 감싸는 상자와 본문 사이의 거리는 얼마나 떨어져야하는지도 잘 모르겠고요.
이렇게 본문에 고정적인 그림을 박는 패키지는 수도 없이 많습니다.
eso-pic, wallpaper, xwatermark, flowfram, textpos, 그리고 tikz와 면주의 조합 등.
다음 링크도 한번 참고하시고요.
http://www.ktug.or.kr/xe/index.php?document_srl=152438
다른 분께서 조금 더 정밀한 답변을 해주실 수 있으리라 생각합니다.