
Como atualmente estou escrevendo um pacote e comecei a usar dtx
o formato me perguntei se existem classes alternativas apenas usando doc
, então comecei a usar l3doc
(já que uso a sintaxe expl3). Estou bastante satisfeito com isso, mas os seguintes pontos são meio irritantes:
- Estou usando
variable
para descrever variáveis emacro
para descrever macros (já quefunction
devem ser usadas na documentação e não no código). Como posso unificar os estilos de ambos (com ou sem barras na margem, prefiro tê-los)? - É possível transferir esse visual para o layout obtido com
\DescribeEnv
(barras também)? - Como devo marcar o código Lua, que é usado pelo pacote? Devo usar
\NewMacroEnvironment
comol3doc
indica a documentação?
Esta questão não é sobre:
- Alterando a classe de documento de
ltxdoc
ou - mudar para outra classe, que quebra
doc
a funcionalidade, mas pode eventualmente ser usada para documentação.
O que eu realmente uso e com o qual não estou satisfeito ( dtx
arquivo de exemplo, removi a chamada do pacote para evitar fornecer .ins
o arquivo):
% \iffalse meta-comment
%<package>\RequirePackage{expl3}
%<package>\RequirePackage{xparse}
%<package>\ProvidesExplPackage{testpack}{2017/04/15}{0.1}{Test package}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
\begin{document}
\DocInput{testpack.dtx}
\end{document}
%</driver>
% \fi
%
% \begin{documentation}
% \GetFileInfo{testpack.sty}
%
% \title{The \texttt{testpack} package\thanks{This document corresponds to \texttt{termdoc}~\fileversion, dated~\filedate.}}
% \author{TeXnician}
% \date{\today}
% \maketitle
% \tableofcontents
%
% \section{User interface}
% \DescribeMacro{\justdoit} My test \cs{justdoit}: here would be the function call
% \begin{function}{\justdoit}
% \begin{syntax}
|\justdoit|
% \end{syntax}
% \meta{description}
% \end{function}
% \end{documentation}
% \begin{implementation}
% \section{Implementation}
%<*package>
% \begin{macrocode}
\RequirePackage{iftex}
\RequireLuaTeX
\RequirePackage{luacode}
% \end{macrocode}
% \begin{variable}{\mytl}
% A variable
% \begin{macrocode}
\tl_new:N \mytl
% \end{macrocode}
% \end{variable}
% \begin{environment}{luacode}
% \begin{macrocode}
\begin{luacode}
function justdoit()
tex.print(1,[[Test]])
end
\end{luacode}
% \end{macrocode}
% \end{environment}
% \begin{macro}{\justdoit}
% \begin{macrocode}
\NewDocumentCommand{\justdoit}{}{
\directlua{justdoit()}
}
% \end{macrocode}
% \end{macro}
%</package>
% \end{implementation}
% \Finale
\endinput
Atualizar:Aqui está um exemplo de saída:
Responder1
Aqui estão algumas sugestões para unificar os estilos de variáveis e macros, transferir a aparência para o layout obtido com \DescribeEnv
e encontrar uma maneira de marcar Lua
o código em sua l3doc
documentação.
- Unificando os estilos de variáveis e macros:
Para unificar os estilos de variáveis e macros, você pode personalizar os l3doc
ambientes. Você pode conseguir isso modificando o l3doc
próprio pacote ou criando um novo pacote (ou classe) baseado em l3doc
.
Por exemplo, você pode definir um novo ambiente my_macro
com o estilo desejado:
\ExplSyntaxOn
\NewDocumentEnvironment{my_macro}{m}
{
\cs_set_eq:NN \variable \meta
\begin{macro}{#1}
}
{
\end{macro}
\cs_set_eq:NN \variable \gobble
}
\ExplSyntaxOff
Então, você pode usar o my_macro
ambiente em vez do macro
ambiente no seu código. Este novo ambiente terá o mesmo estilo do variable
ambiente.
- Transferindo a aparência para o layout obtido com
\DescribeEnv
:
Para transferir a aparência das variáveis ou macros para o layout obtido com \DescribeEnv
, você pode redefinir o \DescribeEnv
comando para usar o mesmo estilo das variáveis ou macros:
\ExplSyntaxOn
\cs_set_eq:NN \original_describe_env: \DescribeEnv
\cs_new_protected:Npn \new_describe_env: #1
{
\cs_set_eq:NN \environment \meta
\original_describe_env: { #1 }
\cs_set_eq:NN \environment \gobble
}
\cs_set_eq:NN \DescribeEnv \new_describe_env:
\ExplSyntaxOff
Este código redefine o \DescribeEnv
comando para ter o mesmo estilo dos ambientes variable
e my_macro
.
- Marcando
Lua
código nal3doc
documentação:
Para marcar Lua
o código em sua l3doc
documentação, você pode usar o \NewMacroEnvironment
comando mencionado na l3doc
documentação.
Além disso, você pode usar os ambientes luacode
ou luaexec
fornecidos pelo luacode
pacote para formatar e destacar Lua
o código adequadamente.
Aqui está um exemplo de uso \NewMacroEnvironment
com o luacode
meio ambiente:
\NewMacroEnvironment{luacode} % or luaexec, depending on your preference
Agora você pode usar o luacode
ambiente em sua documentação, e ele será formatado e destacado corretamente.
Essas alterações devem ajudá-lo a personalizar a aparência de variáveis, macros e ambientes, bem como marcar Lua
o código em sua l3doc
documentação.