Pakiet LaTeX do podświetlania składni kodu w różnych językach

Szukam pakietu LaTeX, który podświetla składnię w kodzie. Na przykład teraz używam bloku verbatim do pisania kodu:

\begin{verbatim}
    <html>
       <head>
           <title>Hello</title>
       </head>
       <body>Hello</body>
    </html>
\end{verbatim}

I to działa dobrze, aby wyświetlić kod na moim dokumencie. Ale załóżmy, że chciałem podkreślić znacznik HTML tak, jak IDE w dokumencie wyjściowym? czy jest jakaś paczka, która mogłaby pomóc?

Chciałbym zrobić to samo dla różnych języków, takich jak Java, C#, HTML, CSS i tak dalej.

Author: Matthias Braun, 2008-11-18

7 answers

Możesz użyć pakietu listings . Obsługuje wiele różnych języków i istnieje wiele opcji dostosowywania wyjścia.

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}
 162
Author: ChrisN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-18 23:43:01

Po zadaniu podobnego pytania stworzyłem kolejny pakiet, który używa pigmentów i oferuje sporo więcej opcji niż texments. Nazywa się minted i jest dość stabilny i użyteczny.

Żeby się pochwalić, oto kod podświetlony wybitymi:

Przykładowy kod

 149
Author: Konrad Rudolph,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Polecam Pigmenty . Akceptuje fragment kodu w dowolnym języku i wyświetla podświetlony Kod LaTeX. Wykorzystuje pakiety fancyvrb i color do produkcji swoich danych wyjściowych. Osobiście wolę go od pakietu ofertowego. Myślę, że fancyvrb daje znacznie ładniejsze rezultaty.

 21
Author: reprogrammer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-20 21:39:11

IGrind robi to. Jest to dojrzały Pakiet LaTeX, który istnieje od czasów, gdy adam był kowbojem i ma wsparcie dla wielu języków programowania.

 11
Author: ConcernedOfTunbridgeWells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-20 20:25:49

Użyłbym wybity pakiet Jak wspomniano od dewelopera Konrad Rudolph zamiast listing pakiet . Oto dlaczego:

Listing package

Pakiet listingu domyślnie nie obsługuje kolorów. Aby użyć kolorów, musisz dołączyć pakiet kolorów i samodzielnie zdefiniować reguły kolorów za pomocą polecenia \lstset, Jak wyjaśniono dla kodu matlab tutaj.

Ponadto pakiet listing nie działa dobrze z unicode, ale możesz naprawić te problemy, jak wyjaśniono tutaj i tutaj .

Następujący kod

\documentclass{article}
\usepackage{listings}

\begin{document}
\begin{lstlisting}[language=html]
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>Hello</body>
</html>
\end{lstlisting}
\end{document}

Tworzy następujący obrazek:

Tutaj wpisz opis obrazka

paczka wybita

Wybity Pakiet obsługuje kolory, unicode i wygląda niesamowicie. Jednak, aby go używać, musisz mieć python 2.6 i pigmenty . W Ubuntu możesz sprawdzić swoją wersję Pythona w terminalu za pomocą

python --version

Oraz możesz zainstalować pigmenty za pomocą

sudo apt-get install python-pygments

Następnie, ponieważ minted wywołuje pygments, musisz skompilować go za pomocą - shell-escape w ten sposób

pdflatex -shell-escape yourfile.tex

Jeśli używasz edytora latex, takiego jak TexMaker czy coś takiego, polecam dodać polecenie user-command, abyś mógł je jeszcze skompilować w edytorze.

Następujący kod

\documentclass{article}
\usepackage{minted}
\begin{document}

\begin{minted}{html}
    <!DOCTYPE html>
    <html>
       <head>
           <title>Hello</title>
       </head>

       <body>Hello</body>
    </html>
\end{minted}
\end{document}

Tworzy następujący obrazek:

Tutaj wpisz opis obrazka

 10
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 12:34:29

Najczęściej używam lstlistingów w papierach, ale do kolorowych wydruków (do slajdów) używam pigmentów.

 4
Author: Paul Biggar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-05 17:27:16

Sugerowaĺ 'bym zdefiniowanie wĹ' asnego pakietu w oparciu o nastÄ ™ pujÄ ... cy kod tex-a; daje to peĹ 'nÄ ... wolnoĹ" ć. http://ubuntuforums.org/archive/index.php/t-331602.html

 -1
Author: okm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-14 17:13:23