Алгоритми та списки джерел
algorithm2e ескіз і списки для реального коду.
Алгоритми та списки джерел
Документи представляють код у двох різних формах, і LaTeX має окремий інструмент для кожної. Псевдокод — це ідеалізований ескіз алгоритму, набраний із ключовими словами та математикою, а пакет algorithm2e обробляє його. Списки вихідних кодів — це реальний код, дослівно відтворений моноширинним шрифтом, і пакет listings обробляє їх. Вибір невідповідного інструменту є звичайним джерелом тертя, тому допомагає побачити і те, і інше.
Псевдокод з algorithm2e
\usepackage[ruled,vlined]{algorithm2e}\begin{algorithm}\caption{Train}\While{not converged}{ Update $\theta$\;}\end{algorithm}Параметри пакета встановлюють візуальний стиль: ruled малює горизонтальні лінії над і під алгоритмом і розміщує заголовок угорі, умовність, яку очікує більшість місць, тоді як vlined малює маленьку вертикальну лінію, що позначає розмір кожного блоку, тому вкладення залишається читабельним без великих відступів. Середовище algorithm — це float, як фігура, тому воно містить \caption, який дає йому номер для \ref для цитування.
Усередині \While{condition}{body} набирає цикл із виділеним жирним ключовим словом, умовою та тілом у вигляді блоку з відступом. \For, \If і \Return дотримуються того самого шаблону. Оператори закінчуються символом \;, який друкує знак закінчення рядка та починає новий рядок. Забути це — класична помилка новачка: рядки збігаються. Оскільки це звичайний LaTeX, математика на кшталт $\theta$ працює вбудовано, для чого і призначений псевдокод: описує правило оновлення в нотації, а не в будь-якій конкретній мові.
Справжній код зі списком
\usepackage{listings}\begin{lstlisting}[language=Python]def f(x): return x**2\end{lstlisting}Середовище lstlisting точно відтворює його вміст, зберігаючи пробіли та трактуючи спеціальні символи буквально, тож ви можете вставляти код, нічого не екрануючи. Параметр language=Python вмикає підсвічування ключових слів для цієї мови, а listings знає десятки інших. За замовчуванням результат буде простим. Більшість людей додають одноразовий \lstset{basicstyle=\ttfamily\small, numbers=left} у преамбулу, щоб отримати моноширинний шрифт розумного розміру з номерами рядків. Щоб включити файл безпосередньо замість вставки, \lstinputlisting[language=Python]{train.py} зчитує його з диска, завдяки чому документ синхронізується з фактичним джерелом. Якщо вам потрібне кольорове високоякісне підсвічування, пакет minted є сильнішою альтернативою, за рахунок необхідності зовнішнього інструменту та виходу оболонки.
Вибір між ними
Використовуйте псевдокод у паперовому тексті, щоб передати ідею, і зарезервуйте дослівні списки для артефактів, де точний код має значення, наприклад додатки чи описи інструментів. Поширеною помилкою є розміщення lstlisting всередині фрейму Beamer без параметра [fragile], що завершується непрозорою помилкою; таке ж застереження з’являється в першій колоді Beamer.