字体和大小的间距问题

字体和大小的间距问题

我正在切换句子中的字体和大小,并且还使用 anyfontsize 来提供更多选项,使文本看起来更美观。以下是代码:

One\renewcommand{\familydefault}{\sfdefault}
\normalfont % this is required for the change to take effect
{\fontsize{8}{9.6}\selectfont apple}
\renewcommand{\familydefault}{\rmdefault}
\normalfont among five\renewcommand{\familydefault}{\sfdefault}
\normalfont % this is required for the change to take effect
{\fontsize{8}{9.6}\selectfont oranges}
\renewcommand{\familydefault}{\rmdefault}
\normalfont % this is required for the change to take effect
.

它看起来像这样:

在此处输入图片描述

如您所见,“apple”和“among”、“oranges”和“.”之间的空格与其他的不一致,知道为什么吗?

答案1

您有许多虚假的空间(见%行末百分号 ( ) 有什么用?) 导致的问题:

在此处输入图片描述

\documentclass{article}
\newcommand{\fontchange}[1]{\textsf{\footnotesize #1}}
\begin{document}

One\renewcommand{\familydefault}{\sfdefault}
\normalfont % this is required for the change to take effect
{\fontsize{8}{9.6}\selectfont apple}
\renewcommand{\familydefault}{\rmdefault}% <------ Spurious space
\normalfont among five\renewcommand{\familydefault}{\sfdefault}
\normalfont % this is required for the change to take effect
{\fontsize{8}{9.6}\selectfont oranges}% %  <------ Spurious space
\renewcommand{\familydefault}{\rmdefault}% <------ Spurious space
\normalfont % this is required for the change to take effect
.

One \fontchange{apple} among five \fontchange{oranges}.

\end{document}

另一个(更好的)选择是定义宏使字体统一变化。它还会使你的代码更具可读性。

答案2

如果您可以切换到 XeLaTeX 或 LuaLaTeX,整个字体缩放问题就不再是问题:

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec} 
\setmainfont{XITS} % a Times Roman clone
\setsansfont[Scale=MatchLowercase]{Helvetica Neue}
\begin{document}
One \textsf{apple} among five \textsf{oranges}.
\end{document}

在本例中,Scale=MathLowercase似乎是合适的。对于其他情况,Scale=MathUppercase可能需要。对于非常特殊的情况,您也可以Scale=<number>直接设置;这里的<number>应该是一个正标量,一般在 1 附近。

答案3

\familydefault你一开始就不应该重新定义。而且\normalfont也不需要发行。

只需在一个组中发出\sffamily(这也隐含地执行):\selectfont

\documentclass{article}
\usepackage{mathptmx}
\usepackage{helvet}

\begin{document}

One {\fontsize{8}{9.6}\sffamily apple} among five
{\fontsize{8}{9.6}\sffamily oranges}.

\end{document}

在此处输入图片描述

\fontsize这是无需声明但使用更方便的命令所获得的结果\textsf

\documentclass{article}
\usepackage{mathptmx}
\usepackage{helvet}

\begin{document}

One \textsf{apple} among five \textsf{oranges}.

\end{document}

在此处输入图片描述

哦,无衬线字体的字太大了!是的,确实太大了,但有一种简单的方法可以将它们变小,而无需执行复杂的操作:将选项传递scaled=...helvet

\documentclass{article}
\usepackage{mathptmx}
\usepackage[scaled=.8]{helvet}

\begin{document}

One \textsf{apple} among five \textsf{oranges}.

\end{document}

在此处输入图片描述

相关内容