参考这个帖子:小节标题(不止于此)与 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
基本上都会以%
.