如何在呈现为 PDF 的 LaTeX 文档的逐字部分内启用搜索?

如何在呈现为 PDF 的 LaTeX 文档的逐字部分内启用搜索?

我正在生成一个 LaTeX 文档,如下所示:

\documentclass{article}
\usepackage[letterpaper, margin=0.75in]{geometry}
\usepackage[tocindentauto]{tocstyle}
\usetocstyle{standard}
\usepackage{parskip}% http://ctan.org/pkg/parskip
\usepackage[hidelinks]{hyperref}
\usepackage{spverbatim}
\usepackage{listings}
...
\subsubsection{HEADER\_SNTP\_POLL\_FAILURE}
Request function: \verb#SNTP_POLL_FAILURE#

Assignments: \begin{lstlisting}
msg = some_interesting_function_call(&etc)
\end{lstlisting}

我遇到的困难有两个:

  1. 标题不可搜索。如果用户搜索“HEADER_SNTP_POLL_FAILURE”,则无法找到子节标题。但是,在 \verb 内的“请求函数”文本中可以找到“SNTP_POLL_FAILURE”。
  2. 如果用户搜索“some_interesting_function_call”,他们将无法在列表中找到结果。如果我将文本从 PDF 复制到终端,结果如下:s ome interestingfunctionca ll 这使得代码列表变得毫无用处,因为它使得使用该文档作为参考变得非常尴尬。

我该如何解决这个问题?我希望列表可以用作复制粘贴源,并且我希望能够在列表和章节标题中搜索符号。

答案1

minted包使代码片段可搜索和复制。该包提供语法着色,并支持使用环境选项 进行换行breaklines=true。如果您不想着色,text可以使用词法分析器。使用 运行pdflatex --shell-escape。此外,pygmentize必须在系统上安装(例如,参见如何在 MikTeX 和 Windows 7 下使用 minted?或者我无法让 minted 包在 Ubuntu 下运行(pygments 错误))。

梅威瑟:

\documentclass{article}
\usepackage{minted}
\begin{document}
\section{HEADER\_SNTP\_POLL\_FAILURE}
Request function: \verb#SNTP_POLL_FAILURE#\\
Assignments:
\begin{minted}[breaklines=true]{cpp}      % C++ lexer
msg = some_interesting_function_call(&etc)
VectorHistogram::VectorHistogram(size_t bins, size_t cache) : bins(std::vector<double>(bins)), cache(std::min(cache, MAX_CACHE_ENTRIES)) {}
\end{minted}
\end{document}

结果:

在此处输入图片描述

相关内容