summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/lualatex/pyluatex/example/typesetting-listings.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/lualatex/pyluatex/example/typesetting-listings.tex')
-rw-r--r--Master/texmf-dist/doc/lualatex/pyluatex/example/typesetting-listings.tex94
1 files changed, 94 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/lualatex/pyluatex/example/typesetting-listings.tex b/Master/texmf-dist/doc/lualatex/pyluatex/example/typesetting-listings.tex
new file mode 100644
index 00000000000..f83a6abd9a9
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/pyluatex/example/typesetting-listings.tex
@@ -0,0 +1,94 @@
+%% Copyright 2021-2022 Tobias Enderle
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+
+\documentclass{article}
+
+\usepackage{pyluatex}
+\usepackage{listings}
+\usepackage{xcolor}
+\lstset{
+ language=Python,
+ breaklines=true,
+ framesep=1ex,
+ frame=lrtb,
+ framerule=0pt,
+ numbers=none,
+ basicstyle=\ttfamily,
+ keywordstyle=\bfseries\color{green!40!black},
+ stringstyle=\bfseries\color{red!80!black},
+ identifierstyle=\color{blue},
+ backgroundcolor=\color{gray!10!white},
+}
+
+\usepackage{luacode}
+\begin{luacode}
+function pytypeset()
+ tex.print("\\begin{lstlisting}")
+ tex.print(pyluatex.get_last_code())
+ tex.print("\\end{lstlisting}")
+end
+
+function pytypeset_inline()
+ -- assume there is only one line of code in get_last_code()
+ tex.print("\\lstinline[columns=fixed]@" .. pyluatex.get_last_code()[1] .. "@")
+end
+\end{luacode}
+
+\newcommand*{\pytypeset}{%
+ \noindent\textbf{Input:}
+ \directlua{pytypeset()}
+ \textbf{Output:}
+ \begin{center}
+ \directlua{tex.print(pyluatex.get_last_output())}
+ \end{center}
+}
+\newcommand*{\coderaw}{\directlua{tex.print(pyluatex.get_last_code())}}
+\newcommand*{\codeinline}{\directlua{pytypeset_inline()}}
+\newcommand*{\outputraw}{\directlua{tex.print(pyluatex.get_last_output())}}
+
+\title{PyLuaTeX Example -- Typesetting Code Using the \emph{listings} Package}
+\author{Tobias Enderle}
+
+\begin{document}
+
+\maketitle
+
+\section*{Typesetting of Code Blocks and Ouput}
+\begin{pythonq}
+msg = 'Hello'
+
+print(msg)
+\end{pythonq}
+\pytypeset
+
+\section*{Typesetting of Inline Code and Ouput}
+Calling \pycq{print('test', end='')}\codeinline\ in Python outputs ``\outputraw''.
+
+\begin{python}
+x = 4
+\end{python}
+The value of \pyq{x}\codeinline\ is \outputraw.
+
+The result of \pyq{17 + 300}$\coderaw$ is \outputraw.
+
+\section*{Custom Environments}
+You can create a custom environment for typesetting:
+
+\newenvironment{typesetpython}
+{\PyLTVerbatimEnv\begin{pythonq}}
+{\end{pythonq}\pytypeset}
+
+\begin{typesetpython}
+msg = 'Custom environment'
+
+print(msg)
+\end{typesetpython}
+
+\end{document}