From 4bd1b281b4e2a876b938f0abd5037a6db6c93cca Mon Sep 17 00:00:00 2001 From: Jon-Fredrik Nielsen Date: Mon, 17 Aug 2020 13:55:43 -0400 Subject: [PATCH] new file: seqcode.sty --- UserGuide/seqcode.sty | 192 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 UserGuide/seqcode.sty diff --git a/UserGuide/seqcode.sty b/UserGuide/seqcode.sty new file mode 100644 index 0000000..8f54790 --- /dev/null +++ b/UserGuide/seqcode.sty @@ -0,0 +1,192 @@ +%% +%% This is file `seqcode.sty' +%% +%% It is supposed to help you easily include MATLAB source code +%% into LaTeX document, but have it nicely highlighted, unsing +%% the great listings package. +%% +%% Usage: Include your MATLAB source code by using +%% +%% \begin{lstlisting} +%% YOUR CODE HERE +%% \end{lstlisting} +%% +%% or as an inline object via \seqcode{YOURCODE}. +%% +%% For your convenience, this package has the following options: +%% +%% - bw if you intend to print the document (highlighting done +%% via text formatting (bold, italic) and shades of gray) +%% +%% - numbered if you want line numbers +%% +%% - framed if you want a frame around the source code blocks +%% +%% - final if you have ``gloablly'' set the draft option, the +%% listings package will not output the code at all. to +%% force it to do so anyway, load this package with the +%% final option (passes the ``final'' on to listings). +%% +%% Example of use: \usepackage[numbered,framed]{seqcode} +%% in your document preamble. +%% +%% Note: inside code blocks you can 'escape' to LaTeX math mode +%% by using § YOUR LATEX CODE §, which is especially useful in +%% comments... +%% +%% Another feature of the listings package is that you can re- +%% place certain strings by LaTeX strings; this is used for +%% some relation symbols, see below... +%% +%% Mat Odijk pointed this out, you may include entire m-files +%% using the command \lstinputlisting{YOUR-FILE.m}. Thanks for +%% the tip! +%% +%% Feel free to edit things, and refer to the listings package +%% documentation for more infos. +%% +%% If you have any questions, feel free to ask: floz@gmx.de +%% +%% Usolved problem: long lines of code that are wrapped with +%% '...', and things thereafter being comments..... +%% but i'm working on it ;-) +%% +%% Author: Florian Knorn, floz@gmx.de +%% +%% Version history: +%% 1.2 -- Added \lstset{showstringspaces=false} +%% 1.1 -- Added \seqcode command and [final] option +%% 1.0 -- Release + +\def\fileversion{1.2} +\def\filedate{2005/11/17} + +\typeout{Package: `seqcode' \fileversion\space <\filedate>} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{seqcode}[\filedate\space\fileversion] + +% for bw-option +\newif\ifbw +\DeclareOption{bw}{\bwtrue} +\ifbw\typeout{seqcode: settings optimized for printing!} +\else\typeout{seqcode: settings optimized for display!}\fi + +% numbered option +\newif\ifnumbered +\DeclareOption{numbered}{\numberedtrue} + +% final option +\newif\iffinal +\DeclareOption{final}{\finaltrue} + +% for framed option +\newif\ifframed +\DeclareOption{framed}{\framedtrue} + +\DeclareOption*{% default + \PackageWarning{seqcode}{Unknown option `\CurrentOption' !}% +} +\ProcessOptions + +% with this command, you can typeset syntax highlighted seqcode ``inline'', +% for example when you talk about \seqcode{for}--loops ... +\newcommand{\seqcode}[1]{\lstinline[basicstyle=\lstbasicfont]|#1|} + +% check if color command exists +\ifx\color\undefined% + \RequirePackage{color}% +\fi + +% check if listings has been loaded +\ifx\lstset\undefined% + \iffinal + \RequirePackage[final]{listings} + \else + \RequirePackage{listings} + \fi +\fi + +% check if textcomp has been loaded (this package is needed +% for upright quotes '' (instead of typographic ones `´)... +\ifx\textasciigrave\undefined% + \RequirePackage{textcomp}% +\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% C O N F I G S --- C U S T O M I Z E H E R E % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% define the wanted font for all highlightings here +\def\lstbasicfont{\fontfamily{pcr}\selectfont} + +% now let's define our own version of matlab highlighting +\lstdefinelanguage{matlabfloz}{% + alsoletter={...},% + morekeywords={catch,continue,elseif,else,end,for,function,global, + if,otherwise,persistent,return,switch,try,while,...}, + morecomment=[l]{\#}, + morecomment=[s][\keywordcolor]{[}{]}, +} + +\newcommand\numstyle{\textcolor{black}} + +\lstdefinestyle{basic}{ + basicstyle={\small\ttfamily}, + keywordstyle={\keywordstyle}, + linewidth={\textwidth} +} + +\ifbw % use font formating and gray 'colors' + \newcommand\keywordcolor{\bfseries} + \lstset{language=matlabfloz, % use our version of highlighting + keywordstyle=\bfseries, % keywords in bold + commentstyle=\color[gray]{0.6}\itshape, % comments light gray and italic + stringstyle=\color[gray]{0.5} % strings darker gray + } +\else% notbw => use colors : ) + \newcommand\keywordcolor{\color[rgb]{0,0,1}} + \lstset{language=matlabfloz, % use our version of highlighting + keywordstyle=\color[rgb]{0,0,1}, % keywords + commentstyle=\color[rgb]{0.133,0.545,0.133}, % comments + stringstyle=\color[rgb]{0.627,0.126,0.941}, % strings + } +\fi%bw + +\lstset{% + basicstyle={\lstbasicfont\footnotesize}, % use font and smaller size + showstringspaces=false, % do not emphasize spaces in strings + tabsize=4, % number of spaces of a TAB + mathescape=true,escapechar=§, % escape to latex with §...§ + upquote=true, % upright quotes + aboveskip={1.5\baselineskip}, % a bit of space above + columns=fixed, % nice spacing + % + % the following is for replacing some matlab relations like >= or ~= + % by the corresponding LaTeX symbols, which are much easier to read ... +% literate=% +% {~}{{$\neg$}}1 % \neg +% {<=}{{\tiny$\leq$}}1 % \leq +% {>=}{{\tiny$\geq$}}1 % \geq +% {~=}{{\tiny$\neq$}}1 % \neq +% {delta}{{\tiny$\Delta$}}1% \Delta +} + +\ifnumbered% numbered option + \lstset{% + numbersep=3mm, numbers=left, numberstyle=\tiny, % number style + } +\fi + +\ifframed% framed option + \lstset{% + frame=single, % frame + } + \ifnumbered% + \lstset{% + framexleftmargin=6mm, xleftmargin=6mm % tweak margins + } + \fi +\fi + +\endinput +%% End of file `seqcode.sty'. \ No newline at end of file