如何延缓扩张

如何延缓扩张

请考虑以下文档:

\documentclass{article}
\usepackage{polynomial}

\begin{document}
\def\a{-3}
\def\b{-2}
\def\c{-4}
\[
\polynomial{\a,\b,\c}\quad\polynomial{-3,-2,-4}
\]
\end{document}

从结果中可以看出

在此处输入图片描述

第一个在负系数前\polynomial产生了额外的符号,很可能是由于、和的后期扩展造成的。如何防止这种情况发生?+\a\b\c

编辑:

提供的解决方案

\begingroup\edef\x{\endgroup\noexpand\polynomial{\a,\b,\c}}\x

在动人辩论中失败:

\documentclass{article}
\usepackage{polynomial}

\begin{document}
\def\a{-3}
\def\b{-2}
\def\c{-4}
\begin{figure}
\caption{$\begingroup\edef\x{\endgroup\noexpand\polynomial{\a,\b,\c}}\x$}
\end{figure}
\end{document}

在这种情况下需要进行哪些修改?

这个问题是在回答标题中的参数

答案1

您可以重新定义\polynomial以扩展其参数:

\documentclass{article}
\usepackage{polynomial,xparse}

\ExplSyntaxOn
\cs_set_eq:NN \gonzalo_poly:n \polynomial
\cs_generate_variant:Nn \gonzalo_poly:n { x }
\RenewDocumentCommand{\polynomial}{m}
 {
  \gonzalo_poly:x { #1 }
 }
\ExplSyntaxOff

\begin{document}


\begin{figure}
\def\a{-3}
\def\b{-2}
\def\c{-4}

X
\caption{$\polynomial{\a,\b,\c}$}
\end{figure}
\end{document}

答案2

你需要力量扩展之前的论点\polynomial。一个典型的方法是

\documentclass{article}
\usepackage{polynomial}

\begin{document}
\def\a{-3}
\def\b{-2}
\def\c{-4}
\[
\begingroup\edef\x{\endgroup\noexpand\polynomial{\a,\b,\c}}\x
\quad\polynomial{-3,-2,-4}
\]
\end{document}

假设\a\b并且\c可以被认为是完全可扩展的(如这里)。

答案3

您可以声明一个强健的命令,以便它在标题中是安全的:

\documentclass{article}
\usepackage{polynomial}
\DeclareRobustCommand\xpolynomial[1]{%
\edef\next{\noexpand\protect\noexpand\polynomial{#1}}\next}


\begin{document}

\listoftables

\begin{table}
\def \a{-3}
\def\b{-2}
\def \c{-4}

\caption{$\xpolynomial{\a,\b,\c}$}

\end{table}

zzzz

\end{document}

或者按照评论中的要求在本地进行

\documentclass{article}
\usepackage{polynomial}



\begin{document}

\listoftables

\begin{table}
\def \a{-3}
\def\b{-2}
\def \c{-4}
\def\xpolynomial#1#2{%
\edef#1{\noexpand\protect\noexpand\polynomial{#2}}}
\xpolynomial\thispoly{\a,\b,\c}

\caption{$\thispoly$}

\end{table}

zzzz

\end{document}

相关内容