summaryrefslogtreecommitdiff
path: root/language
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-03-10 03:00:54 +0000
committerNorbert Preining <norbert@preining.info>2021-03-10 03:00:54 +0000
commitf808c98da8e34907b93b8b1c2ef473539b88c504 (patch)
treee68615a59e28cb52c1edf845fa7921865c95c5a9 /language
parent0da44a32af4f9dd986fd60a51e7f9a1f932fe27c (diff)
CTAN sync 202103100300
Diffstat (limited to 'language')
-rw-r--r--language/korean/kotex-oblivoir/ChangeLog7
-rw-r--r--language/korean/kotex-oblivoir/README2
-rw-r--r--language/korean/kotex-oblivoir/doc/ob-mathleading-doc.pdfbin0 -> 95320 bytes
-rw-r--r--language/korean/kotex-oblivoir/doc/ob-mathleading-doc.tex174
-rw-r--r--language/korean/kotex-oblivoir/doc/obchaptertoc-doc.pdfbin0 -> 80946 bytes
-rw-r--r--language/korean/kotex-oblivoir/doc/obchaptertoc-doc.tex137
-rw-r--r--language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdfbin230610 -> 242033 bytes
-rw-r--r--language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex113
-rw-r--r--language/korean/kotex-oblivoir/doc/oblivoir-test.tex5
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty376
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty127
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty223
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-x/ob-mathleading.sty144
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-x/ob-unfontsdefault.sty143
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty52
-rw-r--r--language/korean/kotex-oblivoir/tex/oblivoir-xl.cls4
-rw-r--r--language/korean/kotex-oblivoir/tex/oblivoir.cls4
-rw-r--r--language/korean/kotex-oblivoir/tex/xoblivoir.cls2
18 files changed, 1420 insertions, 93 deletions
diff --git a/language/korean/kotex-oblivoir/ChangeLog b/language/korean/kotex-oblivoir/ChangeLog
index 3d3363ec93..7260a32e8c 100644
--- a/language/korean/kotex-oblivoir/ChangeLog
+++ b/language/korean/kotex-oblivoir/ChangeLog
@@ -1,3 +1,10 @@
+2021-03-03 Kangsoo Kim <karnes at ktug org>
+
+ Version 3.0
+
+ * fixed several bugs.
+ * oblivoir has now obchaptertoc and ob-mathleading sub packages.
+
2020-03-20 Kangsoo Kim <karnes at ktug.org>
Version 2.2.1
diff --git a/language/korean/kotex-oblivoir/README b/language/korean/kotex-oblivoir/README
index a91b290d9e..ac0485cf9d 100644
--- a/language/korean/kotex-oblivoir/README
+++ b/language/korean/kotex-oblivoir/README
@@ -1,4 +1,4 @@
-kotex-oblivoir, v2.2
+kotex-oblivoir, v3.0
====================
Introduction
diff --git a/language/korean/kotex-oblivoir/doc/ob-mathleading-doc.pdf b/language/korean/kotex-oblivoir/doc/ob-mathleading-doc.pdf
new file mode 100644
index 0000000000..ef86c8a924
--- /dev/null
+++ b/language/korean/kotex-oblivoir/doc/ob-mathleading-doc.pdf
Binary files differ
diff --git a/language/korean/kotex-oblivoir/doc/ob-mathleading-doc.tex b/language/korean/kotex-oblivoir/doc/ob-mathleading-doc.tex
new file mode 100644
index 0000000000..47f8b06dbc
--- /dev/null
+++ b/language/korean/kotex-oblivoir/doc/ob-mathleading-doc.tex
@@ -0,0 +1,174 @@
+%
+% arara: xelatex
+
+\documentclass[a4paper,amsmath]{oblivoir}
+
+\usepackage{fapapersize}
+\usefapapersize{*,*,1in,*,1in,*}
+
+\setmainfont{Crimson Pro}
+\setsansfont{Open Sans}
+\setmonofont{Roboto Mono}
+\setkomainfont[Noto Serif CJK KR]()( Bold)
+\setkosansfont[Noto Sans CJK 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{2018/12/25, v0.0.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{<value>}
+\end{tcblisting}
+
+\verb|<value>|에는 stretch 값을 \verb|1.2|, \verb|2|와 같이 준다. 이 선언 이후에는 수식 행간격이 변경되며 이 변경은 지역적(\emph{local})이므로
+현재의 범위(scope) 내에서 유효하다.
+
+\begin{tcblisting}{listing only}
+ \begin{obMathLeading}[<value>]
+ ...
+ \end{obMathLeading}
+\end{tcblisting}
+
+\verb|obMathLeading| 환경은 이 환경 안에 오는 수식에만 영향을 끼친다. 옵션 인자가 주어지지 않으면
+기본값인 $1$이 사용되며 옵션 인자가 주어지면 그것을 stretch로 사용하여 행간격을 조절한다.
+환경 안에는 \pkg{amsmath}의 여러 줄 수식 환경이 올 수 있다.
+
+\subsection{패키지 옵션}
+
+\subsubsection{옵션 \texttt{mathleading}}
+
+문서 전체에 걸쳐 수식 행간격을 임의로 조절하고자 한다면
+\begin{tcblisting}{listing only}
+ \usepackage[mathleading=<value>]{ob-mathleading}
+\end{tcblisting}
+\noindent 와 같이 지정한다. \verb|<value>|에는 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 님, 패키지 제작의 동기를 제공하신 조인성 교수께 감사드린다.
+
+
+\end{document}
diff --git a/language/korean/kotex-oblivoir/doc/obchaptertoc-doc.pdf b/language/korean/kotex-oblivoir/doc/obchaptertoc-doc.pdf
new file mode 100644
index 0000000000..a63f3f15d3
--- /dev/null
+++ b/language/korean/kotex-oblivoir/doc/obchaptertoc-doc.pdf
Binary files differ
diff --git a/language/korean/kotex-oblivoir/doc/obchaptertoc-doc.tex b/language/korean/kotex-oblivoir/doc/obchaptertoc-doc.tex
new file mode 100644
index 0000000000..f4ae7bd7fe
--- /dev/null
+++ b/language/korean/kotex-oblivoir/doc/obchaptertoc-doc.tex
@@ -0,0 +1,137 @@
+\documentclass[a4paper,oneside]{oblivoir}
+
+\usepackage{fapapersize}
+\usefapapersize{*,*,30mm,50mm,35mm,*}
+
+\setmainfont{TeX Gyre Pagella}
+\setkomainfont(Noto Serif CJK KR)
+\setkosansfont(Noto Sans CJK KR Light)(Noto Sans CJK KR Medium)
+
+\usepackage{obchaptertoc}
+
+\ExplSyntaxOn
+
+\renewcommand*\sideparform{\raggedright}
+\sideparmargin{right}
+\NewDocumentCommand \pkgcmd { m }
+{
+ \cs{#1}
+ \sidepar{\cs{#1}}
+}
+
+\ExplSyntaxOff
+
+\makeatletter
+\makechapterstyle{thisdoc}{%
+ \chapterstyle{section}
+ \renewcommand\clearforchapter{\par}
+ \setlength\beforechapskip{2\onelineskip}
+% \setlength\midchapskip{10pt}
+ \setlength\afterchapskip{1.33\onelineskip}
+ \renewcommand*\chaptitlefont{\sffamily\LARGE}
+ \renewcommand*\chapnamefont{\sffamily\large}
+ \renewcommand*\chapnumfont{\sffamily\Large}
+ \renewcommand*\pre@chapter{}
+ \renewcommand*\post@chapter{}
+ \renewcommand*\memendofchapterhook{\chaptertoc}
+ \renewcommand*\printchapternum{\chapnumfont\thechapter}
+}
+
+\chapterstyle{thisdoc}
+
+\begin{document}
+
+\calccentering{\unitlength}
+
+\title{chapter toc for oblivoir}
+\author{Nova de Hi}
+\date{2020/09/02 \quad v2.0}
+\begin{adjustwidth}{\unitlength}{-\unitlength}
+\maketitle
+\end{adjustwidth}
+
+\section{개요}
+chaptertoc에 대해서는 게시판의 이곳저곳에 이런저런 솔루션들이 있습니다. 패키지도 많고요. memoir 관련해서 yihoze께서 (언젠지 기억나지 않지만) chaptertoc를 위한 외부 파일 기법으로 제안하셨던 것도 있었던 기억이 나네요.
+
+그런데 뭔가 oblivoir에서 깔끔하게 동작하지 않든가, 손봐야 하는 곳이 너무 많든가 하더라고요. 작년 memoir 스터디그룹에서 이 문제를 다루었는데, 그 때 토론한 내용을 바탕으로 패키지로 만들었습니다. 다른 추가적인 것 없이 오로지 oblivoir와 memoir 명령만으로 chaptertoc를 만들도록 했습니다.
+
+사용설명서를 만들기 귀찮기 때문에... 복잡한 패키지도 아니고 해서, 사용법을 여기에 간단히 기록해둡니다.
+
+\section{옵션}
+
+[v2.0] 다음 옵션을 줄 수 있습니다.
+\begin{verbatim}
+\usepackage[level=part]{obchaptertoc}
+\end{document}
+\end{verbatim}
+
+level로 제공할 수 있는 값은 \verb|book|, \verb|part|이고, 기본값은 \verb|chapter|입니다.
+아무 것도 주지 않으면 이 값이 \verb|chapter|인 것과 같습니다.
+
+이를 통하여 parttoc를 만들 수 있습니다. 예컨대,
+\begin{verbatim}
+\usepackage[level=part]{obchaptertoc}
+\chaptertocmaxlevel{chapter}
+\renewcommand\chaptertocfont{\normalfont\normalsize\selectfont}
+\renewcommand\printparttitle[1]{#1\par\vspace{40pt}\chaptertoc}
+\end{verbatim}
+이것은 가장 간단한 parttoc를 위한 코드입니다.
+
+참고로, 이 패키지는 part에는 parttoc를 붙이고 chapter에 또다시 chaptertoc를 붙이는
+(비상식적인) 상황은 고려하지 않았습니다. 따라서, 비록 parttoc를 작성하더라도
+식자 명령은 여전히 \cs{chaptertoc}입니다. 다른 설정 명령도 마찬가지입니다.
+
+\section{명령}
+
+\subsection{\cs{chaptertoc} 명령}
+
+명령이 주어진 위치에 현재 chapter의 chaptertoc를 식자합니다. 보통은 장 타이틀이 끝나고 본문이 시작하기 전에 위치할 테니까 \cs{memendofchapterhook}에 넣어두어도 됩니다.
+
+\subsection{\cs{ChapterTOCafterskiptrue}\texttt{|false}}
+
+디폴트는 true입니다. 이 값이 참이면 \cs{chaptertoc}를 식자하고 \cs{par}해줍니다. 그런데 framed 환경에 넣는다든가 장식을 하려 할 때 마지막에 한 줄이 생기는 것을 회피해야 할 때가 있습니다. 이럴 때 \cs{ChapterTOCafterskipfalse}로 지정합니다.
+
+\subsection{\cs{chaptertocmaxlevel}}
+
+chaptertoc를 어느 수준까지 만들 것인가 지정합니다. 인자로 section, subsection 등 장절 명령의 이름을 적어줄 수 있고, depth 카운터를 나타내는 숫자를 적어도 됩니다. 디폴트는 subsection까지를 chaptertoc로 만드는 것입니다.
+
+\section{포매팅}
+
+\subsection{\cs{ChapterTOCFormat} 명령}
+
+chaptertoc의 모든 포매팅 설정은 memoir의 \verb|\cft...| 명령으로 합니다. 그러나 이 명령을 재정의하는 코드를 그냥 preamble에 넣으면 그것은 문서 전체의 toc에 해당하는 것이 되기 때문에 chaptertoc를 위한 cft 설정 명령들을 \cs{ChapterTOCFormat} 명령의 인자로 주어야 합니다. 예를 들면,
+\begin{verbatim}
+\ChapterTOCFormat{%
+ \renewcommand\cftsectionfont{\sffamily\small}
+ \setlength{\cftsectionnumwidth}{3em}
+}
+\end{verbatim}
+이런 식으로 모든 chaptertoc용 cft 설정 명령들을 여기에 모아서 지정하면 됩니다.
+
+\subsection{\cs{chaptertocfont}}
+
+위에 보인 바와 같이 chaptertoc 내의 section, subsection등의 폰트를 다 renewcommand할 수 있지만, 가끔 chaptertoc 전체의 폰트를 지정하고 싶을 때가 있습니다. 이것은 \cs{chaptertocfont}라는 매크로를 재정의하면 됩니다. \cs{cftsectionfont} 등이 우선이고 이렇게 개별적으로 폰트를 지정하지 않았다면 \cs{chaptertocfont}의 설정을 따릅니다. 기본값은 \verb|\rmfamily\normalsize|입니다.
+
+\subsection{\cs{TOCFormatsameas}}
+
+그런데 이런 식으로 설정하다보면 section에 대해서 한 설정을 subsection에 대해서도 일일이 해주어야 하는 것이 귀찮을 수 있습니다. \cs{TOCFormatsameas} 명령은 3개의 인자를 취하는데, \verb|#1|은 설정하고자 하는 section level 이름, \verb|#2|는 이미 설정되어 있는 section level 이름, \verb|#3|은 동일하게 변경하고자 하는 매크로의 끝이름입니다. 다음 예는,
+\begin{verbatim}
+\TOCFormatsamsas{subsection}{section}{dotsep,presnum}
+\end{verbatim}
+이것은 \cs{cftsubsectiondotsep}을 \cs{cftsectiondotsep}과 같게 하고, \cs{cftsubsectionpresnum}을 \cs{cftsectionpresnum}과 동일하게 설정하라는 의미입니다. 마지막 인자는 필요한 것을 더 추가할 수 있습니다.
+
+
+\section{기타}
+
+스타일 파일과 테스트 파일을 함께 묶어 올립니다. 테스트 파일 test.tex을 보시면 어떻게 사용하는지 한눈에 알 수 있을 것입니다. 이 패키지는 오로지 oblivoir만을 위하여 작성된 것으로, 다른 클래스가 로드되면 에러를 보이면서 멈춥니다. 심지어 memoir와도 함께 쓰지 못합니다.
+
+후의 수정을 쉽게 하기 위해 답글로 파일을 업로드하겠습니다.
+
+사실 이 스타일 파일은 앞서 <문장강화> 소스를 올릴 적에 간략히 작성했던 것을 버그를 고치고 기능을 보충한 것입니다.
+
+version 2.0은 KTUG 게시판에 parttoc에 대한 질문이 올라온 것을 보고 확장하였습니다.
+
+
+
+\end{document}
+
diff --git a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
index 7b1184120f..78aa2ff2c6 100644
--- a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
+++ b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.pdf
Binary files differ
diff --git a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
index adcec4cc16..ed7d01c6e1 100644
--- a/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
+++ b/language/korean/kotex-oblivoir/doc/oblivoir-simpledoc.tex
@@ -95,16 +95,16 @@
\begin{document}
-\title{초간단 \obclass{} v2.2 사용법}
+\title{초간단 \obclass{} v3.0 사용법}
-\date{2020년 2월}
+\date{2021년 3월}
\author{x-ob-liv-oir }
\maketitle
\begin{abstract}
-\obclass{} 클래스 2.0 버전은 그 동안 별도의 브랜치로 개발되어 오던
+\obclass{} 클래스 3.0 버전은 그 동안 별도의 브랜치로 개발되어 오던
\xobclass와 \obclass를 통합하여 완전히 동일한 클래스가 되었다.
이 문서는 \obclass{} 즉 \xobclass를
사용하는 방법을 간략히 기술한다.
@@ -796,6 +796,9 @@ fontspec 설명서와 \xetexko, \luatexko\ 설명서를 참고하라.
\subsection{기정의 폰트 세트}
+기정의 글꼴 옵션은 \texttt{[nanum]}과 \texttt{[hcr]}이 있다. 나눔 글꼴과 함초롬 글꼴
+자체는 자신이 스스로 설치하여야 한다.
+
클래스 옵션으로 \texttt{[nanum]}을 지정하면 본문이 나눔명조와 나눔고딕으로 식자된다.\footnote{%
\XeTeX 이나 \LuaTeX 에서는 은 바탕을 기본 글꼴로 하고 있다. \hologo{pdfTeX}을 위한
kotex-utf의 경우는 여전히 nanumtype1이다.}
@@ -810,6 +813,15 @@ kotex-utf의 경우는 여전히 nanumtype1이다.}
그밖의 폰트에서 옛한글을 처리하게 하려면(예를 들어 Malgun Gothic, UnBatang 등)
feature 추가 옵션으로 \texttt{[Script=Hangul]}을 지정할 수 있다.}
+문서의 Preamble에 \verb|\setkomainfont| 명령을 쓴 적이 없고 \texttt{[hcr]}이나 \texttt{[nanum]} 클래스 옵션도 부여하지 않는다면 문서는 은 글꼴로 식자한다. oblivoir는
+은 글꼴의 자간과 어간을 조금 조절하는 것을 기본값으로 한다. 만약 은 글꼴에 아무런
+조작을 가하지 않은 상태로 쓰고 싶다면 \verb|\setkomainfont| 등의 명령으로 은 글꼴을
+지정하라.
+
+은 글꼴을 기본 글꼴로서 다루는 가장 중요한 이유는 이것이 \TeX\,Live에 포함되어 배포되기
+때문에 별도의 폰트 설치를 요구하지 않기 때문이며, 이 글꼴은 한글 \LaTeX 의 발전사와
+깊이 연관되어 있는 중요한 글꼴이기 때문이기도 하다.
+
%클래스 옵션 \texttt{[unfonts]}는 은 바탕, 은 돋움, 은 타자, 은 그래픽을 이용하여 본문 글꼴을 식자하게 한다.
%\texttt{[gremph]}일 때 바탕글꼴의 이탤릭이 은 그래픽으로 찍힌다. 또한 이 옵션은 \texttt{[Script=Hangul]}을
%자동으로 추가하여 옛한글을 은 바탕으로 잘 처리할 수 있게 하였다. 은 글꼴을 옵션으로 주지 않고 \cs{setkomainfont} 명령으로 주려면 다음과 같이 하는 것이 좋다. HCR 글꼴과 달리 자동으로 폰트 이름을 보고 \texttt{[Script=Hangul]}을 삽입하지 않으므로 feature 옵션에 지정한다. base name을 ``UnBatang''으로 하고 확장자를 잇대어 쓰도록
@@ -1434,6 +1446,98 @@ oblivoir가 추가적으로 제공하는 페이지 스타일로 \texttt{hangul}
\pagestyle{hangul}
\end{boxedverbatim}
+\subsection{crop mark: K style}
+
+출판 현장에서 oblivoir를 이용하여 단행본을 제작하려 할 적에 \textsf{memoir}의
+기본 crop mark가 너무 길어서 불평하는 경우가 있었다. 우리나라의 출판 현장에
+알맞도록 조금 짧은 crop mark를 다음 명령으로 그릴 수 있게 하였다.
+\begin{boxedverbatim}
+\trimKmark
+\end{boxedverbatim}
+
+\subsection{chaptertoc}
+
+\marginpar{v3.0}
+chaptertoc란 장 표제면에 그 chapter에 해당하는 절(section) 이하의 목록을
+만드는 것을 말한다. 이 목적을 위한 별도의 패키지가 있고 oblivoir에서 해당 패키지를
+활용하는 것도 가능하다. 한편 oblivoir v3.0은 \textsf{obchaptertoc}라는 부수
+패키지를 제공하는데 이것은 \textsf{memoir}의 기능만을 이용하고 다른 패키지에
+의존하지 않으면서 chaptertoc를 제작하게 한 것이다.
+이 기능은 오직 \verb|\chapter|보다 높은 수준의 문서구분명령에서만 동작하며
+\verb|\section| 이하 수준의 명령에 대해서는 고려하지 않았다. 따라서 \verb|[chapter]| 옵션이
+주어진 경우에 유효하다고 하겠다.
+
+\begin{boxedverbatim}
+\usepackage{obchaptertoc}
+%%
+\chaptertoc
+\end{boxedverbatim}
+
+이 패키지는 원래 독자적으로 개발되었던 것으로 안내 문서를 따로 가지고 있다(한국어).
+문서를 읽으려면
+\begin{verbatim}
+# texdoc obchaptertoc
+\end{verbatim}
+
+\subsection{mathleading}
+
+oblivoir는 한국어 문서에 대하여 기본 행간을 넓혀서 조판하기 때문에 여러 줄 수식의 경우에도
+그 영향을 받아서 행간격이 늘어지는 경우가 있었다.
+\textsf{amsmath}의 여러 줄 수식에 대하여 이 문제를 조절할 수 있게 하는 \textsf{ob-mathleading}
+패키지를 포함하였다. 따로 문서가 마련되어 있으므로 이를 참조하라.
+
+\begin{boxedverbatim}
+\usepackage{ob-mathleading}
+\end{boxedverbatim}
+
+문서를 읽으려면,
+\begin{verbatim}
+# texdoc ob-mathleading
+\end{verbatim}
+
+\subsection{\cs{ReleaseMacro} 명령}
+
+여러 \LaTeX\ 패키지를 로드하여 쓰다 보면 어떤 명령이 이미 정의되었다는 에러를
+만날 때가 있다. 이럴 때는 해당 패키지를 로딩하기 전에
+\begin{boxedverbatim}
+\ReleaseMacro{\XeTeX,\XeLaTeX}
+\end{boxedverbatim}
+과 같이 선언하여 이미 정의된 매크로를 무력화하는 시도를 해볼 수 있다.
+이 명령은 preamble에서만 쓰게 되어 있다.
+
+
+\subsection{oblivoirlist}
+
+나열 환경의 아이템 간 간격을 제어하기 위하여 \verb|\oblivoirlist|와
+\verb|\oblivoirlists| 명령을 마련하였다. \verb|\oblivoirlists|는
+해당 선언 이후 모든 나열환경을 \verb|\oblivoirlist| 간격으로 만든다.
+
+\begin{itemize}\oblivoirlist
+\item 배
+\item 사과
+\item 복숭아
+\end{itemize}
+
+다음 보기와 비교하여 보아라.
+
+\begin{itemize}
+\item 배
+\item 사과
+\item 복숭아
+\end{itemize}
+
+\textsf{memoir}의 \verb|\firmlist|와 \verb|\tightlist|는 여전히 동작한다.
+
+\subsection{sidefootnote와 footnotesinmargin}
+
+\footnotesinmargin
+oblivoir 2.0까지 \verb|\footnotesinmargin|이 동작하지 않던 문제를 고쳤다.\footnote{이 각주는 마진에 놓인다.}
+
+\verb|\sidefootnote|에서 발생하던 문제점도 해결하였다.\sidefootnote{이 각주는 사이드 풋노트이다.}
+
+\footnotesatfoot
+\textsf{memoir} 설명서에 설명된 것과 동일하게 동작한다.\footnote{상세한 것은 memoir manual을 볼 것.}
+
\section{HTML 제작}
\textsf{lwarp}를 이용하여 HTML을 제작하려면 문서에 \textsf{lwarp}
@@ -1620,6 +1724,9 @@ Lua\TeX 과 \XeTeX 이라는 유니코드 텍 엔진의 등장은, 이러한 모
\section{변경 이력}
+2021년의 3.0 버전은 상당히 많은 버그와 의도와 다른 동작을 수정하고 새로운
+기능을 추가하였다.
+
2020년의 2.2 버전은 그 동안 알려진 몇 가지 버그를 수정하고 약간의 기능을
추가하는 데 그쳤다.
diff --git a/language/korean/kotex-oblivoir/doc/oblivoir-test.tex b/language/korean/kotex-oblivoir/doc/oblivoir-test.tex
index 58952054f1..41b45aab74 100644
--- a/language/korean/kotex-oblivoir/doc/oblivoir-test.tex
+++ b/language/korean/kotex-oblivoir/doc/oblivoir-test.tex
@@ -19,7 +19,8 @@
%% public domain.
%%
-\documentclass[demo,chapter,openany,amsmath,gremph,lwarp]{oblivoir}
+%\documentclass[demo,chapter,openany,amsmath,gremph,lwarp]{oblivoir}
+\documentclass[demo,chapter,openany,amsmath,gremph]{oblivoir}
%%% amsmath 옵션은 amsmath, amssymb 패키지를 로드해준다..
%% display overfullrule
@@ -29,6 +30,8 @@
\usepackage{fapapersize}
\usefapapersize{220mm,276mm,20mm,80mm,30mm,35mm}
+\usepackage{ob-mathleading}
+
% 폰트 설정
\ifPDFTeX
\usepackage{mathpazo}
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty b/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
index 4550be5467..f96aafc731 100644
--- a/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
+++ b/language/korean/kotex-oblivoir/tex/memhangul-common/memhangul-common.sty
@@ -1,6 +1,6 @@
%% File `memhangul-common.sty`
%%
-%% (C) Copyright 2013-2020 Kangsoo Kim <karnes at ktug org>
+%% (C) Copyright 2013-2021 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -17,7 +17,7 @@
%%% 편, 장 섹션 타이틀 재설정
%%% 절의 섹션 타이틀은 수정하지 않음.
%%
-\ProvidesPackage{memhangul-common}[2020/02/05]
+\ProvidesPackage{memhangul-common}[2021/03/03]
\let\@CHAPAPP\@chapapp
\def\refreshprepostchapters{%
@@ -66,8 +66,41 @@
% \fi
% \printparttitle{#2}\par}%
% \@endpart}
+%%%%\long\def\@part[#1]#2{%
+%%%%% \ifx#1\@empty\PrerenderUnicode{#2}\else\PrerenderUnicode{#1}\fi
+%%%% \M@gettitle{#1}%
+%%%% \def\f@rtoc{#1}%
+%%%% \@nameuse{part@f@rtoc@before@write@hook}%
+%%%% \phantomsection
+%%%% \mempreaddparttotochook
+%%%% \ifnum \c@secnumdepth >-2\relax
+%%%% \refstepcounter{part}%
+%%%% \addcontentsline{toc}{part}%
+%%%%% {\protect\partnumberline{\thepart}#1}%
+%%%% {\protect\partnumberline{\hparttitlehead}#1}%
+%%%% \mempartinfo{\thepart}{#1}{#2}%
+%%%% \else
+%%%% \addcontentsline{toc}{part}{#1}%
+%%%% \mempartinfo{}{#1}{#2}%
+%%%% \fi
+%%%% \mempostaddparttotochook
+%%%% \partmark{#1}%
+%%%% {\centering
+%%%% \interlinepenalty \@M
+%%%% \normalfont
+%%%% \ifnum \c@secnumdepth >-2\relax
+%%%%% \printpartname \partnamenum \printpartnum
+%%%%% \midpartskip
+%%%% \prepartnum \partnamenum \printpartnum \partnamenum \postpartnum
+%%%% \midpartskip
+%%%% \fi
+%%%% \printparttitle{#2}\par}%
+%%%% \@endpart}
+
+
+\def\obparttitlealignment{\centering}
+
\long\def\@part[#1]#2{%
-% \ifx#1\@empty\PrerenderUnicode{#2}\else\PrerenderUnicode{#1}\fi
\M@gettitle{#1}%
\def\f@rtoc{#1}%
\@nameuse{part@f@rtoc@before@write@hook}%
@@ -76,17 +109,19 @@
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}%
-% {\protect\partnumberline{\thepart}#1}%
- {\protect\partnumberline{\hparttitlehead}#1}%
- \mempartinfo{\thepart}{#1}{#2}%
+% {\protect\partnumberline{\thepart}\f@rtoc}%
+ {\protect\partnumberline{\hparttitlehead}\f@rtoc}%
+ \mempartinfo{\thepart}{\f@rtoc}{#2}%
\else
- \addcontentsline{toc}{part}{#1}%
- \mempartinfo{}{#1}{#2}%
+ \addcontentsline{toc}{part}{\f@rtoc}%
+ \mempartinfo{}{\f@rtoc}{#2}%
\fi
\mempostaddparttotochook
\partmark{#1}%
- {\centering
+ {%\centering
+ \obparttitlealignment
\interlinepenalty \@M
+ \parskip\z@
\normalfont
\ifnum \c@secnumdepth >-2\relax
% \printpartname \partnamenum \printpartnum
@@ -227,16 +262,13 @@
\ifx\ch@pt@c\m@m@empty % no optional args
\def\f@rtoc{#1}%
\def\f@rhdr{#1}%
-% \PrerenderUnicode{#1}%
\else % at least one opt arg
\def\f@rtoc{\ch@pt@c}%
\nametest{#1}{#2}%
\ifsamename % one opt arg
\def\f@rhdr{\ch@pt@c}%
-% \PrerenderUnicode{#1#2}%
\else % two opt args
\def\f@rhdr{#1}%
-% \PrerenderUnicode{#1}%
\fi
\fi
\m@m@Andfalse
@@ -296,6 +328,75 @@
\memendofchapterhook%
}
+%%%\def\@chapter[#1]#2{%
+%%% \m@mpn@new@chaptrue%
+%%% \m@mpn@new@schapfalse%
+%%% \def\f@rbdy{#2}%
+%%% \ifx\ch@pt@c\@empty % no optional args
+%%% \def\f@rtoc{#2}%
+%%% \def\f@rhdr{#2}%
+%%% \else % at least one opt arg
+%%% \let\f@rtoc\ch@pt@c
+%%% \ifx\@empty#1\@empty
+%%% \let\f@rhdr\ch@pt@c
+%%% \else
+%%% \def\f@rhdr{#1}%
+%%% \fi
+%%% \fi
+%%% \m@m@Andfalse
+%%% \ifnum \c@secnumdepth >\m@ne
+%%% \if@mainmatter
+%%% \m@m@Andtrue
+%%% \fi
+%%% \fi
+%%% \ifm@m@And
+%%% \ifanappendix
+%%% \refstepcounter{APPchapter}%
+%%% \else
+%%% \refstepcounter{chapter}%
+%%% \fi
+%%% \fi
+%%% \chaptermark{\f@rhdr}
+%%% \ifartopt
+%%% \@makechapterhead{#2}%
+%%% \@afterheading
+%%% \else
+%%% \insertchapterspace
+%%% \if@twocolumn
+%%% \@topnewpage[\@makechapterhead{#2}]%
+%%% \else
+%%% \@makechapterhead{#2}%
+%%% \fi
+%%% \@afterheading
+%%% \fi
+%%% \@nameuse{chapter@f@rtoc@before@write@hook}%
+%%% \mempreaddchaptertotochook%
+%%% \ifm@m@And
+%%% \ifanappendix
+%%% \addcontentsline{toc}{appendix}{%
+%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
+%%% \memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \else
+%%% \addcontentsline{toc}{chapter}{%
+%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
+%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \fi
+%%% \else
+%%% \addcontentsline{toc}{chapter}{\f@rtoc}%
+%%% \ifanappendix
+%%% \memappchapinfo{}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \else
+%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \fi
+%%% \fi
+%%% \mempostaddchaptertotochook%
+%%% \ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{\f@rtoc}\fi
+%%% \ifanappendix
+%%% \protected@edef\@currentlabel{\thechapter}%
+%%% \fi
+%%% \memendofchapterhook%
+%%%}
+
%\def\@makechapterhead#1{%
% \chapterheadstart% \vspace*{50\p@}%
% {\parindent \z@ \raggedright \normalfont
@@ -319,14 +420,30 @@
\prechapternum \chapternamenum \printchapternum
\chapternamenum \postchapternum \afterchapternum}{}{}
+%%%\renewcommand{\@m@mschapter}[2][\@empty]{%
+%%% \@schapter{#2}%
+%%% \ifx \@empty#1
+%%% \def\f@rhdr{#2}%
+%%%% \PrerenderUnicode{#2}%
+%%% \else % opt arg
+%%% \def\f@rhdr{#1}%
+%%%% \PrerenderUnicode{#1}%
+%%% \setcounter{secnumdepth}{-10}%
+%%% \chaptermark{#1}%
+%%% \setcounter{secnumdepth}{\value{maxsecnumdepth}}%
+%%% \fi
+%%% \ifanappendix
+%%% \memappchapstarinfo{\f@rhdr}{#2}%
+%%% \else
+%%% \memchapstarinfo{\f@rhdr}{#2}%
+%%% \fi}
+
\renewcommand{\@m@mschapter}[2][\@empty]{%
\@schapter{#2}%
\ifx \@empty#1
\def\f@rhdr{#2}%
-% \PrerenderUnicode{#2}%
\else % opt arg
\def\f@rhdr{#1}%
-% \PrerenderUnicode{#1}%
\setcounter{secnumdepth}{-10}%
\chaptermark{#1}%
\setcounter{secnumdepth}{\value{maxsecnumdepth}}%
@@ -335,18 +452,20 @@
\memappchapstarinfo{\f@rhdr}{#2}%
\else
\memchapstarinfo{\f@rhdr}{#2}%
- \fi}
+ \fi
+ \ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{#2}\fi}
-\def\@makeschapterhead#1{%
- \chapterheadstart
-% {\parindent \z@ \raggedright \normalfont
- {\parindent \z@ \raggedright \normalfont \memucsinterwordchapterskiphook
- \printchapternonum
- \interlinepenalty\@M
- \printchaptertitle{#1}
- \afterchaptertitle
- }
-}
+
+%%%%\def\@makeschapterhead#1{%
+%%%% \chapterheadstart
+%%%%% {\parindent \z@ \raggedright \normalfont
+%%%% {\parindent \z@ \raggedright \normalfont \memucsinterwordchapterskiphook
+%%%% \printchapternonum
+%%%% \interlinepenalty\@M
+%%%% \printchaptertitle{#1}
+%%%% \afterchaptertitle
+%%%% }
+%%%%}
%%%%%%%%%%%%%
@@ -759,24 +878,47 @@
\InputIfFileExists{memhangul-patch.sty}{}{}
%%% fig, tab caption
+%%%\def\obCaptionFont#1{\def\@figtabcaptfont@{#1}}
+%%%\providecommand\@figtabcaptfont@{\normalfont}
+%%%\if@figtabcapt@
+%%%\AtBeginDocument{
+%%%\@ifpackageloaded{caption}{% requested by Progress
+%%% \DeclareCaptionLabelFormat{xob-cnm-parens}{\cnm{#1~#2}}
+%%% \captionsetup{labelformat=xob-cnm-parens,labelsep=space}
+%%%}%
+%%%{%
+%%% \precaption{{\@figtabcaptfont@\cnm@char@open}}
+%%% \captiondelim{{\@figtabcaptfont@\cnm@char@close}\quad}
+%%% \renewcommand\cfttablepresnum{\cnm@char@open\tablename\space}
+%%% \renewcommand\cfttableaftersnum{\cnm@char@close}
+%%% \setlength\cfttablenumwidth{3.8em}
+%%% \renewcommand\cftfigurepresnum{\cnm@char@open\figurename\space}
+%%% \renewcommand\cftfigureaftersnum{\cnm@char@close}
+%%% \setlength\cftfigurenumwidth{4.5em}
+%%%}
+%%%}
+%%%\fi
+
\def\obCaptionFont#1{\def\@figtabcaptfont@{#1}}
+\def\obCaptionnameOpen{\cnm@char@open}
+\def\obCaptionnameClose{\cnm@char@close}
\providecommand\@figtabcaptfont@{\normalfont}
\if@figtabcapt@
-\AtBeginDocument{
+\AtBeginDocument{%
\@ifpackageloaded{caption}{% requested by Progress
- \DeclareCaptionLabelFormat{xob-cnm-parens}{\cnm{#1~#2}}
- \captionsetup{labelformat=xob-cnm-parens,labelsep=space}
+ \DeclareCaptionLabelFormat{xob-cnm-parens}{\cnm{#1~#2}}
+ \captionsetup{labelformat=xob-cnm-parens,labelsep=space}
}%
{%
- \precaption{{\@figtabcaptfont@\cnm@char@open}}
- \captiondelim{{\@figtabcaptfont@\cnm@char@close}\quad}
- \renewcommand\cfttablepresnum{\cnm@char@open\tablename\space}
- \renewcommand\cfttableaftersnum{\cnm@char@close}
- \setlength\cfttablenumwidth{3.8em}
- \renewcommand\cftfigurepresnum{\cnm@char@open\figurename\space}
- \renewcommand\cftfigureaftersnum{\cnm@char@close}
- \setlength\cftfigurenumwidth{4.5em}
-}
+ \precaption{{\@figtabcaptfont@\obCaptionnameOpen}}
+ \captiondelim{{\@figtabcaptfont@\obCaptionnameClose}\quad}
+ \renewcommand\cfttablepresnum{\obCaptionnameOpen\tablename\space}
+ \renewcommand\cfttableaftersnum{\obCaptionnameClose}
+ \setlength\cfttablenumwidth{3.8em}
+ \renewcommand\cftfigurepresnum{\obCaptionnameOpen\figurename\space}
+ \renewcommand\cftfigureaftersnum{\obCaptionnameClose}
+ \setlength\cftfigurenumwidth{4.5em}
+}%
}
\fi
@@ -1176,6 +1318,166 @@
\pagestyle{hangul}
\fi
+%%% 2021/03/03: adjustwidth
+\newdimen\memucsadjustwidthtopsep
+\renewenvironment{adjustwidth}[2]{%
+ \begin{list}{}{%
+ \ifdim\onelineskip=\baselineskip
+ \memucsadjustwidthtopsep\z@\else
+ \memucsadjustwidthtopsep=\dimexpr\onelineskip-\baselineskip\relax
+ \fi
+% \topsep\z@%
+ \topsep.5\memucsadjustwidthtopsep
+ \listparindent\parindent%
+ \parsep\parskip%
+ \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}%
+ {\setlength{\leftmargin}{#1}}%
+ \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}%
+ {\setlength{\rightmargin}{#2}}%
+ }
+ \item[]}{\end{list}}
+
+\renewenvironment{adjustwidth*}[2]{%
+ \begin{list}{}{%
+% \topsep\z@%
+ \topsep.5\memucsadjustwidthtopsep
+ \listparindent\parindent%
+ \parsep\parskip%
+ \checkoddpage
+ \ifoddpage % odd numbered page
+ \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}%
+ {\setlength{\leftmargin}{#1}}%
+ \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}%
+ {\setlength{\rightmargin}{#2}}%
+ \else % even numbered page
+ \@ifmtarg{#2}{\setlength{\leftmargin}{\z@}}%
+ {\setlength{\leftmargin}{#2}}%
+ \@ifmtarg{#1}{\setlength{\rightmargin}{\z@}}%
+ {\setlength{\rightmargin}{#1}}%
+ \fi
+ }
+ \item[]}{\end{list}}
+
+
+%%% lists
+%%% newly added
+\newcommand*{\oblivoirlists}{%
+ \@ifstar{\ob@sfirmlists}{\ob@firmlists}}
+
+\newcommand*{\ob@sfirmlists}{
+ \setlength{\partopsep}{\z@ \@plus \p@ \@minus \p@}%
+ \parsepi = 0.0833\onelineskip \@plus 0.04\onelineskip \@minus \p@
+ \itemsepi = \parsepi
+ \topsepi = \parsepi
+ \parsepii = 0.04\onelineskip \@plus \p@ \@minus \p@
+ \topsepii = \parsepi
+ \topsepiii = \parsepii
+ \everylistparindent\listparindent}
+
+\newcommand*{\ob@firmlists}{
+ \setlength{\partopsep}{0.05\onelineskip \@plus 0.02\onelineskip
+ \@minus 0.02\onelineskip}%
+ \parsepi = 0.0833\onelineskip \@plus 0.04\onelineskip \@minus \p@
+ \itemsepi = \parsepi
+ \topsepi = \parsepi
+ \parsepii = 0.04\onelineskip \@plus \p@ \@minus \p@
+ \topsepii = \parsepi
+ \topsepiii = \parsepii
+ \everylistparindent\listparindent}
+
+\newcommand{\oblivoirlist}{%
+ \setlength{\itemsep}{0.3\itemsep}\setlength{\parskip}{0.3\parskip}}
+
+\newcommand\obadjustlists{%
+ \global\let\defaultlist\firmlist
+ \global\let\defaultlists\firmlists
+ \global\let\firmlist\oblivoirlist
+ \global\let\firmlists\oblivoirlists
+ \defaultlists
+}
+
+
+%%% \ReleaseMacros
+%%% newly added
+\ExplSyntaxOn
+\NewDocumentCommand \ReleaseMacros { m }
+{
+ \clist_set:Nn \l_tmpa_clist { #1 }
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ \cs_undefine:N ##1
+ }
+}
+\@onlypreamble\ReleaseMacros
+
+\ExplSyntaxOff
+
+
+%%%% trim K mark
+\providecommand*{\tmarkKtm}{%
+ \begin{picture}(0,0)%
+ \unitlength 1mm
+ \thinlines
+ \put(0,4){\line(0,1){8}}
+ \end{picture}}
+\providecommand*{\tmarkKml}{%
+ \begin{picture}(0,0)%
+ \unitlength 1mm
+ \thinlines
+ \put(-4,0){\line(-1,0){8}}
+ \end{picture}}
+\providecommand*{\tmarkKmr}{%
+ \begin{picture}(0,0)%
+ \unitlength 1mm
+ \thinlines
+ \put(4,0){\line(1,0){8}}
+ \end{picture}}
+\providecommand*{\tmarkKbm}{%
+ \begin{picture}(0,0)%
+ \unitlength 1mm
+ \thinlines
+ \put(0,-12){\line(0,1){8}}
+ \end{picture}}
+\providecommand*{\Ktrimpictl}{%
+ \begin{picture}(0,0)
+ \unitlength 1mm
+ \thinlines
+ \put(-4,0){\line(-1,0){10}}
+ \put(0,4){\line(0,1){10}}
+ \end{picture}}
+\providecommand*{\Ktrimpictr}{%
+ \begin{picture}(0,0)
+ \unitlength 1mm
+ \thinlines
+ \put(4,0){\line(1,0){10}}
+ \put(0,4){\line(0,1){10}}
+ \end{picture}}
+\providecommand*{\Ktrimpicbl}{%
+ \begin{picture}(0,0)
+ \unitlength 1mm
+ \thinlines
+ \put(-4,0){\line(-1,0){10}}
+ \put(0,-4){\line(0,-1){10}}
+ \end{picture}}
+\providecommand*{\Ktrimpicbr}{%
+ \begin{picture}(0,0)
+ \unitlength 1mm
+ \thinlines
+ \put(4,0){\line(1,0){10}}
+ \put(0,-4){\line(0,-1){10}}
+ \end{picture}}
+
+\providecommand*{\trimKmarks}{%
+ \let\tmarktl\Ktrimpictl
+ \let\tmarktr\Ktrimpictr
+ \let\tmarkbl\Ktrimpicbl
+ \let\tmarkbr\Ktrimpicbr
+ \let\tmarktm\tmarkKtm
+ \let\tmarkbm\tmarkKbm
+ \let\tmarkml\tmarkKml
+ \let\tmarkmr\tmarkKmr
+}
+
\endinput
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty b/language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty
index a4353ab971..69e6c8d611 100644
--- a/language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty
+++ b/language/korean/kotex-oblivoir/tex/memhangul-common/memucs-setspace.sty
@@ -1,6 +1,6 @@
%% File `memucs-setspace.sty`
%%
-%% Copyright (c) 2007-2013 Kangsoo Kim <karnes at ktug org>
+%% Copyright (c) 2007-2021 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -50,8 +50,8 @@
\NeedsTeXFormat {LaTeX2e}[1994/12/09]
\def \filename {memucs-setspace.sty}
-\def \filedate {2007/09/21}
-\def \fileversion {6.7-memucs8}
+\def \filedate {2021/03/03}
+\def \fileversion {6.7-mu9}
\ProvidesPackage {memucs-setspace}[\filedate\space\fileversion\space
Contributed and Supported LaTeX2e package]
\typeout {Package: `memucs-setspace', a modified version of `setspace', \fileversion\space <\filedate>}
@@ -334,42 +334,117 @@
% cannot (AFAIK) be avoided, because LaTeX (2e) LACKS appropriate
% standard hooks and/or context markers.
\if@singlespacefn
-\def\m@mold@footnotetext{\@memsetspace@footnotetext}
-\renewcommand{\@footnotetext}[1]{\m@mold@footnotetext{#1}\m@mmf@prepare}
-\long\def\@memsetspace@footnotetext#1{%
- \insert\footins{%
-% GT: Next line added. Hook desired here!
- \@floatfnspacinghook\memucsfninterwordhook
-% \def\baselinestretch {\setspace@hangulfspace}%
-% \@SetFloatspaces
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+%%%%\def\m@mold@footnotetext{\@memsetspace@footnotetext}
+%%%%\renewcommand{\@footnotetext}[1]{\m@mold@footnotetext{#1}\m@mmf@prepare}
+%%%%\long\def\@memsetspace@footnotetext#1{%
+%%%% \insert\footins{%
+%%%%% GT: Next line added. Hook desired here!
+%%%% \@floatfnspacinghook\memucsfninterwordhook
+%%%%% \def\baselinestretch {\setspace@hangulfspace}%
+%%%%% \@SetFloatspaces
+%%%% \reset@font\footnotesize
+%%%% \interlinepenalty\interfootnotelinepenalty
+%%%% \splittopskip\footnotesep
+%%%% \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+%%%% \hsize\columnwidth
+%%%% \@parboxrestore
+%%%% \protected@edef\@currentlabel{%
+%%%% \csname p@footnote\endcsname\@thefnmark
+%%%% }%
+%%%% \color@begingroup
+%%%% \@makefntext{%
+%%%% \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%%%% \color@endgroup}}
+%%%%
+%%%%% Minipage footnotes.
+%%%%\renewcommand{\@mpfootnotetext}[1]{%
+%%%% \global\setbox\@mpfootins\vbox{%
+%%%% \unvbox\@mpfootins
+%%%%% GT: Next line added. Hook desired here!
+%%%% \@floatfnspacinghook\memucsfninterwordhook
+%%%%% \def\baselinestretch {\setspace@hangulfspace}%
+%%%% \foottextfont \hsize\columnwidth \@parboxrestore
+%%%% \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}%
+%%%% \color@begingroup
+%%%% \@makefntext{%
+%%%% \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%%%% \color@endgroup}}
+
+\renewcommand{\@footnotetext}[1]{%
+ \ifm@mfnmargin% use marginpar
+ \marginpar{%
+% \def\baselinestretch{\m@m@footnote@spacing}%
+ \@floatfnspacinghook\memucsfninterwordhook
+ \reset@font
+ \foottextfont
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark}%
+ \color@begingroup
+ \@makefntext{\ignorespaces#1}%
+ \color@endgroup}%
+ \else% regular feet
+ \insert\footins{%
+ % \def\baselinestretch{\m@m@footnote@spacing}%
+ \@floatfnspacinghook\memucsfninterwordhook
+ \reset@font
+ \foottextfont
+ \@preamfntext
\hsize\columnwidth
- \@parboxrestore
\protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
+ \csname p@footnote\endcsname\@thefnmark}%
\color@begingroup
\@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
+ \rule\z@\footnotesep\ignorespaces{\foottextfont #1}%
+ \@finalstrut\strutbox}%
+ \color@endgroup}%
+ \fi%
+ \m@mmf@prepare}
-% Minipage footnotes.
\renewcommand{\@mpfootnotetext}[1]{%
\global\setbox\@mpfootins\vbox{%
\unvbox\@mpfootins
-% GT: Next line added. Hook desired here!
- \@floatfnspacinghook\memucsfninterwordhook
-% \def\baselinestretch {\setspace@hangulfspace}%
+% \def\baselinestretch{\m@m@footnote@spacing}%
+ \@floatfnspacinghook\memucsfninterwordhook
\foottextfont \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}%
+ \protected@edef\@currentlabel{%
+ \csname p@mpfootnote\endcsname\@thefnmark}%
\color@begingroup
+ \reset@font%
\@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \rule\z@\footnotesep\ignorespaces{\foottextfont #1}%
+ \@finalstrut\strutbox}%
\color@endgroup}}
+\renewcommand{\@sidefootnotetext}[1]{\insert\sidefootins{%
+ \hsize\sidefootwidth
+ \@parboxrestore
+% \def\baselinestretch{\m@m@footnote@spacing}%
+ \@floatfnspacinghook\memucsfninterwordhook
+ \sidefootform \normalsize\normalfont\sidefoottextfont
+ \splittopskip=\ht\strutbox
+ \splitmaxdepth=\dp\strutbox
+ \allowbreak
+ \prevdepth=\dp\strutbox
+ \vskip-\parskip
+ \protected@edef\@currentlabel{%
+ \csname p@sidefootnote\endcsname\@thesidefnmark}%
+\color@begingroup
+\@makesidefntext{{\sidefoottextfont #1}}%
+\color@endgroup
+ \ifvmode\else
+ \unskip\@finalstrut\strutbox
+ \fi
+ \par
+ \ifdim\prevdepth>\dp\strutbox \prevdepth=\dp\strutbox\fi
+ \ifdim\prevdepth>99\p@
+ \nobreak
+ \vskip-\prevdepth
+ \allowbreak
+ \vskip\dp\strutbox
+ \fi
+ \vskip\sidefootvsep}%
+ \m@mmf@prepare}
+
\else\fi
% ** Line space environments.
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty b/language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty
new file mode 100644
index 0000000000..3e9b5eb4af
--- /dev/null
+++ b/language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty
@@ -0,0 +1,223 @@
+%%%
+%%% \chaptertoc for oblivoir
+%%% part of kotex-oblivoir package.
+%%%
+%%% written by Nova de Hi
+%%%
+\ProvidesPackage{obchaptertoc}[2020/09/03, v2.0]
+\RequirePackage{l3keys2e}
+
+\ExplSyntaxOn
+\msg_new:nnn { obchaptertoc } { haltmsg } { class~oblivoir~not~loaded }
+\@ifclassloaded{oblivoir}{}{\msg_error:nn { obchaptertoc } { haltmsg }}
+
+\keys_define:nn { obchaptoc }
+{
+ level .tl_set:N = \opt_level_tl
+}
+
+\tl_set:Nn \opt_level_tl { chapter } % default
+\ProcessKeysOptions { obchaptoc }
+
+\ExplSyntaxOff
+
+\RequirePackage{etoolbox}
+%%%
+%%%%%% hooking oblivoir's chapter command
+%%%\def\@chapter[#1]#2{%
+%%% \m@mpn@new@chaptrue%
+%%% \m@mpn@new@schapfalse%
+%%% \def\f@rbdy{#2}%
+%%% \ifx\ch@pt@c\m@m@empty % no optional args
+%%% \def\f@rtoc{#1}%
+%%% \def\f@rhdr{#1}%
+%%% \else % at least one opt arg
+%%% \def\f@rtoc{\ch@pt@c}%
+%%% \nametest{#1}{#2}%
+%%% \ifsamename % one opt arg
+%%% \def\f@rhdr{\ch@pt@c}%
+%%% \else % two opt args
+%%% \def\f@rhdr{#1}%
+%%% \fi
+%%% \fi
+%%% \m@m@Andfalse
+%%% \ifnum \c@secnumdepth >\m@ne
+%%% \if@mainmatter
+%%% \m@m@Andtrue
+%%% \fi
+%%% \fi
+%%% \ifm@m@And
+%%% \ifanappendix
+%%% \refstepcounter{APPchapter}%
+%%% \else
+%%% \refstepcounter{chapter}%
+%%% \fi
+%%% \fi
+%%% \chaptermark{\f@rhdr}
+%%% \ifartopt
+%%% \@makechapterhead{#2}%
+%%% \@afterheading
+%%% \else
+%%% \insertchapterspace
+%%% \if@twocolumn
+%%% \@topnewpage[\@makechapterhead{#2}]%
+%%% \else
+%%% \@makechapterhead{#2}%
+%%% \fi
+%%% \@afterheading
+%%% \fi
+%%% \@nameuse{chapter@f@rtoc@before@write@hook}%
+%%% \mempreaddchaptertotochook%
+%%% \ifm@m@And
+%%% \ifanappendix
+%%% \addcontentsline{toc}{appendix}{%
+%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
+%%% \memappchapinfo{\thechapter}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \else
+%%% \addcontentsline{toc}{chapter}{%
+%%% \protect\chapternumberline{\hchaptertitlehead}\f@rtoc}%
+%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \fi
+%%% \else
+%%% \addcontentsline{toc}{chapter}{\f@rtoc}%
+%%% \ifanappendix
+%%% \memappchapinfo{}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \else
+%%% \memchapinfo{\hchaptertitlehead}{\f@rtoc}{\f@rhdr}{#2}%
+%%% \fi
+%%% \fi
+%%% \mempostaddchaptertotochook%
+%%% \ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{\f@rtoc}\fi
+%%% \ifanappendix
+%%% \protected@edef\@currentlabel{\thechapter}%
+%%% \fi
+%%% \memendofchapterhook%
+%%%}
+
+\newcounter{tocmarker}
+% start marker
+\ExplSyntaxOn
+
+\clist_new:N \l_upperlevel_clist
+
+\str_case_e:nnTF { \opt_level_tl }
+{
+ { book } { \clist_set:Nn \l_upperlevel_clist { book } }
+ { chapter } { \clist_set:Nn \l_upperlevel_clist { part, book, chapter } }
+ { part } { \clist_set:Nn \l_upperlevel_clist { book, part } }
+ { apppage } { \clist_set:Nn \l_upperlevel_clist { apppage } }
+}
+{
+ \cs_set:cn { mempostadd \opt_level_tl totochook: }
+ {
+ \stepcounter{tocmarker}\cftinserthook{toc}{start-\thetocmarker}
+ }
+ \cs_set_eq:cc { mempostadd \opt_level_tl totochook } { mempostadd \opt_level_tl totochook: }
+
+ \clist_map_inline:Nn \l_upperlevel_clist
+ {
+ \cs_set:cn { mempreadd #1 totochook: }
+ {
+ \cftinserthook{toc}{end-\thetocmarker}
+ }
+ \cs_set_eq:cc { mempreadd #1 totochook } { mempreadd #1 totochook: }
+ }
+}
+{
+ \renewcommand\mempreaddchaptertotochook{\cftinserthook{toc}{end-\thetocmarker}}
+ \renewcommand\mempreaddparttotochook {\cftinserthook{toc}{end-\thetocmarker}}
+ \renewcommand\mempreaddbooktotochook {\cftinserthook{toc}{end-\thetocmarker}}
+ \renewcommand\mempreaddapppagetotochook{\cftinserthook{toc}{end-\thetocmarker}}
+
+ \renewcommand\mempostaddchaptertotochook{%
+ \stepcounter{tocmarker}\cftinserthook{toc}{start-\thetocmarker}}
+}
+\ExplSyntaxOff
+
+\let\normalchangetocdepth\changetocdepth
+
+\def\chaptertocfont{\rmfamily}
+\def\chaptertocsecfont{\normalfont\normalsize}
+
+\NewDocumentCommand\@ChapterTOCFormat{}
+{%
+ \setlength{\cftsectionindent}{0pt}
+ \setlength{\cftsubsectionindent}{\cftsectionnumwidth}
+ \setlength{\cftsubsubsectionindent}{\cftsubsectionindent}
+ \addtolength{\cftsubsubsectionindent}{\cftsubsectionnumwidth}
+ \renewcommand\cftsectionfont{\chaptertocsecfont}
+% \renewcommand\cftsectionpresnum{}
+% \renewcommand\cftsectionaftersnum{}
+% \renewcommand\cftsectiondotsep{\cftnodots}
+% \renewcommand\cftsubsectiondotsep{\cftnodots}
+% \renewcommand\cftsectionpagefont{\chaptertocsecfont}
+% \renewcommand\cftsubsectionfont{\chaptertocsecfont}
+% \renewcommand\cftsubsectionpagefont{\chaptertocsecfont}
+% \renewcommand\cftsubsubsectionfont{\chaptertocsecfont}
+% \renewcommand\cftsubsubsectionpagefont{\chaptertocsecfont}
+% \renewcommand\cftsectionformatpnum[1]{}
+% \renewcommand\cftsubsectionformatpnum[1]{}
+}
+
+\NewDocumentCommand\ChapterTOCFormat{+m}
+{
+ \apptocmd\@ChapterTOCFormat{#1}{}{}
+}
+
+\newskip\afterchaptertocskip
+\let\afterchaptertocskip\bigskip
+
+\ExplSyntaxOn
+
+\newcounter{obchaptocmaxdepth}\setcounter{obchaptocmaxdepth}{2} % default = subsection
+\NewDocumentCommand \chaptertocmaxlevel { m }
+{
+ \regex_match:nnTF { [0-9] } { #1 }
+ {
+ \setcounter{obchaptocmaxdepth} { #1 }
+ }
+ {
+ \@setclcnt{#1}{obchaptocmaxdepth}
+ }
+}
+
+\NewDocumentCommand \TOCFormatsameas { m m m }
+{
+ \clist_set:Nn \l_tmpa_clist { #3 }
+ \clist_map_inline:Nn \l_tmpa_clist
+ {
+ \cs_set_eq:cc { cft #1 ##1 } { cft #2 ##1 }
+ }
+}
+
+\ExplSyntaxOff
+
+\newif\ifChapterTOCafterskip
+\ChapterTOCafterskiptrue
+
+\newcommand\chaptertoc{
+ \begingroup
+ \chaptertocfont
+ \let\@orig@markboth\markboth
+ \renewcommand\markboth[2]{}
+ \setcounter{@memmarkcntra}{\value{tocdepth}}
+ \let\changetocdepth\@gobble
+ \normalchangetocdepth{-10}
+ \cftinsertcode{start-\thetocmarker}{\normalchangetocdepth{\theobchaptocmaxdepth}}
+ \cftinsertcode{end-\thetocmarker}{\normalchangetocdepth{-10}}
+ \let\tocheadstart\relax
+ \let\printtoctitle\@gobble
+ \let\aftertoctitle\relax
+ %%% formatting chaptertoc
+ \@ChapterTOCFormat
+ \tableofcontents*
+ \endgroup
+ \setcounter{tocdepth}{\value{@memmarkcntra}}
+ \m@mindentafterchapter
+ \ifChapterTOCafterskip
+ \par\afterchaptertocskip
+ \fi
+ \@afterheading
+}
+
+\endinput
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-x/ob-mathleading.sty b/language/korean/kotex-oblivoir/tex/memhangul-x/ob-mathleading.sty
new file mode 100644
index 0000000000..010c83ec2a
--- /dev/null
+++ b/language/korean/kotex-oblivoir/tex/memhangul-x/ob-mathleading.sty
@@ -0,0 +1,144 @@
+%%
+%% file: ob-mathleading.sty
+%%
+%% written by nova
+%%
+%% a supplementary package to oblivoir
+%% set lineskips in multi-lined math environments
+%% (amsmath required)
+%%
+%% v. 0.1alpha : 2018/12/22
+%% v. 0.0.1-pr2 : 2018/12/24
+%% v. 0.0.1 : 2018/12/25
+%%
+\RequirePackage{expl3}
+\ProvidesExplPackage
+ {ob-mathleading}
+ {2018/12/25}
+ {v0.0.1}
+ {adjust math leadings for oblivoir}
+
+\@ifpackageloaded{amsmath}{}{\RequirePackage{amsmath}}
+\RequirePackage{xparse}
+\RequirePackage{etoolbox}
+\RequirePackage{l3keys2e}
+
+\keys_define:nn { obmathleading }
+{
+ default .bool_set:N = \l_defaultopt_bool,
+ mathleading .fp_set:N = \l_opt_mathleading_fp,
+ exception .clist_set:N = \g_opt_mlexception_clist,
+ noallowdisplaybreaks .bool_set:N = \g_noallowdispbreak_bool
+}
+
+\keys_set:nn { obmathleading }
+{
+ default = true,
+ mathleading = 1.0,
+ exception = {},
+ noallowdisplaybreaks = false
+}
+
+\ProcessKeysOptions { obmathleading }
+
+\scan_stop:
+
+\bool_if:NTF \l_defaultopt_bool
+{
+ \tl_set:Nn \l_obml_stretch_tl { \fp_use:N \l_opt_mathleading_fp }
+}
+{
+ \tl_set:No \l_obml_stretch_tl { \baselinestretch }
+}
+
+\NewDocumentCommand \obmathleading { m }
+{
+ \tl_set:Nn \l_obml_stretch_tl { #1 }
+}
+
+\NewDocumentEnvironment { obMathLeading } { O{1.0} }
+{
+ \obmathleading { #1 }
+}
+{
+}
+
+\cs_new:Npn \mathleading_set_default:nN #1 #2
+{
+ \clist_if_in:NnF \g_opt_mlexception_clist { #1 }
+ {
+ \AtBeginEnvironment { #1 }
+ {
+ \linespread { #2 } \selectfont \ignorespaces
+ }
+ }
+}
+
+\cs_new:Npn \splitleading_set_default:N #1
+{
+ \clist_if_in:NnF \g_opt_mlexception_clist { split }
+ {
+ \patchcmd \start@split
+ { \spread@equation }
+ { \linespread { #1 } \selectfont \spread@equation }
+ { }
+ { }
+ }
+}
+
+\mathleading_set_default:nN { array } \l_obml_stretch_tl
+\mathleading_set_default:nN { matrix } \l_obml_stretch_tl
+\mathleading_set_default:nN { matrix* } \l_obml_stretch_tl
+\mathleading_set_default:nN { pmatrix } \l_obml_stretch_tl
+\mathleading_set_default:nN { pmatrix* } \l_obml_stretch_tl
+\mathleading_set_default:nN { bmatrix } \l_obml_stretch_tl
+\mathleading_set_default:nN { bmatrix* } \l_obml_stretch_tl
+\mathleading_set_default:nN { Bmatrix } \l_obml_stretch_tl
+\mathleading_set_default:nN { Bmatrix* } \l_obml_stretch_tl
+\mathleading_set_default:nN { vmatrix } \l_obml_stretch_tl
+\mathleading_set_default:nN { vmatrix* } \l_obml_stretch_tl
+\mathleading_set_default:nN { Vmatrix } \l_obml_stretch_tl
+\mathleading_set_default:nN { Vmatrix* } \l_obml_stretch_tl
+\mathleading_set_default:nN { cases } \l_obml_stretch_tl
+\mathleading_set_default:nN { cases* } \l_obml_stretch_tl
+\mathleading_set_default:nN { aligned } \l_obml_stretch_tl
+\mathleading_set_default:nN { alignedat } \l_obml_stretch_tl
+\mathleading_set_default:nN { gathered } \l_obml_stretch_tl
+
+\splitleading_set_default:N \l_obml_stretch_tl
+
+\clist_if_in:NnF \g_opt_mlexception_clist { gather }
+{
+ \patchcmd \start@gather
+ { \collect@body }
+ { \linespread { \l_obml_stretch_tl } \selectfont \collect@body }
+ { }
+ { }
+}
+
+\clist_if_in:NnF \g_opt_mlexception_clist { align }
+{
+ \patchcmd \start@align
+ { \collect@body }
+ { \linespread { \l_obml_stretch_tl } \selectfont \collect@body }
+ { }
+ { }
+}
+
+\clist_if_in:NnF \g_opt_mlexception_clist { multline }
+{
+ \patchcmd \start@multline
+ { \collect@body }
+ { \linespread { \l_obml_stretch_tl } \selectfont \collect@body }
+ { }
+ { }
+}
+
+
+
+\bool_if:NF \g_noallowdispbreak_bool
+{
+ \AtBeginDocument { \allowdisplaybreaks }
+}
+
+%% end of file
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-x/ob-unfontsdefault.sty b/language/korean/kotex-oblivoir/tex/memhangul-x/ob-unfontsdefault.sty
new file mode 100644
index 0000000000..853643763e
--- /dev/null
+++ b/language/korean/kotex-oblivoir/tex/memhangul-x/ob-unfontsdefault.sty
@@ -0,0 +1,143 @@
+%%
+%% ob-unfontsdefault.sty
+%% part of xob-font.sty
+%%
+%% public domain
+%%
+\ProvidesExplPackage{ob-unfontsdefault}
+ {2020/10/26}
+ {v0.4}
+ {Un and Baekmuk Fonts for xetexko}
+
+\RequirePackage{l3keys2e}
+
+\msg_new:nnn { ksxeunfonts } { errormsg } { Legacy~TeX~engine~not~supported }
+
+\sys_if_engine_pdftex:T {
+ \msg_error:nn { ksxeunfonts } { errormsg }
+}
+
+\keys_define:nn { ksxeunfonts }
+{
+ mj .tl_set:N = \opt_mjfont_tl,
+ mjbold .tl_set:N = \opt_mjboldfont_tl,
+ mjitalic .tl_set:N = \opt_mjitalicfont_tl,
+ mjbolditalic .tl_set:N = \opt_mjbolditalicfont_tl,
+ gt .tl_set:N = \opt_gtfont_tl,
+ gtbold .tl_set:N = \opt_gtboldfont_tl,
+ gtitalic .tl_set:N = \opt_gtitalicfont_tl,
+ gtbolditalic .tl_set:N = \opt_gtbolditalicfont_tl,
+ renderer .tl_set:N = \opt_renderer_tl,
+ fakeitalic .bool_set:N = \opt_fakeitalic_bool,
+ jamo .bool_set:N = \opt_script_bool,
+ mjinterhangul .tl_set:N = \opt_mjinterhangul_tl,
+ gtinterhangul .tl_set:N = \opt_gtinterhangul_tl,
+ mjwordspace .tl_set:N = \opt_mjwordspace_tl,
+ gtwordspace .tl_set:N = \opt_gtwordspace_tl,
+ untaza .bool_set:N = \opt_untaza_bool,
+ more .tl_set:N = \opt_moreopt_tl,
+ other .tl_set:N = \opt_otheropt_tl,
+ baekmuk .bool_set:N = \opt_baekmuk_bool,
+}
+
+\keys_set:nn { ksxeunfonts }
+{
+ mj = UnBatang.ttf,
+ mjbold = UnBatangBold.ttf,
+ mjitalic = UnGraphic.ttf,
+ mjbolditalic = UnGraphicBold.ttf,
+ gt = UnDotum.ttf,
+ gtbold = UnDotumBold.ttf,
+ gtitalic = UnDinaru.ttf,
+ gtbolditalic = UnYetgul.ttf,
+ renderer = OpenType,
+ fakeitalic = false,
+ jamo = false,
+ mjinterhangul = .06em,
+ gtinterhangul = .04em,
+ mjwordspace = {.95,.45,.25},
+ gtwordspace = {.96,.45,.2},
+ more = {},
+ other = {},
+ baekmuk = false,
+}
+
+\ProcessKeysOptions { ksxeunfonts }
+
+\bool_if:NT \opt_baekmuk_bool
+{
+ \keys_set:nn { ksxeunfonts }
+ {
+ mj = batang.ttf,
+ mjbold = *,
+ mjitalic = *,
+ mjbolditalic = *,
+ gt = dotum.ttf,
+ gtbold = *,
+ gtitalic = gulim.ttf,
+ gtbolditalic = hline.ttf,
+ renderer = OpenType,
+ fakeitalic = true,
+ jamo = false,
+ mjinterhangul = .06em,
+ gtinterhangul = .045em,
+ mjwordspace = {.48,.3,.2},
+ gtwordspace = {.50,.3,.2},
+ more = {BoldFeatures={FakeBold=1.1},BoldItalicFeatures={FakeBold=1.1}},
+ }
+}
+
+\sys_if_engine_luatex:T {
+ \hangulbyhangulfont=1
+}
+
+\bool_if:NTF \opt_fakeitalic_bool
+{
+ \tl_set:Nn \l_fakeitalic_option_tl {
+ BoldItalicFeatures = { FakeSlant = { 0.167 } },
+ AutoFakeSlant,
+ }
+}
+{
+ \tl_set:Nn \l_fakeitalic_option_tl { }
+}
+
+\bool_if:NTF \opt_script_bool
+{
+ \tl_set:Nn \l_script_option_tl { Script = Hangul, }
+}
+{
+ \tl_set:Nn \l_script_option_tl {}
+}
+
+\setmainhangulfont{\opt_mjfont_tl}[
+ BoldFont = \opt_mjboldfont_tl,
+ ItalicFont = \opt_mjitalicfont_tl,
+ BoldItalicFont = \opt_mjbolditalicfont_tl,
+ Renderer = \opt_renderer_tl,
+ InterHangul = -\opt_mjinterhangul_tl,
+ WordSpace = {\opt_mjwordspace_tl},
+ \l_script_option_tl \l_fakeitalic_option_tl
+ \opt_moreopt_tl,
+ \opt_otheropt_tl
+]
+
+\setsanshangulfont{\opt_gtfont_tl}[
+ BoldFont = \opt_gtboldfont_tl,
+ ItalicFont = \opt_gtitalicfont_tl,
+ BoldItalicFont = \opt_gtbolditalicfont_tl,
+ Renderer = \opt_renderer_tl,
+ InterHangul = -\opt_gtinterhangul_tl,
+ WordSpace = {\opt_gtwordspace_tl},
+ \l_fakeitalic_option_tl
+ \opt_moreopt_tl,
+ \opt_otheropt_tl
+]
+
+\bool_if:NT \opt_untaza_bool
+{
+ \setmonohangulfont { UnTaza.ttf }
+ \setmonohanjafont { UnDotum.ttf }
+}
+
+\endinput
diff --git a/language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty b/language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty
index d47b3da125..9517245754 100644
--- a/language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty
+++ b/language/korean/kotex-oblivoir/tex/memhangul-x/xob-font.sty
@@ -1,6 +1,6 @@
%% xob-font.sty
%%
-%% Copyright (c) 2014-2020 Kangsoo Kim <karnes at ktug org>
+%% Copyright (c) 2014-2021 Kangsoo Kim <karnes at ktug org>
%% Copyright (c) 2017-2020 Kihwang Lee <leekh at ktug org>
%%
%% This work may be distributed and/or modified under the
@@ -15,7 +15,7 @@
%% oblivoir hangul/hanja font setting.
%% part of oblivoir
%%
-\ProvidesPackage{xob-font}[2020/03/20 v0.8.1 select hangul/hanja fonts for oblivoir]
+\ProvidesPackage{xob-font}[2021/03/03 v0.9 select hangul/hanja fonts for oblivoir]
%%% obsolete options: retain \if@.. conditions for backward compatibility
\newif\if@nowin\@nowinfalse
@@ -60,6 +60,8 @@
\if@gremph \bool_set_false:N \ital_fake_bool \else \bool_set_true:N \ital_fake_bool \fi
\if@oldhangul \bool_set_true:N \hangulscript_bool \else \bool_set_false:N \hangulscript_bool \fi
+\bool_new:N \opt_mainfontdeclared_bool
+
\bool_set_false:N \bold_prov_bool
\bool_set_false:N \in_hanja_mode
\bool_set_false:N \mono_mode
@@ -624,8 +626,6 @@
}
-\ExplSyntaxOff
-
%%% starred version commands are provided for backward compatibility.
\protected\def\setkormainfont{%
\@ifstar{\setkorfontorigstar*{main}}{%
@@ -641,7 +641,7 @@
%%% \setkomainfont[BASENAME](Regu)(Bold)(Ital)[Feature]%
%%% [HJBASENAME](HJREGU)(HJBOLD)(HJITAL)[HJFeatures]
%%% no spaces allowed between optional arguments, e.g., [...]*nospace*[...]
-\protected\def\setkomainfont{\setkorfontxob{main}}
+\protected\def\setkomainfont{\bool_set_true:N \opt_mainfontdeclared_bool\setkorfontxob{main}}
\protected\def\setkosansfont{\setkorfontxob{sans}}
\protected\def\setkomonofont{\setkorfontxob{mono}}
@@ -663,28 +663,40 @@
% \setkomonofont(UnTaza.ttf)
%\fi
-\if@nanumfonts
- \if@nanumxfonts
- \setkomainfont(NanumMyeongjo)(*ExtraBold)(*)[](NanumGothic)(*Bold)
- \else
- \setkomainfont(NanumMyeongjo)(*Bold)(*)[](NanumGothic)(*Bold)
- \fi
- \setkosansfont(NanumGothic)(*Bold)(*)
- \setkomonofont(NanumGothic)
-\fi
-%%% [hcr] adds [Script=Hangul] feature automatically.
-\if@hcrfonts
- \setkomainfont(HCRBatangLVT)(HCRBatangLVT-Bold)(HCRBatangLVT)
- \setkosansfont(HCRDotumLVT)(HCRDotumLVT-Bold)(HCRDotumLVT)
- \setkomonofont(HCRDotumLVT)
-\fi
+\AddToHook{env/document/before}{%
+ \bool_if:NF \opt_mainfontdeclared_bool
+ {
+ \if@nanumfonts
+ \if@nanumxfonts
+ \setkomainfont(NanumMyeongjo)(*ExtraBold)(*)[](NanumGothic)(*Bold)
+ \else
+ \setkomainfont(NanumMyeongjo)(*Bold)(*)[](NanumGothic)(*Bold)
+ \fi
+ \setkosansfont(NanumGothic)(*Bold)(*)
+ \setkomonofont(NanumGothic)
+ \else
+ %%% [hcr] adds [Script=Hangul] feature automatically.
+ \if@hcrfonts
+ \setkomainfont(HCRBatangLVT)(HCRBatangLVT-Bold)(HCRBatangLVT)
+ \setkosansfont(HCRDotumLVT)(HCRDotumLVT-Bold)(HCRDotumLVT)
+ \setkomonofont(HCRDotumLVT)
+ \else
+ %%% 2020/03/03: Now UnFonts is set to default
+ \RequirePackage{ob-unfontsdefault}
+ \fi
+ \fi
+ }
+}
%\setkomainfont(UnBatang.ttf)(UnBatangBold.ttf)(UnGraphic.ttf)
%\fi\fi
+\ExplSyntaxOff
+
\endinput
%%% end of file `xob-font.sty`
%% CHANGES
+%% v0.9 : unfontsxe introduced
%% v0.8.1 : minor bug fix
%% v0.8 : suport fontspec’s FontFace feature.
%% v0.7 : Use \sys_if_engine_xetex and \sys_if_engine_luatex instead of xetex_if_engine and luatex_if_engine to be compatible with latest l3kernel.
diff --git a/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls b/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
index c4ab0916fb..a56abb6c7b 100644
--- a/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
+++ b/language/korean/kotex-oblivoir/tex/oblivoir-xl.cls
@@ -1,6 +1,6 @@
%% File `oblivoir-xl.cls`
%%
-%% (C) Copyright 2006-2020 Kangsoo Kim <karnes at ktug org>
+%% (C) Copyright 2006-2021 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -14,7 +14,7 @@
%% depends upon Dohyun Kim's xetexko and the author's memhangul-x.
%%
\ProvidesClass{oblivoir-xl}
- [2020/02/05 v0.8.4 article-like class to typeset Korean]
+ [2020/03/03 v0.8.5 article-like class to typeset Korean]
%\typeout{A variant of oblivoir class for Lua- or XeLaTeX.}
\providecommand\@DisabledOption[1]{%
diff --git a/language/korean/kotex-oblivoir/tex/oblivoir.cls b/language/korean/kotex-oblivoir/tex/oblivoir.cls
index 79a0f8f908..e6d1d7c110 100644
--- a/language/korean/kotex-oblivoir/tex/oblivoir.cls
+++ b/language/korean/kotex-oblivoir/tex/oblivoir.cls
@@ -1,6 +1,6 @@
%% File `oblivoir.cls`
%%
-%% (C) Copyright 2006-2020 Kangsoo Kim <karnes at ktug org>
+%% (C) Copyright 2006-2021 Kangsoo Kim <karnes at ktug org>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -10,7 +10,7 @@
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2006/05/20 or later.
%%
-\ProvidesClass{oblivoir}[2020/02/09 v2.2]
+\ProvidesClass{oblivoir}[2021/03/03 v3.0]
\RequirePackage{xkeyval}
\RequirePackage{xparse}
diff --git a/language/korean/kotex-oblivoir/tex/xoblivoir.cls b/language/korean/kotex-oblivoir/tex/xoblivoir.cls
index 4d2c842425..a825b59adf 100644
--- a/language/korean/kotex-oblivoir/tex/xoblivoir.cls
+++ b/language/korean/kotex-oblivoir/tex/xoblivoir.cls
@@ -1,6 +1,6 @@
%% File `xoblivoir.cls`
%%
-%% (C) Copyright 2006-2020 Kangsoo Kim <karnes at ktug org>
+%% (C) Copyright 2006-2021 Kangsoo Kim <karnes at ktug org>
%% (C) Copyright 2013 Kihwang Lee <leekh at ktug org>
%%
%% This work may be distributed and/or modified under the