Алгоритми та списки джерел

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.

Назад до Польові набори