\documentclass[a4paper]{article} \def\id{my previous definition} \usepackage{pseudo} \title{Tests for the \textsf{pseudo} package} \author{Magnus Lie Hetland} \begin{document} \maketitle \noindent This document is an attempt to use the features of the \textsf{pseudo} package without any other dependencies (as opposed to the \textsf{pseudo} documentation), e.g., to determine whether it's usable with an older \TeX\ distribution. \section*{Fonts and styling} The previous definition of \verb|\id| is: \id\\ \let\id\pseudoid \bigskip \noindent \begin{tabular}{@{}ll@{}} \verb|\cmd| & \verb|\pseudocmd|\\ \kw{while} & \pseudokw{while}\\ \cn{false} & \pseudocn{false}\\ \id{rank} & \pseudoid{rank}\\ \st{Hello!} & \pseudost{Hello!}\\ \pr{Euclid}(a b) & \pseudopr{Euclid}(a b)\\ \fn{length}(A) & \pseudofn{length}(A)\\ \fn{length}[A] & \pseudofn{length}[A]\\ \ct{Important!} & \pseudoct{Important!}\\ \end{tabular} {\pseudoset{ kwfont=KW:~, cnfont=CN:~, idfont=ID:~, stfont=ST:~, st-left=[, st-right=], prfont=PR:~, fnfont=FN:~, ctfont=CT:~, ct-left=[, ct-right=], } \bigskip \noindent \begin{tabular}{@{}ll@{}} \verb|\cmd| & \verb|\pseudocmd|\\ \kw{while} & \pseudokw{while}\\ \cn{false} & \pseudocn{false}\\ \id{rank} & \pseudoid{rank}\\ \st{Hello!} & \pseudost{Hello!}\\ \pr{Euclid}(a b) & \pseudopr{Euclid}(a b)\\ \fn{length}(A) & \pseudofn{length}(A)\\ \fn{length}[A] & \pseudofn{length}[A]\\ \ct{Important!} & \pseudoct{Important!}\\ \end{tabular}} % The one on the line is ignored: \begin{pseudo}[hpad, dim-color=red, kw][dim-color=blue, dim] foo \\[hl] bar \end{pseudo} \noindent Should be \verb|\fn{test}[A]| followed by \verb|(B)| in normalfont: \fn{test}[A](B) \bigskip \noindent Should be \verb|\fn{test}(A)| followed by \verb|[B]| in normalfont: \fn{test}(A)[B] \section*{Declarations and definitions} \DeclarePseudoComment \Imp {Important!} \DeclarePseudoConstant \False {false} \DeclarePseudoFunction \Ln {length} \DeclarePseudoIdentifier \Rank {rank} \DeclarePseudoKeyword \While {while} \DeclarePseudoNormal \Error {halt with an error message} \DeclarePseudoProcedure \Euclid {Euclid} \DeclarePseudoString \Hello {Hello!} \begin{pseudo*} $x = y$ \qquad \Imp \\ \False \\ \Ln(A) or \Ln[A] \\ \Rank \\ \While \\ \Error \\ \Euclid(a, b) \\ \Hello \end{pseudo*} \pseudodefinestyle{mystyle}{ font = \Large } \begin{pseudo*}[mystyle] Hello, world! \end{pseudo*} \section*{Notation} $A[1\..n] \== B[2\..n+1]$ \\ $A[1\dts n] \eqs B[2\dts n+1]$ \\ \noindent $\id{foo-bar:baz}$ \noindent {\pseudoset{eqs-pad=10mu, eqs-scale=2, eqs-sep=5mu}$x\==y$} \begin{pseudo*}[kw] keyword \tn{normal} keyword \nf normal \end{pseudo*} \section*{Numbering and indentation} \begin{pseudo}[start=2, label=(\Roman*), label-align=l, ref=\Roman*] one \\ two \label{linetwo} \\* ? & three \\ \end{pseudo} \begin{pseudo}* \hd{Header}(\id{args}) \\ first line \end{pseudo} \noindent Reference to line~\ref{linetwo}. \begin{pseudo}[hpad=1cm, hsep=.1cm, indent-length=2cm, indent-level=1] A \\+ B \\++ C \\- D \\--- E \end{pseudo} \begin{pseudo*}[indent-text={otherwise\ }] if this \\+ then that \\- otherwise something else \end{pseudo*} \section*{Layout} Here's a compact piece of pseudocode: \begin{pseudo*}[kw, compact] print \st{42} \end{pseudo*} \noindent Automatically compact: \fbox{\begin{pseudo*} In a box. \end{pseudo*}} \begin{pseudo}[left-margin=\parindent] indented \end{pseudo} \begin{pseudo}[line-height=2] lines \\ far \\ apart \end{pseudo} \begin{pseudo}[parskip=1cm, topsep=1cm, partopsep=1cm] custom parskip, topsep and partopsep \end{pseudo} \section*{Overlays etc.} Ignored outside \textsf{beamer}. \begin{pseudo}[pause, kwfont<3>=\nf, unknown<3>=42] foo \\<2> % bar \\ <3> % Dosn't work in older xparse versions baz \end{pseudo} % Things that could also be tested: % begin-tabular % bol % bol-append % bol-prepend % eol % eol-append % eol-prepend % preamble % prefix % pseudoeq % pseudoslash % setup % setup-append % setup-prepend % starred \end{document}