有人知道如何在 LaTeX 中制作半框符号吗?该符号由覆盖整个表达式的一条横线和一条在右上角相交的垂直线组成,就像框的顶部和右边缘一样?
我目前使用\overline{abc}\vert
一种折衷方案(比如,abc 是我希望包含的文本)但显然该条和垂直线在右上角没有相交。
谢谢
答案1
您可能需要精算符号年金。解决方案之一是以下宏,取自ftp://ftp.mackichan.com/swandswp30/support/actuarial.tex,用法如下{\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}
如果它不会在这样的上下文中使用,则需要进行一些修改,特别是\scriptstyle
在参数之前进行删除。
答案2
TikZ 方法。
代码
\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}
输出
答案3
下面从 LaTeX 内核中取出大部分元素\framebox
来构建\halfbox
:
\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}
由于它采用与相同的结构\framebox
,因此长度\fboxrule
和\fboxsep
可以以相同的方式进行调整。