
Я создал метод \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 для «theorerm head spec» располагается по центру заголовка 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}