0

I am trying to write my PhD proposal in Turkish. And I copied a title page from overleaf. The problem that I am facing is when creating the Title, Institution name and etc. \textsc{} omits the punctuation symbols of some Turkish chars, for instance the letter 'İ' is converted to 'I' which is not correct. On the other hand, the letter Ğ and Ü are printed correctly.

Following is short piece of What I want :

    #+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}

And the following is the output of the above code snippet.

This is what I get

As you can see there certain characters that are not printed correctly. But if I remove \textsc{} letter outputs are fine but this time the format is not what I want.

I tried to use \'{I} trick but it did not work out.

How can I print out the letter 'İ' it correctly ?

  • 1
    Can you give us a bit more of text to work with? Do the characters work correctly in normal text, i.e. not small caps? If so, your font simply might be missing a dotted capital I for small caps. – Ingmar Dec 01 '20 at 06:38

3 Answers3

5

In the Modern Toolchain

To get proper Turkish small caps in LuaLaTeX or XeLaTeX, you need to activate both the Turkish and small-caps OpenType features. One example is the Libertinus family.

\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 sample

I also wrote some code back in 2018 that fakes small caps, and supports Turkish. You could adapt it (with some effort) to get Turkish small caps for some fonts that do not support them natively, such as XCharter.

Thia makes use of LaTeX’s language-specific capitalization, shortens the capitalized letters and slightly extends them.

You can also attempt to place a dot accent above a dotless I, but it will often be positioned wrong.

In the Legacy Toolchain

Unfortunately, it is not so easy to support Turkish small caps if you need to use 8-bit legacy fonts. To do it automatically, you would need an 8-bit Type-1 font specifically encoded for Turkish small caps.

You can, however, fake it with \DeclareTextCompositeCommand to put a dot above a dotless I. You need to define a new sequence for this because the LaTeX kernel tries to help you by defining \.{\i} as 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 sample

Davislor
  • 44,045
1

I've always thought that the decision of using the dotless i for Turkish was a bad one and they should have used a different character, say “j” or adopt “i/ï” instead.

Anyway, support for small caps in Turkish with pdflatex is a big problem, because one would need a special font for Turkish, with a dotted i where the lowercase i sits.

You can somehow obviate to the issue by defining a \TRtextsc command:

\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}

I recommend XCharter over charter, but that's your choice.

enter image description here

egreg
  • 1,121,712
0

As a stop-gap solution, and since your letters are working outside of small caps, you could try to fake small caps; something like this:

{\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]

Not very elegant, I am afraid, but it just might do if you only need it in one place.

Ingmar
  • 6,690
  • 5
  • 26
  • 47