如何定义一个具有多个可选参数的新环境,并知道我正在使用哪一个?

如何定义一个具有多个可选参数的新环境,并知道我正在使用哪一个?

我想定义一个使用两个可选参数的环境,但我希望能够使用一个,<>另一个[]

以下是我所做的:

\NewDocumentCommand\why{O{\equiv}m}%
    { #1 & \quad\langle\;\text{{#2}}\;\rangle }

\NewDocumentCommand\res{m}%
    { & #1}

\NewDocumentCommand\To{}{\Rightarrow}

\NewDocumentEnvironment{derivation}{D<>{1.2} O{0pt}}{
  \begingroup
  \renewcommand{\arraystretch}{#1}
  \setlength{\tabcolsep}{#2}
  \begin{tabular}{>{$}l<{$} >{$}l<{$}}
}{
  \end{tabular}
  \endgroup
}

当我尝试使用任何可选参数时,它们要么打印在 pdf 中,要么我只是收到错误。我该如何解决这个问题?

示例代码为:

\documentclass{article}
\usepackage{xparse}
\usepackage{mathtools}
\usepackage{nicematrix}
\usepackage[spanish]{babel}

\ExplSyntaxOn
\NewDocumentCommand\why{O{\equiv}m}%
    { #1 & \quad\langle\;\text{{#2}}\;\rangle }

\NewDocumentCommand\res{m}%
    { & #1}

\NewDocumentCommand\To{}{\Rightarrow}

\NewDocumentEnvironment{derivation}{D<>{1.2} O{0pt}}{
  \renewcommand{\arraystretch}{#1}
  \setlength{\tabcolsep}{#2}
  \begin{tabular}{>{$}l<{$} >{$}l<{$}}
}{
  \end{tabular}
}
\ExplSyntaxOff

\begin{document}
\begin{center}
  \begin{derivation}<1.5>
          \res{ (p \To \neg q) \land (\neg q \To \neg p) }\\
      \why[\To]{ Transitividad($\To$) }\\
          \res{ p \To \neg p }\\
      \why{ Def.(alt)($\To$) }\\
          \res{ \neg p \lor \neg p }\\
      \why{ Idempotencia($\lor$) }\\
          \res{ \neg p }
  \end{derivation}
\end{center}
\end{document}

在此处输入图片描述

显然,问题出在babel包裹上。

答案1

默认情况下,babel-spanish激活<>获取报价。

此激活是在开始文档时完成的,但您的代码要求 LaTeX 寻找“普通”<>,但它找不到。

解决方法:传递es-noquoting选项。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[spanish,es-noquoting]{babel}
\usepackage{mathtools}
\usepackage{nicematrix} % loads the package 'array', used in the code

\ExplSyntaxOn
\NewDocumentCommand\why{O{\equiv}m}
    { #1 & \quad\langle\;\text{{#2}}\;\rangle }

\NewDocumentCommand\res{m}
    { & #1}

\NewDocumentCommand\To{}{\Rightarrow}

\NewDocumentEnvironment{derivation}{D<>{1.2} O{0pt}}{%
  \renewcommand{\arraystretch}{#1}%
  \setlength{\tabcolsep}{#2}%
  \begin{tabular}{>{$}l<{$} >{$}l<{$}}%
}{
  \end{tabular}%
}
\ExplSyntaxOff

\begin{document}

\begin{center}
  \begin{derivation}<1.5>
          \res{ (p \To \neg q) \land (\neg q \To \neg p) }\\
      \why[\To]{ Transitividad($\To$) }\\
          \res{ p \To \neg p }\\
      \why{ Def.(alt)($\To$) }\\
          \res{ \neg p \lor \neg p }\\
      \why{ Idempotencia($\lor$) }\\
          \res{ \neg p }
  \end{derivation}
\end{center}
\end{document}

xparse我删除了自 2020 年 10 月以来不再需要的调用。相反,我添加了fontenc一个T1选项,西班牙语所需。

检查 的位置%

在此处输入图片描述

相关内容