Как стать автором
Обновить

Комментарии 33

У Typst есть CLI, такой же нативный бинарь, как и LaTeX.

Это прям совсем хорошо !

LaTex хорош со всех сторон! Единственное, я не считаю, что его просто читать в исходном виде и для простых текстов предпочитаю Markdown.

--Если вы пишите учебник по Си и вставляете листинги с Си-кодом в LaTex код, то препроцессор будет пытаться вставить include(ы), которых на самом деле нет и выдаст ошибку. Всё заклинит. Поэтому придется убирать символ # из листингов с кодом и писать справку, что надо подразумевать тут символ #.

А почему не использовать lstlisting для кода и тогда не будет этого минуса ?

Потому что препроцессор сработает раньше

Да - не подумал над этим.

Поэтому надо использовать другой препроцессор. Например M4.

Почему бы не использовать условные операторы и инклюды из самого латеха, не прибегая к сторонним препроцессорам?

Согласен, Latex в этом плане самодостаточен. Для примера можно посмотреть шаблон диссертации https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template

Я лично защитил диссертацию, используя этот шаблон Latex + Make

Но в целом статья хорошая, спасибо)

А LaTeX умеет своими внутренними средствами языка автоматически отсортировать по алфавиту строки в огромной таблице? Например в списке сокращений.

Список сокращений — не таблица, а специальный список. Например, предоставляемый пакетом nomencl. Такой список автоматически сортируется по символу сокращения с некоторыми нюансами.

Если предлагаемый по умолчанию вариант сортировки не подходит, то пакет даёт возможность указать свой префикс для сортировки. Если при этом кажется, что вручную вводить префикс неудобно, то можно создать свою команду, которая сама подставит префикс на основе, например, расшифровки сокращения.

Но в целом на ваш вопрос ответ положительный: да, LaTeX можно заставить даже таблицы сортировать.

Громоздко и интуитивно не понятно.
Поддерживать тот монструозный код та ещё морока.

Легче make(ом) sort вызвать и препроцессором M4 вставить результат.

А почему не сгенерить скриптом (на любом языке) файлик с таблицей, и не подключить его в основной файл \input-ом?

Я, например, именно так поступаю, когда надо что-то сложное в tex добавить.

А список литературы почему же руками форматируете?

Потому что LaTex не знает год издания и автора каждой конкретной книги. И эту инфу надо прописывать руками.

Я спросил не про содержание, а про оформление

Там список.

А мне нужна отсортированная таблица. По ходу без 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).

Есть ещё теоретически

\immediate\write18{sort acronyms_raw_list.tex -o -} % TeX

или

\@@input|"sort acronyms_raw_list.tex -o -" % LaTeX

Проверить не могу, потому что под рукой TeX нет :(

А если понадобится сортировка по второму столбцу?

Почему бы не использовать условные операторы и инклюды из самого латеха, не прибегая к сторонним препроцессорам?

А разве LaTex умеет сам автоматически удалять повторы строчек в таблице акронимов?

Я всё слегка подзабыл, но ТеХ позволяет создавать свои команды (функции, если хотите), которые могут быть полностью эквивалентны тем макросам, которые вы скармливаете препроцессору.

на LaTeX профессионально программируют так называемые технические писатели

ага. а верстальщики на html программируют. автор не знает самой сути того, о чем пишет.

Есть ли способ пометить участок кода так, чтобы Си препроцессор его не менял? Чтобы как встретилась строка #include "file.h" так и осталась в первозданном виде.

Нет.

Вам от препроцессора по сути нужно только переменные в тексте менять на актуальные пути. С этим справится более подходящий инструмент (например, sed или awk). Инклюды латекс умеет и сам.

Как сделать так, чтобы LaTeX проверял русскую грамотность?

В википедии пишут вот что:

\usepackage[russian]{babel} % Пакет поддержки русского языка

Включает ли этот "пакет" проверку орфографии - затрудняюсь сказать. Могу предположить, что да (на это намекает слово babel).

ЛатЕХ.

Потому что

LaT\varepsilon\chi

Нет, не включает. Я проверял свои тексты сторонними программами

Все очень интересно. Только LaTeX не язык "программирования", а тогда уж язык "разметки". Также как и HTML никогда был языком "программирования". А то развелось "программистов".

Как сделать так, чтобы LaTeX проверял русскую грамотность?

Попробуйте использовать aspell (https://dbader.org/blog/spell-checking-latex-documents-with-aspell). Кстати, рекомендую связку emacs + auctex + aspell. По моему опыту ничего лучше для набора латеховских текстов просто нет. Но требует некоторого времени для привыкания, да.

Есть редактор LyX. С ним проще)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории