2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 символ в конце окружения
Сообщение20.08.2012, 10:52 


08/02/12
24
Здравствуйте!

Пожалуйста, подскажите - можно ли сделать так, чтобы в конце окружения "автоматически" ставился желаемый символ?
Я создал окружение
\theoremstyle{remark}
\newtheorem{rem}{Замечание}[section]
и нужно, чтобы в конце Замечания ставился символ типа qed.

Конечно, можно и руками, но текст большой и можно что-то потерять...

Заранее большое спасибо!

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение20.08.2012, 12:28 
Аватара пользователя


03/12/08
351
Букачача
Используется синтаксис LaTeX
\renewcommand{\@endtheorem}{$\scriptstyle\square$\endgroup} % либо вместо $\scriptstyle\square$ поставить \qed, если подключен пакет amsthm
 

(обязательно в конце не забудьте \endgroup, а так же это переопределение поставить раньше чем определение вашего теоремоподобного окружения).
А вообще, если именно для произвольного окружения, то синтаксис определения своего окружения:
Используется синтаксис LaTeX
\newenvironment{имя_окружения}%
[число_аргументов]%
[значение_необязательного_аргумента]%
{текст_или_команды_подставляемые_вместо_\begin{имя_окружения}}%
{текст_или_команды_подставляемые_вместо_\end{имя_окружения}}
 

и соответственно в последних фигурных скобках вы можете вставить нужные вам символы.

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение20.08.2012, 13:13 


08/02/12
24
Большое Спасибо!

1) Правильно ли я делаю:
Код:
\theoremstyle{remark}
\newtheorem{zam}{Замечание}[section]
\makeatletter
\renewcommand{\@endtheorem}{$\scriptstyle\square$\endgroup}
\makeatother


Что-то не работает (ничего не ставится в конце)...

2) А если у меня несколько "теоремоподобных"окружений, например

Код:
\newtheorem{exm}{Пример}[section]
\newtheorem{zam}{Замечание}[section]


то как правильно использовать Ваше переопределение

Код:
\renewcommand{\@endtheorem}{$\scriptstyle\square$\endgroup}


чтобы свой символ был для каждого из них?

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение20.08.2012, 15:42 


08/02/12
24
Цитата:
а так же это переопределение поставить раньше чем определение вашего теоремоподобного окружения).


Если я пишу переопределение выше:
Код:
\theoremstyle{remark}

\makeatletter
\renewcommand*{\@endtheorem}{$\scriptstyle\ast$\endgroup}
\makeatother

\newtheorem{zam}{Замечание}[section]

то выдается ошибка:
    ! LaTeX Error: \begin{document} ended by \end{zam}.

    See the LaTeX manual or LaTeX Companion for explanation.
    Type H <return> for immediate help.
    ...

    l.283 \end{zam}

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение20.08.2012, 21:27 
Заслуженный участник
Аватара пользователя


23/07/05
18031
Москва
Значки начала и окончания теоремы.

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 08:20 


08/02/12
24
Someone в сообщении #608335 писал(а):


Спасибо.
Но я не нашел там ответа...
Мне ведь нужно изменить не оформление доказательства, а самой теоремы...

Код:
\newtheorem{exm}{Пример}[section]
\newtheorem{zam}{Замечание}[section]

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 12:36 
Аватара пользователя


03/12/08
351
Букачача
mimi12
Как я понял задачу, требуется иметь команду аналогичную \newtheorem, но имеющую дополнительный аргумент, значение которого и будет вставляться в конце определенного теоремоподобного окружения. Тут либо взять определение команды newtheorem (из amsthm например) и создать свою команду, подобную newtheorem, но с доп. аргументом (но это сложный путь).
Как один из более простых вариантов (что приходит в голову) - можно определить свои теоремоподобные окружения и после обернуть их в другие определения команд и эти команды уже вызывать вместо \begin{имя_теоремы_окружения}...\end{имя_теоремы_окружения}, например так:
код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\newtheorem{exm}{Пример}[section]
\newtheorem{zam}{Замечание}[section]

\def\exmcmd#1{\begin{exm}
#1 $\scriptstyle\square$\end{exm}}

\def\zamcmd#1{\begin{zam}
#1 $\scriptstyle\square$\end{zam}}

\begin{document}

...

\exmcmd{содержание примера}

\zamcmd{содержание замечания}

...

\end{document}

 

