可参考的新计数器

可参考的新计数器

我创建了一个方法\makeExample来创建一个名为 的新计数器example。你能告诉我如何修改它,以便我可以引用计数器吗example?这样我就可以写:some text.... \vref{label} ....

您可以在此处找到一个工作示例:https://www.sharelatex.com/project/541ffc3e05c84a5c4060ae58

我的方法是这样的:

\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \LARGE\textsc{Eksempel~\thechapter.\theexample #1}}{\medskip}

\newcommand\makeExample{%
 {%
    \begin{center}%
        \begin{example}%
        \end{example}%
    \end{center}%
 }%
}

答案1

对代码最简单的修改是添加一个可选参数,\makeExample您可以在其中放置任意代码,例如\label。我在底部发布了一个示例,但我强烈怀疑这不是您想要的。您提供的示例正在设置一个mdframed环境,最简单的方法是使用包提供的类似定理的机制,mdframed如下所示:

示例输出

\documentclass{memoir}

\usepackage[utf8]{inputenc}
\usepackage{mathtools,varioref}
\usepackage[framemethod=TikZ]{mdframed}

\mdfdefinestyle{cexamplestyle}{%
 frametitlefont=\normalfont\Large\scshape,
 frametitlealignment=\center
}
\mdtheorem[style=cexamplestyle]{centerexample}{Example}[chapter]


\begin{document}

\vref{todo} is a sample. The fist is a sample of how I would like it to be

\begin{centerexample}
  \label{todo}
    \noindent
    \textbf{Data:} 1011
    \newline
    \textbf{Function:} $a\cdot x^3+b\cdot x^2+c\cdot x+d\cdot 1$

    \noindent
    Værdierne fra $a$, $b$, $c$ og $d$ findes som følger:
    \newline
    $a=1$, $b=0$, $c=1$ og $d=1$
\end{centerexample}

\end{document}

第一次修改后的结果如下:

\documentclass{book}

\usepackage{mdframed}
\newcounter{example}[section]
\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
   \LARGE\textsc{Example~\thechapter.\theexample #1}}{\medskip}

\newcommand{\makeExample}[1][\relax]{%
 {%
    \begin{center}%
      \begin{example}%
        #1%
      \end{example}%
    \end{center}%
 }%
}

\begin{document}

\chapter{A chapter}
\label{cha:chapter}

\begin{mdframed}
  \makeExample[\label{cex:sample}]
  A centered example.
\end{mdframed}

That was Example~\ref{cex:sample}.

\end{document}

第二个示例

我认为第一种方法更简单。

答案2

提问时,你应该提供完整的最小工作示例(MWE),既是为了展示你正在尝试做什么,也是为了帮助别人帮助你——如果别人给你一些可以借鉴的东西,那么帮助他们就容易多了。MWE 应该以一个\documentclass声明开始,包含你想要的所有包,然后拥有\begin{document}...\end{document}。MWE 应该编译并包含接近解释/演示你要求的内容所需的最少代码量。这为每个人节省了大量时间。

在这种情况下,在我看来,你只是试图定义一个显示示例的环境。如果这就是你想要做的,那么你就太努力了,因为你只需使用\newtheorem{example}[section]{Eksempel}。完整的 MWE,包括交叉引用,是

\documentclass{article}
\usepackage{amsmath}
\newtheorem{example}{Eksempel}% implicitly defines a counter
\numberwithin{example}{section}% numbers it within sections
\begin{document}
\section{Important examples}
\begin{example}\label{MyExample}% \label creates the reference
  1+1=2.
\end{example}

My Eksempel~\ref{MyExample} is great.% \ref creates the cross-reference

\end{document}

得出的结果为:

在此处输入图片描述

查看文档阿姆斯特丹包来了解如何自定义类似定理的环境。

编辑正如我提到的,要定制风格,Eksempel你应该阅读阿姆斯特丹包。如果您添加以下行:

\usepackage{amsmath,amsthm}
\newtheoremstyle{eksempel}
  {3pt}% ⟨Space above⟩
  {3pt}% ⟨Space below⟩
  {}% ⟨Body font⟩
  {0pt}% ⟨Indent amount⟩
  {\scshape}% ⟨Theorem head font⟩
  {}% ⟨Punctuation after theorem head⟩
  {0pt}% ⟨Space after theorem head⟩2
  {\centerline{\thmname{#1} \thmnumber{#2}}}% ⟨Theorem head spec⟩
\theoremstyle{eksempel}
\newtheorem{example}{Eksempel}% implicitly defines a counter

然后你就会得到你想要定义的风格:

在此处输入图片描述

请注意,\hfill“定理头规范”的 s 位于 Eksempel 标题的中心。

如果你试图做更多的事情,那么你的代码仍然过于努力,因为你不需要同时定义\newenvironment{example}\makeExample命令:环境本身就是命令。在这种情况下,你可能需要类似

\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
     \center\LARGE\textsc{Eksempel~\thechapter.\theexample #1}}
     {\endcenter\medskip}

(但是,我建议删除\par\medskips,因为它们在我看来是错误的。)

正如您所使用,\refstepcounter您可以使用上面的 MWE 中的命令和\label创建\ref交叉引用。话虽如此,最好\theexample在环境定义中使用并添加:

\renewcommand\theexample{\thechapter.\arabic{example}}

最后,由于您将示例计数器定义为部分的子计数器,我怀疑您真正想要的是:

\renewcommand\theexample{\thesection.\arabic{example}}

答案3

这是一个具有自动标签生成的版本,但是,重置计数器后可能会失败。

\documentclass{book}

\newcounter{example}[section]

\renewcommand{\theexample}{\thesection.\arabic{example}}
\newenvironment{example}[1][]{\refstepcounter{example}\label{mysophisticatedexample::\number\value{example}}
  \LARGE\textsc{Eksempel~\theexample #1}\par\medskip

}{\medskip}

\newcommand\makeExample{%
 {%
    \begin{center}%
        \begin{example}%
          This is some dummy example with \theexample as counter and it references \ref{mysophisticatedexample::1}
        \end{example}%
    \end{center}%
 }%
}

\begin{document}

\chapter{First}

\section{First}

\makeExample 

\makeExample

\makeExample





\end{document}

在此处输入图片描述

相关内容