![无法将参数传递给新环境的第二部分](https://linux22.com/image/461282/%E6%97%A0%E6%B3%95%E5%B0%86%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%E7%BB%99%E6%96%B0%E7%8E%AF%E5%A2%83%E7%9A%84%E7%AC%AC%E4%BA%8C%E9%83%A8%E5%88%86.png)
该代码有效:
\documentclass{book}
\newenvironment{testenvironment}[1][]
{\begin{quote}#1}
{\end{quote}}
\begin{document}
\begin{testenvironment}[testargument]
test text
\end{testenvironment}
\end{document}
此代码不:
\documentclass{book}
\newenvironment{testenvironment}[1][]
{\begin{quote}}
{#1\end{quote}}
\begin{document}
\begin{testenvironment}[testargument]
test text
\end{testenvironment}
\end{document}
唯一的区别在于是否#1
写在命令的第一个括号内还是第二个括号内\newenvironment
。
我如何将参数传递给第二个括号,传递给内容后输入?
答案1
使用较新的 LaTeX 版本,您可以使用\NewDocumentEnvironment
而不是\newenvironment
。
您可能需要加载 xparser 包。
\documentclass{book}
\usepackage{graphicx}
\NewDocumentEnvironment{testenvironment}{O{}}
{\begin{quote}}
{#1\end{quote}}
\begin{document}
\begin{testenvironment}[testargument]
test text
\end{testenvironment}
\begin{testenvironment}
test text
\end{testenvironment}
\begin{testenvironment}[testargumentB]
test text
\end{testenvironment}
\end{document}