新的自动检测键/值参数 - 它有什么用途?

新的自动检测键/值参数 - 它有什么用途?

在《LaTeX News》第 1-36 期中,有这样写道:

自动检测键/值参数为了扩展核心 LATEX 语法,ltcmd现在支持=...在抓取参数时使用修饰符。此修饰符指示 LATEX 将参数作为一组键/值传递给底层代码。如果参数“看起来”不像一组键/值,它将被转换为单个键/值对,并使用参数指定=该键的名称。例如,\caption 命令可以定义为 \DeclareDocumentCommand\caption {s ={short-text}+O{#3} +m}{...}

这种功能的 API 实用程序是什么?

答案1

如果你有一个现有的命令,例如

\section[short version]{long version of title}

并希望获得 key/val 未来

\section[pdfoutline=very short, page-head=quite short,
        toc=medium length]{long version of title}

这让你可以通过发现没有=in来支持这两种语法

  \section[short version]{long version of title}

并将其定义为

\section[toc=short version]{long version of title}

在此处输入图片描述

在这里我展示了一个调试定义,它显示了即使使用旧形式,参数#2也始终作为键值列表公开\section[short version],因此这允许定义具有多个键的新功能。

\documentclass{article}

\DeclareDocumentCommand\section {s ={short-text}+O{#3} +m}{%
\par
\bigskip
Section:\par
\IfBooleanTF{#1}%
   {no number}%
   {number}\par
options: \texttt{\detokenize{#2}}\par
main text:  \texttt{\detokenize{#3}}\par 
}


\begin{document}

\section{aaaa}

\section*[short text]{a section}

\section[toc=a sec., 
         page-head =this text, 
         pdfbookmark= A SECTION]{another section}

\end{document}

相关内容