Как я могу получить список доступных команд в латексном документе? - PullRequest
2 голосов
/ 02 мая 2009

Я не знаю много о самом латексе. Все, что мне нужно, это список доступных команд. Все стандартные команды, которые приходят из объявлений "usepackage".

В настоящее время я сосредоточен на MiKTeX, так что, если MiKTeX действительно предоставляет, это, конечно, здорово, в противном случае у меня возникает идея разбора некоторых файлов .sty или .def. Но я не понимаю синтаксис этих файлов. Что я должен искать в этих файлах, если разбор является единственным решением?

Ответы [ 4 ]

3 голосов
/ 02 мая 2009

Парсинг TeX-кода ни в коем случае не единственный способ получить список всех управляющих последовательностей. Другие возможности включают в себя:

  • заставляет TeX выгружать свои структуры данных после загрузки соответствующего пакета, а затем анализировать файл дампа; когда вы запускаете команду latex, то на самом деле происходит то, что двоичный файл tex загружает файл дампа latex.fmt, который был сгенерирован с помощью того же двоичного кода, который анализирует весь встроенный код LaTeX и выдает его структуры данных;

  • изменить исходный код TeX для вывода чего-либо каждый раз, когда определяется последовательность управления;

  • запустить TeX в отладчике с поддержкой сценариев, вставить точку останова, в которой последовательность вставлена ​​в хэш-таблицу, и заставить скрипт вывести имя последовательности.

Ни один из них, вероятно, не будет особенно простым решением, но, вероятно, проще, чем написание парсера, эквивалентного TeX. Для начала посмотрите TeX: Программа и исходный код вашей системы TeX.

Если ваша цель заключается в предоставлении «intellisense» в редакторе, простой список последовательностей команд не сильно поможет: когда пользователь вводит \ref{, вы должны предложить список меток, определенных в документе ( бонусные баллы, если набрать Chapter~\ref{ приводит к списку меток глав, а не ко всем меткам); для \settowidth{ - список команд длины; для \begin{ - список сред; и т.д.

Вы могли видеть, что делает AUCTeX (режим Emacs); он имеет ограниченный синтаксический анализатор на основе регулярных выражений, который обрабатывает общий случай, и набор библиотек для конкретных пакетов, которые расширяют функциональность.

1 голос
/ 02 мая 2009

Мне кажется, вы могли бы использовать что-то вроде "шпаргалки". Здесь есть один , но их наверняка будет больше.

0 голосов
/ 04 мая 2009

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

В последнем случае последние дистрибутивы TeX включают команду texdoc, которая найдет и откроет документацию для всего, что вы спросите, например, texdoc hyperref. Для удобства определены псевдонимы: texdoc koma найдет и откроет руководство по скрипту koma, даже если фактический файл называется scrguien.pdf.

0 голосов
/ 02 мая 2009

latex - это макропакет, и макросистемы (за исключением некоторых гигиенических), как известно, трудно анализировать.

Тот факт, что по прошествии всех этих лет нет приличного конвертера из латекса в html, подтверждает это.

Но в любом случае, существующие могут дать вам пример того, как действовать, искать latex2html (в Perl), tex2ht и hevea

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...