`l3doc`를 사용자 정의하는 방법은 무엇입니까?

`l3doc`를 사용자 정의하는 방법은 무엇입니까?

현재 패키지를 작성 중이고 dtx형식을 사용하기 시작하면서 를 사용하는 대체 클래스가 있는지 궁금해서 doc사용하기 시작했습니다 l3doc(expl3 구문을 사용하기 때문에). 꽤 만족스럽습니다만, 다음과 같은 점이 좀 짜증스럽습니다.

  1. 저는 variable변수를 설명하고 macro매크로를 설명하는 데 사용하고 있습니다( function코드가 아닌 문서에서 사용해야 하기 때문에). 두 가지 스타일을 어떻게 통합할 수 있습니까(여백에 막대가 있든 없든, 차라리 갖고 싶습니다)?
  2. \DescribeEnv이 모양을 (바도) 로 얻은 레이아웃으로 전송할 수 있습니까 ?
  3. 패키지에서 사용하는 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마크업하는 방법을 찾기 위한 몇 가지 제안 사항입니다 .Lual3doc

  • 변수 및 매크로 스타일 통합:

변수와 매크로의 스타일을 통합하기 위해 환경을 사용자 정의할 수 있습니다 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과 동일한 스타일을 갖도록 명령을 재정의합니다 .variablemy_macro

  • Lua문서 의 코드 마크업 l3doc:

Lua문서 의 코드를 마크업하려면 문서 에 언급된 명령을 l3doc사용하면 됩니다 .\NewMacroEnvironmentl3doc

또한 패키지 에서 제공하는 luacode또는 환경을 사용하여 코드 형식을 적절하게 지정하고 강조 표시할 수 있습니다 .luaexecluacodeLua

\NewMacroEnvironment다음은 환경 과 함께 사용하는 예입니다 luacode.

\NewMacroEnvironment{luacode} % or luaexec, depending on your preference

이제 문서에서 환경을 사용할 수 luacode있으며 올바르게 형식이 지정되고 강조 표시됩니다.

이러한 변경 사항은 변수, 매크로 및 환경의 모양을 사용자 정의하고 문서 Lua의 코드를 마크업하는 데 도움이 됩니다 l3doc.

관련 정보