使用 \textsc{} 正确打印出所有土耳其语字母

使用 \textsc{} 正确打印出所有土耳其语字母

我正在尝试用土耳其语撰写我的博士论文提案。我从背面复制了标题页。我面临的问题是,在创建标题、机构名称等时,\textsc{}省略了一些土耳其字符的标点符号,例如字母“İ”被转换为“I”,这是不正确的。另一方面,字母ĞÜ打印正确。

以下是我想要的简短内容:

    #+LATEX_HEADER: \usepackage[T1]{fontenc}
    #+LATEX_HEADER: \usepackage[utf8]{inputenc}
    #+LATEX_HEADER: \usepackage{charter} % this for font type 

    \begin{titlepage}
    \textsc{\Large Fen Bilimleri Enstitüsü}\\[0.5cm] % Major heading such as course name
    \textsc{\Large Bilgisayar Mühendisliği Anabilim Dalı}\\[0.5cm] % Major heading such as course name
    \textsc{\Large Bilgisayar Mühendisliği Programı}\\[0.5cm] % Minor heading such as course title 
    \end{title-age}
   

以下是上述代码片段的输出。

这就是我得到的

如您所见,某些字符打印不正确。但如果我删除 \textsc{} 字母,输出就没问题了,但这次格式不是我想要的。

我尝试使用\'{I}技巧,但没有成功。

我怎样才能正确打印出字母“İ”?

答案1

作为一种权宜之计,由于您的字母不在小型大写字母范围内,您可以尝试伪造小型大写字母;如下所示:

{\Large {\LARGE F}EN {\LARGE B}İLİMLERİ {\LARGE E}NSTİTÜSÜ}\\[0.5cm]
{\Large {\LARGE B}İLGİSAYAR {\LARGE M}ÜHENDİSLİĞİ {\LARGE A}NABİLİM {\LARGE D}ALI}\\[0.5cm]
{\Large {\LARGE B}İLGİSAYAR {\LARGE M}ÜHENDİSLİĞİ {\LARGE P}PROGRAMI}\\[0.5cm]

恐怕这不是很优雅,但如果您只需要在一个地方它,它可能会起作用。

答案2

在现代工具链中

要在 LuaLaTeX 或 XeLaTeX 中获得正确的土耳其语小写字母,您需要同时激活土耳其语和小写字母的 OpenType 功能。Libertinus 系列就是一个例子。

\documentclass{article}
\tracinglostchars=2
\usepackage[turkish]{babel}
\usepackage{fontspec}

\babelfont{rm}
          [Ligatures=Common]{Libertinus Serif}
\babelfont{sf}
          [Ligatures=Common]{Libertinus Sans}
\babelfont{tt}
          {Libertinus Mono}

\pagestyle{empty} % Remove page numbers for this MWE

\begin{document}
\textsc{Türkiye}
\end{document}

Libertinus Serif 示例

我也写道2018 年的一些代码可以伪造小写字母,并支持土耳其语。您可以(花些功夫)调整它,使某些本身不支持土耳其语小写字母的字体(例如 XCharter)能够使用土耳其语小写字母。

Thia 利用 LaTeX 语言特定的大写字母,缩短大写字母并稍微延长它们。

您还可以尝试将点重音符号放置在无点 I 上方,但通常会放置错误。

在旧版工具链中

不幸的是,如果您需要使用 8 位旧字体,则支持土耳其语小写字母并不容易。要自动执行此操作,您需要专门为土耳其语小写字母编码的 8 位 Type-1 字体。

但是,您可以假装在\DeclareTextCompositeCommand无点的 I 上方放置一个点。您需要为此定义一个新序列,因为 LaTeX 内核会尝试通过定义\.{\i}为来帮助您i

\documentclass{article}
\tracinglostchars=2
\usepackage[T1]{fontenc}
\usepackage[turkish]{babel}
\usepackage{XCharter}

\DeclareTextCompositeCommand{\.}{T1}{i}{\accent"0A \i}

\pagestyle{empty}

\begin{document}
\textsc{Türk\.{i}ye}
\end{document}

XCharter 示例

答案3

我一直认为在土耳其语中使用无点 i 的决定是错误的,他们应该使用不同的字符,比如“j”或采用“i/ï”。

无论如何,对土耳其语小型大写字母的支持pdflatex是一个大问题,因为需要一种特殊的土耳其语字体,在小写字母 i 的位置用点 i 代替。

您可以通过定义命令来解决这个问题\TRtextsc

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[turkish]{babel}
\usepackage{XCharter}

%\usepackage{xparse} % uncomment if using LaTeX prior to 2020-10-01

%% see https://tex.stackexchange.com/a/204469/4427
\providecommand*\UndeclareTextComposite[3]{%
  \expandafter\let\csname\expandafter\string\csname
  #2\endcsname\string#1-#3\endcsname\relax}
\UndeclareTextComposite{\.}{T1}{i}

\ExplSyntaxOn
\NewDocumentCommand{\TRtextsc}{m}
 {% replace every i with \.i
  \tl_set:Nn \l_tmpa_tl { #1 }
  \regex_replace_all:nnN { i } { \c{.}i } \l_tmpa_tl
  \textsc{\l_tmpa_tl}
 }
\ExplSyntaxOff

\begin{document}

{\Large
\TRtextsc{Fen Bilimleri Enstitüsü}

\TRtextsc{Bilgisayar Mühendisliği Anabilim Dalı}

\TRtextsc{Bilgisayar Mühendisliği Programı}

}

\end{document}

我建议XCharter超过charter,但这是你的选择。

在此处输入图片描述

相关内容