GeneralUse unbalanced brackets in /newenvironment

LaTeX specific issues not fitting into one of the other forums of this category.
kostka
Posts: 11
Joined: Tue Sep 15, 2009 3:53 am

Use unbalanced brackets in /newenvironment

Post by kostka »

I want to use unbalanced brackets in the start and end arguments of /newenvironment

Example: I want to somehow define

Code: Select all

Code, edit and compile here:
\newenvironment{boxthis}
{ \fbox{ } % <-- note this is unbalanced
{ } } % <-- note this is unbalanced, but balances with the brackets in the above
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
such that

Code: Select all

Code, edit and compile here:
\begin{boxthis}
this text is boxed
\end{boxthis}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
is equivalent to

Code: Select all

\fbox{this text is boxed}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Is there a way to accomplish this? Thanks! :D
Last edited by kostka on Thu Feb 18, 2010 12:52 am, edited 1 time in total.

Recommended reading 2024:

LaTeXguide.org • LaTeX-Cookbook.net • TikZ.org

NEW: TikZ book now 40% off at Amazon.com for a short time.

And: Currently, Packt sells ebooks for $4.99 each if you buy 5 of their over 1000 ebooks. If you choose only a single one, $9.99. How about combining 3 LaTeX books with Python, gnuplot, mathplotlib, Matlab, ChatGPT or other AI books? Epub and PDF. Bundle (3 books, add more for higher discount): https://packt.link/MDH5p

frabjous
Posts: 2064
Joined: Fri Mar 06, 2009 12:20 am

Use unbalanced brackets in /newenvironment

Post by frabjous »

Can you just use the framed environment from the framed package? Or the Sbox environment of fancybox?
kostka
Posts: 11
Joined: Tue Sep 15, 2009 3:53 am

Use unbalanced brackets in /newenvironment

Post by kostka »

frabjous wrote:Can you just use the framed environment from the framed package? Or the Sbox environment of fancybox?
For this example, yes, but what I actually want is a lot more complicated. I just wanted the example to be quickly understood for anyone reading this forum.

I actually want to convert something close to

Code: Select all

Code, edit and compile here:
\newcommand{\boxedeqn}[1]{%
\[\fbox{%
\addtolength{\linewidth}{-2\fboxsep}%
\addtolength{\linewidth}{-2\fboxrule}%
\begin{minipage}{\linewidth}%
\begin{equation}#1\end{equation}%
\end{minipage}%
}\]%
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
into an environment.

Edit: I suppose using the framed environment would work as well, as long as the functionality is identical to fbox, but I'd still like to know if the scenario in the OP is possible.
User avatar
localghost
Site Moderator
Posts: 9202
Joined: Fri Feb 02, 2007 12:06 pm

Use unbalanced brackets in /newenvironment

Post by localghost »

kostka wrote:[...] I suppose using the framed environment would work as well, as long as the functionality is identical to fbox, but I'd still like to know if the scenario in the OP is possible.
Don't suppose, just test. The framed package as suggested by frabjous is the solution to your scenario. But for emphasized equations the empheq package from the mh bundle is better.


Best regards
Thorsten
kostka
Posts: 11
Joined: Tue Sep 15, 2009 3:53 am

Use unbalanced brackets in /newenvironment

Post by kostka »

localghost wrote:
kostka wrote:[...] I suppose using the framed environment would work as well, as long as the functionality is identical to fbox, but I'd still like to know if the scenario in the OP is possible.
Don't suppose, just test. The framed package as suggested by frabjous is the solution to your scenario. But for emphasized equations the empheq package from the mh bundle is better.


Best regards
Thorsten
Thanks for mentioning the empheq package, which I was not aware of.

Anyhow, the framed environment does not seem to work as 1) it resets the paragraph indentation for the next line, even if no space is skipped and 2) it adds too much space (though this point can likely be fixed).

The empheq package doesn't seem to be able to box both the equation and its number, which is what I'm after.

For now I suppose I'll have to settle for using

Code: Select all

Code, edit and compile here:
\newcommand{\boxedeqn}[1]{%
\[\fbox{%
\addtolength{\linewidth}{-2\fboxsep}%
\addtolength{\linewidth}{-2\fboxrule}%
\begin{minipage}{\linewidth}%
\begin{equation}#1\end{equation}%
\end{minipage}%
}\]%
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
which produces exactly the behavior I want, even though it makes boxed equations look different in the .tex file from normal equations.

Thanks for all the comments. :)
User avatar
frabjous
Posts: 2064
Joined: Fri Mar 06, 2009 12:20 am

