
我創建了一個方法\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}