![是否有“正确”的方法来修复 \framebox 中的文本对齐问题?](https://linux22.com/image/240534/%E6%98%AF%E5%90%A6%E6%9C%89%E2%80%9C%E6%AD%A3%E7%A1%AE%E2%80%9D%E7%9A%84%E6%96%B9%E6%B3%95%E6%9D%A5%E4%BF%AE%E5%A4%8D%20%5Cframebox%20%E4%B8%AD%E7%9A%84%E6%96%87%E6%9C%AC%E5%AF%B9%E9%BD%90%E9%97%AE%E9%A2%98%EF%BC%9F.png)
该\framebox
命令将其内容垂直居中对齐,但这往往会产生非常令人不悦的结果。例如:
\documentclass{article}
\usepackage{relsize}
% Double box just to make things clearer
\newcommand{\DoubleBox}[1]{\framebox{\framebox{\textbf{#1}}}}
\begin{document} \noindent
\DoubleBox{I think this is visually displeasing} \par\noindent
\DoubleBox{\raisebox{0pt}[9pt]{I think this is an ugly hack}} \par\noindent
\DoubleBox{\larger\raisebox{0pt}[9pt]{And said hack doesn't work for larger text}}
\end{document}
有没有办法修复此问题,使其“有效”,以便所有尺寸的东西看起来都正确?
答案1
有两种方法可以解决这个问题(假设是一个从一开始就存在的问题)。
第一个是通过以下方式“规范化”高度和深度\strut
:
\newcommand{\DoubleBox}[1]{\framebox{\framebox{\bfseries\strut#1}}}
或者,你可以忽略深度:
\usepackage{amsmath} % for optional argument to `\smash`
\newcommand{\DoubleBox}[1]{\framebox{\framebox{\smash[b]{\bfseries#1}}}}