-
Notifications
You must be signed in to change notification settings - Fork 12
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Jon-Fredrik Nielsen
committed
Aug 17, 2020
1 parent
8f10317
commit 4bd1b28
Showing
1 changed file
with
192 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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: [email protected] | ||
%% | ||
%% Usolved problem: long lines of code that are wrapped with | ||
%% '...', and things thereafter being comments..... | ||
%% but i'm working on it ;-) | ||
%% | ||
%% Author: Florian Knorn, [email protected] | ||
%% | ||
%% 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'. |