在目录中的 \chapter{} 之前添加一些文本

在目录中的 \chapter{} 之前添加一些文本

我的意思是有如下目录:

第十章 引言

第十章 摘要

第十章 问候

其中“X”是 LaTex 自动输入的数字。

我所得到的只是以下输出,但我手动添加了“Capítulo 1。”

问题

以下是我导入到项目中的所有包,以及我的\documentclass

\documentclass[12pt, letterpaper, twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage[top=25mm, bottom=25mm,right=25mm,left=30mm]{geometry}
\usepackage{ragged2e}
\usepackage{graphicx}
\usepackage[table]{xcolor}
\usepackage{import}
\usepackage{enumerate}
\usepackage{tabularx,ragged2e,booktabs,caption}
\usepackage{multirow}
\graphicspath{{images/}}
\usepackage[babel]{csquotes}
\usepackage[backend=biber,style=apa]{biblatex}
\DeclareLanguageMapping{spanish}{spanish-apa}
\addbibresource{Bibliography.bib}

我正在按如下方式导入.tex文件\import{pathtofile}{filename}

\import{part_1_introduction/}{introduction.tex}
\import{part_1_introduction/}{issue_statement.tex}
\import{part_1_introduction/}{justification.tex}
\import{part_1_introduction/}{general_objective.tex}

每个文件的最开头都包含以下命令

\part{Parte II. Estado del arte}

或者

\chapter{Marco conceptual}

答案1

您可以修补宏以在章节号前\chapter写入。只需将其添加到您的序言中:Capítulo~

\usepackage{etoolbox}
\makeatletter
\patchcmd\@chapter
             {\numberline {\thechapter }}
  {\@chapapp~ \numberline {\thechapter }}
  {}{\FAIL}
\makeatother

上面的代码使用了\patchcmd来自的命令etoolbox\patchcmd它接受四个参数:

\patchcmd{<command>}{<find>}{<replace>}{<success>}{<fail>}

它搜索<find>定义的第一次出现<command>,如果找到,则替换为<replace>并执行<success>代码。否则执行<fail>代码。

我将上面的补丁应用到\@chapter宏中,该宏在book类中包含

\addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}%

在文件中写入一行,.toc将当前章节添加到目录中。

补丁程序搜索\numberline{\thechapter}(将章节号变白)并\@chapapp~在其前面插入。当您用西班牙语写作时\@chapapp是一个单词,但在其他语言中则是其他内容,并且是一个空格。Capítulo~

代码<success>为空,因为我们不想\patchcmd执行任何其他操作。另一方面,失败代码包含\FAIL(未定义),因此如果由于任何原因补丁失败,则会\patchcmd向您发出警告,而不是默默忽略失败的补丁。

在此处输入图片描述

可编译示例:

\documentclass[12pt, letterpaper, twoside]{book}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage[top=25mm, bottom=25mm,right=25mm,left=30mm]{geometry}
\usepackage{ragged2e}
\usepackage{graphicx}
\usepackage[table]{xcolor}
\usepackage{import}
\usepackage{enumerate}
\usepackage{tabularx,booktabs,caption}
\usepackage{multirow}
\graphicspath{{images/}}
\usepackage[babel]{csquotes}
\usepackage[backend=biber,style=apa]{biblatex}
\DeclareLanguageMapping{spanish}{spanish-apa}
% \addbibresource{Bibliography.bib}

\usepackage{etoolbox}
\makeatletter
\patchcmd\@chapter
  {\numberline {\thechapter }}
  {\@chapapp~ \numberline {\thechapter }}
  {}{\FAIL}
\makeatother

\usepackage{blindtext}% Dummy text for the example
\begin{document}
\tableofcontents
\blinddocument
\end{document}

答案2

以下是使用包的另一个建议tocbasic

\documentclass{book}
\usepackage{blindtext}% only for dummy text

\usepackage{tocbasic}
\DeclareTOCStyleEntry[
  entrynumberformat=\entryprefix{\chaptername},% adds the prefix
  dynnumwidth% calculates the needed numberwidth
]{tocline}{chapter}

\newcommand*\entryprefix[2]{#1~#2~}
\begin{document}
\tableofcontents
\blinddocument
\blinddocument
\chapter{Chapter title with many words, so it is longer than one line and needs a second line}
\end{document}

运行三次即可获得

在此处输入图片描述

请注意,条目的第二行与第一行的文本对齐。

答案3

使用tocloft包:

\usepackage{tocloft}
\renewcommand{\cftchappresnum}{Capitulo }

将在目录中的章节号前放置 Capitulo 和一个空格。

相关内容