编辑环境以添加新的额外参数

编辑环境以添加新的额外参数

我正在尝试定义一个新的 \newenvironment,但遇到了一些问题。我需要一个使用计数器并使用额外参数来写入一些文本的环境。

我正在这个环境中工作:

\newenvironment{homeworkProblem}[1][-101010]{
\ifnum#1>0
    \setcounter{homeworkProblemCounter}{#1}
\fi
\section{Problem \arabic{homeworkProblemCounter}}
\setcounter{partCounter}{1}
\enterProblemHeader{homeworkProblemCounter}

该环境与以下计数器配合使用:

\setcounter{secnumdepth}{0}
\newcounter{partCounter}
\newcounter{homeworkProblemCounter}
\setcounter{homeworkProblemCounter}{1}
\nobreak\extramarks{Problem \arabic{homeworkProblemCounter}}{}\nobreak{}

还有这个:

\documentclass[10pt]{article} 
\newcommand{\enterProblemHeader}[1]{
\nobreak\extramarks{}{Problem \arabic{#1} continued on next page}\nobreak{}
\nobreak\extramarks{Problem \arabic{#1} (continued)}{Problem \arabic{#1} continued on next page}\nobreak{}
}
\usepackage{amsmath} 
 \newcommand{\exitProblemHeader}[1]{
\nobreak\extramarks{Problem \arabic{#1} (continued)}{Problem \arabic{#1} continued on next page\ldots}\nobreak{}
\stepcounter{#1}
\nobreak\extramarks{Problem \arabic{#1}}{}\nobreak{}
}

我尝试在这种环境下进行编辑以添加一个额外的参数,我希望此参数 {#2} 出现在以下行中:

\section{Problem \arabic{homeworkProblemCounter}}

并将其更改为:

\section{Problem \arabic{homeworkProblemCounter} ( Book {#2} )}

我使用命令\section,因为我喜欢它的外观。我尝试编辑代码,但没有成功

谢谢

答案1

该示例有效,问题是当你用默认参数(即)定义环境(或命令)时\newenvironment{env}[2][1]{...}{...},使用是\begin{env}[1]{2}...

因此,如果你将环境定义为

\newenvironment{homeworkProblem}[2][-101010]{
\ifnum#1>0
    \setcounter{homeworkProblemCounter}{#1}
\fi
\section{Problem \arabic{homeworkProblemCounter} (book #2)}}{}

那么你必须写

\begin{homeworkProblem}{a}
  test
\end{homeworkProblem}

使用第一个参数的默认值,并且

\begin{homeworkProblem}[3]{b}
  test
\end{homeworkProblem}

当您明确传递它时。

相关内容