如果有人能为我的问题提供一些答案,我将不胜感激。我已经阅读和搜索了 Web 和 StackExchange 一段时间,并尝试了几种可能的解决方案,但是,它们都不起作用。
我正在尝试更改西班牙语目录的标题(顺便说一下,我正在使用 babel 包),默认情况下该标题为“Contenido”,我想将其更改为“Índice”。我阅读了 babel 包文档,但仍然无法更改它。
在我的情况下,phstylee.cls 是必需的,因为我正在写论文。下面您可以看到初始化和有问题的部分。
\documentclass[11pt,letterpaper,twoside]{phstylee}
\usepackage{array}
\usepackage{epsfig}
\usepackage{graphicx}
\usepackage{cite}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amssymb}
\usepackage{amsxtra}
\usepackage{varioref}
\usepackage{multicol}
\usepackage{float}
\usepackage{rotate}
\usepackage{color}
\usepackage{subcaption} %para usar multiples figuras con multiples captions
% \usepackage{subfigure}
\usepackage{enumerate}
\usepackage[mathscr]{eucal}
\usepackage{xfrac}
\usepackage{mathrsfs}
\usepackage[spanish,es-tabla]{babel}
\usepackage[latin1]{inputenc}
\usepackage[font={small}]{caption}
\usepackage{mathtools} % para subequations
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage[flushleft]{threeparttable}
\usepackage{color, colortbl}
\definecolor{Gray}{gray}{0.8}
\usepackage[algoruled,linesnumbered,noline,algosection]{algorithm2e}
\renewcommand{\arraystretch}{1.1} % Changes Tabular's box size. Ojo que cambia tambien el
\addto\captionsspanish{%
\def\bibname{Referencias}%
\def\tablename{Tabla}%
\def\listfigurename{ÍNDICE DE FIGURAS}
\def\listtablename{ÍNDICE DE TABLAS}
\def\spanishcontentsname{ÍNDICE}
\def\contentsname{ÍNDICE}
}
\renewcommand{\listfigurename}{ÍNDICE DE FIGURAS}
\renewcommand{\listtablename}{ÍNDICE DE TABLAS}
\renewcommand{\spanishcontentsname}{ÍNDICE}
\renewcommand{\contentsname}{ÍNDICE}
\renewcommand{\floatpagefraction}{0.99} % figures using 90% or more of the available space in a page will become in a new pure-image page.
\allowdisplaybreaks
\addtolength{\textheight}{00mm}\addtolength{\voffset}{-20mm}
\linespread{1.2}
\begin{document}
%\renewcommand{\spanishcontentsname}{\'Indice}
%=============================================================================
%------------------------- TITLE ---------------------------
%\setcounter{tocdepth}{2}
%
%\cleardoublepage
%\input{0_FirstPage.tex}
%
%\cleardoublepage
%\input{0_Title.tex}
%\cleardoublepage
%
%\pagestyle{fancyplain}
\pagenumbering{roman}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%---------------------- ACKNOWLEDGMENT ---------------------
%\onehalfspacing
%\cleardoublepage
%\input{Acknowledgment.tex}
%------------------------- ABSTRACT ------------------------
%\linespread{1.2}
%\cleardoublepage
%\input{Abstract.tex}
%-------------------------- INDEX --------------------------
\linespread{1.4}
\cleardoublepage
\tableofcontents
\cleardoublepage
\listoffigures
\cleardoublepage
\listoftables
\linespread{1.3}
%------------------------- CHAPTERS ------------------------
\cleardoublepage
\pagenumbering{arabic}
\end{document}
到目前为止,我发现的可能的解决方案是 \renewcommand{\spanishcontentsname}{ÍNDICE}
,
\renewcommand{\contentsname}{ÍNDICE}
对于旧的 babel,以及\addto\captionsspanish{% \def\spanishcontentsname{ÍNDICE} \def\contentsname{ÍNDICE} }
有趣的是,我设法更改了图表列表和表格列表的名称,但没有更改目录的名称。我提前为问题的长度以及拼写和语法错误道歉。任何评论、建议和帮助都将不胜感激。谢谢
更新:我的一个朋友也遇到了同样的问题,并给我发送了另一个phstylee.cls
文件。我刚刚把它放入我的主文件夹,然后就出现了,它改变了目录名称和其他几个小的美观问题。所以现在解决了。
附言:非常感谢 Mico 抽出时间。
答案1
文档类phstyle
提供了以下相当特殊的宏重新定义\tableofcontents
:
\def\tableofcontents{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
\fi\thispagestyle{plain} \@makeschapterhead{Contents}
\@afterheading
\@starttoc{toc}\if@restonecol\twocolumn\fi}
观察硬编码的字符串Contents
。关于这个重新定义,也许最好的说法是它不可能从babel
用户的需求出发。
解决办法是什么?只需将以下代码添加到文档的序言中:
\usepackage{etoolbox}
\patchcmd{\tableofcontents}{Contents}{\'Indice}{}{}
完整的 MWE:
\documentclass{phstyle}
\usepackage{etoolbox} % for '\patchcmd' macro
\patchcmd{\tableofcontents}{Contents}{\'Indice}{}{}
\usepackage[spanish]{babel}
\addto\captionsspanish{%
\renewcommand{\listtablename}{\'Indice de tablas}
\renewcommand{\listfigurename}{\'Indice de figuras}
}
\begin{document}
\tableofcontents
\listoftables
\listoffigures
\chapter{Uno dos tres}
\section{Ola}
\section{Adios}
\end{document}