Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to create a new environment which depend if a parameter exists or not. The basic definition, which works fine, is:

\newrgbcolor{bcolor}{1. 1. 1.}%
\newenvironment{pbox}
{\begin{lrbox}{\dummybox}%
\begin{minipage}{0.95\linewidth}
}
{\end{minipage}\end{lrbox}%
{\setlength{\fboxsep}{0.02\linewidth}%
\colorbox{bcolor}{\usebox{\dummybox}}}\vskip1.2em}

In some cases I need to specify the height of the minipage, there for I tried

\usepackage{ifthen}
\newrgbcolor{bcolor}{1. 1. 1.}%
\newenvironment{pbox}[1][0]
{\begin{lrbox}{\dummybox}%
\ifthenelse{\value{#1}=0}
 {\begin{minipage}{0.95\linewidth}}
 {\begin{minipage}[c][#1][c]{0.95\linewidth}}
}
{\end{minipage}\end{lrbox}%
{\setlength{\fboxsep}{0.02\linewidth}%
\colorbox{bcolor}{\usebox{\dummybox}}}\vskip1.2em}

which does not.

In most cases I want to use the pbox without the extra argument to detect the right size automatilly. Only when I specifiy the additional parameter the box should be fixed to this size.

Example:

\begin{pbox}
 This is a normal pbox which height is depending on the content. 
\end{pbox}
\begin{pbox}[10cm]
 This is a pbox which is at least 10cm height
\end{pbox}

How can this be done in a correct way?

share|improve this question
1  
First of all, start by posting a full MWE (minimal example), e.g. where does \newrgbcolor come from? Also I do not think it is a good idea to declare a new color each time the environment is used. –  daleif Feb 1 '12 at 15:10
    
The color comes from the original version which I try to modify. The pbox is used on a poster with non-white background. That's why I fixed the color which was originally an optional parameter. –  Grisu Feb 1 '12 at 15:17
    
That still does not help the rest of us, why should we debug irrelevant parts of your code? The color part is irrelevant for the problem at hand. –  daleif Feb 1 '12 at 15:19

1 Answer 1

up vote 3 down vote accepted

This works (etoolbox can do much more than ifthen)

\documentclass[a4paper]{memoir}
\usepackage{xcolor}
\usepackage{etoolbox}
\newsavebox\dummybox
\newenvironment{pbox}[1][]{
  \begin{lrbox}{\dummybox}%
    \ifblank{#1}{%
      \begin{minipage}{0.95\linewidth}%
    }{%
      \begin{minipage}[c][#1][c]{0.95\linewidth}%
    }%
  }{
    \end{minipage}%
  \end{lrbox}%
  \setlength{\fboxsep}{0.02\linewidth}%
  \colorbox{red}{\usebox{\dummybox}}%
  \vskip1.2em
}
\begin{document}
\begin{pbox}
   sdfsdfsd asdfasdf
as

 asdfasdf
\end{pbox}

\begin{pbox}[3cm]
  sdfsdfsd
 asdfasdf
 as

 asdfasdf
\end{pbox}
\end{document}
share|improve this answer
    
That's exactly what I need. Thanks –  Grisu Feb 1 '12 at 15:28

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.