我需要像这样制作目录条目:(以标题目录为中心)。
我至今为止能够实现的目标:
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=all
hyperref
etoc
\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}