新环境、标签、缩进

新环境、标签、缩进

我有一个参考的自定义环境。如果我前面没有空格,缩进似乎会发生变化\label(请参阅下面的 MWE)。因此,我有几个问题:

  1. 在自定义环境中放置的位置是否重要\label;可以改变环境以便我不需要在前面放置空格吗\label
  2. \label对于应该放在哪里(在非浮动环境中),是否有一个惯例,或者这是一个风格问题?
  3. 有没有比使用更好的换行方式\newline

请注意,我不想使用,ntheorem因为我使用的实际版本需要 2 个可选参数(使用newenvironmentxfrom xargs)。

编辑:我特别想尝试回答我的第一个问题 - 是否可以更改环境的定义,以便我不必在 之前\label%之后放置空格?该ntheorem包似乎使用 来实现这一点trivlist

\documentclass{article}
\usepackage{lipsum}

\setlength{\parindent}{0mm}

\newcounter{problem}
\newenvironment{problem}%
{%
    \refstepcounter{problem}%
    \textbf{Problem \theproblem }\newline%
}{}

\begin{document}

\begin{problem}\label{firstlabel}
\lipsum[1] 
\end{problem}

\begin{problem} \label{secondlabel}
\lipsum[1] 
\end{problem}
\end{document}

答案1

  1. 是的。请参阅第 3 条。
  2. 惯例是将其放在 之后\caption[..]{...},或者更准确地说,放在 之后,\refstepcounter{...}以便正确标记。否则,标签将引用最近\refstepcounter{...}执行的先前实例。
  3. 使用\par\endgraf代替\newline

使用 \par 的新环境

答案2

我刚刚看到这篇文章,因为我在引用自定义环境时遇到了同样的问题。基于以上所有信息,我找到了解决问题的方法。您只需稍微修改环境的定义,如下所示:

\newcounter{problem}
\newenvironment{problem}%
{%
    \refstepcounter{problem}%
    \textbf{Problem \theproblem } \par\vspace{-\parskip}%
}{}

我的解释是:当使用\par而不是\newline或 时\\,您不必在 之前\label%之后放置空格。但与此同时,\par会导致\parskip。因此,您必须\vspace{-\parskip}在 之后放置\par

我还期待解决这个问题的其他解决方案。

答案3

您需要%在参数的右括号后立即添加注释字符\label{...}。这将避免出现您看到的空格。

这就是我在环境、定理等中放置标签的地方。但就像沃纳所说的那样,你不会得到正确的交叉引用。

您是否查看过amsthm用于制作类似环境的定理的包?

尝试

\documentclass{article}
\usepackage{lipsum}
\usepackage{amsthm}

\newtheoremstyle{mystyle}                % Name
  {}                                     % Space above
  {}                                     % Space below
  {}                                     % Body font
  {}                                     % Indent amount
  {\bfseries}                            % Theorem head font
  {.}                                    % Punctuation after theorem head
  {\newline}                             % Space after theorem head, ' ', or \newline
  {}                                     % Theorem head spec (can be left empty, meaning `normal')

\theoremstyle{mystyle}
\newtheorem{problem}{Problem}

\begin{document}

\begin{problem}\label{firstlabel}%
\lipsum[1]
\end{problem}

\begin{problem} \label{secondlabel}%
\lipsum[1]
\end{problem}
\end{document}

哦,这将为您提供正确的交叉引用。

相关内容