
私たちは、さまざまなインストール手順やその他の技術テキストを含む PDF ドキュメントを LaTeX で作成しています。私たちのアイデアは、ユーザーが Serif フォントでさまざまな手順を読み、コンソールまたはエディターにコピーして貼り付ける複数行のモノタイプ セクションがあることです。つまり、モノタイプ インラインはシェルスクリプト、C などです。
最後に、シェル/C/その他のスニペットは逃げられない(これは HEREDOC の<PRE>
ような動作です)。このため、Tex ファイルに含まれるテキスト コンテンツに対して HEREDOC 動作を実行するために、 「listings」パッケージと\lstset
+フォームを試し、エスケープ シーケンスを使用せずにテキストを PDF からコピーできるようにしました。\begin{lstlisting}
\usepackage[space=true]{accsupp}
しかし、これを試してもうまくいかず、その理由はわかりません。具体的には、コピーされたテキストが空行と先頭のスペースを除外する。
最後の詳細:
私たちは、技術フォントとして IBM Plex Mono を使用しています。
必要に応じて、各空行に空白を追加してもかまいません。
ページ フッター (および横の行番号) がコピー アンド ペーストに含まれないようにいくつかのトリックを使用するようにしましたが、これは非常にうまく機能しました。
コピー アンド ペーストが特定の PDF ビューアでのみ機能する場合は問題ありません。その場合は、クロスプラットフォームの PDF ビューアのいずれかが適しています。クロスプラットフォームの PDF ビューアには、Evince、Chrome、Firefox、MuPDF などがあります (他に思いついたら教えてください)。プラットフォームが限定されている PDF ビューアは、Adobe Reader と PDF Exchange Viewer です。
もしheredoc スタイルは LaTeX では不可能なので、それなしでも大丈夫です。たとえば、1 行につき 1 つの BeginAccsupp など、必要なその他の対策が必要です。
これについてあなたの考えや例を共有していただけますか?
これが満足に実行できない場合、どのような提案がありますか - 「htlatex」によって生成された HTML などの他の出力言語を使用しますか? PS を使用すると役立ちますか。もし役立つとしたら、どのようなビューア ソフトウェアがありますか。
試したTexコード
\LoadClass[a4paper,12pt,openright,oneside,chapter=TITLE,section=TITLE,hidelinks]
{article}
\documentclass{article}
\RequirePackage[utf8]{inputenc}
\RequirePackage[a4paper,margin=2cm]{geometry}
\RequirePackage{plex-mono}
\usepackage[space=true]{accsupp}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{listings}
\RequirePackage{xcolor}
\lstset{
% Configuration to make it unescaped and copy-paste right
%upquote=true,
%columns=fullflexible,
%showstringspaces=true,
%literate={\ }{{\copyablespace}}1,
% For the looks - make it monotype etc
%frame=tb,
%aboveskip=3mm,
%belowskip=3mm,
%numbers=left,
%numberstyle=\tiny\color{lightgray}\ttfamily, % \nonumbercopy,
%keywordstyle=\color{green},
%commentstyle=\color{blue},
%stringstyle=\color{red},
%breaklines=true,
%breakatwhitespace=true,
%tabsize=2,
%numbersep=0.5em,
%framerule=0pt,
%xleftmargin=10pt,
%xrightmargin=0pt,
breaklines=true,
backgroundcolor=\color{yellow},
%keepspaces=true,
basicstyle=\fontsize{9}{11}\ttfamily%,
%columns=fixed,
%fontadjust=true,
%showlines=false,
%showstringspaces=false
}
%\newcommand{\copyablespace}{
% \BeginAccSupp{method=hex,unicode,ActualText=0040}
%\ %
% \EndAccSupp{}
%}
% Make the line numbers not appear in copy-paste
% \newcommand{\nonumbercopy}[1]{
% \BeginAccSupp{method=hex,unicode,ActualText=00A0}#1\EndAccSupp{}
% }
% Footer
\renewcommand{\title}[1]{
\pagestyle{fancy}
\lhead{}
\rhead{}
\cfoot{\squelch{\thepage}}
}
\begin{document}
\noindent Beginning of document, serif outside unescaped part.
\begin{lstlisting}
This is the uppermost-left unescaped monotyped text, it has no indentation.
This is the second line, it has three letters of indentation
Here are some characters that prove that we can type without escaping: \{$
Now let's do an empty line:
The empty line worked fine. Copypaste this and see the copy is the same!
\end{lstlisting}
End of document, serif outside unescaped part.
\end{document}
参考文献
すでに試したが機能しなかったものへの参照:
- 行の先頭に、ビューアに依存しないコピー可能なスペースがありますか?
- PDF からコピーしたときにリスト コードのインデントを変更しないようにするにはどうすればよいですか?
- 正しいインデントとリストを含むコピー&ペースト可能なPDF出力を作成する
- lstlistings から複数のスペースをコピー/貼り付けるにはどうすればいいですか?- ** ここで、別の記事を参照して「スペース文字は PDF から確実にコピーできない」と述べられていることに注意してください。これが正しい記述かどうかはわかりませんが、この質問の最後までたどり着くためにこの投稿を公開しています :)
- リスト パッケージの先頭の空白と空行をコピーして貼り付ける (pdf)
- https://www.monperrus.net/martin/copy-pastable-listings-in-pdf-from-latex
AccSupに関するさらなる議論は表形式のコンテンツをコピー可能にするテクニック。