
Я хочу создать по сути ярлык для
\begin{sometheorem}[optional parameter]
\leavevmode \vspace{-\baselineskip}\vspace{-\baselineskip}\vspace{3pt} %some space adjustments
\begin{leftbar}
some text
\end{leftbar}
\end{sometheorem}
поэтому я попробовал:
\newenvironment{defi}[1]
{
\begin{definition}[#1]
\leavevmode \vspace{-\baselineskip}\vspace{-\baselineskip}\vspace{3pt}
\begin{leftbar}\noindent
}
{
\end{leftbar}
\end{definition}
}
Но это дает мне
Теорема(])
Необязательный параметр] некоторый текст
Что я могу сделать, чтобы правильно передать параметр?
Редактировать: Я использую пакет framed для leftbar и amsthm для теорем.
решение1
Вам необходимо выполнить переход в зависимости от того, указан ли необязательный аргумент или нет.
\documentclass{article}
\usepackage{framed}
\newtheorem{innertheorem}{Theorem}
\newenvironment{theorem}[1][]
{\if\relax\detokenize{#1}\relax
\begin{innertheorem}%
\else
\begin{innertheorem}[#1]%
\fi
\mbox{}\par\nobreak
\vspace{-\baselineskip}\vspace{3pt}%
\begin{leftbar}\noindent\ignorespaces}
{\end{leftbar}\end{innertheorem}}
\begin{document}
\begin{theorem}
Some statement Some statement Some statement
Some statement Some statement Some statement
Some statement Some statement
\end{theorem}
\begin{theorem}[Something]
Some statement Some statement Some statement
Some statement Some statement Some statement
Some statement Some statement
\end{theorem}
\end{document}