![如何在不真正换行的情况下包装较长的终端命令?](https://linux22.com/image/317377/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E7%9C%9F%E6%AD%A3%E6%8D%A2%E8%A1%8C%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%8C%85%E8%A3%85%E8%BE%83%E9%95%BF%E7%9A%84%E7%BB%88%E7%AB%AF%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
这可能看起来像重复的问题这个等等,但我确实很难找到所需的解决方案。
该方法
breaklines=true
不起作用,因为它会破坏长命令。因此 simple 也copy and paste
不起作用,因为当代码粘贴到终端时,它会被前面的尖括号 > 分成多行。
答案1
使用accsupp
包。这样,无论是否有可见的换行符,您都可以进行复制。
\documentclass{article}
\usepackage{accsupp}
\usepackage{listings}
\begin{document}
\BeginAccSupp{method=plain,ActualText=long long long command long long long command long long long command long long long command}
\begin{lstlisting}[breaklines=true]
long long long command long long long command long long long command long long long command
\end{lstlisting}
\EndAccSupp{}
\end{document}
如果代码中包含特殊字符,则需要一些更花哨的东西(method=pdfstringdef
和hyperref
):
\documentclass{article}
\usepackage[pdfencoding=auto]{hyperref}
\usepackage{accsupp}
\usepackage{listings}
\begin{document}
\BeginAccSupp{method=pdfstringdef,ActualText=
grep -rw --include \unichar{"005C}*.h --include \unichar{"005C}*e.c* "Write()" . |sed -e 's/Write/Read/g'}
\begin{lstlisting}[breaklines=true]
grep -rw --include \*.h --include \*e.c* "Write()" . |sed -e 's/Write/Read/g'
\end{lstlisting}
\EndAccSupp{}
\end{document}