生成的目录对齐方式奇怪。如何修复?
\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}
结果: