
현재 패키지를 작성 중이고 dtx
형식을 사용하기 시작하면서 를 사용하는 대체 클래스가 있는지 궁금해서 doc
사용하기 시작했습니다 l3doc
(expl3 구문을 사용하기 때문에). 꽤 만족스럽습니다만, 다음과 같은 점이 좀 짜증스럽습니다.
- 저는
variable
변수를 설명하고macro
매크로를 설명하는 데 사용하고 있습니다(function
코드가 아닌 문서에서 사용해야 하기 때문에). 두 가지 스타일을 어떻게 통합할 수 있습니까(여백에 막대가 있든 없든, 차라리 갖고 싶습니다)? \DescribeEnv
이 모양을 (바도) 로 얻은 레이아웃으로 전송할 수 있습니까 ?- 패키지에서 사용하는 Lua 코드를 어떻게 마크업해야 하나요? 설명서에 나와 있는
\NewMacroEnvironment
대로 사용해야 합니까l3doc
?
이 질문은 다음에 관한 것이 아닙니다.
- 문서 클래스 변경
ltxdoc
또는 - 다른 클래스로 전환하면
doc
기능이 중단되지만 결국 문서화에 사용될 수 있습니다.
실제로 사용하고 만족스럽지 못한 점(샘플 dtx
파일, 파일 제공을 피하기 위해 패키지 호출을 제거했습니다 .ins
):
% \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
업데이트:다음은 출력 예입니다.
답변1
다음은 변수와 매크로의 스타일을 통합하고, 를 사용하여 얻은 레이아웃으로 모양을 전환하고 , 문서 에서 코드를 \DescribeEnv
마크업하는 방법을 찾기 위한 몇 가지 제안 사항입니다 .Lua
l3doc
- 변수 및 매크로 스타일 통합:
변수와 매크로의 스타일을 통합하기 위해 환경을 사용자 정의할 수 있습니다 l3doc
. l3doc
패키지 자체를 수정하거나 .NET 기반의 새 패키지(또는 클래스)를 생성하면 이를 달성할 수 있습니다 l3doc
.
my_macro
예를 들어 원하는 스타일로 새 환경을 정의할 수 있습니다 .
\ExplSyntaxOn
\NewDocumentEnvironment{my_macro}{m}
{
\cs_set_eq:NN \variable \meta
\begin{macro}{#1}
}
{
\end{macro}
\cs_set_eq:NN \variable \gobble
}
\ExplSyntaxOff
그런 다음 코드에서 my_macro
환경 대신 환경을 사용할 수 있습니다 . macro
이 새로운 환경은 환경과 동일한 스타일을 갖습니다 variable
.
- 다음을 사용하여 얻은 레이아웃으로 모양을 전송합니다
\DescribeEnv
.
변수 또는 매크로의 모양을 를 사용하여 얻은 레이아웃으로 전송하려면 변수 또는 매크로와 동일한 스타일을 사용하도록 명령을 \DescribeEnv
재정의할 수 있습니다 .\DescribeEnv
\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
이 코드는 및 환경 \DescribeEnv
과 동일한 스타일을 갖도록 명령을 재정의합니다 .variable
my_macro
Lua
문서 의 코드 마크업l3doc
:
Lua
문서 의 코드를 마크업하려면 문서 에 언급된 명령을 l3doc
사용하면 됩니다 .\NewMacroEnvironment
l3doc
또한 패키지 에서 제공하는 luacode
또는 환경을 사용하여 코드 형식을 적절하게 지정하고 강조 표시할 수 있습니다 .luaexec
luacode
Lua
\NewMacroEnvironment
다음은 환경 과 함께 사용하는 예입니다 luacode
.
\NewMacroEnvironment{luacode} % or luaexec, depending on your preference
이제 문서에서 환경을 사용할 수 luacode
있으며 올바르게 형식이 지정되고 강조 표시됩니다.
이러한 변경 사항은 변수, 매크로 및 환경의 모양을 사용자 정의하고 문서 Lua
의 코드를 마크업하는 데 도움이 됩니다 l3doc
.