% % arara: xelatex \documentclass[a4paper,amsmath]{oblivoir} \usepackage{fapapersize} \usefapapersize{*,*,1in,*,1in,*} \setmainfont{Crimson Pro} \setsansfont{Open Sans} \setmonofont{Roboto Mono} \setkomainfont[Noto Serif KR]()( Bold) \setkosansfont[Noto Sans KR]()( Bold) \usepackage[default=false,exception={vmatrix}]{ob-mathleading} \usepackage{mathtools} \newcommand\pkg[1]{\textsf{#1}} \usepackage{tcolorbox} \tcbuselibrary{listings,breakable} \begin{document} \title{ob-mathleading} \author{Nova de Hi} \date{2022/11/01, v0.1} \maketitle \begin{abstract} \pkg{amsmath} 패키지의 여러 줄 수식 환경의 행 간격을 본문의 행 간격과는 무관하게 일정하게 고정하거나 임의로 변경할 수 있도록 하는 패키지이다. 본문 행 간격의 기본값이 $1$이 아닌 한국어 문서에서 활용할 목적으로 제작하였다. \end{abstract} \tableofcontents* \section{목적과 기능} \pkg{amsmath}의 여러 줄 수식을 \pkg{oblivoir}에서 쓸 적에 한글 문서의 기본 행간의 영향을 받아 수식의 행간격이 느슨해지는 것을 방지하기 위하여 여러 줄 수식 환경에 대하여 기본 행간격을 주는 것이 이 패키지의 목적이다. 본문의 문단과 별행 수식 사이의 간격과 같은 것은 이 패키지가 제어하지 아니하며 ``여러 줄 수식''에 대해서만 효과가 있다. 이 패키지를 사용하지 않았을 때 \pkg{oblivoir} 문서를 작성한 결과와 이 패키지를 사용한 결과를 비교하여 보아라. \[ \begin{bmatrix} a & b & c \\ p & q & f \\ g & j & i \end{bmatrix}, \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix}, \begin{bmatrix} 1 & 0 & \ast\! \\ 0 & 1 & \ast\! \end{bmatrix}, \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix}, \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \] \begin{obMathLeading} \[ \begin{bmatrix} a & b & c \\ p & q & f \\ g & j & i \end{bmatrix}, \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix}, \begin{bmatrix} 1 & 0 & \ast\! \\ 0 & 1 & \ast\! \end{bmatrix}, \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix}, \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} \] \end{obMathLeading} \section{사용법} \subsection{기본적인 사용법} 문서의 preamble에 패키지의 사용을 선언한다. \begin{tcblisting}{listing only} \usepackage{ob-mathleading} \end{tcblisting} ``적절한'' 행간격을 얻기 위해서는 이렇게 선언하는 것으로 충분하다. 패키지의 수식 행간격 기본값은 $1$이다. \subsection{명령과 환경} 일관성있는 문서를 작성하기 위해서는 문서 전체에 걸쳐서 동일한 수식 행간격을 유지하는 것이 바람직하다. 그러나 부득이하게 특정 부분이나 특정 수식에 대해서만 행간을 늘리거나 줄여야 할 필요가 있을 수 있다. 이 패키지는 이럴 경우에 대응하기 위하여 하나의 명령(선언)과 하나의 환경을 제공한다. \begin{tcblisting}{listing only} \obmathleading{} \end{tcblisting} \verb||에는 stretch 값을 \verb|1.2|, \verb|2|와 같이 준다. 이 선언 이후에는 수식 행간격이 변경되며 이 변경은 지역적(\emph{local})이므로 현재의 범위(scope) 내에서 유효하다. \begin{tcblisting}{listing only} \begin{obMathLeading}[] ... \end{obMathLeading} \end{tcblisting} \verb|obMathLeading| 환경은 이 환경 안에 오는 수식에만 영향을 끼친다. 옵션 인자가 주어지지 않으면 기본값인 $1$이 사용되며 옵션 인자가 주어지면 그것을 stretch로 사용하여 행간격을 조절한다. 환경 안에는 \pkg{amsmath}의 여러 줄 수식 환경이 올 수 있다. \subsection{패키지 옵션} \subsubsection{옵션 \texttt{mathleading}} 문서 전체에 걸쳐 수식 행간격을 임의로 조절하고자 한다면 \begin{tcblisting}{listing only} \usepackage[mathleading=]{ob-mathleading} \end{tcblisting} \noindent 와 같이 지정한다. \verb||에는 stretch 값이 온다. 패키지의 기본값은 \verb|1|이다. \subsubsection{옵션 \texttt{exception}} 이 패키지가 영향을 미치는 \pkg{amsmath}의 수식 환경의 리스트는 다음과 같다. \begin{quote} \begin{ttfamily} array, matrix, pmatrix, bmatrix, Bmatrix, vmatrix, Vmatrix, cases, align, aligned, alignat, alignedat, gather, gathered, split, multline, xalignat, xxalignat \end{ttfamily} \end{quote} 이 가운데 행간 조절 적용을 배제하고자 하는 환경의 이름을 쉼표로 분리하고 중괄호로 묶어서 열거할 수 있다. \begin{tcblisting}{listing only} \usepackage[exception={cases,vmatrix}]{ob-mathleading} \end{tcblisting} 다만 이 경우에 \texttt{align, alignat, xalignat, xxalignat}는 모두 동일한 것으로 취급되며 \texttt{align}만을 대표 이름으로 다룬다. \texttt{align}과 \texttt{aligned}는 서로 다른 환경이므로 별도로 취급된다. 다음 보기는 \verb|exception={vmatrix}| 옵션을 준 상태의 예시이다. \begin{tcblisting}{listing above text} \begin{obMathLeading} \[ \begin{bmatrix} a & b & c \\ p & q & f \\ g & j & i \end{bmatrix}, \begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix}, \begin{bmatrix} 1 & 0 & \ast\! \\ 0 & 1 & \ast\! \end{bmatrix}, \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 0 & 0 \end{bmatrix}, \begin{vmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{vmatrix} \] \end{obMathLeading} \end{tcblisting} \subsubsection{옵션 \texttt{default}} 일반적인 상황은 아니겠지만 수식 행간격을 조절하는 이 패키지의 기능을 사용하지 않으면서 단지 명령과 환경, \verb|\obmathleading|이나 \verb|obMathLeading|만을 활용하고자 한다면 \begin{tcblisting}{listing only} \usepackage[default=false]{ob-mathleading} \end{tcblisting} 이와 같이 \verb|[default=false]|를 옵션으로 줄 수 있다. 패키지의 기본값은 \verb|true|이다. \subsubsection{옵션 \texttt{noallowdisplaybreaks}} 이 패키지는 \verb|\allowdisplaybreaks|를 실행해준다. 이 기능을 억제하고자 한다면 패키지 옵션으로 \verb|[noallowdisplaybreaks]|를 선언한다. 마지막의 \verb|s|를 빠뜨리지 않도록 유의하라. \section{적용 범위} 이 패키지는 (이름에 나타난 바와 같이) \pkg{oblivoir}를 위하여 작성되기는 하였지만 \pkg{oblivoir} 클래스에 의존하지 않는다. 그러므로 다른 클래스의 문서에서도 동작할 것이다. \pkg{amsmath}는 필수적이며 \pkg{etoolbox}를 로드한다. \section{감사의 말} 테스트 문서와 예제 소스를 제공하신 ktug 게시판의 Progress 님, 패키지 제작의 동기를 제공하신 조인성 교수께 감사드린다. \section{변경이력} \begin{description} \item [2022/04/01] \texttt{split} 환경에 적용되지 않는 최근 발생한 이슈 해결. \item [2021/03/09] oblivoir의 일부로 포함하여 배포. \end{description} \end{document}