忽略小型大写字母标题中的希腊语文本

忽略小型大写字母标题中的希腊语文本

我正在使用包mathptmx来制作Times字体,这是我的出版商所要求的。

该字体的问题在于,Computer Modern由于mathptmx包不支持古希腊语,因此古希腊语文本被字体替换。

这个话题我被建议改用newtxtext包。

我的问题是:

  1. 我需要用小写字母制作章节和部分标题,并且一些标题包含由包选项生成的古希腊polutonikogreek文本babel

  2. 当我使用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 加载.fdTempora 文件并声明替换。感谢 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}

相关内容