我正在切换句子中的字体和大小,并且还使用 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}