如何强制在目录中换行?

如何强制在目录中换行?

生成的目录对齐方式奇怪。如何修复?

\documentclass[a4paper,11pt]{article}
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage[english, ukrainian]{babel}
\usepackage[T1,T2A]{fontenc}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage[hidelinks=true]{hyperref}

\begin{document}
 \tableofcontents
 \section{Загальні зауваження до конфігурації комплексів XXXXX01RACK01,  XXXXX01RACK02 и YYYYY01RACK01}
 \blindtext
 \section{General comments on the configuration for the following systems XXXXX01RACK01,  XXXXX01RACK02 и YYYYY01RACK01}
 \blindtext
\end{document}

结果: 在此处输入图片描述

答案1

要在 ToC 中手动强制换行,您可以使用可选参数\section并在那里包含\protect\\\protect\linebreak

\documentclass[a4paper,11pt]{article}
\usepackage{ucs}
\usepackage[utf8]{inputenc}
\usepackage[english, ukrainian]{babel}
\usepackage[T1,T2A]{fontenc}
\usepackage{graphicx}
\usepackage{blindtext}
\usepackage[hidelinks=true]{hyperref}

\begin{document}
 \tableofcontents
 \section{foo}
 \section[Загальні зауваження до конфігурації комплексів\protect\\
 XXXXX01RACK01,  XXXXX01RACK02 и\protect\\ YYYYY01RACK01]{Загальні зауваження до конфігурації комплексів XXXXX01RACK01,  XXXXX01RACK02 и YYYYY01RACK01}
 \blindtext
 \section[General comments on the configuration for the following systems
 XXXXX01RACK01,  XXXXX01RACK02 и\protect\\YYYYY01RACK01]{General comments on the configuration for the following systems
 XXXXX01RACK01,  XXXXX01RACK02 и YYYYY01RACK01}
 \blindtext
\end{document}

但也许使用这个可选参数来使用自然中断的较短版本的\section标题可能会更好。

在此处输入图片描述

答案2

除了使用可选参数之外,您还可以编写自定义命令,以便在不在节标题中时打印换行符(参见如何确定分段命令的参数中是否使用了宏?)。这可以通过修补命令\section以切换切换按钮并在自定义命令中测试切换按钮来实现。优点是您不必重复两次章节标题,但如果您想在其他级别(例如,小节标题)使用它,那么您也需要修补这些。

MWE(抱歉,没有乌克兰语):

\documentclass{article}
\usepackage{etoolbox}
\newtoggle{insidesection}
\togglefalse{insidesection}
\patchcmd{\section}{\bfseries}{\bfseries\toggletrue{insidesection}}{}{}
\newcommand{\mybreak}{\iftoggle{insidesection}{\ }{\\}}

\begin{document}
\tableofcontents
\section{My section\mybreak with linebreak}
\end{document}

结果:

在此处输入图片描述

相关内容