调整 ToC 的外观

调整 ToC 的外观

我需要像这样制作目录条目:(以标题目录为中心)。

在此处输入图片描述

我至今为止能够实现的目标:

i) 修改目录标题
ii) 修改或添加字幕

现在我该如何插入表格并将所有这些条目放入其中。在普通的目录中,Expt. No、Name、Page 都会有,但我该如何自动插入日期?

我想要嵌入的代码:

\documentclass[12pt,oneside]{book}
\usepackage{libertine}
\usepackage{background}
\usepackage{lipsum}
\usetikzlibrary{calc}
\backgroundsetup{
angle=0,
scale=1,
opacity=1,
color=black,
contents={%
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=center,inner sep=0pt] at ($(current page.north west) + (17.3cm,-1.5cm)$) {\thepage};
\end{tikzpicture}%
}
}

\begin{document}
\addtocounter{chapter}{1}   %% do this at the start of each expt.
\pagestyle{empty}   %% this is needed
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=center,inner sep=0pt,font=\Large\bfseries] at ($(current page.north west) + (4.7cm,-2.7cm)$) {\thechapter};
\node[anchor=center,inner sep=0pt,font=\Large\bfseries] at ($(current page.north) + (0cm,-2.7cm)$) {Study of Oracle};
\node[anchor=center,inner sep=0pt,font=\Large\bfseries] at ($(current page.north west) + (18cm,-2.7cm)$) {5.04.2014};
\end{tikzpicture}%
\lipsum[4-10]
\end{document}

我怎么做?

这是我的 MWE:

\documentclass[12pt,oneside]{book}
\usepackage[linktocpage=true]{hyperref}
\renewcommand\contentsname{Table of Contents}

\begin{document}
 \begin{titlepage}
    \addtocontents{toc}{~\hfill\textbf{Page}\par}
    \addtocontents{toc}{~\textbf{Name of the Experiment}}
    \setcounter{tocdepth}{0}
    \tableofcontents
 \end{titlepage}
 \chapter{Hello World}
 ....
 \chapter{Hi}
 .....
\end{document}

它的输出如下:

![enter image description here][2]

另外,当我编译代码时,出现错误:

在此处输入图片描述

但我能够查看 pdf。我应该怎么做才能按照我的要求制作目录?

不知道为什么我的第二张图片没有上传。

目录将仅包含章节名称(无章节或小节)、撰写日期、页码和以 expt.no 表示的章节编号。我使用的是书籍类。对于超链接,我已在代码中添加了页码作为参考。

答案1

我把备注栏留空了。该方法需要以下标记:

\chapter{\EXP{date}{name}}

可以扩展该机制来处理备注。这里的\EXP定义最初是

\protected\def\EXP #1#2{#2 (#1)}

章节标题在文档中的显示方式如下。它由 TOC 排版代码在内部重新定义。

假设没有\part(但允许它们只是添加一个问题,\etocsetlevel{part}{1}例如在\TOCofexperiments宏内添加),但允许\section、和\subsection。允许\tableofcontents在之外使用标准。该图像是从 pdf 查看器截取的屏幕截图,显示条目是链接。(也可以通过选项或修改命令的使用TOCofexperiments将页面设为链接;也可以将日期设为链接)。linktoc=allhyperrefetoc

实验表目录

\documentclass [a4paper]{book}
\usepackage{etoc}
\usepackage{hyperref}
\usepackage{array}
\usepackage{longtable}

