"Nezbytným krokem k tomu, abyste od života získali věci, po kterých toužíte, je rozhodnout se, co vlastně chcete."
Občas potřebuji vložit do LaTeXu nějaký zdrojový kód a zdá se, že jsem konečně našel asi nejpohodlnější cestu.
Po delším čase testování různých zvýrazňovačů (desktop aplikací, online nástrojů a skriptů přímo pro Matlab) se mi zdá, že jsem našel nejlepší alternativu.
V Matlabu pomocí funkce Publish si exportuji zdrojový kód s obrázky (viz článek Matlab: publikování m-filů), s pomocí upraveného xsl souboru.
Výsledný kód pak zkopíruji do rozpracovaného dokumentu, nebo do šablony.
Šablonu LaTeXu pro zvýraznění vloženého kódu Matlabu i xsl soubor (co je to viz Použití hotové šablony pro export - soubor xsl) si ode mě můžete stáhnout - LaTeX šablona pro zvýraznění kódu z Matlabu.
Jedná se o balík LaTeXu, který si můžete upravit podle svých barevných přání. Matlabovský kód pak stačí při použití definic níže (Vlastní nastavení zvýraznění) vložit do prostředí:
\\begin{lstlisting}
% kod v Matlabu
\\end{lstlisting}
% zakladni nastaveni
\\documentclass{article}
% jazyk a kodovani
\\usepackage[czech]{babel}
\\usepackage[cp1250]{inputenc}
% vzhled stranky (okraje)
\\usepackage[top=3cm, bottom=3cm, right=2.5cm, left=2.5cm]{geometry}
% balik fontu
\\usepackage{courier}
% balik barev
\\usepackage{color}
% balik prostredi zdrojovych kodu
\\usepackage{listings}
% definice vlastnich barev
\\definecolor{darkgreen}{rgb}{0,0.5,0}
\\definecolor{gray}{rgb}{0.5,0.5,0.5}
\\lstset{language=Matlab,
% vycet klicovych slov, ktera se zvyrazni
keywords={break,case,catch,continue,else,elseif,end,for,function,
global,if,otherwise,persistent,return,switch,try,while},
% zakladni styl
basicstyle=\\ttfamily,
% styl klicovych slov
keywordstyle=\\color{blue},
% styl komentaru
commentstyle=\\color{darkgreen},
% styl retezcu
stringstyle=\\color{red},
% zobrazeni ramecku kolem kodu; none|single
frame=none,
% zobrazeni cislovani radku
numbers=left,
% styl cislovani radku
numberstyle=\\tiny\\color{gray},
% krok zobrazeni cisel radku; 0 = nezobrazovat
stepnumber=1,
% odsazeni cislovani radku
numbersep=10pt,
% barva pozadi
backgroundcolor=\\color{white},
% default velikost tabulky
tabsize=4,
% automaticke zalomeni radku
breaklines=true,
% zobrazit mezery v kodu (jako specialni znak)
showspaces=false,
% zobrazit mezery v retezcich (jako specialni znak)
showstringspaces=false
}
\\begin{document}
% zacatek prostredi kodu
\\begin{lstlisting}
function y = moje_funkce(x)
% Tohle je komentar.
s = 'Ahoj, ja jsem retezec.';
y = x + 1;
if (x == 0)
disp('Nula!')
else
disp('Neni nula.')
end
end
\\end{lstlisting}
\\end{document}
Vložení kódu:
\lstinputlisting[firstline=55,lastline=59]{CODE/zdrojak.m}
Příklad byl založen na Publish to latex with syntax highlighting (EN).
Manuál LaTeX/Packages/Listings (EN).
.