¿Cómo hacer un documento LaTeX que genere un PDF a partir del cual copiar y pegar funcione correctamente para líneas vacías y sangría de espacio inicial?

¿Cómo hacer un documento LaTeX que genere un PDF a partir del cual copiar y pegar funcione correctamente para líneas vacías y sangría de espacio inicial?

Estamos escribiendo un documento PDF en LaTeX que contiene varias instrucciones de instalación y otro texto tecnológico. Nuestra idea es que el usuario lea varias instrucciones en fuente Serif y luego haya secciones monotipo multilínea que copiaría y pegaría en una consola o editor, es decir, el monotipo en línea es shellscript, C, tal.

Finalmente preferimos aquellos shell/C/etc. fragmentos para sersin escapar(eso es HEREDOC, <PRE>tipo de comportamiento). Por esta razón, probamos el paquete "listings" y \lstset+ \begin{lstlisting}formularios para el comportamiento HEREDOC para el contenido de texto, es decir, el archivo Tex contendrá el texto sin el uso de secuencias de escape, y luego intentamos \usepackage[space=true]{accsupp}copiar el texto del PDF. para funcionar como se esperaba.

Sin embargo, intentar esto no ha tenido éxito y no entendemos por qué, específicamente lo que sucede es que el texto copiado tiende aexcluir líneas vacías y espacios iniciales.

Últimos detalles:

  • Nos gusta usar IBM Plex Mono para la fuente tecnológica.

  • Si es necesario, podemos tolerar agregar un espacio vacío en cada línea vacía.

  • Intentamos utilizar algunos trucos para que el pie de página (y cualquier número de línea al costado) no se incluya en el copypaste y eso ha funcionado bastante bien.

  • Si copiar y pegar solo funciona en algunos visores de PDF en particular, está bien. Si es así, uno de los visores de PDF multiplataforma que preferiría, son: Evince, Chrome, Firefox, MuPDF. (Si se le ocurre algo más, compártalo). Los visores de PDF de plataformas limitadas serían Adobe Reader y PDF Exchange Viewer.

  • SiEl estilo heredoc es imposible en látex, entonces podemos vivir sin él, por ejemplo, un BeginAccsupp por línea o cualquier otra medida necesaria.

¿Puedes compartir tus pensamientos y ejemplos sobre esto?

Si esto no se puede hacer satisfactoriamente, ¿qué sugiere? ¿Utilizar algún otro lenguaje de salida como HTML generado por "htlatex"? ¿Sería de alguna ayuda usar PS? En caso afirmativo, ¿qué software de visualización hay?

Código tex que probamos

\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}

Referencias

Referencias a lo que ya hemos probado y que no funcionó:

Hay más discusión sobre AccSup enTécnicas para hacer copiables contenidos tabulares.

información relacionada