
Wir schreiben ein PDF-Dokument in LaTeX, das verschiedene Installationsanweisungen und andere technische Texte enthält. Unsere Idee ist, dass der Benutzer verschiedene Anweisungen in Serifenschrift liest und dann mehrzeilige Monotype-Abschnitte enthält, die er in eine Konsole oder einen Editor kopieren und einfügen kann, d. h. die Monotype-Inline ist Shellscript, C usw.
Schließlich bevorzugen wir die Shell/C/usw.-Schnipselnicht entkommen(das ist HEREDOC- <PRE>
artiges Verhalten). Aus diesem Grund haben wir das Paket „Listings“ und \lstset
+ \begin{lstlisting}
Formulare für HEREDOC-Verhalten für den Textinhalt ausprobiert, d. h. die Tex-Datei wird den Text ohne die Verwendung von Escape-Sequenzen enthalten, und dann haben wir versucht, \usepackage[space=true]{accsupp}
das Kopieren von Text aus dem PDF so zu gestalten, dass es wie erwartet funktioniert.
Der Versuch war jedoch nicht erfolgreich und wir verstehen nicht, warum. Konkret passiert Folgendes: Der kopierte Text neigt dazu,schließen Sie leere Zeilen und führende Leerzeichen aus.
Letzte Details:
Als technische Schriftart verwenden wir gerne IBM Plex Mono.
Bei Bedarf können wir das Hinzufügen eines Leerzeichens in jeder leeren Zeile tolerieren.
Wir versuchen, mit einigen Tricks dafür zu sorgen, dass die Seitenfußzeile (und alle Zeilennummern an der Seite) nicht beim Copypaste-Eintrag berücksichtigt werden, und das hat ganz gut funktioniert.
Wenn das Kopieren und Einfügen nur in bestimmten PDF-Viewern funktioniert, ist das in Ordnung. In diesem Fall wäre einer der plattformübergreifenden PDF-Viewer vorzuziehen. Diese sind: Evince, Chrome, Firefox, MuPDF. (Wenn Ihnen noch weitere einfallen, teilen Sie sie uns bitte mit.) PDF-Viewer für begrenzte Plattformen sind Adobe Reader und PDF Exchange Viewer.
WennWenn der Heredoc-Stil in Latex nicht möglich ist, können wir ohne ihn leben, z. B. ein BeginAccsupp pro Zeile oder eine andere erforderliche Maßnahme.
Können Sie uns bitte Ihre Gedanken und Beispiele dazu mitteilen?
Wenn dies nicht zufriedenstellend funktioniert, was schlagen Sie vor? Verwenden Sie eine andere Ausgabesprache wie HTML, das von „htlatex“ generiert wird. Wäre die Verwendung von PS hilfreich, aber wenn ja, welche Viewer-Software gibt es?
Tex-Code, den wir ausprobiert haben
\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}
Verweise
Hinweise darauf, was wir bereits versucht haben und was nicht funktioniert hat:
- Viewerunabhängige kopierbare Leerzeichen am Zeilenanfang?
- Wie kann ich dafür sorgen, dass die Einrückung von Listing-Codes beim Kopieren aus einer PDF-Datei unverändert bleibt?
- Erstellen Sie eine kopier- und einfügbare PDF-Ausgabe mit korrekter Einrückung und Auflistung
- Wie kopiere/füge ich mehrere Leerzeichen aus Listenlisten ein?- ** Beachten Sie hier, dass sie unter Bezugnahme auf einen anderen Artikel sagen: „Leerzeichen können nicht zuverlässig aus einer PDF-Datei kopiert werden.“ Ich bin nicht sicher, ob dies eine korrekte Aussage ist. Aus diesem Grund veröffentlichen wir diesen Beitrag, um dieser Frage auf den Grund zu gehen :)
- Kopieren und Einfügen führender Leerzeichen und Leerzeilen im Listings-Paket (pdf)
- https://www.monperrus.net/martin/copy-pastable-listings-in-pdf-from-latex
Weitere AccSup-Diskussionen finden Sie unterTechniken, um tabellarische Inhalte kopierbar zu machen.