
Я использую l3doc
для написания документа для своего пакета. В документе мне нужно описать макросы, окружения и опции пакета. Я начал использовать function
только окружение. После того, как @egreg дал мне совет (Спасибо!), я нашел окружение environment
. Поскольку я не нашел документ для l3doc
. Я столкнулся с еще большими проблемами. Вот пример:
\documentclass{l3doc}
\usepackage{lipsum} % to generate some text
\begin{document}
\lipsum
\begin{function}{\macro}
this is a macro.
\end{function}
\begin{environment}{env}
this is an env.
\end{environment}
\begin{function}{opt}
\begin{syntax}
opt = \meta{a}
\end{syntax}
this is an opt.
\end{function}
\PrintIndex
\end{document}
Я компилирую его с помощью команды ниже:
pdflatex example
makeindex -s l3doc.ist example
pdflatex example
pdflatex example
Результат выглядит так:
Есть несколько проблем:
- Вы видите, что запись
env
повторяется дважды. - Номер страницы записи
env
неверен. - Запись
opt
должна быть проиндексирована под ,O
а не подP
. Поскольку это опция, а не среда, я не могу использоватьenvironment
. Мне нужноsyntax
.
Спасибо за любую помощь.
решение1
Проблема в том, что это l3doc
на самом деле что-то внутреннее по отношению к проекту и не совсем то, что мы считаем стабильным или должным образом документированным. Короче говоря, это набор хаков и дополнений для документации, с которыми мы экспериментировали и которые нашли полезными для наших собственных проектов, но так и не дошли руки до их завершения и написания надлежащей документации.
Вы можете получить доступ к документации, которая там есть, набрав текст l3doc.dtx
, но затем вы поймете, что я имею в виду: не все документировано в пользовательском интерфейсе, и код в основном без комментариев или дополнительной информации. Тем не менее, это может дать вам некоторую дополнительную информацию, но имейте в виду, что мы можем изменить или добавить эти интерфейсы.
Что касается ваших проблем выше: l3doc.ist
есть/была ошибка, так как он устанавливал levelchar в , #
однако код все еще предполагает levelchar в >
. Внутри себя мы прекратили использовать l3doc.ist
и вместо этого используем gind.ist
из дистрибутива LaTeX2e. Если вы используете это или исправите levelchar в , l3doc.ist
вы увидите, что env
запись выходит правильно, все еще будет 2 записи, но одна из них будет подзаписью под основным заголовком "среды".
Что касается проблемы с opt
: вы используете , function
но это только для команд, и он просто удаляет первый символ для сортировки, предполагая, что это обратная косая черта; таким образом, ваша запись сортируется по второму символу, который является "p". Вам не повезло, у нас нет среды для документирования опций.
На данный момент есть \DescribeOption
команда, но это все, и мы не уверены, что она переживет последующие релизы.
Обновлять
Я только что понял, что не ответил на второй вопрос: «Почему отображается env
номер страницы «1», а не «2»?»
Ну, это не так, он показывает номер строки кода 1 (вертикальная цифра), а не номер страницы, используя doc
соглашение о пакете по умолчанию. Другими словами, это было задумано как среда документирования кода, а не как среда описания пользовательского интерфейса.
По сути, это недостаток (если не ошибка), который возвращает нас к мысли, что это на самом деле не готовый продукт... но становится ясно, что нам, вероятно, следует что-то с этим сделать.