
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ó:
- ¿Espacios copiables independientes del espectador al principio de una línea?
- ¿Cómo hacer que la sangría del código de los listados permanezca sin cambios cuando se copia desde un PDF?
- producir resultados en formato PDF que se puedan copiar y pegar con sangría correcta y listado
- ¿Cómo copiar/pegar varios espacios de lstlistings?- ** tenga en cuenta aquí que dicen "los caracteres de espacio no se pueden copiar de forma fiable desde un PDF" con referencia a otro artículo. No estoy seguro de que esta sea una afirmación correcta, es por eso que publicamos esta publicación, para ir al final de esta pregunta :)
- Copiar y pegar espacios en blanco iniciales y líneas en blanco en el paquete de listados (pdf)
- https://www.monperrus.net/martin/copy-pastable-listings-in-pdf-from-latex
Hay más discusión sobre AccSup enTécnicas para hacer copiables contenidos tabulares.