更改字体时,将章节标题设置为小写字体时出现问题

更改字体时,将章节标题设置为小写字体时出现问题

我正在尝试将文档中的字体更改为Arial。我正在使用以下代码。

\documentclass{article}

\usepackage[margin=1in,headheight=5\baselineskip,headsep=1\baselineskip,includehead]{geometry}


\usepackage[scaled]{uarial} 
\renewcommand*\familydefault{\sfdefault} 
\usepackage[T1]{fontenc}

\usepackage{sectsty} 
\sectionfont{\sc\sectionrule{0pt}{0pt}{-5pt}{0.5pt}}

\usepackage{lipsum}

\begin{document}


\section*{My Section Heading}
\lipsum


\end{document}

不幸的是,章节标题不是小写。当我注释掉以下行时,它可以工作,但字体是 LaTeX 普通字体。有人能帮我吗?

\renewcommand*\familydefault{\sfdefault}

以下是有和没有的结果\renewcommand*\familydefault{\sfdefault}

在此处输入图片描述

答案1

这是一种确定特定形状(或粗细)是否适用于 LaTeX 字体的方法。此方法仅适用于为与 LaTeX 一起使用而安装的字体。它不适用于与 XeTeX 或 LuaTeX 一起使用的系统字体。

确定相关的字体定义文件。如果你正在加载一个包,就像本例一样,请在包中查找\renewcommand{\sfdefault}{}\renewcommand{\rmdefault}{}\renewcommand{\ttdefault}{}。在本例中,我们在 中找到以下行uarial.sty

\renewcommand{\sfdefault}{ua1}

这告诉我们系列名称是ua1。字体定义文件的名称取决于您使用的编码以及系列名称。默认情况下,它将ot1从 OT1 编码开始。但是,uarial不支持 OT1,所以我假设您使用的是 T1,这意味着t1ua1.fd是字体定义文件。

该文件的内容如下:

\ProvidesFile{t1ua1.fd}
   [2006/03/21 Fontinst v1.928 font definitions for T1/ua1.]

标准设置指定文件名和版本信息。

\expandafter\ifx\csname ua1@Scale\endcsname\relax
 \let\uaI@@Scale\@empty
\else
 \edef\uaI@@Scale{s*[\csname ua1@Scale\endcsname]}%
\fi

支持缩放。

\DeclareFontFamily{T1}{ua1}{}

在编码中定义ua1为字体系列T1

\DeclareFontShape{T1}{ua1}{m}{n}{ <-> \uaI@@Scale ua1r8t}{}

\DeclareFontShape{T1}{ua1}{m}{it}{ <-> \uaI@@Scale ua1ri8t}{}

\DeclareFontShape{T1}{ua1}{b}{n}{ <-> \uaI@@Scale ua1b8t}{}

\DeclareFontShape{T1}{ua1}{b}{it}{ <-> \uaI@@Scale ua1bi8t
}{}

这些是适当的字体定义命令。每个命令的形式如下:

\DeclareFontShape{encoding}{family}{series}{shape}{definition}{size}

我们可以看到,这个字体系列在 2 个系列中各包含 2 种不同的形状,并且所有点大小都使用相同的字体(因为最后一个参数为空)。这两个系列分别是m(medium) 和b(bold)。这两个形状分别是n(upright) 和it(italic)。

\DeclareFontShape{T1}{ua1}{m}{sl}{<->ssub * ua1/m/it}{}
\DeclareFontShape{T1}{ua1}{bx}{n}{<->ssub * ua1/b/n}{}
\DeclareFontShape{T1}{ua1}{bx}{it}{<->ssub * ua1/b/it}{}
\DeclareFontShape{T1}{ua1}{b}{sl}{<->ssub * ua1/b/it}{}
\DeclareFontShape{T1}{ua1}{bx}{sl}{<->ssub * ua1/b/sl}{}

这些命令告诉 LaTeX '悄悄地用一种字体替换另一种字体。例如,形状将悄悄地被适当粗细的形状sl替换。类似地, (粗体)将悄悄地被(粗体扩展)替换。这些替换是悄悄的,因为 LaTeX 不会发出有关缺少字体的警告。itbbx

\endinput

由于没有提及形状sc,我们知道该字体系列不包含小型大写字母,并且当该字体系列处于活动状态时调用小型大写字母将由于缺少形状而导致警告,即在这种情况下替换会很嘈杂,而不是无声的。

相关内容