如果文本中包含一些希腊词,则目录会出现奇怪的行为

如果文本中包含一些希腊词,则目录会出现奇怪的行为

参考这个帖子:小节标题(不止于此)与 titletoc 对齐,我在特定情况下出现了奇怪的行为。请考虑以下代码:

\documentclass[a4paper,twoside,11pt]{report}
\usepackage{fontspec}
\setmainfont{EB Garamond}
\usepackage{polyglossia}
\setmainlanguage[babelshorthands=true]{italian}
\PolyglossiaSetup{italian}{indentfirst=false}
\setotherlanguage[variant=polytonic]{greek}
\newfontfamily\greekfont[Scale=MatchLowercase]{GFS Didot}
\usepackage{microtype}
\frenchspacing
\usepackage{lipsum}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\usepackage{titlesec,titletoc}
\makeatletter
\contentsmargin[-1.55em]{1.55em}
\makeatother

\titlecontents{chapter}
  [3em]
  {\vspace*{\baselineskip}\mdseries}
  {\contentslabel[\hfill\thecontentslabel]{3em}\enspace}
  {\hspace*{0.5em}}
  {\hspace*{0.5em}}
  []

\titlecontents{section}
  [3em]
  {\vspace*{\baselineskip}\mdseries}
  {\contentslabel[\hfill\thecontentslabel]{3em}\enspace}
  {}
{\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{\makebox[1pc][r]{\thecontentspage}}}}
  []

\titlecontents*{subsection}
  [3.525em]
  {\footnotesize}
  {}
  {}
  {,~\thecontentspage}
  [~--~]
  []

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thechapter}{0pt}{}
\renewcommand\thesection{\arabic{section}}
\titleformat{\section}
  {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thesection}{1em}{}
\titleformat{\subsection}
  {\normalfont\fontsize{11pt}{12pt}\selectfont\itshape}{\phantom{\thesection}}{1em}{}
\titlespacing{\chapter}{0pt}{0pt}{3cm}

