summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/codehigh/codehigh.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/codehigh/codehigh.tex')
-rw-r--r--macros/latex/contrib/codehigh/codehigh.tex178
1 files changed, 178 insertions, 0 deletions
diff --git a/macros/latex/contrib/codehigh/codehigh.tex b/macros/latex/contrib/codehigh/codehigh.tex
new file mode 100644
index 0000000000..950ad653c8
--- /dev/null
+++ b/macros/latex/contrib/codehigh/codehigh.tex
@@ -0,0 +1,178 @@
+% -*- coding: utf-8 -*-
+\documentclass[oneside]{book}
+\usepackage[a4paper,margin=2cm]{geometry}
+
+\usepackage{codehigh}
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true,
+ urlcolor=blue3,
+ linkcolor=green3,
+}
+
+\newcommand*{\myversion}{2021C}
+\newcommand*{\mydate}{Version \myversion\ (\the\year-\mylpad\month-\mylpad\day)}
+\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
+
+\begin{document}
+
+\title{\textsf{\color{green3}Codehigh: Highlight Codes and Demos with l3RegEx and LPeg}}
+\author{Jianrui Lyu (tolvjr@163.com)\\ \url{https://github.com/lvjr/codehigh}}
+\date{\mydate}
+\maketitle
+
+\tableofcontents
+
+\chapter{Package Interface}
+
+\section{Introduction}
+
+\verb!Codehigh! package uses \verb!l3regex!\footnote{\url{https://www.ctan.org/pkg/l3regex}}
+package in \LaTeX3 Programming Layer to parse and highlight source codes and demos.
+It is more powerful than \verb!listings! package, and more easy to use than \verb!minted! package.
+But it is slower than both of them.
+Therefore in LuaTeX the package provides another way to highlight code: using \verb!LPeg!%
+\footnote{\url{http://www.inf.puc-rio.br/~roberto/lpeg/}}.
+\verb!LPeg! is much more powerful and faster than \verb!l3regex!.
+
+At present, this package is in \underline{\color{red3}\textbf{experimental}} status.
+Don’t use it in important documents, unless you have time
+to update them for the newer versions of \verb!codehigh! package in the future.
+
+\section{Highlighting Code}
+
+There are several predefined languages: \verb!latex!, \verb!latex/latex2!, \verb!latex/latex3!,
+\verb!latex/math! and \verb!latex/table!.
+The following example is typeset by \verb!codehigh! environment with default option \verb!language=latex!.
+\begin{codehigh}
+% -*- coding: utf-8 -*-
+\documentclass{article}
+\usepackage[a4paper,margin=2cm]{geometry}
+\usepackage{codehigh}
+\usepackage{hyperref}
+\newcommand*{\myversion}{2021C}
+\newcommand*{\mydate}{Version \myversion\ (\the\year-\mylpad\month-\mylpad\day)}
+\newcommand*{\mylpad}[1]{\ifnum#1<10 0\the#1\else\the#1\fi}
+\setlength{\abc}{1}
+\begin{document}
+% some comment
+\section{Section Name}
+\subsection*{Suction Name}
+Math $a+b$.
+\end{document}
+\end{codehigh}
+
+The following example is typeset by \verb!codehigh! environment with option \verb!language=latex/latex2!.
+\begin{codehigh}[language=latex/latex2]
+\def\abcd#1#2{
+ % some comment
+ \unskip
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt}%
+ \setcounter{choice}{0}%
+ \let\item=\my@item@temp
+ \settowidth{\my@item@len}{\vbox{\halign{##1\hfil\cr\BODY\crcr}}}%
+ \setcounter{choice}{0}%
+}
+\end{codehigh}
+This language is for highlighting LaTeX2 classes and packages.
+Note that private commands and public commands are highlighted with different colors.
+
+The following example is typeset by \verb!codehigh! environment with option \verb!language=latex/latex3!.
+\begin{codehigh}[language=latex/latex3]
+\cs_new_protected:Npn \__codehigh_typeset_demo:
+ {
+ \__codehigh_build_code:
+ \__codehigh_build_demo:
+ \dim_set:Nn \l_tmpa_dim { \box_wd:N \g__codehigh_code_box }
+ \dim_set:Nn \l_tmpb_dim { \box_wd:N \g__codehigh_demo_box }
+ \par\addvspace{0.5em}\noindent
+ % more code
+ }
+\end{codehigh}
+This language is for highlighting LaTeX3 classes and packages.
+Note that private commands/variables and public commands/variables are highlighted with different colors.
+
+The following example is typeset by \verb!codehigh! environment with option \verb!language=latex/math!.
+\begin{codehigh}[language=latex/math]
+\begin{align}
+ \pi\left[\frac13z^3\right]\sin(2x+1)_0^4 = \frac{64}{3}\pi
+\end{align}
+\end{codehigh}
+
+The following example is typeset by \verb!codehigh! environment with option \verb!language=latex/table!.
+\begin{codehigh}[language=latex/table]
+\begin{tabular}[b]{|lc|r|}
+\hline
+One & Two & Three \\
+%\hline
+Four & Five & Six \\
+\hline%\hline\hline
+Seven & Eight & Nine \\
+\hline
+\end{tabular}
+\end{codehigh}
+
+\section{Highlighting Demo}
+
+The followings are typeset by \verb!demohigh! environment with option \verb!language=latex/table!.
+\begin{demohigh}[language=latex/table]
+\begin{tabular}{lccr}
+\hline
+ Alpha & Beta & Gamma & Delta \\
+\hline
+ Epsilon & Zeta & Eta & Theta \\
+\hline
+ Iota & Kappa & Lambda & Mu \\
+\hline
+\end{tabular}
+\end{demohigh}
+\begin{demohigh}[language=latex/table]
+\begin{tabular}{llccrr}
+\hline
+ Alpha & Beta & Gamma & Delta & Epsilon & Zeta \\
+\hline
+ Eta & Theta & Iota & Kappa & Lambda & Mu \\
+\hline
+\end{tabular}
+\end{demohigh}
+Note that \verb!demohigh! environment will measure the width of source lines.
+When it is too large, the result will be put below.
+
+\section{Highlighting File}
+
+Using \verb!\dochighinput! command, you can input and highlight some file.
+The last chapter of this manual is typeset with the following code line:
+\begin{codehigh}
+\dochighinput[language=latex/latex3]{codehigh.sty}
+\end{codehigh}
+
+\section{Customization}
+
+The following example changes default background colors with \verb!\CodeHigh! command:
+\begin{codehigh}
+\CodeHigh{language=latex/table,style/main=yellow9,style/code=red9,style/demo=azure9}
+\end{codehigh}
+\CodeHigh{language=latex/table,style/main=yellow9,style/code=red9,style/demo=azure9}
+Note that \verb!codehigh! package will load \verb!ninecolors!%
+\footnote{\url{https://www.ctan.org/pkg/ninecolors}} package for proper color contrast.
+\begin{demohigh}
+\begin{tabular}{lccr}
+\hline
+ Alpha & Beta & Gamma & Delta \\
+\hline
+ Epsilon & Zeta & Eta & Theta \\
+\hline
+ Iota & Kappa & Lambda & Mu \\
+\hline
+\end{tabular}
+\end{demohigh}
+
+To modify or add languages and themes, please read the source files
+\verb!codehigh.sty! and \verb!codehigh.lua! for reference.
+
+\chapter{Source Code}
+
+\dochighinput[language=latex/latex3]{codehigh.sty}
+
+\end{document}