\@tocrmarg 适用于章节吗?

\@tocrmarg 适用于章节吗?

我正在写一篇基于美国毕业论文。我需要在标题文本和页码之间设置至少 0.5 英寸的距离。但是,当我修改命令时\@tocrmarg,它不会对章节标题产生影响。这是一个示例 .tex 文件:

\documentclass[]{USFDissertation}
%\documentclass{report}

\makeatletter
\renewcommand\@tocrmarg{15.55em} % versus 2.55em
\makeatother

\begin{document}

\tableofcontents   

\chapter{this is very very very very extremely incredibly long chapter title that is giving me trouble}

\section{This is a very very long section title but listens to tocrmarg and breaks when needed}

\chapter{this chapter title is shorter}

\end{document}

它看起来是这样的:

在此处输入图片描述

知道该怎么修复吗?谢谢 :)

答案1

不是。解释是\@tocrmarg(控制多行条目除最后一行外的所有条目的右边距缩进)仅在 中使用\dottedtocline,因此只有使用 排版的节单元条目\@dottedtocline(例如 和 中的节、小节、小小节、段落和小段落条目bookreport会遵循 的更改\@tocrmarg

另一方面,至少在标准bookreport文档类中,章节(以及部分)条目是不是排版使用 ,\dottedtocline也不依赖于 的任何参数\@tocrmarg,因此章节(和部分)条目不遵循后一个参数的变化。

如果您想改变标题和页码之间的距离,您有两个选择;选择哪一个取决于所需的结果。

  1. \@tocmarg您无需更改,而是可以重新定义\@pnumwidth,它给出用于排版页码的框的宽度。为此,您需要\def\@pnumwidth{0.5in}(在.cls文件或.sty文件中)或

    \makeatletter
    \def\@pnumwidth{0.5in}
    \makeatother
    

    .tex文件中。 包含示例代码的完整示例:

    \documentclass[boldheadings,thrmdefs,bbm,ams]{USFDissertation}
    
    \def\linespacingfactor{2}
    \def\parindentvalue{1cm}
    
    \usepackage[noframe]{showframe}
    \usepackage{lipsum}
    \usepackage{setspace,rotating,indentfirst,color,epsfig,subfigure,epstopdf,booktabs,longtable,multirow,wrapfig,url,pdflscape,caption}
    \usepackage[absolute]{textpos}
    \captionsetup[table]{font={stretch=1}}
    \captionsetup[figure]{font={stretch=1}}
    \allowdisplaybreaks
    
    \makeatletter
    \def\@pnumwidth{0.5in}
    \makeatother
    
    \begin{document}
    
    \renewcommand{\baselinestretch}{\linespacingfactor} %
    \normalfont
    
    \tableofcontents   
    
    \dissertation
    
    \chapter[\uppercase{this is very very long chapter title that is giving me trouble}]{\uppercase{this is very very long chapter title that is giving me trouble}}
    \pagenumbering{arabic}\pagestyle{plain}
    \lipsum[1]
    \section{This is a very very long section title but listens to tocrmarg and breaks when needed}
    
    \chapter[\uppercase{this chapter title is shorter}]{\uppercase{this chapter title is shorter}}
    \lipsum[1]
    
    \end{document}
    

    最终的目录如下:

    在此处输入图片描述

  2. 另一个选择是保留更改\@tocmarg并使章节条目遵守\@tocrmarg,这可以通过重新定义来实现\l@chapter

    \documentclass[boldheadings,thrmdefs,bbm,ams]{USFdissertation}
    
    \def\linespacingfactor{2}
    \def\parindentvalue{1cm}
    
    \usepackage[noframe]{showframe}
    \usepackage{lipsum}
    \usepackage{setspace,rotating,indentfirst,color,epsfig,subfigure,epstopdf,booktabs,longtable,multirow,wrapfig,url,pdflscape,caption}
    \usepackage[absolute]{textpos}
    \captionsetup[table]{font={stretch=1}}
    \captionsetup[figure]{font={stretch=1}}
    \allowdisplaybreaks
    
    \makeatletter
    \renewcommand\@tocrmarg{0.5in}
    \renewcommand*\l@chapter{\@dottedtocline{0}{1.5em}{2em}}
    \makeatother
    
    \begin{document}
    
    \renewcommand{\baselinestretch}{\linespacingfactor} %
    \normalfont
    
    \tableofcontents   
    
    \dissertation
    
    \chapter[\uppercase{this is very very long chapter title that is giving me trouble}]{\uppercase{this is very very long chapter title that is giving me trouble}}
    \pagenumbering{arabic}\pagestyle{plain}
    \lipsum[1]
    \section{This is a very very long section title but listens to tocrmarg and breaks when needed}
    
    \chapter[\uppercase{this chapter title is shorter}]{\uppercase{this chapter title is shorter}}
    \lipsum[1]
    
    \end{document}
    

    现在的结果是

    在此处输入图片描述

    与第一个选项的区别在于,现在多行条目中除最后一行之外的所有内容都位于右边距,而最后一行由数字 0.5in分隔。\@pnumwidth

相关内容