3

I'm having some problems with the mdframed package in combination with tabular. After figuring out how to get the width of the frame to match the width of the object (a table in my case) using a hack described here, there's not the same space from the table to the frame on either side.

enter image description here

It somehow seems there there is a bit more space on the left side, around 30%. Here's a MWE:

\documentclass[a4paper,12pt]{article}
\usepackage{environ}
\usepackage{varwidth}
\usepackage{siunitx}
\usepackage[version=3]{mhchem} % den nemmeste måde at skrive kemiske navne
\usepackage[framemethod=TikZ]{mdframed} % frame i images/figures
\newlength{\MyMdframedWidthTweak}%
\NewEnviron{MyMdframed}[1][]{%
    \setlength{\MyMdframedWidthTweak}{\dimexpr%
        +\mdflength{innerleftmargin}
        +\mdflength{innerrightmargin}
        +\mdflength{leftmargin}
        +\mdflength{rightmargin}
        }%
    \savebox0{%
        \begin{varwidth}{\dimexpr\linewidth-\MyMdframedWidthTweak\relax}%
            \BODY
        \end{varwidth}%
    }%
    \begin{mdframed}[
        linecolor=red,
        linewidth=3pt,
        roundcorner=5pt,
        userdefinedwidth=\dimexpr\wd0+\MyMdframedWidthTweak\relax, 
        #1]
        \usebox0
    \end{mdframed}
}
\begin{document}
\begin{MyMdframed}
\begin{tabular}{l r}
    Trivialnavn & vanillin \\
    Sumformel & \ce{C8H8O3} \\
    Kemisk struktur & \ce{(CH3O)C6H3(OH)CHO} \\
    IUPAC & 4-hydroxy-3-methoxybenzaldehyde \\
    CAS nummer & 121-33-5 \\
    Farve & hvid-gullig \\
    Duft & behagelig, blomstret \\
    Molarmasse & \SI{152,15}{\gram\per\mole} \\
    Smeltepunkt & \SI{82}{\celsius} \\
    Kogepunkt & \SI{170}{\celsius} \\
    Kilde & Wolfram|Alpha \& Databogen
\end{tabular}
\end{MyMdframed}
\end{document}

Not exactly minimal, but you get the point. I figured it was something in relation to the way the width of the table is calculated, but I have no idea how to adjust it. I got the same problem when using plain tikz for the task as described here.

Argo
  • 1,724

1 Answers1

3

You have to add two times the linewidth of the frame (here 3pt) to userdefinedwidth

userdefinedwidth=\dimexpr\wd0+\MyMdframedWidthTweak+6pt\relax,

Full code:

\documentclass[a4paper,12pt]{article}
\usepackage{environ}
\usepackage{varwidth}
\usepackage{siunitx}
\usepackage[version=3]{mhchem} % den nemmeste måde at skrive kemiske navne
\usepackage[framemethod=TikZ]{mdframed} % frame i images/figures
\newlength{\MyMdframedWidthTweak}%
\NewEnviron{MyMdframed}[1][]{%
    \setlength{\MyMdframedWidthTweak}{\dimexpr%
        +\mdflength{innerleftmargin}
        +\mdflength{innerrightmargin}
        +\mdflength{leftmargin}
        +\mdflength{rightmargin}
        }%
    \savebox0{%
        \begin{varwidth}{\dimexpr\linewidth-\MyMdframedWidthTweak\relax}%
            \BODY
        \end{varwidth}%
    }%
    \begin{mdframed}[
        linecolor=red,
        linewidth=3pt,
        roundcorner=5pt,
        userdefinedwidth=\dimexpr\wd0+\MyMdframedWidthTweak+6pt\relax,
        #1]
        \usebox0%
    \end{mdframed}%
}
\begin{document}
\begin{MyMdframed}
\begin{tabular}{l r}
    Trivialnavn & vanillin \\
    Sumformel & \ce{C8H8O3} \\
    Kemisk struktur & \ce{(CH3O)C6H3(OH)CHO} \\
    IUPAC & 4-hydroxy-3-methoxybenzaldehyde \\
    CAS nummer & 121-33-5 \\
    Farve & hvid-gullig \\
    Duft & behagelig, blomstret \\
    Molarmasse & \SI{152,15}{\gram\per\mole} \\
    Smeltepunkt & \SI{82}{\celsius} \\
    Kogepunkt & \SI{170}{\celsius} \\
    Kilde & Wolfram|Alpha \& Databogen
\end{tabular}%
\end{MyMdframed}
\end{document}

enter image description here