Комментарии 33
Вы пробовали Typst? Говорят, он удобнее.
С тем же успехом я могу спросить почему не Sphinx?
https://www.sphinx-doc.org/en/master/index.html

Это прям совсем хорошо !
LaTex хорош со всех сторон! Единственное, я не считаю, что его просто читать в исходном виде и для простых текстов предпочитаю Markdown.
--Если вы пишите учебник по Си и вставляете листинги с Си-кодом в LaTex код, то препроцессор будет пытаться вставить include(ы), которых на самом деле нет и выдаст ошибку. Всё заклинит. Поэтому придется убирать символ # из листингов с кодом и писать справку, что надо подразумевать тут символ #.
А почему не использовать lstlisting для кода и тогда не будет этого минуса ?
Почему бы не использовать условные операторы и инклюды из самого латеха, не прибегая к сторонним препроцессорам?
Согласен, Latex в этом плане самодостаточен. Для примера можно посмотреть шаблон диссертации https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template
Я лично защитил диссертацию, используя этот шаблон Latex + Make
Но в целом статья хорошая, спасибо)
А LaTeX умеет своими внутренними средствами языка автоматически отсортировать по алфавиту строки в огромной таблице? Например в списке сокращений.
Список сокращений — не таблица, а специальный список. Например, предоставляемый пакетом nomencl. Такой список автоматически сортируется по символу сокращения с некоторыми нюансами.
Если предлагаемый по умолчанию вариант сортировки не подходит, то пакет даёт возможность указать свой префикс для сортировки. Если при этом кажется, что вручную вводить префикс неудобно, то можно создать свою команду, которая сама подставит префикс на основе, например, расшифровки сокращения.
Но в целом на ваш вопрос ответ положительный: да, LaTeX можно заставить даже таблицы сортировать.
Громоздко и интуитивно не понятно.
Поддерживать тот монструозный код та ещё морока.
Легче make(ом) sort вызвать и препроцессором M4 вставить результат.
Там список.

А мне нужна отсортированная таблица. По ходу без Make и препроцессора M4 тут не обойтись.
Выше уже ответили. Так-то tex полный по тьюрингу если не ошибаюсь. Но понятное дело в таких случаях проще использовать более подходящие инструменты.
Вот так выглядит сортировка таблицы при участии make
ACRONYMS_RAW_FILE := $(ACRONYMS_DIR)/acronyms_raw_list.texi
PHONY:sort_acronyms
sort_acronyms: $(ACRONYMS_RAW_FILE)
$(info Sort acronyms $(ACRONYMS_RAW_FILE))
sort $(ACRONYMS_RAW_FILE) -o $(ACRONYMS_RAW_FILE)
и вставка результата препроцессором M4
\begin{tabular} {ll}
Акроним & Расшифровка \\
\hline
sinclude(`acronyms_raw_list.texi')
\end{tabular}
Ну что может быть еще проще?
Формально вы спрашивали может ли это LaTeX, ответ может. Кроме того, я указал что да, для таких целей проще и удобнее другие средства.
Мне всё равно кажется, что препроцессор - лишняя сущность. Я бы сделал как-то так:
\begin{tabular} {ll}
Акроним & Расшифровка \\
\hline
\stealfile{acronyms_raw_list.tex}
\end{tabular}
Где stealfile - это моя команда импорта по относительным путям, а файл acronyms_raw_list.tex был бы сгенерирован отдельной программой (в моём случае - консольным скриптом nodejs).
А если понадобится сортировка по второму столбцу?
Почему бы не использовать условные операторы и инклюды из самого латеха, не прибегая к сторонним препроцессорам?
А разве LaTex умеет сам автоматически удалять повторы строчек в таблице акронимов?
Я всё слегка подзабыл, но ТеХ позволяет создавать свои команды (функции, если хотите), которые могут быть полностью эквивалентны тем макросам, которые вы скармливаете препроцессору.
на LaTeX профессионально программируют так называемые технические писатели
ага. а верстальщики на html программируют. автор не знает самой сути того, о чем пишет.
Есть ли способ пометить участок кода так, чтобы Си препроцессор его не менял? Чтобы как встретилась строка #include "file.h" так и осталась в первозданном виде.
Нет.
Вам от препроцессора по сути нужно только переменные в тексте менять на актуальные пути. С этим справится более подходящий инструмент (например, sed или awk). Инклюды латекс умеет и сам.
Как сделать так, чтобы LaTeX проверял русскую грамотность?
В википедии пишут вот что:
\usepackage[russian]{babel} % Пакет поддержки русского языка
Включает ли этот "пакет" проверку орфографии - затрудняюсь сказать. Могу предположить, что да (на это намекает слово babel).
Все очень интересно. Только LaTeX не язык "программирования", а тогда уж язык "разметки". Также как и HTML никогда был языком "программирования". А то развелось "программистов".
Как сделать так, чтобы LaTeX проверял русскую грамотность?
Попробуйте использовать aspell (https://dbader.org/blog/spell-checking-latex-documents-with-aspell). Кстати, рекомендую связку emacs + auctex + aspell. По моему опыту ничего лучше для набора латеховских текстов просто нет. Но требует некоторого времени для привыкания, да.
Есть редактор LyX. С ним проще)
Вёрстка Учебника (LaTeX + CPP + GNU Make + Jenkins = Учебник)