如何将文档导出为没有内容的空框架?

如何将文档导出为没有内容的空框架?

我有一份很长很复杂的文档,我想将其渲染为最小轮廓,而不显示正文。最好的方法是什么?

到目前为止,我尝试过的方法是保存一个只有标题而没有其他文本的版本。但这行不通。大纲被卡住了。

为了尝试解决这个问题,我制作了一个如下的测试文件:

\documentclass{article}

\begin{document}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
[... eight more sections ... ]
\end{document}

输出结果为两页文档,第一页为空白。第二页上出现了轮廓,但轮廓一直延伸到页边距,直到被截断。

在每个部分添加一些填充文本可以解决问题。但如果不这样做,我如何才能获得我期望的输出?

编辑:我对此进行了编辑,以强调我试图实现的具体实际目标,而不是所涵盖的空白部分的技术问题另一个问题

答案1

编辑答案

如果您想导出文档的骨架,而不必提取所有分段命令,请尝试这种方法。

加载该tocloft包并在文档末尾添加以下行:

\tocloftpagestyle{empty}
\pagestyle{empty}
\renewcommand{\contentsname}{Skeleton}
\renewcommand{\cfttoctitlefont}{\huge\bfseries}
\renewcommand{\cftaftertoctitle}{\vspace*{\baselineskip}}
\setlength{\cftparskip}{\baselineskip}
\cftpagenumbersoff{section}
\cftpagenumbersoff{subsection}
\cftpagenumbersoff{subsubsection}
\renewcommand{\cftsubsecdotsep}{\cftnodots}
\renewcommand{\cftsubsubsecdotsep}{\cftnodots}
\renewcommand{\cftsubsecindent}{0pt}
\renewcommand{\cftsubsubsecindent}{0pt}
\renewcommand{\cftsecfont}{\Large\bfseries}
\renewcommand{\cftsubsecfont}{\large\bfseries}
\renewcommand{\cftsubsubsecfont}{\normalsize\bfseries}
\tableofcontents

通过这种方式,我们创建了一个具有与文档中的章节标题相同的结构,但没有文本的目录。

如果您还需要文档中适当的目录,请加载shorttoc包并在文档中需要目录的位置添加以下行:

\shorttoc{Contents}{3}

梅威瑟:

\documentclass{article}

\usepackage{tocloft}
\usepackage{shorttoc}
\usepackage{blindtext}

\begin{document}

\shorttoc{Contents}{3}
\clearpage

\blinddocument
\blinddocument
\blinddocument
\clearpage

\tocloftpagestyle{empty}
\pagestyle{empty}
\renewcommand{\contentsname}{Skeleton}
\renewcommand{\cfttoctitlefont}{\huge\bfseries}
\renewcommand{\cftaftertoctitle}{\vspace*{\baselineskip}}
\setlength{\cftparskip}{\baselineskip}
\cftpagenumbersoff{section}
\cftpagenumbersoff{subsection}
\cftpagenumbersoff{subsubsection}
\renewcommand{\cftsubsecdotsep}{\cftnodots}
\renewcommand{\cftsubsubsecdotsep}{\cftnodots}
\renewcommand{\cftsubsecindent}{0pt}
\renewcommand{\cftsubsubsecindent}{0pt}
\renewcommand{\cftsecfont}{\Large\bfseries}
\renewcommand{\cftsubsecfont}{\large\bfseries}
\renewcommand{\cftsubsubsecfont}{\normalsize\bfseries}
\tableofcontents

\end{document} 

输出(正确的 ToC):

在此处输入图片描述

输出(骨架 ToC):

在此处输入图片描述 在此处输入图片描述

此时,假设您的文档名为mydoc.tex,提取骨架 ToC,在单独的pdf file新文档中创建一个名为skeleton.tex内容如下:

skeleton.tex

\documentclass{article}

\usepackage{pdfpages}

\begin{document}
\includepdf[pages=11-12]{mydoc.pdf}
\end{document} 

结果pdf正是您想要的。当然,您必须更改pages=11-12为文档中包含骨架目录的正确页面范围。


原始答案

\sections 和类似的元素不允许在其后添加分页符。因此,如果其后没有任何文本,则它们将全部位于一页中,并且框会溢出。

如果您只想查看文档的结构,请使用目录或在序言中添加以下几行:

\usepackage{etoolbox}
\preto{\section}{\leavevmode}

平均能量损失

\documentclass{article}

\usepackage{etoolbox}
\preto{\section}{\leavevmode}

\begin{document}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}
\end{document} 

输出

在此处输入图片描述

答案2

大纲最有可能的是ToC(目录),可以插入

\tableofcontents

一定要编译两次才能看到效果。

的精细控制ToC可以通过诸如tocloftetoc之类的软件包或使用诸如tocdepth

\documentclass{article}

\usepackage{blindtext}

\begin{document}
\tableofcontents

\clearpage
\section{Foo}
\subsection{bar}
\blindtext[5]

\subsection{bar}
\subsection{bar}
\section{Foo}
\subsection{bar}
\subsection{bar}
\subsection{bar}

\end{document}

在此处输入图片描述

答案3

不幸的是,我从这个问题中了解到的很多有用信息都被删除了。我会在这里总结一下,希望其他初学者会觉得有用。

  • 章节、小节等实际上不应该是空的,但添加不可见的文本phantom可以解决这个问题。
  • 也许更好的方法是,首先不要创建文档的“空”版本,而是调整提炼真实文档的目录。

相关内容