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
17991
Москва
Значки начала и окончания теоремы.

 Профиль  
                  
 
 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
17991
Москва
Вот работающий пример.

код: [ скачать ] [ спрятать ]
Используется синтаксис 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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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