如何使用 fontspec 和 Lualatex 编译的代码生成斜体小型大写字母

如何使用 fontspec 和 Lualatex 编译的代码生成斜体小型大写字母

我希望在字母后立即获得斜体小写字母。因此,我将lmodernslantsc包调用到以下 MWE 中以实现此目的:

\documentclass{book}
\usepackage{lettrine}

\usepackage{lmodern}
\usepackage{slantsc}

\usepackage{fontspec}

\input GoudyIn.fd
\newcommand*\initfamily{\usefont{U}{GoudyIn}{xl}{n}}
\renewcommand{\LettrineFontHook}{\initfamily{}}
\setcounter{DefaultLines}{3}
\renewcommand{\DefaultLoversize}{.47}

\begin{document}
\thispagestyle{empty}
\Large

\lettrine[lines=3,loversize=.25]{\initfamily{T}}{\textsl{he}} \textit{present little work is entitled ``A Book.''}
\end{document}

不幸的是,它产生的不是我想要的:

在此处输入图片描述

请注意,紧跟在字母后面的字母是斜体,但不是小写字母。

但是,当我注释掉\usepackage{fontspec}并运行代码时lualatex,我得到了我想要的结果:

在此处输入图片描述

现在,在我正在处理的文档中,我需要该fontspec包,并且必须用它进行编译lualatex

评论:fontspec我可以使用和生成直接小型大写字母,lualatex从而\lettrine[lines=3,loversize=.25]{\initfamily{T}}{he} \textit{present little work is entitled ``A Book.''}生成:

在此处输入图片描述

问题:如何修改上述代码,以便我可以使用包来为紧跟在 lettrine 后面的字母生成斜体小型大写字母fontspec,并使用 进行编译lualatex

谢谢。

答案1

\usepackage{lmodern}如果删除和\usepackage{slantsc}而这些没有意义的话,系统将自动选择字体fontspec

您甚至可以避免烦人的字体替换警告。

\documentclass{book}
\usepackage{lettrine}
\usepackage{fontspec}

\usepackage{pdftexcmds}

\input{GoudyIn.fd}
\newcommand*\initfamily{\usefont{U}{GoudyIn}{xl}{n}}
\renewcommand{\LettrineFontHook}{\initfamily}
\setcounter{DefaultLines}{3}
\renewcommand{\DefaultLoversize}{.47}

\makeatletter
\renewcommand{\LettrineTextFont}{%
  \ifnum\pdf@strcmp{\f@shape}{it}=0 \slshape\fi
  \scshape
}
\makeatother

\begin{document}

\lettrine[lines=3,loversize=.25]{T}{he} present little work is entitled ``A Book.''

\vspace{1cm}

\itshape
\lettrine[lines=3,loversize=.25]{T}{he} present little work is entitled ``A Book.''

\end{document}

在此处输入图片描述

\initfamily还请注意我对您的代码所做的更改。例如,不需要声明两次,并且\input后面应该跟一个括号。

答案2

您无法将旧式 8 位字体包(例如lmodern)与 相结合fontspec。(或者您可以,但这需要大量额外工作。)

而是加载包含斜体小写字母的字体,例如 New Computer Modern Book(尽管默认的 Latin Modern 现在应该可以使用),然后您可以使用\textsc{\textit{Foo}}{\itshape\scshape Foo}

如果您确实想要在同一文档中使用 8 位文本编码和fontspec,则应调用\usefontfontencoding切换第一个单词的字体编码,例如\usefont{T1}{lmr}{m}{scit}。您可能需要加载fontaxes或诸如此类的包,cfr-lm以便提供更多 8 位拉丁现代字体选项。

答案3

\documentclass{book}
\usepackage{lettrine}
\usepackage{libertinus}
\input GoudyIn.fd
\newcommand*\initfamily{\usefont{U}{GoudyIn}{xl}{n}}
\renewcommand{\LettrineFontHook}{\initfamily{}}
\setcounter{DefaultLines}{3}
\renewcommand{\DefaultLoversize}{.47}

\begin{document}
\thispagestyle{empty}
\Large
\lettrine[lines=3,loversize=.25]{\initfamily{T}}{\textit{he}} \textit{present little work is 
entitled ``A Book.''}
\end{document}

在此处输入图片描述

相关内容