1

I want to create basically a shortcut for

\begin{sometheorem}[optional parameter]
    \leavevmode \vspace{-\baselineskip}\vspace{-\baselineskip}\vspace{3pt} %some space adjustments
    \begin{leftbar}
        some text
    \end{leftbar}
\end{sometheorem}

so i tried:

\newenvironment{defi}[1]
{
\begin{definition}[#1]
\leavevmode \vspace{-\baselineskip}\vspace{-\baselineskip}\vspace{3pt}
\begin{leftbar}\noindent
}
{
\end{leftbar}
\end{definition}
}

But this gives me

Theorem (])

Optional parameter] some text

What can i do, to properly pass the parameter along?

Edit: I am using the framed package for leftbar and amsthm for the theorems.

4
  • How or where is leftbar defined?
    – egreg
    Nov 6, 2020 at 17:46
  • I am using leftbar from the framed package.
    – Kyuhunter
    Nov 6, 2020 at 17:56
  • See tcolorbox instead. Tons of options including wrapping already existing envs
    – daleif
    Nov 6, 2020 at 18:47
  • How would I do this with tcolorbox?
    – Kyuhunter
    Nov 6, 2020 at 19:29

1 Answer 1

2

You need to branch on whether the optional argument is given or not.

\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}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .