如何将括号与文本对齐?

如何将括号与文本对齐?

我想将 Z[x] 写成与 Z 对齐的括号。我尝试过使用\lbrack和,\rbrack但结果基本相同,那么强制它保持在同一行的最佳方法是什么?

答案1

欢迎来到 TeX.SX!在我看来,这是一个字体选择的问题。话虽如此,这里有一种无需更改字体即可将括号的“底部”与基线对齐的方法:

\documentclass{article}
\usepackage{graphicx}

\makeatletter
\newcommand*{\raisedChar}[1]{%
  \setbox\z@=\hbox{#1}%
  \leavevmode
  \raise\dp\z@\box\z@
}

\newcommand*{\@TextOrMathOpening}[1]{%
  \TextOrMath{#1}{\mathopen{#1}}%
}

\newcommand*{\@TextOrMathClosing}[1]{%
  \TextOrMath{#1}{\mathclose{#1}}%
}

\newcommand*{\raisedOpeningBracket}{%
  \@TextOrMathOpening{\raisedChar{[}}%
}

\newcommand*{\raisedClosingBracket}{%
  \@TextOrMathClosing{\raisedChar{]}}%
}

\newlength{\widthOfOpeningBracket}
\newlength{\widthOfClosingBracket}
\newlength{\heightOfZ}
\settowidth{\widthOfOpeningBracket}{[}
\settowidth{\widthOfClosingBracket}{]}
\settoheight{\heightOfZ}{Z}

\newcommand*{\scaledAndRaisedOpeningBracket}{%
  \@TextOrMathOpening{%
    \resizebox{\widthOfOpeningBracket}{\heightOfZ}{\raisedChar{[}}%
  }%
}

\newcommand*{\scaledAndRaisedClosingBracket}{%
  \@TextOrMathClosing{%
    \resizebox{\widthOfClosingBracket}{\heightOfZ}{\raisedChar{]}}%
  }%
}
\makeatother

% Abbreviations
\let\OB\raisedOpeningBracket
\let\CB\raisedClosingBracket
\let\sOB\scaledAndRaisedOpeningBracket
\let\sCB\scaledAndRaisedClosingBracket

\begin{document}
Z[x]\quad $Z[x]$
\medskip

Z\OB x\CB\quad $Z\OB x \CB$
\medskip

Z\sOB x\sCB\quad $Z\sOB x \sCB$
\end{document}

截屏

不过,这感觉有点儿太老套了。我不建议制作[]激活字符,因为那会破坏太多东西,但你可以选择一对 Unicode 字符,然后继续使用\newunicodechar如下所示这条信息\DeclareUnicodeCharacter那条信息

相关内容