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).
Tento web jsem zakládal na střední, v roce 2008. Je zde hlavně archiv mé tvorby.
Aktuální věci publikuji kvůli úspoře času na Twitter.
Honza
"To, co druzí dělají, může být podnětem našich pocitů, nikoli však jejich příčinou."