我已经尝试过了在 beamer \institute 中使用 \scshape 或 \textsc修复\rmfamily
下面的 MWE,但它不起作用 - 我已经看到了\textsc 的问题以及,但是我认为我fontenc
现在不应该加载我正在使用fontspec
的xelatex
。
这是我得到的输出 - 该部分下方的居中文本应该是小型大写字母,但事实并非如此(但请注意,该部分标题/标题确实按预期显示了小型大写字母):
以下是 MWE:
\documentclass[letterpaper,12pt]{article}
% \typeout{ == \the\paperwidth / \the\paperheight ==}
% \typeout{ == \the\pdfpagewidth / \the\pdfpageheight ==}
\pdfpagewidth=\paperwidth \pdfpageheight=\paperheight
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Junicode}
\makeatletter
\renewcommand{\section}{\@startsection
{section}% % the name
{1}% % the level
{\z@}% % the indent / 0mm
{-\baselineskip}% % the before skip / -3.5ex \@plus -1ex \@minus -.2ex
{0.5\baselineskip}% % the after skip / 2.3ex \@plus .2ex
{\centering\normalsize\scshape}} % the style
\makeatother
\usepackage{lipsum}
\usepackage{tikz}
\begin{document}
\section*{A test of section small-caps}
\begin{center}
\textbf{\rmfamily \textsc{Something written without small-caps}}
\end{center}
\lipsum[1]
\end{document}
关于如何让小型股在这里运行,您有什么建议吗?
非常感谢您的任何回答,
干杯!
答案1
问题是您的字体没有定义粗体小写字母。如果您使用带有粗体小写字母的字体(例如 Minion Pro),它将起作用:
答案2
在得出结论后上一篇(已删除,现已这里); 我终于设法找到了一个作弊方法,这样\bfseries\scshape
就可以得到正常的小写字母,但“假粗体”,使用 ; 选项fontspec
并且没有任何抱怨(并保留大写字母)。
诀窍是\fontspec
在初始调用\setmainfont
(这将创建新的字体系列 Junicode(0))之后发出一个请求 Junicode(常规)的伪粗体调用(这将创建新的字体系列 Junicode(1))。然后,使用 Latex2e 命令,\DeclareFontShape
我们可以将 Junicode(0) 的粗体小写字母(不存在)映射到 fakebold Junicode(1) 的小写字母(存在)。
\DeclareFontShape
您可以通过观察没有它时生成的警告来找到正确的语法,对我来说,这些警告是:
LaTeX Font Warning: Font shape `EU1/Junicode(0)/bx/sc' undefined
(Font) using `EU1/Junicode(0)/bx/n' instead on input line 37.
这是示例代码的结果:
...这是用以下方式编译的代码xelatex test.tex
:
\documentclass[letterpaper,12pt]{article}
% \typeout{ == \the\paperwidth / \the\paperheight ==}
% \typeout{ == \the\pdfpagewidth / \the\pdfpageheight ==}
\pdfpagewidth=\paperwidth \pdfpageheight=\paperheight
\usepackage{fontspec}
\defaultfontfeatures{Ligatures=TeX}
\setmainfont{Junicode}
% each \setmainfont / fontspec command creates a new Junicode(X) font
% here we are at Junicode(0)
% create Junicode(1) with fake bold
\fontspec[FakeBold=2.5]{Junicode}
% map Junicode(0)/bx/sc (bold smallcaps) to Junicode(1)/m/sc (normal smallcaps of fake bold)
\DeclareFontShape{EU1}{Junicode(0)}{bx}{sc}{<->ssub * Junicode(1)/m/sc}{}
\makeatletter
\newcommand{\showfont}{Encoding: \f@encoding{},
Family: \f@family{},
Series: \f@series{},
Shape: \f@shape{},
Size: \f@size{}
}
\makeatother
\begin{document}
{\scshape \showfont Aa}
{\fontspec[Letters=SmallCaps]{Junicode} \showfont Aa}
{\bfseries\scshape \showfont Aa}
\end{document}
好吧,希望这对某人有帮助,
干杯!
编辑:只是想指出,此代码也可以通过以下方式编译lualatex
(如果您安装了所需的软件包);然而,一个区别是lualatex
无法理解像'FakeBold'这样的OpenType选项:
.................................................
. fontspec info: "defining-font"
.
. Font family 'Junicode(0)' created for font 'Junicode' with options
. [Ligatures=TeX,Scale=1.0].
.
. This font family consists of the following shapes:
.................................................
luaotfload | load font: font family='junicode', subfamily='regular' found: /usr
/share/fonts/truetype/ttf-junicode/Junicode-Regular.ttf
fontspec: script 'latn' exists in font 'JunicodeRegular'
*************************************************
* fontspec warning: "fakebold-only-xetex"
*
* The "FakeBold" and "AutoFakeBold" options are only available with XeLaTeX.
* Option ignored.
*************************************************
另一方面,xelatex
当请求新选项(例如'FakeBold')时,似乎会为实例化的每个新“字体系列”在 PDF 中嵌入单独的字体 - 从我正在研究的类似示例中可以看出:
$ pdffonts test.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
WOHRES+Junicode-Regular CID TrueType yes yes yes 6 0
ZNKKUV+Junicode-Italic CID TrueType yes yes yes 18 0
HHUNME+Junicode-Bold CID TrueType yes yes yes 23 0
YSORBG+Junicode-Regular CID TrueType yes yes yes 50 0
GDUQPQ+Junicode-Regular CID TrueType yes yes yes 64 0
MLJVAZ+Junicode-Regular CID TrueType yes yes yes 72 0
CHJXWV+Junicode-Regular CID TrueType yes yes yes 74 0
... 而lualatex
在同一个 .tex 源上(关于‘FakeBold’的一个警告)似乎会“压缩”PDF 中嵌入的所有字体:
$ pdffonts test.pdf
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
VVMOBU+Junicode-Regular CID TrueType yes yes yes 39 0
QEUPWF+Junicode-Italic CID TrueType yes yes yes 53 0
VJZORW+Junicode-Bold CID TrueType yes yes yes 58 0