我正在使用包mathptmx
来制作Times
字体,这是我的出版商所要求的。
该字体的问题在于,Computer Modern
由于mathptmx
包不支持古希腊语,因此古希腊语文本被字体替换。
在这个话题我被建议改用newtxtext
包。
我的问题是:
我需要用小写字母制作章节和部分标题,并且一些标题包含由包选项生成的古希腊
polutonikogreek
文本babel
。当我使用
newtext
它时,它会产生错误“Latex 错误:没有形状 LGR/Tempora-TLF/m/sc 的声明”。这当然是因为 Latex 试图在标题的拉丁文和古希腊文部分都使用小写字母。
我需要找到一个解决方案,使我能够在主文本中使用与 Times 字体类似的希腊文本,同时在标题中使用相同的希腊字体(不是小型大写字母)生成希腊文本,而其余标题则使用小型大写拉丁字体生成。
我在这里提供的是尽可能少的 MWE。我保留了我使用的所有软件包,因为解决方案通常无法预见可能的软件包冲突。
\documentclass[10pt,a4paper,twoside]{scrbook}%
\usepackage[dvips=false,pdftex=false,vtex=false]{geometry}
\geometry{
paperwidth=155mm,
paperheight=230mm,
inner=25mm,
outer=23mm,
bottom=20mm,
top=27mm
}
\usepackage[polutonikogreek,ngerman]{babel}%
\usepackage[utf8]{inputenc}%
\usepackage[T1]{fontenc}%
\usepackage{anyfontsize}
\usepackage{longtable}%
\usepackage{tabularx}%
\usepackage{array}%
\usepackage{float}%
\usepackage{setspace}%
\usepackage{tabto}%
\usepackage[font=small]{caption}
\usepackage{scrlayer-scrpage}
\usepackage{graphicx}%
\usepackage{nameref}%
\usepackage{xpatch}%
\usepackage{morewrites}
\usepackage{blindtext}
\usepackage{rotating}%
\usepackage[textwidth=2cm, textsize=tiny, backgroundcolor=white, linecolor=black]{todonotes}%
\usepackage{acronym}
\usepackage{bookmark}
\usepackage{xcolor}
\usepackage{mdwlist}
\usepackage{titlesec}
\usepackage{mathptmx}
\usepackage[normalem]{ulem}
\usepackage{newtxtext}% Times font
\usepackage{newtxmath}% if you need math
\usepackage{substitutefont}
\substitutefont{LGR}{\familydefault}{Tempora-TLF}
\usepackage{textcomp}%
%
%
% TEXT
%
\renewcommand{\baselinestretch}{1.2}% TEXT SPACING
%
\renewcommand{\arraystretch}{1.25}
%
\newcommand{\grk}[1]{{\foreignlanguage{polutonikogreek}{#1}}}% GREEK TEXT
\newcommand{\lat}[1]{\emph{{#1}}}% LATIN TEXT
%
%
% BIBLATEX:%
%
\usepackage[style=historische-zeitschrift, maxnames=2, hyperref=false, backref=true, backrefstyle=none, backend=bibtex,idemtracker=true, block=none]{biblatex}% change to hyperref=true to get clickable links
\usepackage[babel,german=quotes]{csquotes}%
\bibliography{Inhalt}
%
%
%
% REDESIGNING TITLE STYLES (REQUIRES TITLESEC)
%
\titleformat{\chapter}[display]% CHAPTER
{\fontsize{11}{12}\selectfont\scshape\centering}
{\scshape\chaptertitlename\ \thechapter.\enskip}{1pt}{\fontsize{11}{12}\selectfont}
\titlespacing*{\chapter}{0pt}{30pt}{30pt}% FIRST NUMBER BEFORE LAST NUMBER AFTER
\titleformat{\section}[block]% SECTION
{\fontsize{10.5}{8}\selectfont\centering}
{\thesection.\enskip}{1pt}{\fontsize{10.5}{8}\selectfont}
\titlespacing*{\section}{0pt}{15pt}{15pt}% FIRST NUMBER BEFORE LAST NUMBER AFTER
\titleformat{\subsection}[block]% SUBSECTION
{\fontsize{10.5}{8}\selectfont\centering\itshape}
{\itshape\thesubsection.\enskip}{1pt}{\fontsize{10.5}{8}\selectfont}
\titlespacing*{\subsection}{0pt}{15pt}{10pt}% FIRST NUMBER BEFORE LAST NUMBER AFTER
%
%
\begin{document}%
%
%
\frontmatter
\pagestyle{scrheadings}%
\chapter{\grk{L'ogoc-s'arx} – Ein in Fleisch gekleideter Gott}\thispagestyle{empty}
\section{\grk{<Omoo'usios} – Der gottgleiche Sohn}
\blindtext
\begin{quote}\grk{o>uko~un t~w m`en >agenn'htw patr`i o>ike~ion >ax'iwma fulakt'eon, mhd'ena to~u e@inai a>ut~w t`on a>'ition l'egontas; t~w d`e u<i~w t`hn <arm'ozousan tim`hn >aponemht'eon, t`hn >'anarqon a>ut~w par`a to~u patr`os g'ennhsin >anatij'entas; ka`i <ws >efj'asamen a>ut~w s'ebas >apon'emontes, m'onon e>usebos ka`i e>uf'hmws t`o @hn ka`i t`o >ae`i ka`i t`o pr`o a>i'wnwn l'egontes >ep> a>uto~u, t`hn m'entoi je'othta a>uto~u m`h paraito'umenoi, >all`a t~h e>ik'oni ka`i t~w qarakt~hri to~u patr`os >aphkribwm'enhn >emf'ereian kat`a p'anta >anatij'entes, t`o d`e >ag'ennhton t~w patr`i m'onon >id'iwma pare~inai dox'azontes, <'ate d`h ka`i a>uto~u f'askontos to~u swt~hros; »<o pat'hr mou me'izwn mo'u >estin«.}\end{quote}
\blindtext
\cleardoublepage
\end{document}%
答案1
该\DeclareFontFamilySubstitution
命令假定原始系列中定义的所有字体选择也存在于替代字体中。
在这种情况下,我们必须欺骗 LaTeX,让它认为是Tempora-TLF 系列中的一款小型大写字体,采用 LGR 编码。实际上,我们将使小型大写字母选择选择正常形状。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[polutonikogreek,ngerman]{babel}
\usepackage{newtxtext}
\DeclareFontFamilySubstitution{LGR}{ntxtlf}{Tempora-TLF}
\newcommand{\grk}[1]{{\foreignlanguage{polutonikogreek}{#1}}}% GREEK TEXT
% Let's trick substitutefont into thinking that there are
% Greek small caps
\AtBeginDocument{%
\sbox0{\grk{A}%
\global\expandafter\let
\csname LGR/Tempora-TLF/m/sc\expandafter\endcsname
\csname LGR/Tempora-TLF/m/n\endcsname
}}
\begin{document}
\scshape
\grk{L'ogoc-s'arx} – Ein in Fleisch gekleideter Gott
\end{document}
诀窍是选择我们想要替代缺失的小型大写字母的字体(使用一个框,因此打印时不会出现任何内容),并将缺失的声明定义为等同于选择该字体。
对于其他未知组合可能也需要类似的技巧。
然而,这并不是最理想的。考虑到您没有小写希腊字母(顺便问一下,它们有意义吗?),出版商应该为标题选择不同的字体形状。
一种可能更简单的策略是强制 LaTeX 加载.fd
Tempora 文件并声明替换。感谢 Ulrike Fischer 在这方面的提示。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[polutonikogreek,ngerman]{babel}
\usepackage{newtxtext}
\DeclareFontFamilySubstitution{LGR}{ntxtlf}{Tempora-TLF}
\newcommand{\grk}[1]{{\foreignlanguage{polutonikogreek}{#1}}}% GREEK TEXT
% Let's trick substitutefont into thinking that there are
% Greek small caps
\LoadFontDefinitionFile{LGR}{Tempora-TLF}
\DeclareFontShape{LGR}{Tempora-TLF}{m}{sc}{<-> ssub * Tempora-TLF/m/n}{}
\begin{document}
\scshape
\grk{L'ogoc-s'arx} – Ein in Fleisch gekleideter Gott
\end{document}
注意:请参阅编辑历史以了解使用 substitutefont 包的先前解决方案,该包现已被宣布为过时。
答案2
substitutefont 做出了一些与 tempora 不兼容的假设,因此后备系统会失败。添加以下内容\begin{document}
可避免出现错误:
{\fontencoding{LGR}\fontfamily{Tempora-TLF}\scshape\bfseries}