Use unbalanced brackets in /newenvironment

Post by frabjous »

Did you try the solution using fancybox and the Sbox environment?

Something along these lines:

Code: Select all

Code, edit and compile here:
\documentclass{article}
\usepackage{lipsum}
\usepackage{fancybox}
\newlength{\boxedeqnlen}
\newenvironment{boxedeqn}{%
\begin{Sbox}\setlength{\boxedeqnlen}{\linewidth}
\addtolength{\boxedeqnlen}{-2\fboxsep}%
\addtolength{\boxedeqnlen}{-2\fboxrule}%
\begin{minipage}{\boxedeqnlen}%
\begin{equation}}%
{\end{equation}%
\end{minipage}%
\end{Sbox}\noindent\fbox{\TheSbox}}
\begin{document}
\lipsum[1-2]
\begin{boxedeqn}
e^{ix}=-1
\end{boxedeqn}
\lipsum[3-4]
\begin{boxedeqn}
2+2=4
\end{boxedeqn}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
kostka
Posts: 11
Joined: Tue Sep 15, 2009 3:53 am

Use unbalanced brackets in /newenvironment

Post by kostka »

frabjous wrote:Did you try the solution using fancybox and the Sbox environment?

...
Thanks! This needs some work to get spacing how I want, but it will work.

I'm going to mark this topic as solved, but I'm still surprised there isn't an easy way to use unbalanced brackets inside of an argument.
phi
Posts: 577
Joined: Tue Oct 21, 2008 8:10 pm

Use unbalanced brackets in /newenvironment

Post by phi »

kostka wrote:I'm going to mark this topic as solved, but I'm still surprised there isn't an easy way to use unbalanced brackets inside of an argument.
It's a syntactic problem: The \newenvironment command needs to know where its arguments end, and allowing unbalanced braces would result in ambiguities.
It is possible to grab the contents of an environment as a macro parameter (in fact, this is done by most of the amsmath environments), but generally you should rely on packages that provide a higher level abstraction.
Something that is always possible and requires no tricks is grabbing the contents in a LR box using the lrbox environment:

Code: Select all

Code, edit and compile here:
\documentclass{minimal}
\newsavebox{\mybox}
\newenvironment{boxthis}{%
\begin{lrbox}{\mybox}%
}{%
\end{lrbox}%
\fbox{\usebox{\mybox}}%
}
\begin{document}
\begin{boxthis}
abc
\end{boxthis}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ignasi
Posts: 20
Joined: Tue Jul 28, 2009 5:10 pm

Use unbalanced brackets in /newenvironment

Post by ignasi »

Hi,

I think you can use \bgroup and \egroup commands instead of open and close brackets. Look at this thread, maybe it helps:

http://www.latex-community.org/forum/vi ... f=5&t=2945

Ignasi
kostka
Posts: 11
Joined: Tue Sep 15, 2009 3:53 am

Use unbalanced brackets in /newenvironment

Post by kostka »

Thanks for the replies, but I still haven't found a solution. The closest I can get using lrbox (or sbox) is:

Code: Select all

Code, edit and compile here:
\documentclass{minimal}
\newsavebox{\mybox}
\newenvironment{equationbox}
{\begin{lrbox}{\mybox}\begin{math}}
{\end{math}\end{lrbox}\\%
\fbox{\begin{minipage}{\linewidth}%
\begin{equation}\usebox{\mybox}\end{equation}%
\end{minipage}}%
\\\ignorespacesafterend}
\begin{document}
The solution to
\begin{equation}
2x-1=0
\end{equation}
is
\begin{equationbox}
x=\frac{1}{2}
\end{equationbox}
where we employ the use of a \textit{fraction}.
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
But since I want equationbox to mimic equation, I need it to display in the displaymath style. Bizzarly, changing a portion of the code to

Code: Select all

...
\newenvironment{equationbox}
{\begin{lrbox}{\mybox}\begin{displaymath}}
{\end{displaymath}\end{lrbox}\\%
...
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
causes latex to break and complain about a missing $ when it reaches the \frac command.

Still working on it. I'll reply if I find something.
Post Reply