summaryrefslogtreecommitdiff
path: root/support/light-latex-make/llmk-doc.cls
diff options
context:
space:
mode:
Diffstat (limited to 'support/light-latex-make/llmk-doc.cls')
-rw-r--r--support/light-latex-make/llmk-doc.cls295
1 files changed, 295 insertions, 0 deletions
diff --git a/support/light-latex-make/llmk-doc.cls b/support/light-latex-make/llmk-doc.cls
new file mode 100644
index 0000000000..fedf4a7a2c
--- /dev/null
+++ b/support/light-latex-make/llmk-doc.cls
@@ -0,0 +1,295 @@
+% Document class for llmk reference manual
+% Copyright 2020 Takuto Asakura (wtsnjp)
+% distributed under the MIT licence
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{llmk-doc}
+ [2020/08/22 Document class for llmk reference manual]
+
+% class options
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\ProcessOptions\relax
+
+% remove "draft" from global options list
+% (code from https://tex.stackexchange.com/questions/33245/)
+\def\@clearglobaloption#1{%
+ \def\@tempa{#1}%
+ \def\@tempb{\@gobble}%
+ \@for\next:=\@classoptionslist\do
+ {\ifx\next\@tempa
+ \message{Cleared option \next\space from global list}%
+ \else
+ \edef\@tempb{\@tempb,\next}%
+ \fi}%
+ \let\@classoptionslist\@tempb
+ \expandafter\ifx\@tempb\@gobble
+ \let\@classoptionslist\@empty
+ \fi}
+\@clearglobaloption{draft}
+
+% basic dependency
+\LoadClass[a4paper,oneside,fleqn,parskip=half-]{scrartcl}
+\RequirePackage[fleqn]{amsmath}
+\RequirePackage{graphicx}
+\RequirePackage{booktabs}
+\RequirePackage{bxtexlogo}
+\RequirePackage[british]{babel}
+\RequirePackage{needspace}
+\RequirePackage{xunicode}
+\RequirePackage{fancyvrb}
+\RequirePackage{listings}
+\RequirePackage{xparse}
+
+% logo
+\input{llmk-logo-code}
+\RequirePackage[no-math]{fontspec}
+\defaultfontfeatures{Ligatures=TeX}
+\newcommand{\logomainfont}{\fontspec{Helvetica Neue}}
+\newcommand{\logosubfont}{\fontspec{Helvetica Neue Thin}}
+
+% font settings
+\let\Zbar\relax
+\RequirePackage[defaultsups]{newtxtext}
+\RequirePackage[varqu,varl]{inconsolata}
+\RequirePackage[bigdelims,vvarbb]{newtxmath}
+
+% for headings
+%\setkomafont{title}{}
+%\setkomafont{subtitle}{\Huge\itshape}
+\setkomafont{author}{}
+\setkomafont{date}{}
+\deffootnote[1.5em]{1.5em}{1em}{\textsuperscript{\thefootnotemark}\thinspace}
+
+% headers
+\RedeclareSectionCommand[
+ runin=false,
+ afterindent=false,
+ beforeskip=\baselineskip,
+ afterskip=.5\baselineskip]{section}
+\RedeclareSectionCommand[
+ runin=false,
+ afterindent=false,
+ beforeskip=\baselineskip,
+ afterskip=.3\baselineskip]{subsection}
+
+% colors
+\RequirePackage{xcolor}
+\definecolor{links}{named}{violet}
+\definecolor{special}{rgb}{0,0.5,0}
+\definecolor{code}{rgb}{0,0,0.6}
+
+% tikz for the logo
+\RequirePackage{tikz}
+\usetikzlibrary{shapes, positioning}
+
+% list environments
+\RequirePackage{enumitem}
+\newlength\lssep \setlength\lssep{\smallskipamount}
+\setlist{noitemsep, topsep=\lssep, partopsep=\lssep}
+
+% hyperref and bookmark
+\RequirePackage[
+ colorlinks=true, linkcolor=links, urlcolor=links, citecolor=links,
+ bookmarks=true, bookmarksnumbered=true, bookmarksopen=true,
+ bookmarksopenlevel=2]{hyperref}
+\RequirePackage{bookmark}
+
+% text styles
+\DeclareUrlCommand\path{\urlstyle{tt}\color{links}}
+\DeclareTextFontCommand{\emph}{\color{code}}
+
+% for metadata
+\AtBeginDocument{%
+ \bgroup
+ \def\and{, }%
+ \hypersetup{%
+ pdftitle={\@title},
+ pdfauthor={\@author},
+ pdfsubject={\@subtitle},
+ pdfkeywords={\@keywords}}
+ \egroup}
+\RequirePackage[yyyymmdd]{datetime}
+\renewcommand{\dateseparator}{-}
+
+% title
+\newcommand*{\keywords}[1]{\gdef\@keywords{#1}}
+\renewcommand*{\@maketitle}{%
+ \global\@topnum=\z@
+ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative
+ \ifx\@titlehead\@empty \else
+ \begin{minipage}[t]{\textwidth}
+ \usekomafont{titlehead}{\@titlehead\par}%
+ \end{minipage}\par
+ \fi
+ \null
+ \vskip 2em%
+ \begin{center}%
+ \ifx\@subject\@empty \else
+ {\usekomafont{subject}{\@subject \par}}%
+ \vskip 1.5em
+ \fi
+ {\llmkLogo[1.2]}% put the logo
+ \vskip 1em
+ {\fontsize{1.2cm}{0pt}\selectfont\logomainfont llmk}
+ \vskip .3em
+ {\fontsize{0.5cm}{0pt}\selectfont\logosubfont The Light {\LaTeX} Make}
+ \vskip .5em
+ %{\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}%
+ \vskip 1em
+ {%
+ \usekomafont{author}{%
+ \lineskip .5em%
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par
+ }%
+ }%
+ \vskip .75em%
+ {\usekomafont{date}{\@date \par}}%
+ \vskip \z@ \@plus 1em
+ {\usekomafont{publishers}{\@publishers \par}}%
+ \ifx\@dedication\@empty \else
+ \vskip 2em
+ {\usekomafont{dedication}{\@dedication \par}}%
+ \fi
+ \end{center}%
+ \par
+ \vskip 2em
+}
+
+% some macros
+\newcommand*{\prog}[1]{\textsf{#1}}
+\newcommand*{\Dash}{\thinspace---\thinspace}
+\newcommand*{\email}[1]{\href{mailto:#1}{\code{#1}}}
+\newcommand*{\ie}{i.e.,\,}
+\newcommand*{\eg}{e.g.,\,}
+\newcommand*{\aka}{a.k.a.\,}
+\newcommand*{\hyph}{-}
+\newcommand*{\meta}[1]{\bgroup
+ \normalfont\color{special}$\langle$\textit{#1}$\rangle$\egroup}
+\newcommand*{\code}[1]{\bgroup
+ \chardef\_=`\_\code@font #1\egroup}
+\newcommand*{\cs}[1]{\texttt{\char`\\#1}}
+\newcommand*{\sopt}[1]{\hyperlink{clo:#1}{\code{\hyph#1}}}
+\newcommand*{\lopt}[1]{\hyperlink{clo:#1}{\code{\hyph{}\hyph#1}}}
+\newcommand*{\ckey}[1]{\bgroup
+ \def\_{-}\def\meta##1{##1}%
+ \edef\x{\noexpand\def\noexpand\@tmp@hyname{ckey:#1}}%
+ \expandafter\egroup\x
+ \hyperlink{\@tmp@hyname}{\code{#1}}}
+\newcommand*{\progname}[1]{\bgroup
+ \def\_{-}\def\meta##1{##1}%
+ \edef\x{\noexpand\def\noexpand\@tmp@hyname{prog:#1}}%
+ \expandafter\egroup\x
+ \hyperlink{\@tmp@hyname}{\code{#1}}}
+\newcommand*{\type}[1]{\textcolor{special}{#1}}
+
+% verbatim
+\def\code@font{% code
+ \color{code}\normalfont\ttfamily}
+\fvset{%
+ formatcom=\code@font,
+ commandchars=\\\{\}}
+
+% listings
+\lstdefinelanguage{toml}{
+ columns=fullflexible,
+ morecomment=[l]{\#},
+ commentstyle=\color{darkgray}\ttfamily,
+ morekeywords={},
+ otherkeywords={=}}
+\lstdefinestyle{toml}{
+ language={toml},
+ numbers=left,
+ numberstyle=\tiny,
+ numbersep=5pt,
+ breaklines=true,
+ frame=l,
+ xleftmargin=15pt,
+ xrightmargin=15pt,
+ basicstyle=\ttfamily\small,
+ stepnumber=1,
+ keywords={
+ args,aux_file,aux_empty_size,command,generated_target,opts,
+ postprocess,target,sequence
+ },
+ keywordstyle={\color{code}},
+ alsoletter={=},
+ keywords=[2]{=},
+ keywordstyle=[2]{\color{black}},
+ %keywords=[3]{true,false},
+ %keywordstyle=[3]{\color{special}},
+ %string=[b]",
+ %stringstyle={\color{special}},
+ comment=[l]\#,
+ commentstyle=\color{darkgray}}
+\lstdefinestyle{latex}{
+ columns=fullflexible,
+ language=[LaTeX]{TeX},
+ numbers=left,
+ numberstyle=\tiny,
+ numbersep=5pt,
+ breaklines=true,
+ frame=l,
+ xleftmargin=15pt,
+ xrightmargin=15pt,
+ basicstyle=\ttfamily\small,
+ stepnumber=1,
+ texcsstyle=*{\color{code}},
+ commentstyle=\color{darkgray}}
+
+% manual entries
+\newenvironment{manual@entry}{\begin{list}{}{%
+ \setlength{\leftmargin}{2em}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parsep}{0pt}%
+ \setlength{\rightmargin}{0em}%
+ }\item}{\end{list}}
+
+\NewDocumentEnvironment{clopt}{ m o }
+ {%
+ \par\vskip.5\baselineskip
+ \bgroup
+ \def\sopt##1{\hypertarget{clo:##1}{\code{\hyph##1}}}%
+ \def\lopt##1{\hypertarget{clo:##1}{\code{\hyph{}\hyph##1}}}%
+ \needspace{3\baselineskip}\noindent #1\egroup
+ \IfNoValueF{#2}{\hfill (#2)}%
+ \begin{manual@entry}%
+ }
+ {\ifvmode\else\unskip\fi\end{manual@entry}}
+
+\NewDocumentEnvironment{confkey}{ m m o }
+ {%
+ \par\vskip\baselineskip
+ \bgroup
+ \def\_{-}\def\meta##1{##1}%
+ \edef\x{\noexpand\def\noexpand\@tmp@hyname{ckey:#1}}%
+ \expandafter\egroup\x
+ \needspace{3ex}\noindent
+ \hypertarget{\@tmp@hyname}{\code{#1} [#2]}%
+ \IfNoValueF{#3}{\hfill (#3)}%
+ \begin{manual@entry}%
+ }
+ {\ifvmode\else\unskip\fi\end{manual@entry}}
+
+\NewDocumentCommand{\Program}{ m }
+ {%
+ \bgroup
+ \def\_{-}\def\meta##1{##1}%
+ \edef\x{\noexpand\def\noexpand\@tmp@hyname{prog:#1}}%
+ \expandafter\egroup\x
+ \hypertarget{\@tmp@hyname}{\paragraph{Program \code{#1}}}%
+ }
+
+% code in hors-text
+\newenvironment{htcode}
+ {\SaveVerbatim[samepage]{verbmat}}
+ {%
+ \endSaveVerbatim
+ \par\medskip\noindent\hspace*{2em}%
+ \BUseVerbatim{verbmat}%
+ \par\medskip\@endpetrue
+ }
+
+\DefineShortVerb{\|}
+% EOF