\shadowbox 예제 Progress * 2007 년 2 월 요약 수학, 물리등이공계열의교재는정리, 증명, 예제, 풀이등이많이들어갑니다. 이것들은장 절에따라정리번호, 예제번호등넘버링이새로초기화되고하나의장 절에서는일련번호를띠게마련이지요. 이렇게일정한패턴을지닌문서를작성할때 LATEX 만큼좋은것은없습니다. 이문서는 fancybox 패키지의 \shadowbox를정리류의기본틀로삼는예제입니다. 그리고곁들여몇가지흥미로울것이라생각하는 ( 혼자만의생각이겠지만 ) 다른내용도넣었습니다. 이것을처음만들었던때가너무오래된지라최신환경에맞추어소스코드를조금변경하였습니다. 수학교재류를만드는분들께조금이나마도움이되기를바랍니다. * 이문서는 KC2008 과 XOBLIVOIR 클래스를이용하여만들었습니다. KC2008 과 XOBLIVOIR 클래스를만든도은이아빠님께감사합니다.
제 1 장 초등논리 1.1 명제와결합자 1.2 나머지세결합자 1.3 항진, 함의, 동치 1.4 모순 1.5 연역적추론 1.6 한정규칙 1.7 타당성의증명 1.8 수학적귀납법
초등논리 1 이장에서는책의나머지부분을공부하는데충분히보탬이될수 있도록논리를최소량짚고넘어간다. 1.1 명제와결합자논리공부란타당하지않은논증 (invalid argument) 으로부터타당한논증 (valid argument) 을구별하는데쓰이는원리와방법을익히는일이다. 이예비장에서의논리에대한목적은학생들로하여금논증의증명의각단계에서이용되고있는원리와방법을이해할수있도록돕는데있다. 논리는전문적으로사용되고있는용어 명제 로부터출발한다. 명제 (state-ment) 는참거짓중어느한경우로되동시에양쪽은아닌서술문을뜻한다. 주어진어느명제가참인지거짓인지를알려고파고들필요는없겠지만명제라면참거짓중꼭어느한쪽이어야함을분명히가릴만한조건이갖추어져있어야한다. 흔히명제의참, 거짓은곧바로정할수있으나경우에따라서는다소노력이들때가있고결론을내릴수없을수도있다. 다음예를통하여여기서언급한바를누구나이해할수있을것이다. 예제 1 다음각각은명제이다. (a) Tampa 는 Florida 주의도시이다. (b) 2 + 1은 5와같다. (c) 3을십진법으로전개할때소수점아래 105번째자리수는 7이다. (d) 달은푸른치즈로만들어졌다. 2
명제와결합자 3 (e) 지금비가내리고있다. 위의예에서분명히 (a) 는참이지만 (b) 와 (c) 는거짓이다. 한편 (c) 와 (e) 의참 거짓 을얼른단언하기에는우리의지식이부족한탓으로망설이게되지만이것들도또한 명제이다. (f) 의참거짓은그렇게주장할때의날씨에달려있다. 예제 2 다음어느것에대해서도참거짓을묻는다는자체가무의미하므로이들 은모두명제가아니다. (a) 우리파티에놀러오렴. (b) 하늘은청명하다. (c) 안녕하십니까? (d) 친구여, 잘가게. [ 풀이 ] (a) 파티에놀러가는지행패부리러가는지. (b) 청명의기준이모호하다. (c) 안녕의기준이모호하다. (d) 잘가든말든! 와같이풀수있다. 예제 1에서와같은명제를모두단순명제 (simple statement) 라하고둘또는그이상의단순명제들이결합된것을합성명제 (compound statement) 라한다. 이를테면 2+1은 5와같다. 그리고 3을십진법으로전개할때 105번째자리수는 7이다. 는합성명제이다. 흔히대수학에서수를나타낼때문자를사용하듯이논리에서도명제는 p,q,r, 과같은문자를사용한다. 그럴때 p와같은하나의문자는단순명제또는합성명제를나타낸다. 앞으로별다른언급이없는한대문자 P,Q,R, 로나타내기로
4 제 1 장초등논리 표 1.1: p q 의진리값 p q p q T T T T F T F T T F F F 한다. 정리 1 임의의두명제 p,q 사이에결합자 를붙여서합성명제 p q 를구성한다. p q 의진리값은다음표 4 에의하여정의한다. 따라서결합자 는위에서언급된첫번째명제에서와같이포함하는뜻에서의 또는 으로정의한다. 명제 p,q,r, 을연결하여합성명제를구성하는방법은여러가지가있으나흔히 이용되고있는것으로다섯가지가있다. 이다섯가지의결합자 (conne ive) 는다음과 같다. 정리 2 ( 다섯가지결합자 ) 임의의두명제 p,q 사이에결합자 를붙여서합성명제 p q를구성한다. p q의진리값은표 1.1에의하여정의한다. 따라서결합자 는위에서언급된첫번째명제에서와같이포함하는뜻에서의 또는 으로정의한다.
명제와결합자 5 정리 3 다음도성립한다. 증명해보라. 1. 3을십진법으로전개할때소수점아래 105번째자리수는 7이다. 2. 달은푸른치즈로만들어졌다. 3. Tampa 는 Florida 주의도시이다. 4. 2 + 1은 5와같다. 5. 지금비가내리고있다. [ 증명 ] 차례대로증명하자. 1. 십진법으로전개하면참이다. 2. 달은돌멩이로이루어졌다. 3. 그런도시없다. 4. 아니다. 5. 안온다. 이상에서참거짓을구별할수있다.
약간의소스코드해설 2 이 \shadowbox에관한예제는몇년전 BOOK클래스를주로사용하던시절에작성한예제인데, 도은이아빠님이고맙게도 KC2006의예제문서로넣어주셨다. 현재대세는 OBLIVOIR 클래스이다. 이를이용하면많은환경을쉽게정의하고처리할수있다. 2.1 시작하는한줄 \documentclass[chapter, twoside, 11pt]{oblivoir} 원래 OBLIVOIR는아티클을작성할목적으로제작되었기때문에 \chapter를겨냥하지않았다. 그러나한편으로 OBLIVOIR는 MEMOIR기반의클래스이기때문에 \chapter명령을사용할수있다. 11pt 옵션을주면본문글자크기는 11포인트로변한다. 2.2 구체적인문서레이아웃설정 % 여러가지패키지 \usepackage{fancybox} 3 \usepackage{graphicx, color} \usepackage{amsmath, amssymb, amsthm} %for compactenum environment 6 \usepackage{paralist} 6
구체적인문서레이아웃설정 7 % 본문 / 수식폰트에 times 사용 9 \usepackage{mathptmx} fancybox패키지는 \shadowbox를구현하기위하여쓴다. amsthm패키지는증명 (proof) 환경이나풀이 (solution) 환경에서증명끝 (Q.E.D.) 을나타내는기호로 나 를쉽게구현하도록하기위해썼다. 자세한설명은뒤에한다. paralist나 mathptmx등나머지패키지는주석을붙여놓은그대로사용하기위하여썼다. %% 판형 / 판면설정 \usepackage{fapapersize} 12 \usefapapersize{182mm,257mm,31mm,*,30mm,*} %% hlatex-compatible font commands 15 \let\textgt\textsf \let\textgr\emph \let\grfamily\itshape 18 \def\textgl#1{\setadhocfonts{unpg}{ungt}#1} \def\shfamily{\setadhocfonts{unsh}{unsh}} \def\gsfamily{\setadhocfonts{ungs}{ungs}} fapapersize는판형과판면을아주쉽게구현하도록해준다. 위의설정에서간단하게판형의가로와세로를 182cm와 257mm로정하여 B5 용지로맞추었다. 나머지는상하좌우의여백이다. 왼쪽과오른쪽, 위와아래의여백을각각같게만들려면어느하나의값만쓰고나머지는 * 만쓰면그만이다. \grfamily, \textgt등은 HL A TEX 의명령어인데일단 OBLIVOIR에서사용가능하도록재정의한것이다. 21 %user defined color setting for Cyan, Black \definecolor{lcyan}{cmyk}{0.2, 0, 0, 0.00} \definecolor{mcyan}{cmyk}{0.4, 0, 0, 0.05} 24 \definecolor{dcyan}{cmyk}{0.6, 0, 0, 0.05} Halmos 기호에대해알아보라.
8 제 2 장약간의소스코드해설 27 30 33 \definecolor{ddcyan}{cmyk}{0.8, 0, 0, 0.05} \definecolor{fcyan}{cmyk}{1.0, 0, 0, 0.05} % 표따위의음영색깔 \definecolor{shadecolor}{gray}{0.90} % 들여쓰기조정 \setlength\parindent{1.5em} % 줄간격 %\linespread{1.6} 사용자정의색상을지정하고 ---이당시에는 2도인쇄를하려고마음먹었기에 Cyan과 Bla 으로만구성하였다. 본문의들여쓰기를 1.5em으로맞추었다. 본문으로 10포인트를사용하였으면 2em으로하였을것이다. 줄간격은그냥 OBLIVOIR클래스의디폴트값으로두었다. 36 % 장시작모양을도은이아빠님이 memoir 의방식으로구성해주심. \definecolor{mygray45}{gray}{.45} 39 \makechapterstyle{shadowsample}{% \setlength{\beforechapskip}{\onelineskip} \setlength{\midchapskip}{-1\onelineskip} 42 \setlength{\afterchapskip}{60pt} \renewcommand{\chapterheadstart}{\vspace*{-10\beforechapskip}} \renewcommand{\prechapternum}{} 45 \renewcommand{\postchapternum}{} \renewcommand{\printchaptername}{}%%% meaningless in memhangul \renewcommand{\chapternamenum}{} 48 \renewcommand{\chapnumfont}{\color{cyan}% \normalfont\fontsize{15ex}{15ex}\selectfont \bfseries\vphantom{\thechapter}\par\nobreak} 51 \renewcommand{\chaptitlefont}{\color{mygray45}% \normalfont\raggedright\huge\gsfamily} \renewcommand{\printchapternum}{\raggedleft\chapnumfont\thechapter} 54 \renewcommand{\afterchapternum}{\par\nobreak\vskip\midchapskip} % \renewcommand{\printchaptertitle}[1]{\chaptitlefont ##1} %%% default. \renewcommand{\afterchaptertitle}{\par\nobreak
구체적인문서레이아웃설정 9 57 \vspace{-1.5\onelineskip}%% \color{black}\hrulefill\par\nobreak \vskip\afterchapskip} 60 } MEMOIR 클래스공부를게을리하여 \chapterstyle 에대한사용법을제대로 익히지못했다. BOOK 클래스시절에사용하던챕터모양을도은이아빠님이새 로 MEMOIR 스럽게 \chapterstyle{shadowsmaple} 을구성하여주었다. % 섹션제목을산세리프계열 / 라아지크기로 \setsecheadstyle{\sffamily\large} 63 \setsecnumformat{\csname the#1\endcsname\emspace} % 서브섹션제목을산세리프계열 / 보통크기로 66 \setsubsecheadstyle{\sffamily\normalsize} % 표 / 그림캡션제목설정 69 \captionnamefont{\small\sffamily} \captiontitlefont{\small\normalfont} 72 % 나열환경의항목간줄간격을좁히는 \itsep 정의를 memoir 기반의 % 명령으로바꾼다. \newcommand\itsep{%\setlength\itemsep{-parsep} 75 \tightlist} % 여러가지게으른매크로 78 \newcommand\ov{\textsc{oblivoir}} \newcommand\dispcmd[1]{\texttt{\ensuremath{\backslash}#1}} \newcommand\pkg[1]{\textsf{#1}} 81 \newcommand\cls[1]{\textsc{#1}} 섹션제목과서브섹션제목을산세리프 ( 세리프가없는 ) 계열로바꾸고글자크기를조금바꾸었다. 표나그림캡션의본문은작게쓰고 그림, 표 와같은캡션자체의글꼴은산세리프로정의하였다. 원래예제에있던 \itsep은나열환경에서항목과항목사이의행간격을붙이는역할을하였다. 여기서는 \paralist패키지의 compa enum 환경을쓸
10 제 2 장약간의소스코드해설 것이므로, 그냥 MEMOIR클래스의나열환경제어명령인 \tightlist로바꿔놓았다. 그렇지만아예 \itsep명령을모두없애버리는것을권한다. 게으른매크로 는이문서의소스코드를설명하면서클래스, 패키지, 명령어등의글꼴을조금다르게찍고자정의한것이다. 84 \chapterstyle{shadowsample} \pagestyle{hangul} \allowdisplaybreaks 앞서도은이아빠님이정의해주신 shadowsample의 \chapterstyle을불렀다. \pagestyle{hangul} 은면주 (running head) 의모양을현재이문서와같이찍는다. \allowdisplaybreaks는여러줄짜리수식 (multiline equation) 이쪽나눔이가능하도록하는 amsmath에서정의된매크로이다. 2.3 예제, 풀이, 정리, 증명환경등 2.3.1 예제환경 %% 예제 설정 \newcommand\sampname{% 3 \textcolor{fcyan}{\textsf{\textbf{ 예제 ~\thesample}}}} \newcounter{sample}[chapter] 6 \setcounter{sample}{0} \newenvironment{samp}{% 9 \refstepcounter{sample} \par\vspace{\onelineskip} \begin{list}{}{% 12 \setlength\itemindent{0pt} \setlength\labelsep{.03\textwidth} \setlength\labelwidth{.12\textwidth} 15 \setlength\leftmargin{.15\textwidth} \setlength\topsep{0pt} \setlength\parsep{0pt}
예제, 풀이, 정리, 증명환경등 11 18 \setlength\partopsep{0pt} %\tightlist } 21 \item[\sampname]\relax}% {\end{list} \vspace{\onelineskip} 24 } 예제를구현하기위한환경이다. 먼저각장마다새로시작하는 sample 이라는카운터를만들고초기화 ( 값을 0으로 ) 한다. \sampname은예제 X와같이앞서설정한 sample의카운터를증가시키면서번호를붙인다. 이는뒤에작성할나열환경의 항목머리 로역할하게된다. 예제환경이새로시작할때마다줄을바꿔 1행간 (\onelineskip) 을띄운다. 적당한리스트환경을구성하되 항목머리 (label) 로예제 X라고붙도록하고상하좌우여백을조정한다. 예를들면다음과같다. 예제 1 다음각각은명제이다. (a) Tampa 는 Florida 주의도시이다. (b) 2 + 1은 5와같다. (c) 3을십진법으로전개할때소수점아래 105번째자리수는 7이 다. (d) 달은푸른치즈로만들어졌다. (e) 지금비가내리고있다. 2.3.2 증명, 풀이환경 % 증명 \newenvironment{pf} 27 {\renewcommand{\qedsymbol}{\textcolor{dcyan}{ }} \pushqed{\qed}% \begin{list}{\textcolor{fcyan}{\textsf{\upshape [ 증명 ]}}}{% 30 \setlength\itemindent{0pt} \setlength\labelsep{.03\textwidth}
12 제 2 장약간의소스코드해설 \setlength\labelwidth{.12\textwidth} 33 \setlength\leftmargin{.15\textwidth} \tightlist} \item\relax}{% 36 \popqed\end{list}\@endpefalse} % 풀이 39 \newenvironment{sol} {\renewcommand{\qedsymbol}{\textcolor{dcyan}{$\blacksquare$}} \pushqed{\qed}% 42 \begin{list}{\textcolor{fcyan}{\textsf{\upshape [ 풀이 ]}}}{% \setlength\itemindent{0pt} \setlength\labelsep{.03\textwidth} 45 \setlength\labelwidth{.12\textwidth} \setlength\leftmargin{.15\textwidth} \tightlist} 48 \item \relax}{% \popqed\end{list}\@endpefalse} 증명이나풀이환경이끝나는행의오른쪽에각각 나 이 Q.E.D. 마크로붙는다. 이를위해 \amsthm패키지가필요한데, 이는 \qedsymbol이라는명령을삽입해주는것이다. 그러나 \qedsymbol은한번정해놓으면앞의것을계속따라간다. 그래서증명이나풀이환경을부를때마다새로정의 (\renewcommand하도록하였다. 이 Q.E.D. 마크를사용하는데있어주의할사항이있다. 다음에소개한예를주의깊게보라. [ 증명 ] 다음여러줄짜리수식이있다. (a) 0 := (a;q) 0 := 1, (2.1) (a) n := (a;q) n := (1 a)(1 aq) (1 aq n 1 ),n 1, (2.2) 그리고 (a) := (a;q) := lim n (a;q) n, q < 1. (2.3)
예제, 풀이, 정리, 증명환경등 13 증명환경은이렇게텍스트로끝나면자동으로마지막행의끝에 Q.E.D. 마크 가붙는다. [ 증명 ] 글을쓰다보면증명이별행 (di lay) 수식으로끝나는경우도있을것이다. 이경우 Q.E.D. 마크 는안타깝게도수식이끝난다음줄의마지막행에붙는다. (a) 0 := (a;q) 0 := 1, (a) n := (a;q) n := (1 a)(1 aq) (1 aq n 1 ),n 1, (a) := (a;q) := lim n (a;q) n, q < 1. [ 증명 ] 이럴때는수식마지막행에 \qedhere 를붙여주면된다. (a) 0 := (a;q) 0 := 1, (a) n := (a;q) n := (1 a)(1 aq) (1 aq n 1 ),n 1, (a) := (a;q) := lim n (a;q) n, q < 1. [ 증명 ] 또한줄짜리별행수식을구현하려고두개의달러사인으로감싸는경 우가많다. 그러나 $$ ~ $$ 를쓰면 \qedhere 를선언함에도불구하고 행끝에제대로식자되지않을수있다. (a) := (a;q) := lim n (a;q) n, q < 1. [ 증명 ] 따라서한줄짜리별행수식에 Q.E.D. 마크를올바로나오게하려면 \[ ~ \] 를권장한다. (a) := (a;q) := lim n (a;q) n, q < 1.
14 제 2 장약간의소스코드해설 2.3.3 정리환경 %% 정리 설정 51 \newcounter{thm}[chapter] \newsavebox{\thm} \newcommand{\thmname}{\noindent 54 \textbf{\textgl{ 정리 ~\thethm}} } 57 \newenvironment{thm}[1][\@empty]{% \refstepcounter{thm} \par\vspace{\onelineskip} 60 \noindent\centering \begin{sbox}% \centering\begin{minipage}{0.9\linewidth}\vspace{.5\onelineskip} 63 {\ifx #1\@empty \Thmname \else 66 \Thmname~\textbf{\textgl{(#1)}} \fi}} {\par\vspace{.5\onelineskip}\end{minipage} 69 \end{sbox}% \setlength\fboxsep{.5em} \shadowbox{\colorbox{lcyan}{\thesbox}} 72 \par\vspace{\onelineskip}} 정리환경은 \fancybox패키지의 \shadowbox내부를옅은 Cyan 색으로칠하고, \Thm카운터를이용하여번호을붙여내용을집어넣는다. 이를위해 Sbox를사용한것을눈여겨보라. 어떤 box 를환경으로정의할때사용자들이많이힘들어하는부분이다. 아무튼정리환경의예는다음과같다. 본문내용은 box 안에잘들어가는데정리 X 같은항목머리가잘붙지않거나, \shadowbox 의길이를원하는대로잘제어하지못하는경우등이그러하다.
예제, 풀이, 정리, 증명환경등 15 정리 1 임의의두명제 p,q 사이에결합자 를붙여서합성명제 p q 를구성한다. p q의진리값은다음표 4에의하여정의한다. 따라서결합자 는위에서언급된첫번째명제에서와같이포함하는뜻에서의 또는 으로정의한다. [1][\@empty] 과 \ifx #1\@empty 부분이있는데, 이는정리환경에옵션을하 나준것이다. 정리환경을부르고옵션을 [ 와 ] 사이에넣으면정리의 특별한 명칭 같은것을넣을수있다. 정리 2 ( 다섯가지결합자 ) 임의의두명제 p,q 사이에결합자 를붙여서합성명제 p q를구성한다. p q의진리값은표 1.1에의하여정의한다. 따라서결합자 는위에서언급된첫번째명제에서와같이포함하는뜻에서의 또는 으로정의한다. \shadowbox 의그림자두께는 \shadowsize 를재조정하여조절할수있다. 그 림자색상을바꾸려면원 fancybox 소스에서약간해킹을해야한다. 다음은그 림자두께를 2 포인트로, 색상을 Cyan 으로바꾼것이다. \makeatletter %% 섀도우색상과섀도우두께재정의 75 \def\shadowbox{\verbbox\@shadowbox} \def\@shadowbox#1{% \setbox\@fancybox\hbox{\fbox{#1}}% 78 \leavevmode\vbox{% \offinterlineskip \dimen@=\shadowsize 81 \advance\dimen@.5\fboxrule \hbox{\copy\@fancybox\kern-.5\fboxrule\lower\shadowsize\hbox{%
16 제 2 장약간의소스코드해설 \color{fcyan}\vrule \@height\ht\@fancybox \@depth\dp\@fancybox 84 \@width\dimen@}}% \vskip-\dimen@ \moveright\shadowsize\vbox{% 87 \color{fcyan}\hrule \@width\wd\@fancybox \@height\dimen@}}} \setlength{\shadowsize}{2pt} \makeatother 정리 3 임의의두명제 p,q 사이에결합자 를붙여서합성명제 p q 를구성한다. p q의진리값은표 1.1에의하여정의한다. 따라서결합자 는위에서언급된첫번째명제에서와같이포함하는뜻에서의 또는 으로정의한다. 2.3.4 생각해볼문제 이와같이 \shadowbox를이용하여만든정리는별로좋지못하다. 왜냐하면 \shadowbox는현재쪽하단에서다음쪽상단으로분리되지않기 (non-breakable) 때문이다. 예를들어, 본문아래에 5 행정도의공간이있는데도, 다음에등장하는정리가 ( 섀도우박스를포함하여 ) 5행을넘어서는글줄을갖게되면현재쪽에식자되지못한다. 즉, 현재쪽하단에불필요한여백이생길수있다. 4쪽과 15쪽참조. 어차피박스와음영으로 정리 를강조해야한다면위와같은문제를일으키지않도록다른환경을정의하는것이좋을것이다. 예를들어정리환경을다음과같이재정의하였다고하자. 이것은 shaded 환경을쓴것이다. 90 \makeatletter \renewenvironment{thm}[1][\@empty]{% \refstepcounter{thm} 93 \par\vspace{\onelineskip}% \setlength\fboxsep{1em}
예제, 풀이, 정리, 증명환경등 17 \begin{shaded} 96 \ifx #1\@empty \Thmname \else 99 \Thmname~\textbf{\textgl{(#1)}} \fi} {\end{shaded} 102 \par\vspace{\onelineskip} } \makeatother 이렇게하여구현된다음정리환경은쪽분리가가능하다. \shadowbox를쓴것과비교해도별로밑질게없다. framed 환경도알아보라. 이런 shaded나 framed, boxedverbatim 같은환경은 OBLIVOIR에서별도의패키지를얹을필요도없다. 또는 \boites패키지에대해알아보라. breakbox라는사용자설정가능한환경을제공한다. 정리 4 ( 페이지가분리되는 shaded 환경 ) 다음정리가성립한다. (a) X 를거리공간, ε 을양의실수그리고 A를 X 의부분집합이라고하자. 모든 x X 에대해서 dist(x,a) ε 가성립하면 A를 X 안에서 ε-조밀 (ε-dense) 하다고한다. (b) X 안의유한한 ε-조밀한부분집합은 X 안에서의 ε-그물 (ε-net) 이라고한다. (c) X = 이거나임의의실수 ε > 0에대해서 X 안에서의 ε-그물이존재하면거리공간 X 를완전유계 (totally bounded) 라고한다. (d) A가 X 안에서조밀하면 A는 0-조밀하다. 1. 3을십진법으로전개할때소수점아래 105번째자리수는 7이다. 2. 달은푸른치즈로만들어졌다. 3. Tampa 는 Florida 주의도시이다. 4. 2 + 1은 5와같다. 5. 지금비가내리고있다. (e) 이산공간 X 가완전유계이기위한필요충분조건은 X 가유한한것이다. 1. X 의부분공간 A에대해서다음이성립한다.
18 제 2 장약간의소스코드해설 (i) X 가완전유계이면 A 역시완전유계이다. (ii) A가 X 안에서조밀하고 A가완전유계이면 X 역시완전유계이다. 2. R n 의부분공간이완전유계이기위한필요충분조건은부분공간이유계인것이다.