\listoftables 和 \listoffigure 的自定义边距

\listoftables 和 \listoffigure 的自定义边距

我正在使用文档类书,并使用下面的代码在目录中添加表格列表和图表列表

\cleardoublepage \addcontentsline{toc}{chapter}{图片列表} \listoffigures \cleardoublepage \addcontentsline{toc}{chapter}{表格列表} \listoftables

我想删除顶部边距和表格标题列表与表格起始位置之间的多余空间, 代码

大学的期望是 预期的

答案1

这假设标题没有标题,只有“表 1:”。或者他们确实允许使用标题,但只是没有在示例中显示它们。如果不是,那么\l@table将不得不忽略标题并只使用\numberline(可以使用保存框,但更复杂)。请注意,边距(\leftskip\rightskip)包括表格和页码。

事实证明,\@dottedtocline无法添加右边距,因此必须格式化所有内容。另一方面,我唯一改变的\listoftables是替换\chapter*{\listtablename}

\documentclass{book}
\usepackage{showframe}

\renewcommand\thetable{\arabic{table}}% as opposed to 1.1, 1.2 etc.

\makeatletter
\renewcommand*\l@table[2]{% #1 = title (with \numberline), #2 = page
  \def\numberline##1{\leavevmode\llap{Table~##1: }}%
  \leftskip=0.5in% left margin
  \rightskip=0.75in% right margin
  {#1}\leaders\hbox{$\m@th\mkern \@dotsep mu\hbox{.}\mkern \@dotsep mu$}\hfill% dotted line
  \rlap{ #2}\par}

\renewcommand\listoftables{%
    \if@twocolumn% probably not needed
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    %\chapter*{\listtablename}% defalt title
    \null\vskip\baselineskip
    \noindent\parbox{\textwidth}{\centering
      LIST OF TABLES\\
      \vskip\baselineskip
      (There is no bold or italics text on LOT)}\par
    \null\hfill\makebox[0.75in][l]{ PAGE}\par
      \thispagestyle{plain}%
      \@mkboth{% sets header
          \MakeUppercase\listtablename}%
         {\MakeUppercase\listtablename}%
    \@starttoc{lot}%
    \if@restonecol\twocolumn\fi
    }
\makeatother

\begin{document}
\frontmatter
\cleardoublepage \addcontentsline{toc}{chapter}{List of Tables}% add to toc
\listoftables

\mainmatter
\chapter{Start}
Some text.

\begin{table}[ht]
  \caption{}
\end{table}

\begin{table}[ht]
  \caption{}
\end{table}
    
\end{document}

相关内容