summaryrefslogtreecommitdiff
path: root/language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty
diff options
context:
space:
mode:
Diffstat (limited to 'language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty')
-rw-r--r--language/korean/kotex-oblivoir/tex/memhangul-common/obchaptertoc.sty223
1 files changed, 223 insertions, 0 deletions
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