-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
docs: pdfdocs: Pull LaTeX preamble part out of conf.py
Quote from Jon's remark [1]: I do notice that Documentation/conf.py is getting large and unapproachable. At some future point, it might be nice to pull all of the latex stuff out into a separate file where it won't scare people who stumble into it by accident. Pull LaTeX preamble settings added since commit 3b4c963 ("docs: conf.py: adjust the LaTeX document output") out into sphinx/kerneldoc-preamble.sty. It will be copied to the build directory by the added "latex_additional_files" setting in conf.py. As a bonus, LaTeX/TeX code can be maintained without escaping backslashes. To compensate the loss of change history in sphinx/kerneldoc-preamble.sty, here is a list of changes made in conf.py: - f7ebe6b ("docs: Activate exCJK only in CJK chapters") - 0afd4df ("docs: pdfdocs: Prevent column squeezing by tabulary") - 659653c ("docs: pdfdocs: Refactor config for CJK document") - e291ff6 ("docs: pdfdocs: Add CJK-language-specific font settings") - 7eb368c ("docs: pdfdocs: Choose Serif font as CJK mainfont if possible") - 3538296 ("docs: pdfdocs: Preserve inter-phrase space in Korean translations") - 77abc2c ("docs: pdfdocs: One-half spacing for CJK translations") - 788d28a ("docs: pdfdocs: Permit AutoFakeSlant for CJK fonts") - 29ac982 ("docs: pdfdocs: Teach xeCJK about character classes of quotation marks") - 7c5c18b ("docs: pdfdocs: Fix typo in CJK-language specific font settings") - aa872e0 ("docs: pdfdocs: Adjust \headheight for fancyhdr") - 8716ef4 ("docs: pdfdocs: Tweak width params of TOC") - 66939df ("docs: pdfdocs: Switch default CJK font to KR variants") - 7b686a2 ("docs: pdfdocs: Enable CJKspace in TOC for Korean titles") - 5d9158e ("docs/translations: Skip CJK contents if suitable fonts not found") - b774cc4 ("docs: pdfdocs: Move CJK monospace font setting to main conf.py") [1]: https://lore.kernel.org/all/87zgmr66cn.fsf@meer.lwn.net/ Suggested-by: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Akira Yokosawa <akiyks@gmail.com> Link: https://lore.kernel.org/r/aaa9dca1-27c0-c414-77f3-c5587db0cc5b@gmail.com Signed-off-by: Jonathan Corbet <corbet@lwn.net>
- Loading branch information
Akira Yokosawa
authored and
Jonathan Corbet
committed
Feb 24, 2022
1 parent
b089f16
commit 398f7ab
Showing
2 changed files
with
197 additions
and
171 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
% -*- coding: utf-8 -*- | ||
% SPDX-License-Identifier: GPL-2.0 | ||
% | ||
% LaTeX preamble for "make latexdocs" or "make pdfdocs" including: | ||
% - TOC width settings | ||
% - Setting of tabulary (\tymin) | ||
% - Headheight setting for fancyhdr | ||
% - Fontfamily settings for CJK (Chinese, Japanese, and Korean) translations | ||
% | ||
% Note on the suffix of .sty: | ||
% This is not implemented as a LaTeX style file, but as a file containing | ||
% plain LaTeX code to be included into preamble. | ||
% ".sty" is chosen because ".tex" would cause the build scripts to confuse | ||
% this file with a LaTeX main file. | ||
% | ||
% Copyright (C) 2022 Akira Yokosawa | ||
|
||
% Custom width parameters for TOC --- Redefine low-level commands | ||
% defined in report.cls | ||
\makeatletter | ||
%% Redefine \@pnumwidth (page number width) | ||
\renewcommand*\@pnumwidth{2.7em} | ||
%% Redefine \l@chapter (chapter list entry) | ||
\renewcommand*\l@chapter[2]{% | ||
\ifnum \c@tocdepth >\m@ne | ||
\addpenalty{-\@highpenalty}% | ||
\vskip 1.0em \@plus\p@ | ||
\setlength\@tempdima{1.8em}% | ||
\begingroup | ||
\parindent \z@ \rightskip \@pnumwidth | ||
\parfillskip -\@pnumwidth | ||
\leavevmode \bfseries | ||
\advance\leftskip\@tempdima | ||
\hskip -\leftskip | ||
#1\nobreak\hfil | ||
\nobreak\hb@xt@\@pnumwidth{\hss #2% | ||
\kern-\p@\kern\p@}\par | ||
\penalty\@highpenalty | ||
\endgroup | ||
\fi} | ||
%% Redefine \l@section and \l@subsection | ||
\renewcommand*\l@section{\@dottedtocline{1}{1.8em}{3.2em}} | ||
\renewcommand*\l@subsection{\@dottedtocline{2}{5em}{4.3em}} | ||
\makeatother | ||
%% Sphinx < 1.8 doesn't have \sphinxtableofcontentshook | ||
\providecommand{\sphinxtableofcontentshook}{} | ||
%% Undefine it for compatibility with Sphinx 1.7.9 | ||
\renewcommand{\sphinxtableofcontentshook}{} % Empty the hook | ||
% Prevent column squeezing of tabulary. | ||
\setlength{\tymin}{20em} | ||
|
||
% Adjust \headheight for fancyhdr | ||
\addtolength{\headheight}{1.6pt} | ||
\addtolength{\topmargin}{-1.6pt} | ||
|
||
% Translations have Asian (CJK) characters which are only displayed if | ||
% xeCJK is used | ||
\IfFontExistsTF{Noto Sans CJK SC}{ | ||
% This is needed for translations | ||
\usepackage{xeCJK} | ||
\IfFontExistsTF{Noto Serif CJK KR}{ | ||
\setCJKmainfont{Noto Serif CJK KR}[AutoFakeSlant] | ||
}{ | ||
\setCJKmainfont{Noto Sans CJK KR}[AutoFakeSlant] | ||
} | ||
\setCJKsansfont{Noto Sans CJK KR}[AutoFakeSlant] | ||
\setCJKmonofont{Noto Sans Mono CJK KR}[AutoFakeSlant] | ||
\xeCJKDeclareCharClass{HalfLeft}{`“,`‘} | ||
\xeCJKDeclareCharClass{HalfRight}{`”,`’} | ||
% CJK Language-specific font choices | ||
\IfFontExistsTF{Noto Serif CJK SC}{ | ||
\newCJKfontfamily[SCmain]\scmain{Noto Serif CJK SC}[AutoFakeSlant] | ||
\newCJKfontfamily[SCserif]\scserif{Noto Serif CJK SC}[AutoFakeSlant] | ||
}{ | ||
\newCJKfontfamily[SCmain]\scmain{Noto Sans CJK SC}[AutoFakeSlant] | ||
\newCJKfontfamily[SCserif]\scserif{Noto Sans CJK SC}[AutoFakeSlant] | ||
} | ||
\newCJKfontfamily[SCsans]\scsans{Noto Sans CJK SC}[AutoFakeSlant] | ||
\newCJKfontfamily[SCmono]\scmono{Noto Sans Mono CJK SC}[AutoFakeSlant] | ||
\IfFontExistsTF{Noto Serif CJK TC}{ | ||
\newCJKfontfamily[TCmain]\tcmain{Noto Serif CJK TC}[AutoFakeSlant] | ||
\newCJKfontfamily[TCserif]\tcserif{Noto Serif CJK TC}[AutoFakeSlant] | ||
}{ | ||
\newCJKfontfamily[TCmain]\tcmain{Noto Sans CJK TC}[AutoFakeSlant] | ||
\newCJKfontfamily[TCserif]\tcserif{Noto Sans CJK TC}[AutoFakeSlant] | ||
} | ||
\newCJKfontfamily[TCsans]\tcsans{Noto Sans CJK TC}[AutoFakeSlant] | ||
\newCJKfontfamily[TCmono]\tcmono{Noto Sans Mono CJK TC}[AutoFakeSlant] | ||
\IfFontExistsTF{Noto Serif CJK KR}{ | ||
\newCJKfontfamily[KRmain]\krmain{Noto Serif CJK KR}[AutoFakeSlant] | ||
\newCJKfontfamily[KRserif]\krserif{Noto Serif CJK KR}[AutoFakeSlant] | ||
}{ | ||
\newCJKfontfamily[KRmain]\krmain{Noto Sans CJK KR}[AutoFakeSlant] | ||
\newCJKfontfamily[KRserif]\krserif{Noto Sans CJK KR}[AutoFakeSlant] | ||
} | ||
\newCJKfontfamily[KRsans]\krsans{Noto Sans CJK KR}[AutoFakeSlant] | ||
\newCJKfontfamily[KRmono]\krmono{Noto Sans Mono CJK KR}[AutoFakeSlant] | ||
\IfFontExistsTF{Noto Serif CJK JP}{ | ||
\newCJKfontfamily[JPmain]\jpmain{Noto Serif CJK JP}[AutoFakeSlant] | ||
\newCJKfontfamily[JPserif]\jpserif{Noto Serif CJK JP}[AutoFakeSlant] | ||
}{ | ||
\newCJKfontfamily[JPmain]\jpmain{Noto Sans CJK JP}[AutoFakeSlant] | ||
\newCJKfontfamily[JPserif]\jpserif{Noto Sans CJK JP}[AutoFakeSlant] | ||
} | ||
\newCJKfontfamily[JPsans]\jpsans{Noto Sans CJK JP}[AutoFakeSlant] | ||
\newCJKfontfamily[JPmono]\jpmono{Noto Sans Mono CJK JP}[AutoFakeSlant] | ||
% Dummy commands for Sphinx < 2.3 (no 'extrapackages' support) | ||
\providecommand{\onehalfspacing}{} | ||
\providecommand{\singlespacing}{} | ||
% Define custom macros to on/off CJK | ||
\newcommand{\kerneldocCJKon}{\makexeCJKactive\onehalfspacing} | ||
\newcommand{\kerneldocCJKoff}{\makexeCJKinactive\singlespacing} | ||
\newcommand{\kerneldocBeginSC}{% | ||
\begingroup% | ||
\scmain% | ||
\xeCJKDeclareCharClass{FullLeft}{`“,`‘}% | ||
\xeCJKDeclareCharClass{FullRight}{`”,`’}% | ||
\renewcommand{\CJKrmdefault}{SCserif}% | ||
\renewcommand{\CJKsfdefault}{SCsans}% | ||
\renewcommand{\CJKttdefault}{SCmono}% | ||
\xeCJKsetup{CJKspace = false}% | ||
% For CJK ascii-art alignment | ||
\setmonofont{Noto Sans Mono CJK SC}[AutoFakeSlant]% | ||
} | ||
\newcommand{\kerneldocEndSC}{\endgroup} | ||
\newcommand{\kerneldocBeginTC}{% | ||
\begingroup% | ||
\tcmain% | ||
\xeCJKDeclareCharClass{FullLeft}{`“,`‘}% | ||
\xeCJKDeclareCharClass{FullRight}{`”,`’}% | ||
\renewcommand{\CJKrmdefault}{TCserif}% | ||
\renewcommand{\CJKsfdefault}{TCsans}% | ||
\renewcommand{\CJKttdefault}{TCmono}% | ||
\xeCJKsetup{CJKspace = false}% | ||
% For CJK ascii-art alignment | ||
\setmonofont{Noto Sans Mono CJK TC}[AutoFakeSlant]% | ||
} | ||
\newcommand{\kerneldocEndTC}{\endgroup} | ||
\newcommand{\kerneldocBeginKR}{% | ||
\begingroup% | ||
\krmain% | ||
\renewcommand{\CJKrmdefault}{KRserif}% | ||
\renewcommand{\CJKsfdefault}{KRsans}% | ||
\renewcommand{\CJKttdefault}{KRmono}% | ||
% \xeCJKsetup{CJKspace = true} % true by default | ||
% For CJK ascii-art alignment (still misaligned for Hangul) | ||
\setmonofont{Noto Sans Mono CJK KR}[AutoFakeSlant]% | ||
} | ||
\newcommand{\kerneldocEndKR}{\endgroup} | ||
\newcommand{\kerneldocBeginJP}{% | ||
\begingroup% | ||
\jpmain% | ||
\renewcommand{\CJKrmdefault}{JPserif}% | ||
\renewcommand{\CJKsfdefault}{JPsans}% | ||
\renewcommand{\CJKttdefault}{JPmono}% | ||
\xeCJKsetup{CJKspace = false}% | ||
% For CJK ascii-art alignment | ||
\setmonofont{Noto Sans Mono CJK JP}[AutoFakeSlant]% | ||
} | ||
\newcommand{\kerneldocEndJP}{\endgroup} | ||
% Single spacing in literal blocks | ||
\fvset{baselinestretch=1} | ||
% To customize \sphinxtableofcontents | ||
\usepackage{etoolbox} | ||
% Inactivate CJK after tableofcontents | ||
\apptocmd{\sphinxtableofcontents}{\kerneldocCJKoff}{}{} | ||
\xeCJKsetup{CJKspace = true} % For inter-phrase space of Korean TOC | ||
}{ % No CJK font found | ||
% Custom macros to on/off CJK (Dummy) | ||
\newcommand{\kerneldocCJKon}{} | ||
\newcommand{\kerneldocCJKoff}{} | ||
\newcommand{\kerneldocBeginSC}[1]{% | ||
\begin{sphinxadmonition}{note}{Note:} | ||
``Noto Sans CJK'' fonts are not found while building this PDF\@. | ||
Translations of zh\_CN, zh\_TW, ko\_KR, and ja\_JP are skipped. | ||
\end{sphinxadmonition}} | ||
\newcommand{\kerneldocEndSC}{} | ||
\newcommand{\kerneldocBeginTC}[1]{} | ||
\newcommand{\kerneldocEndTC}{} | ||
\newcommand{\kerneldocBeginKR}[1]{} | ||
\newcommand{\kerneldocEndKR}{} | ||
\newcommand{\kerneldocBeginJP}[1]{} | ||
\newcommand{\kerneldocEndJP}{} | ||
} |