显示可以通过双击选择的包装的 unix 命令

显示可以通过双击选择的包装的 unix 命令

不确定这是否可行。我必须在用户手册中显示 UNIX 命令,其中一些命令很长。这些命令无法在一行中显示,因此必须换行。

为了显示它们,我尝试使用verbatim环境和listings包(将 breaklines 设置为 true)。但是,当我转到最终 PDF 并双击现在已换行的行时,它不会选择整个命令,而只会选择我双击的单行。

想象一下下面的命令。是否有一个环境允许我在最终 PDF 文档中双击该命令并让其选择整个命令?

$ keytool -genkeypair -dname "cn=sub.example.com"
-alias sub_root -keyalg RSA -keysize 2048 -validity 500
-keystore sub.ks -storepass pass -storetype jks

澄清:目前,至少在逐字环境中,读者可以单击并按住然后拖动以选择整个命令;但是当将其粘贴到终端时,终端会将其读取为几行,这是不行的。或者,我可以\在每行末尾添加(最后一行除外),但用户粘贴命令后无法编辑它。理想情况下,我们会让命令自动换行并且不带反斜杠,双击任何一行都会选择整个命令,这样我们就可以将其粘贴为单个可编辑行。

答案1

试试这个。在这里,我使用accsupp允许在创建 PDF 时将不同内容放在纸张上和 PDF“内部”文档(用于复制/粘贴)中的软件包。这个功能很不错,因为从调用中放置在内部文档中的文本AccSupp是 PDF 的单一实体,不能部分复制/粘贴,只能全部复制/粘贴。此外,AccSupp无论在 PDF 的可见纸张上放置什么文本,文本的内部表示中都没有换行符。

它不是通过双击来复制,而是通过单击并拖动来复制。但是,只需拖动参数的开头部分\copypaste即可复制整个内容(不会中断)并粘贴为连续的一行而无需换行。

\documentclass{article}
\usepackage{accsupp}
\newcommand\copypaste[1]{%
    \BeginAccSupp{method=escape,ActualText={\detokenize{#1}}}%
      \noindent\texttt{\detokenize{#1}}%
    \EndAccSupp{}%
}
\begin{document}
Here is some text, and now the stuff of interest:
\copypaste{$ this-is-my-long-command -with-lots-of-flags -with-lots-of-flags
-with-lots-of-flags -with-lots-of-flags -with-lots-of-flags
-with-lots-of-flags -with-lots-of-flags -with-lots-of-flags
-with-lots-of-flags -with-lots-of-flags -somearg xyz}
more text.  Now, as its own paragraph:

\copypaste{$ this-is-my-long-command -with-lots-of-flags -with-lots-of-flags
-with-lots-of-flags -with-lots-of-flags -with-lots-of-flags
-with-lots-of-flags -with-lots-of-flags -with-lots-of-flags
-with-lots-of-flags -with-lots-of-flags -somearg xyz}

More text
\end{document}

在此处输入图片描述

相关内容