如何在 \newenvironment 中使用带有参数的宏?

如何在 \newenvironment 中使用带有参数的宏?

我想定义一个通过 更改节标题的新环境\titleformat。显然我必须以#1某种方式“转义” ,因此它不被视为 的(未声明的)参数local_format_env,而是 的参数\titleformat。我该怎么做?

(为了简化演示,由于示例中不存在限制,因此不能省略该[explicit]选项。)titlesec

最小非工作示例:

\documentclass{scrbook}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[explicit]{titlesec}

\newenvironment{local_format_env}{
    \titleformat{\section}{\normalfont\scshape\Large}{}{0pt}{#1} % <-- needs excaping
}{
    \titleformat{\section}{\normalfont\Large}{}{0pt}{#1}         % <-- needs escaping
}

\begin{document}

\section{Global Format}

\begin{local_format_env}
\section{Local Format}
\end{local_format_env}

\end{document}

答案1

这是一个#1用替换 的情况##1

\documentclass{scrbook}
\usepackage[german]{babel}
\usepackage[utf8]{inputenc}
\usepackage[explicit]{titlesec}

\newenvironment{local_format_env}{
    \titleformat{\section}{\normalfont\scshape\Large}{}{0pt}{##1} % <-- needs excaping
}{
    \titleformat{\section}{\normalfont\Large}{}{0pt}{##1}         % <-- needs escaping
}

\begin{document}

\section{Global Format}

\begin{local_format_env}
\section{Local Format}
\end{local_format_env}

\end{document}

相关内容