![在 sbox 中修改字距](https://linux22.com/image/417913/%E5%9C%A8%20sbox%20%E4%B8%AD%E4%BF%AE%E6%94%B9%E5%AD%97%E8%B7%9D.png)
我尝试采用 Egreg 给出的解决方案,将罗马数字加上下划线(带上划线和下划线的罗马数字)。
然而,当我减少罗马数字的字距时,我遇到了一个问题(我发现这样看起来更美观)。上划线和下划线的宽度不正确,并且偏离了边距。
我不明白问题是什么原因造成的,因为盒子的宽度是根据字距调整的值进行修改的。
你知道如何解决这个问题吗?
这是我的 MWE:
\documentclass[12pt,a4paper]{article}
\usepackage{libertine}
\usepackage{microtype}
\usepackage[showframe]{geometry}
\newsavebox{\thebox}
\def\barroman#1{%
\sbox{\thebox}{#1}%
\dimen\thebox=\dimexpr\wd\thebox+0.5pt\relax%
\makebox[\dimen\thebox]{%
\rlap{%
\vrule width\dimen\thebox%
height 0.07ex%
depth 0.02ex%
}%
\rlap{%
\vrule width\dimen\thebox%
height\dimexpr\ht\thebox+0.01ex\relax%
depth\dimexpr-\ht\thebox+0.08ex\relax%
}%
\kern0.25pt#1\kern0.25pt%
}%
}
\def\romnumwidth#1{%
\sbox{\thebox}{#1}%
\dimen\thebox=\dimexpr\wd\thebox%
(\the\dimexpr\wd\thebox)%
}
\begin{document}
\Huge\noindent\kern0.25pt XI\\
\barroman{XI} \romnumwidth{XI}\\
\barroman{\textls[-30]{XI}} \romnumwidth{\textls[-30]{XI}}\\
\barroman{\textls[100]{XI}} \romnumwidth{\textls[100]{XI}}
\end{document}