用户定义环境:文章与书籍

用户定义环境:文章与书籍

对于 LaTeX 提交的文章(例如期刊论文),我有一个非常简单的 Remark 环境:

\newcounter{remarkno}%
\renewcommand{\theremarkno}{\arabic{remarkno}}%
\newenvironment{remark}{\small%
   \refstepcounter{remarkno}%
   \noindent\textbf{Remark~\theremarkno}.%
   \par}%
{}%

此定义将注释 1、2、... 编号到整篇文章中。我想将其扩展到正在编写的教科书,以便第 3 章的注释标签为 3.1、3.2、... 问题:假设已加载 amsmath,将 \renewcommand 更改为

\renewcommand{\theremarkno}{\arabic{\numberwithin{remarkno}{chapter}}}

注意:此更改将需要用于另外 6 个环境,即练习、解决方案、datedremark、myfootnote、chapternotes、评论。因此,如果上述替换有效,则可以轻松复制。而且只需要标准 LaTeX 2.0。(我的经验是插入较新的软件包通常会破坏代码)。

答案1

进行抽象。

\documentclass{article} % or book

\makeatletter
\newcommand{\newnumberedenvironment}[3]{%
  \newcounter{#1}%
  \newenvironment{#1}{#2}{#3}%
  \@ifundefined{chapter}{}{\counterwithin{#1}{chapter}}%
}
\makeatother
\newnumberedenvironment{remark}{\small%
   \refstepcounter{remark}%
   \noindent\textbf{Remark~\theremark}.%
   \par}%
{}%
\newnumberedenvironment{solution}{...}{...}
\newnumberedenvironment{datedremark}{...}{...}
\newnumberedenvironment{myfootnote}{...}{...}
\newnumberedenvironment{chapternotes}{...}{...}
\newnumberedenvironment{comment}{...}{...}

\begin{document}

\begin{remark}
Something
\end{remark}

\end{document}

在此处输入图片描述

如果我变成articlebook添加\chapter{Test},我得到

在此处输入图片描述

如果您想支持新环境的参数,那就有点复杂了。

\documentclass{book} % or book

\makeatletter
\newcommand{\newnumberedenvironment}[1]{%
  \def\numberedenv@name{#1}%
  \@newnumberedenvironment
}
\newcommand{\@newnumberedenvironment}[3][0]{%
  \newcounter{\numberedenv@name}%
  \newenvironment{\numberedenv@name}[#1]{#2}{#3}%
  \@ifundefined{chapter}{}{%
    \expandafter\counterwithin\expandafter{\numberedenv@name}{chapter}%
  }%
}
\makeatother

\newnumberedenvironment{remark}{\small%
   \refstepcounter{remark}%
   \noindent\textbf{Remark~\theremark}.%
   \par}%
{}%
\newnumberedenvironment{solution}{...}{...}
\newnumberedenvironment{datedremark}{...}{...}
\newnumberedenvironment{myfootnote}{...}{...}
\newnumberedenvironment{chapternotes}{...}{...}
\newnumberedenvironment{comment}{...}{...}

\begin{document}

\chapter{Test}

\begin{remark}
Something
\end{remark}

\end{document}

相关内容