10

Does anyone know how to produce a half-box symbol in LaTeX which comprises a bar over an entire expression and a vertical line on the right meeting in the corner, like the top and the right edge of a box?

I currently use \overline{abc}\vert as a compromise (say, abc is the text I wish to enclose) but clearly the bar and the vertical line do not meet each other in the top-right corner.

Thanks

3

You probably want an actuarial symbol annuity. One of the solutions is the following macro, taken from ftp://ftp.mackichan.com/swandswp30/support/actuarial.tex,‎ with the usage {\bx argument}:

\documentclass{article}


\begin{document}

\newbox\tmp
\newdimen\height
\newdimen\dropdist
\def\BX#1{\setbox\tmp=\hbox{$\overline{\scriptstyle #1}$}
              \height=\ht\tmp
              \dropdist=\dp\tmp
              \advance\dropdist by .7pt
              \advance\height by \dp\tmp
              \box\tmp
              \lower \dropdist \hbox{\vrule height
              \height width .25pt\relax}
              \ifnum0=`{\else}\fi
}
\def\bx{\expandafter\BX\expandafter{\ifnum0=`}\fi}

\[
{\bx x+y+z\,}
\]
\end{document}

enter image description here

If it will not be used in such a context, some modifications are needed, in particular remowing \scriptstyle before an argument.

  • That's brilliant. It was indeed for typesetting an actuarial science document which I am helping out with. – user42427 Dec 9 '13 at 8:58
  • 6
    The rules have different widths. There are far better solutions around – egreg Dec 9 '13 at 9:00
  • @egreg Yes, these solutions look nicer. However, for some reason the author made such a box. With the suggested knowledge OP can seek for the best solution. And an argument only for fun: the hunting for two gold badges begun. ;-) – Przemysław Scherwentke Dec 11 '13 at 16:30
12

A TikZ approach.

Code

\documentclass{article}
\usepackage{tikz}

\newcommand\halfbox[1]{
  \tikz[baseline=(n.base)]{\node(n)[inner sep=1pt]{$#1$};
    \draw[line cap=round](n.north west)--(n.north east)--(n.south east);
  }
}

\begin{document}
$f(x)=\overline{abc}\vert$

$f(x)=\halfbox{abc}$
\end{document}

Output

enter image description here

12

The following takes most of the elements from the LaTeX kernel \framebox to construct a \halfbox:

enter image description here

\documentclass{article}

\makeatletter
\newcommand{\halfbox}[1]{%
  \setbox\@tempboxa\hbox{#1\kern\fboxsep}%
  \hbox{%
    \lower\@tempdima\hbox{%
      \vbox{%
        \hrule\@height\fboxrule
        \hbox{%
          \vbox{%
            \vskip\fboxsep
            \box\@tempboxa
            \vskip\dimexpr\fboxsep+\fboxrule\relax%
          }%
          \vrule\@width\fboxrule}%
        }%
      }%
  }}
\makeatother

\begin{document}

\fbox{abc}\ \halfbox{abc}

\end{document}

Since it uses the same construction as \framebox, lengths \fboxrule and \fboxsep can be adjusted in the same way.

  • 1
    this would look nicer if there wasn't quite so much white space between the rules and the expression. – barbara beeton Dec 9 '13 at 15:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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