Можно также учесть в этих командах и необязательный аргумент в окружении теоремы, когда требуется сделать именованную теорему, например так:
Используется синтаксис LaTeX
\newcommand{\exmcmd}[2][]{%
\ifx\relax#1\relax%
    \begin{exm}
        #2 $\scriptstyle\square$
    \end{exm}%
\else%
    \begin{exm}[#1]
        #2 $\scriptstyle\square$
    \end{exm}%
\fi
}
 

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 12:49 


08/02/12
24
Спасибо!
Это решает проблему!

Кстати, а почему не сработала команда
Код:
\renewcommand{\@endtheorem}{$\scriptstyle\square$\endgroup}

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 13:18 
Аватара пользователя


03/12/08
351
Букачача
mimi12 в сообщении #608507 писал(а):
Спасибо!
Это решает проблему!

Кстати, а почему не сработала команда
Код:
\renewcommand{\@endtheorem}{$\scriptstyle\square$\endgroup}

Не сработала, потому что я взял это определение из своего стилевого файла, в котором также была переопределена команда \@begintheorem, в которой присутствовал вызов \begingroup (вот почему я писал, что обязательно нужно \endgroup), если убрать \endgroup и переопределение этой команды поставить выше любых определений с помощью \newtheorem, то должно заработать (у вас как раз переопределение \@endtheorem было после \newtheorem). Но вам это решение ведь не подходит, ибо оно меняет окончание у любых теоремоподобных окружений.

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 14:40 


08/02/12
24
Еще раз большое спасибо!

Если можно, еще микровопрос: я попробовал написать так:
Код:
\theoremstyle{remark}
\newtheorem{zam}{Замечание}[section]

\def\beginzam{\begin{zam}}
\def\endzam{$\scriptstyle\blacktriangledown$\end{zam}}

чтобы в "теле" писать
Код:
\beginzam
...
\endzam

но получил ошибку
Цитата:
! TeX capacity exceeded, sorry [input stack size=5000].
\end #1->\csname end#1
\endcsname \@checkend {#1}\expandafter \endgroup \if@e...
l.233 \endzam

Так делать нельзя?

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 15:07 
Аватара пользователя


03/12/08
351
Букачача
Да так делать нельзя.
Тогда уж лучше пишите свое окружение через \newenvironment, но чтобы это было теоремоподобной структурой вам надо определение \newtheorem знать.

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение21.08.2012, 22:14 
Заслуженный участник
Аватара пользователя


23/07/05
18031
Москва
Вот работающий пример.

код: [ скачать ] [ спрятать ]
Используется синтаксис LaTeX
\documentclass[a4paper,10pt]{amsart}

\xdef\LastDeclaredEncoding{T2A}

\usepackage{mathtext}
\usepackage{amssymb}
\usepackage[all]{xy}
\usepackage{graphicx}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian,english]{babel}

\newcommand{\onto}{\xrightarrow{\text{\textup{onto}}}}

\makeatletter
\def\@endtheorem{\popQED\endtrivlist\@endpefalse }
\makeatother

\newtheoremstyle{myrmk}{3pt}{3pt}{\rmfamily}{\parindent}{\itshape}{.}{.5em}{}
\newtheoremstyle{mydfn}{3pt}{3pt}{\rmfamily}{\parindent}{\bfseries}{.}{.5em}{}
\newtheoremstyle{mypln}{3pt}{3pt}{\itshape}{\parindent}{\bfseries}{.}{.5em}{}

\newenvironment{prf}[1][\proofname]{\par\indent\pushQED{\qed}\itshape#1. \normalfont\ignorespaces}{\popQED}

\swapnumbers
\theoremstyle{myrmk}
\newtheorem{itm}{}[section]
\newtheorem{rmk}[itm]{Remark}
\theoremstyle{mydfn}
\newtheorem{dfn}[itm]{Definition}
\newtheorem{exm}[itm]{Example}
\theoremstyle{mypln}
\newtheorem{ass}[itm]{Assertion}
\newtheorem{thm}[itm]{Theorem\pushQED{\hfill$\bigcirc\bigcirc$}}
\newtheorem{prp}[itm]{Proposition}
\newtheorem{cor}[itm]{Corollary}
\newtheorem{lem}[itm]{Lemma}

\begin{document}

\begin{lem}\label{S3L5}
\emph{a)} For each point $x\in X$ the set $M_x=\{g\in C(f):gx=0\}$ is a closed maximal ideal of the algebra $C(f)$ and $I_{fx}\subseteq M_x$.

\emph{b)} If points $x_1,x_2\in X$ satisfy the conditions $fx_1=fx_2$ and $x_1\ne x_2$ then $M_{x_1}\ne M_{x_2}$.

\emph{c)} If $M\subset C(f)$ is a closed maximal ideal and $y\in Y$ is a point such that $I_y\subseteq M$ then there exists a point $x\in f^{-1}y$ such that $M_x=M$ \emph{(see also \ref{S4L4})}.

\emph{d)} If points $x_1,x_2\in X$ satisfy the condition $M_{x_1}=M_{x_2}$ then $gx_1=gx_2$ for all functions $g\in C(f)$.
\end{lem}

\begin{thm}\label{S3T7}
\emph{a)} The map $\pi_f$ is continuous.

\emph{b)} The mapping $\pi_y=\pi_f|_{f^{-1}y}\colon f^{-1}y\onto\mathfrak M_y\subseteq\mathfrak M_f$ is a homeomorphism for each point $y\in Y$; hence, the space $\mathfrak M_y$ is compact.

\emph{c)} For each point $y\in Y$ the function $n_y\colon C(\mathfrak M_f)\to\mathbb R$ is a semi-norm satisfying the conditions \emph{1)--7)} of Theorem \ref{S2T6}.

\emph{d)} The map $\varphi_f\colon C(f)\onto C(\mathfrak M_f)$ is a topological isomorphism preserving all semi-norms $n_y$, $y\in Y$.
\end{thm}

\end{document}

 Профиль  
                  
 
 Re: символ в конце окружения
Сообщение23.08.2012, 14:46 


08/02/12
24
СПАСИБО!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Lenchik


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group