\textbf{text} 而不增加文本的长度

\textbf{text} 而不增加文本的长度

使用 时\textbf{text}, 的长度text会增加。有没有办法text在不增加长度的情况下使 变粗?

编辑:

感谢@Herbert 和@Martin,这对我来说是一个完美的解决方案:

   \newsavebox\CBox 
   \newcommand<>*\textBF[1]{\sbox\CBox{#1}\resizebox{\wd\CBox}{\ht\CBox}{\textbf#2{#1}}}

答案1

\documentclass{article}
\usepackage{graphicx}
\newsavebox\CBox
\def\textBF#1{\sbox\CBox{#1}\resizebox{\wd\CBox}{\ht\CBox}{\textbf{#1}}}
\parindent=0pt
\begin{document}
foobarbaz y\\
\textbf{foobarbaz} y\\
\textBF{foobarbaz} y

\end{document}

在此处输入图片描述

例如beamer

\documentclass{beamer}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\newsavebox\CBox
\newcommand<>*\textBF[1]{\only#2{\sbox\CBox{#1}\resizebox{\wd\CBox}{\ht\CBox}{\textbf{#1}}}}
\parindent=0pt
\begin{document}
\begin{frame}{foo}
\only<1>{foobarbaz y1} 
\textbf<2->{foobarbaz y2}
\textBF<3>{foobarbaz y3}
\end{frame}

\end{document}

另一个(更好的)可能性是使用包中的字母间距选项microtype

答案2

您可以使用\fontseries{b}\selectfont选择非扩展粗体字体,当然前提是您使用的字体系列包含此类字体(如 computer modern 所包含)。为了进行比较,请注意\textbf使用\fontseries{bx},其中 代表x“扩展”。

答案3

这个答案只是为了向 Herber 的命令添加覆盖支持,他应该为此受到赞扬。

\newcommand<>\textBF[1]{\only#2{\dotextBF}{#1}}
\newcommand\dotextBF[1]{\sbox0{#1}\resizebox{\wd0}{\ht0}{\textbf{#1}}}

...

\textBF<2->{xyz}

从第二个屏幕开始,“xyz”将变为粗体。

我认为这不是在屏幕上强调事物的好方法;颜色更好。

答案4

如果您愿意(或被允许)切换到打字机(等宽)字体,那么您就不会遇到这个问题:常规字体和粗体字体具有完全相同宽度的字形。

以下 MWE 使用Courier(缩放 5%,以使所用单声道字体和文本字体的大写字母高度相等),因为在该字体中,中等粗细和粗体之间的差异特别明显。该lmodern包中也有粗体单声道字体,但与中等粗细的差异并不明显。

\documentclass{article} 
\usepackage[scaled=1.05]{couriers} %%
\begin{document}
\noindent
\texttt{The quick brown fox 012456789}\\
\texttt{\bfseries The quick brown fox 012456789}
\end{document}

您可能需要考虑的另一种字体包是arev。(鉴于您似乎正在准备一个 beamer 演示文稿,使用该arev包无论如何都是一个不错的选择。)在 arev 包中,mono 字体与文本字体(无衬线字体)很好地协调,而中等和粗体 mono 字体则截然不同。

相关内容