\newtoks\toctabletok
\newcommand*\appendtotok[2]{% #1=toks variable, #2=macro, expands once #2
  #1\expandafter\expandafter\expandafter
    {\expandafter\the\expandafter #1#2}}

\newcommand*\PrepareChapter{%
  \toks0 \expandafter{\etocthelinkednumber}% expt number
  \edef\TEMP {\etocthename}\toks2 \expandafter{\TEMP}%% expt date and name
  \toks4 \expandafter{\etocthelinkedpage}%   expt page
  \edef\toctablepiece{\noexpand\hline
                      \noexpand\strut\the\toks0 &
                                     \the\toks2 &
                                     \the\toks4 &\noexpand\\ }%
}

\newcommand\TOCofexperiments{%
    \etocsetstyle{chapter}{}{}
      {\PrepareChapter \appendtotok\toctabletok\toctablepiece}
      {}
%
    \etocsettocstyle
    {\def\EXP ####1####2{\unexpanded{####1} & 
                         \unexpanded\expandafter{\etocthelink{####2}}}%
     \toctabletok{%
            \begin{longtable}{|>{\centering}p{1cm}|c|p{5cm}|c|p{2cm}|}
              \multicolumn{5}{c}{\Large\bfseries\rule[-2ex]{0pt}{0pt}%
                                     TABLE OF CONTENTS}\\
              \hline
     Expt. No & Date & Name of the Experiment & Page & \null\hfil Remarks\\
                 }}
    {\global\toctabletok\expandafter{\the\toctabletok
                                     \hline
                                     \end{longtable}}}
%
   \etocsetnexttocdepth {chapter}
   \tableofcontents
   \markboth{\textsc{Contents}}{\textsc{Contents}}
   \the\toctabletok
   % variant: \begingroup\hypersetup{hidelinks}\the\toctabletok\endgroup
}

\protected\def\EXP #1#2{#2 (#1)}

\begin{document}

% a standard table of contents (including sections etc..) is still possible:
% \tableofcontents

\TOCofexperiments

\chapter{\EXP{6-4-13}{A Sample Experiment}}

\chapter{\EXP{1-4-14}{Another Experiment}}

\chapter{\EXP{6-4-14}{The Final Experiment}}


\end{document}

为了回答使用 编辑的问题tikz。您可以尝试:

\protected\def\EXP #1#2{#2 (#1)}
\newcommand\ExpChapter [2]{%
  \chapter{\EXP{#1}{#2}}\thispagestyle{empty}
 \begin{tikzpicture}[remember picture, overlay]
\node[anchor=center,inner sep=0pt,font=\Large\bfseries] at ($(current page.north west) + (4.7cm,-2.7cm)$) {\thechapter};
\node[anchor=center,inner sep=0pt,font=\Large\bfseries] at ($(current page.north) + (0cm,-2.7cm)$) {#2};
\node[anchor=center,inner sep=0pt,font=\Large\bfseries] at ($(current page.north west) + (18cm,-2.7cm)$) {#1};
\end{tikzpicture}}

\begin{document}\pagestyle{empty}
\TOCofexperiments

\ExpChapter{6-4-13}{A Sample Experiment}

\ExpChapter{1-4-14}{Another Experiment}

\ExpChapter{6-4-14}{The Final Experiment}

\end{document}

但是我真的很想知道为什么你需要\chapter命令,以及所有这些额外的花哨的东西 usingtikz而不是例如fancyhdr。完全放弃这种滥用,并按照初始评论中所建议的那样设计命令会容易得多,\chapter这些命令通过自定义准备的辅助文件来准备表格“toc”。

答案2

以下可能是实现目标的第一步(希望是合理的)。它使用托克洛夫特包广泛。它还使用命令的可选参数\chapter在 ToC 条目中插入有关实验日期的信息。

某些间距、字体粗细和字体大小选择可能不合您的心意,但由于您没有就这些问题提供明确的指导,因此我不得不做出一些假设。您在评论中提到“备注”栏应留空;在这种情况下,最好将其完全省略(而不是用空列使目录的外观变得杂乱),对吗?

在此处输入图片描述

\documentclass{book}
% \renewcommand\chaptername{Experiment}  %% optional
\usepackage{tocloft}
  \renewcommand{\contentsname}{Table of Contents}
  \renewcommand{\cfttoctitlefont}{\hfill\Large\bfseries}
  \renewcommand{\cftaftertoctitle}{\hfill \null\\[2ex]
  \normalfont No.\hspace{0.5cm}Date \hspace{2cm}Name of Experiment \hfill Page}
  \setlength{\cftaftertoctitleskip}{2ex}
  \setlength{\cftchapnumwidth}{3em}

\begin{document}
\tableofcontents
\chapter[2013.06.04\hspace{1cm}Name of first experiment]{Name of first experiment}

\chapter[2013.07.05\hspace{1cm}Name of second experiment]{Name of second experiment}
\end{document}

相关内容