Fix code in LaTeX literate output

pfffff
This commit is contained in:
Louis Gesbert 2023-01-10 12:05:34 +01:00
parent c31ebdf3f8
commit 41eb25e9e0
2 changed files with 2 additions and 683 deletions

View File

@ -122,8 +122,8 @@ let wrap_latex
\newunicodechar{}{$\rightarrow$}
\newunicodechar{}{$\neq$}
\newcommand*\FancyVerbStartString{```catala}
\newcommand*\FancyVerbStopString{```}
\newcommand*\FancyVerbStartString{\PYG{l+s}{```catala}}
\newcommand*\FancyVerbStopString{\PYG{l+s}{```}}
\fvset{
numbers=left,

View File

@ -1,681 +0,0 @@
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\usepackage{calc}
\usepackage{ifthen}
\usepackage{epsfig}
%\usepackage{bookman}
%\usepackage{booktabs}
\usepackage{upquote} % Uncurly the quotes
\usepackage{etoolbox} % for backquote fix
\usepackage[scaled=0.8]{DejaVuSans}
\usepackage[scaled=0.8]{DejaVuSansMono}
\usepackage{mdframed} % nice frames
\usepackage[nobottomtitles]{titlesec} % better titles
\usepackage{enumitem}
\usepackage{minted}
\usepackage[a4paper,landscape,margin=1cm,includehead,headsep=2ex,nofoot]{geometry}
\usepackage{fancyhdr}
\usepackage{hyperref}
\usemintedstyle{manni}
\setlist[itemize]{noitemsep, topsep=0pt}
% backquote dejavu fix
\makeatletter
\chardef\straightquote@code=\catcode`'
\chardef\backquote@code=\catcode``
\catcode`'=\active \catcode``=\active
\patchcmd{\@noligs}
{\textasciigrave}
{\fixedtextasciigrave}
{}{}
\newcommand{\fixedtextasciigrave}{%
\makebox[.5em]{\fontencoding{TS1}\fontfamily{fvs}\selectfont\textasciigrave}% Vera Sans
}
\catcode\lq\'=\straightquote@code
\catcode\lq\`=\backquote@code
\makeatletter
% fancyvrb and mdframed stuff
\newmdenv[bottomline=false,rightline=false]{topleft}
\newmdenv[topline=false,leftline=false]{bottomright}
\DefineVerbatimEnvironment{Verbacorner}{Verbatim}{}
\surroundwithmdframed[bottomline=false,rightline=false]{Verbacorner}
\fvset{commandchars=@\{\}}
\ifthenelse{\lengthtest { \paperwidth = 11in}}
{ \geometry{top=.5in,left=.5in,right=.5in,bottom=.5in} }
{\ifthenelse{ \lengthtest{ \paperwidth = 297mm}}
{\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} }
{\geometry{top=1cm,left=1cm,right=1cm,bottom=1cm} }
}
\pagestyle{empty}
%% \makeatletter
%% \renewcommand{\section}{\@startsection{section}{1}{0mm}%
%% {-1ex plus -.5ex minus -.2ex}%
%% {0.5ex plus .2ex}%x
%% {\normalfont\large\bfseries}}
%% \renewcommand{\subsection}{\@startsection{subsection}{2}{0mm}%
%% {-1ex plus -.5ex minus -.2ex}%
%% {0.5ex plus .2ex}%
%% {\normalfont\normalsize\bfseries}}
%% \renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{0mm}%
%% {-1ex plus -.5ex minus -.2ex}%
%% {1ex plus .2ex}%
%% {\normalfont\small\bfseries}}
%% \makeatother
%% \makeatletter
%% \let\origsection\section
%% \renewcommand\section{\vspace{5em}\origsection}
%% \makeatother
% Don't print section numbers
\setcounter{secnumdepth}{0}
\setlength{\parindent}{0pt}
\setlength{\parskip}{1ex}
\pagestyle{fancy}
\newcommand{\makeheader}[3]{
\fancyhead[L]{
\begin{minipage}{150pt}
\includegraphics[width=24mm]{by-sa.pdf}
\end{minipage}
}
\fancyhead[C]{
\LARGE{\bfseries #1}
}
\fancyhead[R]{
{\scriptsize
#2 $\cdot$ Revision \#1 \copyright\ \the\year$\quad$
\begin{minipage}{30pt}
\vspace{-3pt}
\includegraphics[width=\textwidth]{logo.pdf} %defined at bottom
\end{minipage}
}}
\fancyfoot[L]{}
\fancyfoot[C]{}
\fancyfoot[R]{}
}
\newenvironment{absolutelynopagebreak}
{\par\nobreak\vfil\penalty0\vfilneg
\vtop\bgroup}
{\par\xdef\tpd{\the\prevdepth}\egroup
\prevdepth=\tpd}
\newcommand{\vb}{\usefont{T1}{DejaVuSansMono-TLF}{b}{n}}
\newenvironment{libcomments}{\begin{itemize}[topsep=-10000pt]}{\end{itemize}}
\setlength{\headheight}{20.1pt}
\setlength{\headsep}{10pt}
\renewcommand{\familydefault}{\sfdefault} % everything sans-serif
%Url handling
\hypersetup{
colorlinks=true,
urlcolor=black,
linkcolor=black,
citecolor=black
}
% font size -> set to equivalent to footnotesize of 10 pt
% it affect only the \\normalsize command, all are still relative to default's
% article one (10pt)
\newcommand\articlenormalsize{\fontsize{10pt}{12pt}\selectfont}
\renewcommand\normalsize{\footnotesize}
% redefine sections padding
\makeatletter
\renewcommand{\section}{\@startsection{section}{1}{0mm}%
{-1ex plus -.5ex minus -.2ex}%
{0.5ex}%
{\normalfont\large\bfseries}}
\renewcommand{\subsection}{\@startsection{subsection}{2}{4mm}%
{-1ex}%
{0.5ex}%
{\normalfont\articlenormalsize\bfseries}}
\renewcommand{\subsubsection}{\@startsection{subsubsection}{3}{16mm}%
{-1ex plus -.5ex minus -.2ex}%
{1ex plus .2ex}%
{\normalfont\small\bfseries}}
\makeatother
%\pagestyle{empty}
% set section counter to 0
\setcounter{secnumdepth}{0}
% Text at right
%\raggedright
% Set up the interline space in tables
\renewcommand{\arraystretch}{0.0}
% https://github.com/gpoore/minted/issues/82
\makeatletter
\newenvironment{catala}{%
\VerbatimEnvironment
\let\FV@ListVSpace\relax
\begin{minted}[autogobble]{catala_en}}%
{\end{minted}}
\makeatother
% https://github.com/gpoore/minted/issues/82
\makeatletter
\newenvironment{catala-expr}{%
\VerbatimEnvironment
\let\FV@ListVSpace\relax
\begin{minted}[autogobble,firstline=2,escapeinside=||]{catala_en}}%
{\end{minted}}
\makeatother
\begin{document}
\makeheader{The Catala Syntax \hspace{2em}\small english version}{v0.8.0}{1}
% warning: this is repeated for p.2
% \begin{center}
% 2022-12-15
% \hfill
% {\Huge\bfseries\sffamily
% Catala Syntax Cheat Sheet}
% \hfill
% v.0.8.0
% \end{center}
% \hrule
\begin{multicols}{3}
\newlength\cola
\setlength\cola{\dimexpr .4\columnwidth -2\tabcolsep}
\newlength\colb
\setlength\colb{\dimexpr .6\columnwidth -2\tabcolsep}
\section{Literate programming}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
Heading & \begin{catala}
# Title
### Sub-subtitle
\end{catala}
\\
Code block &
\begin{catala}
```catala
```
\end{catala}
\\
Metadata block & \begin{catala}
```catala-metadata
```
\end{catala}
\\
File inclusion & \begin{catala}
> Include: foo.catala_en
\end{catala}
\\
\end{tabular}
%% \newcommand*\FancyVerbStartString{```catala}
\newcommand*\FancyVerbStopString{```}
\section{Types and literals}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
\begin{catala-expr}
```catala
boolean
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
true false
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
integer
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
65536
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
decimal
```
\end{catala-expr}
& \begin{catala-expr}
```catala
65536.262144 37%
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
money
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
$1,234,567.89
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
date
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
||2021-01-31||
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
duration
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
254 day 4 month 1 year
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
collection integer
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
[ 12; 24; 36 ]
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
decimal depends on money
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
f of x equals x / $12.0
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
Struct1
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
Struct1 { -- fld1: 9 -- fld2: false }
```
\end{catala-expr}
\\
\begin{catala-expr}
```catala
Enum1
```
\end{catala-expr}
&
\begin{catala-expr}
```catala
Case1 content 12 Case2
```
\end{catala-expr}
\\
\end{tabular}
\section{Expressions}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
Local definition & \begin{catala-expr}
```catala
let x equals 36 - 5 in ...
```
\end{catala-expr}
\\
Pattern matching & \begin{catala-expr}
```catala
match expr with pattern
-- Case1 of x: ...
-- Case2 : ...
```
\end{catala-expr}
\\
Pattern test and optional binding & \begin{catala-expr}
```catala
expr with pattern Case1
expr with pattern Case1 of x
and x >= 2
```
\end{catala-expr}
\\
Structure field access & \begin{catala-expr}
```catala
struc1.fld2
```
\end{catala-expr}
\\
Function call & \begin{catala-expr}
```catala
f of $44.50
```
\end{catala-expr}
\\
Subscope variable & \begin{catala-expr}
```catala
sub1.var0
```
\end{catala-expr}
\\
Direct scope call & \begin{catala-expr}
```catala
outut of Scope1
with { -- fld1: 9 -- fld2: true }
```
\end{catala-expr}
\\
Conditional & \begin{catala-expr}
```catala
if ... then ... else ...
```
\end{catala-expr}
\\
\end{tabular}
\section{Metadata declaration}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
Structure declaration &
\begin{catala-expr}
```catala
declaration structure Struct1:
data fld1 content integer
data fld2 content boolean
\end{catala-expr}
\\
Enumeration declaration & \begin{catala-expr}
```catala
declaration enumeration Enum1:
-- Case1 content integer
-- Case2
```
\end{catala-expr}
\\
Scope declaration & \begin{catala-expr}
```catala
declaration scope Scope1:
internal var1 content integer
internal var2 condition
sub1 scope Scope0
```
\end{catala-expr}
\\
Input-output qualifiers & \begin{catala-expr}
```catala
internal var1 content ...
output var3 content ...
input var4 content ...
input output var5 content ...
context var6 content ...
context output var7 content ...
```
\end{catala-expr}
\\
State transitions declaration & \begin{catala-expr}
```catala
internal var1 content ...
state before_f
state after_f
```
\end{catala-expr}
\\
\end{tabular}
\section{Operators and built-ins}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
Logical operators & \begin{catala-expr}
```catala
not a
a and b
a or b # "or otherwise"
a xor b # exclusive or
```
\end{catala-expr}
\\
Arithmetic & \begin{catala-expr}
```catala
- a
a + b a - b
a * b a / b
```
\end{catala-expr}
\\
Comparison &
\begin{catala-expr}
```catala
a = b a != b
a > b a < b
a >= b a <= b
```
\end{catala-expr}
\\
Conversions & \begin{catala-expr}
```catala
decimal of 44
money of 23.15
```
\end{catala-expr}
\\
Rounding & \begin{catala-expr}
```catala
round of $9.99
```
\end{catala-expr}
\\
Date parts & \begin{catala-expr}
```catala
get_day of ...
get_month of ...
get_year of ...
```
\end{catala-expr}
\\
\end{tabular}
\columnbreak
\section{Scope definition}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
Scope use & \begin{catala-expr}
```catala
scope Scope1: ...
```
\end{catala-expr}
\\
Use-wide condition & \begin{catala-expr}
```catala
scope Scope1
under condition var1 >= 2: ...
```
\end{catala-expr}
\\
Unconditional definition & \begin{catala-expr}
```catala
definition var1 equals ...
```
\end{catala-expr}
\\
Conditional definition & \begin{catala-expr}
```catala
definition var1
under condition ...
consequence equals ...
```
\end{catala-expr}
\\
Rule\newline(definition for conditions) & \begin{catala-expr}
```catala
rule var2
under condition var1 >= 2
consequence fulfilled
```
\end{catala-expr}
\\
Negative rule & \begin{catala-expr}
```catala
rule var2
under condition var1 = 0
consequence not fulfilled
```
\end{catala-expr}
\\
Function definition/rule & \begin{catala-expr}
```catala
definition f of x equals ...
```
\end{catala-expr}
\\
Labeled definition or rule & \begin{catala-expr}
```catala
label lbl1 definition var1 ...
```
\end{catala-expr}
\\
Exception to label & \begin{catala-expr}
```catala
exception lbl1 definition var1 ...
```
\end{catala-expr}
\\
Exception to implicit & \begin{catala-expr}
```catala
exception definition var1 ...
```
\end{catala-expr}
\\
State definition & \begin{catala-expr}
```catala
definition var1
state before_f
equals ...
```
\end{catala-expr}
\\
Assertion & \begin{catala-expr}
```catala
assertion ...
```
\end{catala-expr}
\\
\end{tabular}
\section{Collection operations}
\begin{tabular}{@{}p{\cola}p{\colb}@{}}
Presence test & \begin{catala-expr}
```catala
coll contains 3
```
\end{catala-expr}
\\
Cardinal & \begin{catala-expr}
```catala
number of coll
```
\end{catala-expr}
\\
Existence test & \begin{catala-expr}
```catala
exists x among coll such that x >= 2
```
\end{catala-expr}
\\
For all test & \begin{catala-expr}
```catala
for all x among coll we have x >= 2
```
\end{catala-expr}
\\
Map & \begin{catala-expr}
```catala
(x + 2) for x among coll
```
\end{catala-expr}
\\
Filter & \begin{catala-expr}
```catala
x among coll such that x >= 2
```
\end{catala-expr}
\\
Merge & \begin{catala-expr}
```catala
coll1 ++ coll2
```
\end{catala-expr}
\\
Aggregation & \begin{catala-expr}
```catala
sum integer coll
```
\end{catala-expr}
\\
Count & \begin{catala-expr}
```catala
number of coll
```
\end{catala-expr}
\\
Extremum & \begin{catala-expr}
```catala
maximum of coll
or if collection empty then -1
```
\end{catala-expr}
\\
Arg-extremum & \begin{catala-expr}
```catala
x among coll
such that (x * x) is minimum
or if collection empty then -1
```
\end{catala-expr}
\\
\end{tabular}
\end{multicols}
\vfill
\end{document}