Я использую book class
и хочу удалить последнюю точку в номере раздела, т.е. у меня есть
1. Chapter Name
1.1. Section Name
1.1.1. Subsection Name
1.1.1.1. Subsubsection Name
Я хочу
1. Chapter Name
1.1 Section Name
1.1.1 Subsection Name
1.1.1.1 Subsubsection Name
В поисках похожего поста я нашел [Как удалить точку после номера раздела в оглавлении с помощью испанского языка Babel?и хотя решение очень хорошее, у меня все еще есть проблема: когда я использую код, es-nosectiondot
точка главы исчезает в оглавлении, то же самое происходит с LoF и LoT, т. е. Figure 1
( Table 1
) вместо Figure 1.
( Table 1.
), поэтому, следуя посту, я использую код \def\numberline#1{\hb@xt@\@tempdima{#1\if&\else.\fi\hfil}}
, который полезен, потому что он решает предыдущую проблему, но теперь точка раздела, подраздела и подподраздела появляется в оглавлении, т. е.
1. Chapter Name
1.1. Section Name
1.1.1. Subsection Name
1.1.1.1. Subsubsection Name
Это мой MWE:
\documentclass{book}
\usepackage[spanish,es-nosectiondot]{babel}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\counterwithout{figure}{chapter}
\counterwithout{table}{chapter}
\addto\captionsspanish{%
\renewcommand{\tablename}%
{Tabla}%
}
\makeatletter
%%add prefix Figura/Tabla in LoF/LoT
\long\def\@caption#1[#2]#3{%
\par
\addcontentsline{\csname ext@#1\endcsname}{#1}%
{\protect\numberline{\csname fnum@#1\endcsname}{\ignorespaces #2}}%
\begingroup
\@parboxrestore
\if@minipage
\@setminipage
\fi
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\renewcommand*\l@figure{\@dottedtocline{1}{0em}{5em}}%
\let\l@table\l@figure
%%egreg's code
\def\numberline#1{\hb@xt@\@tempdima{#1\if&\else.\fi\hfil}}
\makeatother
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\chapter{Chapter}
\section{Section}
\begin{table}[h]
\caption{Some table}
\centering abc
\end{table}
\begin{figure}[h]
\caption{A figure}
\centering xyz
\end{figure}
\subsection{Subsection}
\subsubsection{Subsubsection}
\end{document}
Я хочу
ToC
1. Chapter
1.1 Section
1.1.1 Subsection
1.1.1.1 Subsubsection
LoT
Table 1.
LoF
Figure 1.
1.1 The Section
Content
1.1.1 The Subsection
Content
1.1.1.1 The Subsubsection
Content
решение1
(Я переписал этот ответ с нуля после того, как лучше понял цели форматирования ОП.
Я не могу дать ответ, который не опирался бы на внешние пакеты LaTeX. Однако, поскольку пакеты caption
и tocloft
существуют уже довольно много лет, очень хорошо отлажены и известны своей хорошей работой с book
классом документа, я не собираюсь извиняться за использование этих двух пакетов.
Я предлагаю вам (a) продолжать использовать инструкцию \usepackage[spanish,es-nosectiondot]{babel}
, (b) использовать caption
для изменения разделителя меток с :
("двоеточие") на .
(точка) в теле документа, и (c) использовать пакет tocloft
для изменения внешнего вида figure
и table
записей в LoF и LoT соответственно. Однако вы можете выбросить кусок кода между \makeatletter
и \makeatother
в вашем MWE.
\documentclass{book}
\usepackage[spanish,es-nosectiondot]{babel}
\addto\captionsspanish{%
\renewcommand{\tablename}{Tabla}
\renewcommand{\listtablename}{\'Indice de tablas} % do you need this?
}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\counterwithout{figure}{chapter}
\counterwithout{table}{chapter}
%% modify the separator between caption numbers and text
\usepackage{caption}
\captionsetup{labelsep=period,skip=0.333\baselineskip}
\usepackage[titles]{tocloft}
%% modify appearance of entries in LoF and LoT
\cftsetindents{figure}{0em}{5em} % how much space to set aside
\cftsetindents{table}{0em}{5em}
\renewcommand{\cftfigpresnum}{\figurename\space} % prefix material
\renewcommand{\cftfigaftersnum}{.} % postfix material
\renewcommand{\cfttabpresnum}{\tablename\space}
\renewcommand{\cfttabaftersnum}{.}
\begin{document}
\tableofcontents
\listoffigures
\listoftables
\chapter{Chapter}
\section{Section}
\begin{table}[h] \caption{Some table} \centering abc \end{table}
\begin{figure}[h] \caption{A figure} \centering xyz \end{figure}
\subsection{Subsection}
\subsubsection{Subsubsection}
\end{document}