当我在标题中使用 ß(我希望使用小写字母)时,它会被双 S 替换。有没有办法在那里保留 ß,并且与其他字母的高度相同?
只是为了澄清:我已经修改了\sectionlinesformat
这种方式,以便在标题中得到小写字母,同时在目录中显示正常文本。
梅威瑟:
\documentclass[10pt, oneside, numbers=noenddot]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\usepackage[osf]{newpxtext}
\usepackage[ngerman]{babel}
\setkomafont{chapter}{\huge\fontfamily{qpl}\selectfont\normalfont\lsstyle\scshape}
\setkomafont{section}{\large\fontfamily{qpl}\selectfont\normalfont\lsstyle\scshape}
\renewcommand*{\sectionlinesformat}[4]{#3 \MakeLowercase{#4}}
\addtokomafont{chapterentry}{\normalfont\lsstyle\scshape}
\begin{document}
\tableofcontents
\chapter{größe}
\section{Größe}
\end{document}
编辑:我已经尝试过LaTeX/XeTeX/lualatex/whatever 中的大写 ẞ,但这没有作用。
答案1
expl3 语言提供了一个函数tl_upper_case:nn {language} {input}
,其中语言代码de-alt
将 ß 转换为大埃斯泽特。
\documentclass{minimal}
\usepackage{libertinus}
\ExplSyntaxOn
\newcommand\toUpper[1]{\tl_upper_case:nn{de-alt}{#1}}
\ExplSyntaxOff
\begin{document}
\toUpper{Frauenfußball}
\end{document}
在较新的系统中,你可以改用\text_uppercase:nn
。截至 2020 年,文档称第二个参数应该是“BCP 47 字符串”,但实际上只de-alt
有效,并且de-DE-1996
根据 RFC 中的说明,无效。因此,使用较新的接口,你可以这样写:
\text_uppercase:nn {de-alt}{\text_expand:n{#1}}
expl3 文档声称你可以定义自己的映射\char_set_uccode:nn
,但是当我用
\char_set_uccode:nn {`ß} {`ẞ}
\tl_upper_case:n
在与 a或相同的 TeX 组内text_uppercase:n
,它仍然将 ß 映射到 SS。
答案2
Wellß
在 pdflatex 中是一个命令,所以是的,你可以在本地重新定义它。但要获得合适的尺寸,你必须进行大量缩放,在我看来,这看起来很糟糕:
\documentclass[10pt, oneside, numbers=noenddot]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\usepackage[osf]{newpxtext}
\begin{document}
{\scshape Aabc\textup{ß}abc{\upshape\fontsize{6.5pt}{6.5pt}\selectfont ß}abc}
\end{document}
答案3
您需要使用能够提供您期望的字符的字体。在很多字体中,小写字母中的 ß 被 SS 替换,因为这曾经是标准替换。检查https://de.wikipedia.org/wiki/Gro%C3%9Fes_%C3%9F可以看到,直到 2008 年,大写字符才被引入到 Unicode 中。