\renewcommand{\thechapter}{\scshape\roman{chapter}}
\renewcommand{\thesection}{\arabic{section}.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\tableofcontents

\chapter{Premessa}
\section{Section One}
\subsection{Plato}
\lipsum[1]

\begin{greek}ῥητοτορική τέχνη\end{greek}

\lipsum[2]

\subsection{Aristoteles}
\lipsum[1]

\begin{greek}ῥητοτορική τέχνη\end{greek}

\lipsum[2]

\subsection{A Title a bit longer}
\lipsum[1]

\begin{greek}ῥητοτορική τέχνη\end{greek}

\lipsum[2]

\subsection{Etimo}
La retorica è l'arte di persuadere mediante i discorsi. Il termine deriva dal
latino \emph{rhetorica} (\emph{ars}), mutuato a sua volta dal greco
\begin{greek}ῥητοτορική τέχνη\end{greek}, espressione che indica l'arte del
parlare in pubblico (\begin{greek}ῥήτωρ\end{greek}, ossia colui che parla in
a sua volta deriva dalla radice del verbo \begin{greek}εἴρω\end{greek}, «io
dico».

\subsection{Retorica e linguaggio}
Nel corso dei secoli i teorici si sono impegnati a individuare i vari elementi e
organizzarli in una tassonomia generale, senza però mai raggiungere una
classificazione condivisa.[\begin{greek}ῥητοτορική τέχνη\end{greek}] Questo
ingente numero di trattati, ha contribuito non poco alla stessa decadenza della
retorica.

\subsection{Evoluzione della retorica}
\lipsum[1]

\end{document}

文本中出现\begin{greek}...\end{greek}异常空格(不对称且大于必要)的地方将在目录中生成,如下图所示: 在此处输入图片描述

消除希腊字母后,一切恢复正常。我不明白这个小麻烦的原因。

我需要希腊文文本,该如何解决?谢谢

答案1

该问题是由于greek文档中的每个环境在辅助文件中写入两行,包括.toc,即

\select@language{greek}
\select@language{italian}

这些会混淆文件的读取并引入两个空格。

你可以通过让 LaTeX 读取.toc文件而不考虑行尾来解决此问题。

另一方面,\foreignlanguage在其他语言中使用 短插入当然是更好的选择。 有一个简写形式polyglossia,即

\textgreek{ῥητοτορική τέχνη}

我还建议定义一个新的环境,例如

\newenvironment{greek*}[1][]
  {\begin{otherlanguage*}[#1]{greek}}
  {\end{otherlanguage*}}

如果需要的话,可以用希腊语写更长的段落。

在代码中,我重新调整了您的前言,以将包加载和设置分开。我保留了\begin{greek}...\end{greek},但有一处除外,以显示其\textgreek有效性。

\documentclass[a4paper,twoside,11pt]{report}
\usepackage{fontspec}
\usepackage{polyglossia}
\usepackage{microtype}
\usepackage{titlesec,titletoc}

\usepackage{lipsum}

%%% patch \@starttoc to ignore end lines
\makeatletter
\patchcmd{\@starttoc}{\begingroup}{\begingroup\endlinechar=-1\relax}{}{}
\makeatother

\setmainfont{EB Garamond}
\setmainlanguage[babelshorthands=true]{italian}
\PolyglossiaSetup{italian}{indentfirst=false}
\setotherlanguage[variant=polytonic]{greek}
\newfontfamily\greekfont[Scale=MatchLowercase]{GFS Didot}
\frenchspacing

\contentsmargin[-1.55em]{1.55em}

\titlecontents{chapter}
  [3em]
  {\vspace*{\baselineskip}\mdseries}
  {\contentslabel[\hfill\thecontentslabel]{3em}\enspace}
  {\hspace*{0.5em}}
  {\hspace*{0.5em}}
  []

\titlecontents{section}
  [3em]
  {\vspace*{\baselineskip}\mdseries}
  {\contentslabel[\hfill\thecontentslabel]{3em}\enspace}
  {}
  {\hfill\llap{\makebox[\dimexpr\linewidth-1.3pc][l]{%
   \makebox[1pc][r]{\thecontentspage}}}}
  []

\titlecontents*{subsection}
  [3.525em]
  {\footnotesize}
  {}
  {}
  {,~\thecontentspage}
  [~--~]
  []

\titleformat{\chapter}[display]
  {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thechapter}{0pt}{}
\renewcommand\thesection{\arabic{section}}
\titleformat{\section}
  {\normalfont\fontsize{11pt}{12pt}\selectfont}{\thesection}{1em}{}
\titleformat{\subsection}
  {\normalfont\fontsize{11pt}{12pt}\selectfont\itshape}{\phantom{\thesection}}{1em}{}
\titlespacing{\chapter}{0pt}{0pt}{3cm}

\renewcommand{\thechapter}{\scshape\roman{chapter}}
\renewcommand{\thesection}{\arabic{section}.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\tableofcontents

\chapter{Premessa}
\section{Section One}
\subsection{Plato}
\lipsum[1]

\textgreek{ῥητοτορική τέχνη}

\lipsum[2]

\subsection{Aristoteles}
\lipsum[1]

\begin{greek}ῥητοτορική τέχνη\end{greek}

\lipsum[2]

\subsection{A Title a bit longer}
\lipsum[1]

\begin{greek}ῥητοτορική τέχνη\end{greek}

\lipsum[2]

\subsection{Etimo}
La retorica è l'arte di persuadere mediante i discorsi. Il termine deriva dal
latino \emph{rhetorica} (\emph{ars}), mutuato a sua volta dal greco
\begin{greek}ῥητοτορική τέχνη\end{greek}, espressione che indica l'arte del
parlare in pubblico (\begin{greek}ῥήτωρ\end{greek}, ossia colui che parla in
a sua volta deriva dalla radice del verbo \begin{greek}εἴρω\end{greek}, «io
dico».

\subsection{Retorica e linguaggio}
Nel corso dei secoli i teorici si sono impegnati a individuare i vari elementi e
organizzarli in una tassonomia generale, senza però mai raggiungere una
classificazione condivisa.[\begin{greek}ῥητοτορική τέχνη\end{greek}] Questo
ingente numero di trattati, ha contribuito non poco alla stessa decadenza della
retorica.

\subsection{Evoluzione della retorica}
\lipsum[1]

\end{document}

在此处输入图片描述

在计划于 2019 年初发布的下一个 LaTeX 版本中,这个问题应该会消失,因为写入辅助文件的所有行\addtocontents基本上都会以%.

相关内容