1 % -*- coding: utf-8 -*- 1 % -*- coding: utf-8 -*- 2 % SPDX-License-Identifier: GPL-2.0 2 % SPDX-License-Identifier: GPL-2.0 3 % 3 % 4 % LaTeX preamble for "make latexdocs" or "make 4 % LaTeX preamble for "make latexdocs" or "make pdfdocs" including: 5 % - TOC width settings 5 % - TOC width settings 6 % - Setting of tabulary (\tymin) 6 % - Setting of tabulary (\tymin) 7 % - Headheight setting for fancyhdr 7 % - Headheight setting for fancyhdr 8 % - Fontfamily settings for CJK (Chinese, Ja 8 % - Fontfamily settings for CJK (Chinese, Japanese, and Korean) translations 9 % 9 % 10 % Note on the suffix of .sty: 10 % Note on the suffix of .sty: 11 % This is not implemented as a LaTeX style f 11 % This is not implemented as a LaTeX style file, but as a file containing 12 % plain LaTeX code to be included into pream 12 % plain LaTeX code to be included into preamble. 13 % ".sty" is chosen because ".tex" would caus 13 % ".sty" is chosen because ".tex" would cause the build scripts to confuse 14 % this file with a LaTeX main file. 14 % this file with a LaTeX main file. 15 % 15 % 16 % Copyright (C) 2022 Akira Yokosawa 16 % Copyright (C) 2022 Akira Yokosawa 17 17 18 % Custom width parameters for TOC 18 % Custom width parameters for TOC 19 % - Redefine low-level commands defined in re 19 % - Redefine low-level commands defined in report.cls. 20 % - Indent of 2 chars is preserved for ease o 20 % - Indent of 2 chars is preserved for ease of comparison. 21 % Summary of changes from default params: 21 % Summary of changes from default params: 22 % Width of page number (\@pnumwidth): 1.55em 22 % Width of page number (\@pnumwidth): 1.55em -> 2.7em 23 % Width of chapter number: 1.5em 23 % Width of chapter number: 1.5em -> 2.4em 24 % Indent of section number: 1.5em 24 % Indent of section number: 1.5em -> 2.4em 25 % Width of section number: 2.6em 25 % Width of section number: 2.6em -> 3.2em 26 % Indent of subsection number: 4.1em 26 % Indent of subsection number: 4.1em -> 5.6em 27 % Width of subsection number: 3.5em 27 % Width of subsection number: 3.5em -> 4.3em 28 % 28 % 29 % These params can have 4 digit page counts, 3 29 % These params can have 4 digit page counts, 3 digit chapter counts, 30 % section counts of 4 digits + 1 period (e.g., 30 % section counts of 4 digits + 1 period (e.g., 18.10), and subsection counts 31 % of 5 digits + 2 periods (e.g., 18.7.13). 31 % of 5 digits + 2 periods (e.g., 18.7.13). 32 \makeatletter 32 \makeatletter 33 %% Redefine \@pnumwidth (page number width) 33 %% Redefine \@pnumwidth (page number width) 34 \renewcommand*\@pnumwidth{2.7em} 34 \renewcommand*\@pnumwidth{2.7em} 35 %% Redefine \l@chapter (chapter list entry) 35 %% Redefine \l@chapter (chapter list entry) 36 \renewcommand*\l@chapter[2]{% 36 \renewcommand*\l@chapter[2]{% 37 \ifnum \c@tocdepth >\m@ne 37 \ifnum \c@tocdepth >\m@ne 38 \addpenalty{-\@highpenalty}% 38 \addpenalty{-\@highpenalty}% 39 \vskip 1.0em \@plus\p@ 39 \vskip 1.0em \@plus\p@ 40 \setlength\@tempdima{2.4em}% 40 \setlength\@tempdima{2.4em}% 41 \begingroup 41 \begingroup 42 \parindent \z@ \rightskip \@pnumwidth 42 \parindent \z@ \rightskip \@pnumwidth 43 \parfillskip -\@pnumwidth 43 \parfillskip -\@pnumwidth 44 \leavevmode \bfseries 44 \leavevmode \bfseries 45 \advance\leftskip\@tempdima 45 \advance\leftskip\@tempdima 46 \hskip -\leftskip 46 \hskip -\leftskip 47 #1\nobreak\hfil 47 #1\nobreak\hfil 48 \nobreak\hb@xt@\@pnumwidth{\hss #2% 48 \nobreak\hb@xt@\@pnumwidth{\hss #2% 49 \kern-\p@\ker 49 \kern-\p@\kern\p@}\par 50 \penalty\@highpenalty 50 \penalty\@highpenalty 51 \endgroup 51 \endgroup 52 \fi} 52 \fi} 53 %% Redefine \l@section and \l@subsection 53 %% Redefine \l@section and \l@subsection 54 \renewcommand*\l@section{\@dottedtocline{1}{2. 54 \renewcommand*\l@section{\@dottedtocline{1}{2.4em}{3.2em}} 55 \renewcommand*\l@subsection{\@dottedtocline{2} 55 \renewcommand*\l@subsection{\@dottedtocline{2}{5.6em}{4.3em}} 56 \makeatother 56 \makeatother 57 %% Prevent default \sphinxtableofcontentshook !! 57 %% Sphinx < 1.8 doesn't have \sphinxtableofcontentshook >> 58 \providecommand{\sphinxtableofcontentshook}{} >> 59 %% Undefine it for compatibility with Sphinx 1.7.9 58 \renewcommand{\sphinxtableofcontentshook}{} % 60 \renewcommand{\sphinxtableofcontentshook}{} % Empty the hook 59 61 60 % Prevent column squeezing of tabulary. \tymi 62 % Prevent column squeezing of tabulary. \tymin is set by Sphinx as: 61 % \setlength{\tymin}{3\fontcharwd\font`0 } 63 % \setlength{\tymin}{3\fontcharwd\font`0 } 62 % , which is too short. 64 % , which is too short. 63 \setlength{\tymin}{20em} 65 \setlength{\tymin}{20em} 64 66 65 % Adjust \headheight for fancyhdr 67 % Adjust \headheight for fancyhdr 66 \addtolength{\headheight}{1.6pt} 68 \addtolength{\headheight}{1.6pt} 67 \addtolength{\topmargin}{-1.6pt} 69 \addtolength{\topmargin}{-1.6pt} 68 70 69 % Translations have Asian (CJK) characters whi 71 % Translations have Asian (CJK) characters which are only displayed if 70 % xeCJK is used 72 % xeCJK is used 71 \usepackage{ifthen} 73 \usepackage{ifthen} 72 \newboolean{enablecjk} 74 \newboolean{enablecjk} 73 \setboolean{enablecjk}{false} 75 \setboolean{enablecjk}{false} 74 \IfFontExistsTF{Noto Sans CJK SC}{ 76 \IfFontExistsTF{Noto Sans CJK SC}{ 75 \IfFileExists{xeCJK.sty}{ 77 \IfFileExists{xeCJK.sty}{ 76 \setboolean{enablecjk}{true} 78 \setboolean{enablecjk}{true} 77 }{} 79 }{} 78 }{} 80 }{} 79 \ifthenelse{\boolean{enablecjk}}{ 81 \ifthenelse{\boolean{enablecjk}}{ 80 % Load xeCJK when both the Noto Sans CJK f 82 % Load xeCJK when both the Noto Sans CJK font and xeCJK.sty are available. 81 \usepackage{xeCJK} 83 \usepackage{xeCJK} 82 % Noto CJK fonts don't provide slant shape 84 % Noto CJK fonts don't provide slant shape. [AutoFakeSlant] permits 83 % its emulation. 85 % its emulation. 84 % Select KR variant at the beginning of ea 86 % Select KR variant at the beginning of each document so that quotation 85 % and apostorph symbols of half-width is u 87 % and apostorph symbols of half-width is used in TOC of Latin documents. 86 \IfFontExistsTF{Noto Serif CJK KR}{ 88 \IfFontExistsTF{Noto Serif CJK KR}{ 87 \setCJKmainfont{Noto Serif CJK KR}[Aut 89 \setCJKmainfont{Noto Serif CJK KR}[AutoFakeSlant] 88 }{ 90 }{ 89 \setCJKmainfont{Noto Sans CJK KR}[Auto 91 \setCJKmainfont{Noto Sans CJK KR}[AutoFakeSlant] 90 } 92 } 91 \setCJKsansfont{Noto Sans CJK KR}[AutoFake 93 \setCJKsansfont{Noto Sans CJK KR}[AutoFakeSlant] 92 \setCJKmonofont{Noto Sans Mono CJK KR}[Aut 94 \setCJKmonofont{Noto Sans Mono CJK KR}[AutoFakeSlant] 93 % Teach xeCJK of half-width symbols 95 % Teach xeCJK of half-width symbols 94 \xeCJKDeclareCharClass{HalfLeft}{`“,`‘ 96 \xeCJKDeclareCharClass{HalfLeft}{`“,`‘} 95 \xeCJKDeclareCharClass{HalfRight}{`”,` 97 \xeCJKDeclareCharClass{HalfRight}{`”,`’} 96 % CJK Language-specific font choices 98 % CJK Language-specific font choices 97 %% for Simplified Chinese 99 %% for Simplified Chinese 98 \IfFontExistsTF{Noto Serif CJK SC}{ 100 \IfFontExistsTF{Noto Serif CJK SC}{ 99 \newCJKfontfamily[SCmain]\scmain{Noto 101 \newCJKfontfamily[SCmain]\scmain{Noto Serif CJK SC}[AutoFakeSlant] 100 \newCJKfontfamily[SCserif]\scserif{Not 102 \newCJKfontfamily[SCserif]\scserif{Noto Serif CJK SC}[AutoFakeSlant] 101 }{ 103 }{ 102 \newCJKfontfamily[SCmain]\scmain{Noto 104 \newCJKfontfamily[SCmain]\scmain{Noto Sans CJK SC}[AutoFakeSlant] 103 \newCJKfontfamily[SCserif]\scserif{Not 105 \newCJKfontfamily[SCserif]\scserif{Noto Sans CJK SC}[AutoFakeSlant] 104 } 106 } 105 \newCJKfontfamily[SCsans]\scsans{Noto Sans 107 \newCJKfontfamily[SCsans]\scsans{Noto Sans CJK SC}[AutoFakeSlant] 106 \newCJKfontfamily[SCmono]\scmono{Noto Sans 108 \newCJKfontfamily[SCmono]\scmono{Noto Sans Mono CJK SC}[AutoFakeSlant] 107 %% for Traditional Chinese 109 %% for Traditional Chinese 108 \IfFontExistsTF{Noto Serif CJK TC}{ 110 \IfFontExistsTF{Noto Serif CJK TC}{ 109 \newCJKfontfamily[TCmain]\tcmain{Noto 111 \newCJKfontfamily[TCmain]\tcmain{Noto Serif CJK TC}[AutoFakeSlant] 110 \newCJKfontfamily[TCserif]\tcserif{Not 112 \newCJKfontfamily[TCserif]\tcserif{Noto Serif CJK TC}[AutoFakeSlant] 111 }{ 113 }{ 112 \newCJKfontfamily[TCmain]\tcmain{Noto 114 \newCJKfontfamily[TCmain]\tcmain{Noto Sans CJK TC}[AutoFakeSlant] 113 \newCJKfontfamily[TCserif]\tcserif{Not 115 \newCJKfontfamily[TCserif]\tcserif{Noto Sans CJK TC}[AutoFakeSlant] 114 } 116 } 115 \newCJKfontfamily[TCsans]\tcsans{Noto Sans 117 \newCJKfontfamily[TCsans]\tcsans{Noto Sans CJK TC}[AutoFakeSlant] 116 \newCJKfontfamily[TCmono]\tcmono{Noto Sans 118 \newCJKfontfamily[TCmono]\tcmono{Noto Sans Mono CJK TC}[AutoFakeSlant] 117 %% for Korean 119 %% for Korean 118 \IfFontExistsTF{Noto Serif CJK KR}{ 120 \IfFontExistsTF{Noto Serif CJK KR}{ 119 \newCJKfontfamily[KRmain]\krmain{Noto 121 \newCJKfontfamily[KRmain]\krmain{Noto Serif CJK KR}[AutoFakeSlant] 120 \newCJKfontfamily[KRserif]\krserif{Not 122 \newCJKfontfamily[KRserif]\krserif{Noto Serif CJK KR}[AutoFakeSlant] 121 }{ 123 }{ 122 \newCJKfontfamily[KRmain]\krmain{Noto 124 \newCJKfontfamily[KRmain]\krmain{Noto Sans CJK KR}[AutoFakeSlant] 123 \newCJKfontfamily[KRserif]\krserif{Not 125 \newCJKfontfamily[KRserif]\krserif{Noto Sans CJK KR}[AutoFakeSlant] 124 } 126 } 125 \newCJKfontfamily[KRsans]\krsans{Noto Sans 127 \newCJKfontfamily[KRsans]\krsans{Noto Sans CJK KR}[AutoFakeSlant] 126 \newCJKfontfamily[KRmono]\krmono{Noto Sans 128 \newCJKfontfamily[KRmono]\krmono{Noto Sans Mono CJK KR}[AutoFakeSlant] 127 %% for Japanese 129 %% for Japanese 128 \IfFontExistsTF{Noto Serif CJK JP}{ 130 \IfFontExistsTF{Noto Serif CJK JP}{ 129 \newCJKfontfamily[JPmain]\jpmain{Noto 131 \newCJKfontfamily[JPmain]\jpmain{Noto Serif CJK JP}[AutoFakeSlant] 130 \newCJKfontfamily[JPserif]\jpserif{Not 132 \newCJKfontfamily[JPserif]\jpserif{Noto Serif CJK JP}[AutoFakeSlant] 131 }{ 133 }{ 132 \newCJKfontfamily[JPmain]\jpmain{Noto 134 \newCJKfontfamily[JPmain]\jpmain{Noto Sans CJK JP}[AutoFakeSlant] 133 \newCJKfontfamily[JPserif]\jpserif{Not 135 \newCJKfontfamily[JPserif]\jpserif{Noto Sans CJK JP}[AutoFakeSlant] 134 } 136 } 135 \newCJKfontfamily[JPsans]\jpsans{Noto Sans 137 \newCJKfontfamily[JPsans]\jpsans{Noto Sans CJK JP}[AutoFakeSlant] 136 \newCJKfontfamily[JPmono]\jpmono{Noto Sans 138 \newCJKfontfamily[JPmono]\jpmono{Noto Sans Mono CJK JP}[AutoFakeSlant] >> 139 % Dummy commands for Sphinx < 2.3 (no 'extrapackages' support) >> 140 \providecommand{\onehalfspacing}{} >> 141 \providecommand{\singlespacing}{} 137 % Define custom macros to on/off CJK 142 % Define custom macros to on/off CJK 138 %% One and half spacing for CJK contents 143 %% One and half spacing for CJK contents 139 \newcommand{\kerneldocCJKon}{\makexeCJKact 144 \newcommand{\kerneldocCJKon}{\makexeCJKactive\onehalfspacing} 140 \newcommand{\kerneldocCJKoff}{\makexeCJKin 145 \newcommand{\kerneldocCJKoff}{\makexeCJKinactive\singlespacing} 141 % Define custom macros for switching CJK f 146 % Define custom macros for switching CJK font setting 142 %% for Simplified Chinese 147 %% for Simplified Chinese 143 \newcommand{\kerneldocBeginSC}{% 148 \newcommand{\kerneldocBeginSC}{% 144 \begingroup% 149 \begingroup% 145 \scmain% 150 \scmain% 146 \xeCJKDeclareCharClass{FullLeft}{`“, 151 \xeCJKDeclareCharClass{FullLeft}{`“,`‘}% Full-width in SC 147 \xeCJKDeclareCharClass{FullRight}{`” 152 \xeCJKDeclareCharClass{FullRight}{`”,`’}% Full-width in SC 148 \renewcommand{\CJKrmdefault}{SCserif}% 153 \renewcommand{\CJKrmdefault}{SCserif}% 149 \renewcommand{\CJKsfdefault}{SCsans}% 154 \renewcommand{\CJKsfdefault}{SCsans}% 150 \renewcommand{\CJKttdefault}{SCmono}% 155 \renewcommand{\CJKttdefault}{SCmono}% 151 \xeCJKsetup{CJKspace = false}% gobble 156 \xeCJKsetup{CJKspace = false}% gobble white spaces by ' ' 152 % For CJK ascii-art alignment 157 % For CJK ascii-art alignment 153 \setmonofont{Noto Sans Mono CJK SC}[Au 158 \setmonofont{Noto Sans Mono CJK SC}[AutoFakeSlant]% 154 } 159 } 155 \newcommand{\kerneldocEndSC}{\endgroup} 160 \newcommand{\kerneldocEndSC}{\endgroup} 156 %% for Traditional Chinese 161 %% for Traditional Chinese 157 \newcommand{\kerneldocBeginTC}{% 162 \newcommand{\kerneldocBeginTC}{% 158 \begingroup% 163 \begingroup% 159 \tcmain% 164 \tcmain% 160 \xeCJKDeclareCharClass{FullLeft}{`“, 165 \xeCJKDeclareCharClass{FullLeft}{`“,`‘}% Full-width in TC 161 \xeCJKDeclareCharClass{FullRight}{`” 166 \xeCJKDeclareCharClass{FullRight}{`”,`’}% Full-width in TC 162 \renewcommand{\CJKrmdefault}{TCserif}% 167 \renewcommand{\CJKrmdefault}{TCserif}% 163 \renewcommand{\CJKsfdefault}{TCsans}% 168 \renewcommand{\CJKsfdefault}{TCsans}% 164 \renewcommand{\CJKttdefault}{TCmono}% 169 \renewcommand{\CJKttdefault}{TCmono}% 165 \xeCJKsetup{CJKspace = false}% gobble 170 \xeCJKsetup{CJKspace = false}% gobble white spaces by ' ' 166 % For CJK ascii-art alignment 171 % For CJK ascii-art alignment 167 \setmonofont{Noto Sans Mono CJK TC}[Au 172 \setmonofont{Noto Sans Mono CJK TC}[AutoFakeSlant]% 168 } 173 } 169 \newcommand{\kerneldocEndTC}{\endgroup} 174 \newcommand{\kerneldocEndTC}{\endgroup} 170 %% for Korean 175 %% for Korean 171 \newcommand{\kerneldocBeginKR}{% 176 \newcommand{\kerneldocBeginKR}{% 172 \begingroup% 177 \begingroup% 173 \krmain% 178 \krmain% 174 \renewcommand{\CJKrmdefault}{KRserif}% 179 \renewcommand{\CJKrmdefault}{KRserif}% 175 \renewcommand{\CJKsfdefault}{KRsans}% 180 \renewcommand{\CJKsfdefault}{KRsans}% 176 \renewcommand{\CJKttdefault}{KRmono}% 181 \renewcommand{\CJKttdefault}{KRmono}% 177 % \xeCJKsetup{CJKspace = true} % true 182 % \xeCJKsetup{CJKspace = true} % true by default 178 % For CJK ascii-art alignment (still m 183 % For CJK ascii-art alignment (still misaligned for Hangul) 179 \setmonofont{Noto Sans Mono CJK KR}[Au 184 \setmonofont{Noto Sans Mono CJK KR}[AutoFakeSlant]% 180 } 185 } 181 \newcommand{\kerneldocEndKR}{\endgroup} 186 \newcommand{\kerneldocEndKR}{\endgroup} 182 %% for Japanese 187 %% for Japanese 183 \newcommand{\kerneldocBeginJP}{% 188 \newcommand{\kerneldocBeginJP}{% 184 \begingroup% 189 \begingroup% 185 \jpmain% 190 \jpmain% 186 \renewcommand{\CJKrmdefault}{JPserif}% 191 \renewcommand{\CJKrmdefault}{JPserif}% 187 \renewcommand{\CJKsfdefault}{JPsans}% 192 \renewcommand{\CJKsfdefault}{JPsans}% 188 \renewcommand{\CJKttdefault}{JPmono}% 193 \renewcommand{\CJKttdefault}{JPmono}% 189 \xeCJKsetup{CJKspace = false}% gobble 194 \xeCJKsetup{CJKspace = false}% gobble white space by ' ' 190 % For CJK ascii-art alignment 195 % For CJK ascii-art alignment 191 \setmonofont{Noto Sans Mono CJK JP}[Au 196 \setmonofont{Noto Sans Mono CJK JP}[AutoFakeSlant]% 192 } 197 } 193 \newcommand{\kerneldocEndJP}{\endgroup} 198 \newcommand{\kerneldocEndJP}{\endgroup} 194 199 195 % Single spacing in literal blocks 200 % Single spacing in literal blocks 196 \fvset{baselinestretch=1} 201 \fvset{baselinestretch=1} 197 % To customize \sphinxtableofcontents 202 % To customize \sphinxtableofcontents 198 \usepackage{etoolbox} 203 \usepackage{etoolbox} 199 % Inactivate CJK after tableofcontents 204 % Inactivate CJK after tableofcontents 200 \apptocmd{\sphinxtableofcontents}{\kerneld 205 \apptocmd{\sphinxtableofcontents}{\kerneldocCJKoff}{}{} 201 \xeCJKsetup{CJKspace = true}% For inter-ph 206 \xeCJKsetup{CJKspace = true}% For inter-phrase space of Korean TOC 202 % Suppress extra white space at latin .. n << 203 \AtBeginEnvironment{sphinxVerbatim}{\CJKse << 204 }{ % Don't enable CJK 207 }{ % Don't enable CJK 205 % Custom macros to on/off CJK and switch C 208 % Custom macros to on/off CJK and switch CJK fonts (Dummy) 206 \newcommand{\kerneldocCJKon}{} 209 \newcommand{\kerneldocCJKon}{} 207 \newcommand{\kerneldocCJKoff}{} 210 \newcommand{\kerneldocCJKoff}{} 208 %% By defining \kerneldocBegin(SC|TC|KR|JP 211 %% By defining \kerneldocBegin(SC|TC|KR|JP) as commands with an argument 209 %% and ignore the argument (#1) in their d 212 %% and ignore the argument (#1) in their definitions, whole contents of 210 %% CJK chapters can be ignored. 213 %% CJK chapters can be ignored. 211 \newcommand{\kerneldocBeginSC}[1]{% 214 \newcommand{\kerneldocBeginSC}[1]{% 212 %% Put a note on missing CJK fonts or 215 %% Put a note on missing CJK fonts or the xecjk package in place of 213 %% zh_CN translation. 216 %% zh_CN translation. 214 \begin{sphinxadmonition}{note}{Note on 217 \begin{sphinxadmonition}{note}{Note on missing fonts and a package:} 215 Translations of Simplified Chinese 218 Translations of Simplified Chinese (zh\_CN), Traditional Chinese 216 (zh\_TW), Korean (ko\_KR), and Jap 219 (zh\_TW), Korean (ko\_KR), and Japanese (ja\_JP) were skipped 217 due to the lack of suitable font f 220 due to the lack of suitable font families and/or the texlive-xecjk 218 package. 221 package. 219 222 220 If you want them, please install n !! 223 If you want them, please install ``Noto Sans CJK'' font families 221 font families along with the texli !! 224 along with the texlive-xecjk package by following instructions from 222 instructions from << 223 \sphinxcode{./scripts/sphinx-pre-i 225 \sphinxcode{./scripts/sphinx-pre-install}. 224 Having optional non-variable ``Not !! 226 Having optional ``Noto Serif CJK'' font families will improve 225 improve the looks of those transla !! 227 the looks of those translations. 226 \end{sphinxadmonition}} 228 \end{sphinxadmonition}} 227 \newcommand{\kerneldocEndSC}{} 229 \newcommand{\kerneldocEndSC}{} 228 \newcommand{\kerneldocBeginTC}[1]{} 230 \newcommand{\kerneldocBeginTC}[1]{} 229 \newcommand{\kerneldocEndTC}{} 231 \newcommand{\kerneldocEndTC}{} 230 \newcommand{\kerneldocBeginKR}[1]{} 232 \newcommand{\kerneldocBeginKR}[1]{} 231 \newcommand{\kerneldocEndKR}{} 233 \newcommand{\kerneldocEndKR}{} 232 \newcommand{\kerneldocBeginJP}[1]{} 234 \newcommand{\kerneldocBeginJP}[1]{} 233 \newcommand{\kerneldocEndJP}{} 235 \newcommand{\kerneldocEndJP}{} 234 } 236 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.