Como fazer um documento LaTeX que gera um PDF a partir do qual copiar e colar funciona corretamente para linhas vazias e recuo de espaço à esquerda?

Como fazer um documento LaTeX que gera um PDF a partir do qual copiar e colar funciona corretamente para linhas vazias e recuo de espaço à esquerda?

Estamos escrevendo um documento PDF em LaTeX que contém várias instruções de instalação e outros textos sobre tecnologia. Nossa ideia é que o usuário leia várias instruções na fonte Serif e depois haja seções de monotipo multilinha que ele copiaria e colaria em um console ou editor, ou seja, o monotipo embutido é shellscript, C, tal.

Finalmente preferimos aqueles shell/C/etc. trechos para seremsem escape(isso é HEREDOC, <PRE>tipo de comportamento). Por esse motivo, tentamos o pacote "listings" e \lstset+ \begin{lstlisting}formulários para o comportamento do HEREDOC para o conteúdo do texto que é o arquivo Tex conterá o texto sem o uso de nenhuma sequência de escape, e então tentamos \usepackage[space=true]{accsupp}fazer a cópia do texto do PDF para funcionar conforme o esperado.

No entanto, tentar isto não teve sucesso e não entendemos porquê, especificamente o que acontece é que o texto copiado tende aexcluir linhas vazias e espaços iniciais.

Últimos detalhes:

  • Gostamos de usar IBM Plex Mono para a fonte tecnológica.

  • Se necessário, podemos tolerar a adição de um espaço vazio em cada linha vazia.

  • Tentamos usar alguns truques para que o rodapé da página (e qualquer número de linha ao lado) não seja incluído no copypaste e isso funcionou muito bem.

  • Se copiar e colar funcionar apenas em alguns visualizadores de PDF específicos, tudo bem. Nesse caso, seria preferível um dos visualizadores de PDF de plataforma cruzada, são eles: Evince, Chrome, Firefox, MuPDF. (Se mais alguma coisa vier à mente, por favor, compartilhe.) Os visualizadores de PDF de plataformas limitadas seriam o Adobe Reader e o PDF Exchange Viewer.

  • SeO estilo heredoc é impossível no látex, então podemos viver sem ele, por exemplo, um BeginAccsupp por linha ou qualquer outra medida necessária.

Você pode compartilhar suas idéias e exemplos sobre isso?

Se isso não puder ser feito de forma satisfatória, o que você sugere - usar alguma outra linguagem de saída, como HTML gerado por "htlatex"? Usar o PS ajudaria em alguma coisa, mas em caso afirmativo, qual software de visualização existe.

Código Tex que tentamos

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

Referências

Referências ao que já tentamos e que não funcionou:

Há mais discussões sobre AccSup emTécnicas para tornar o conteúdo tabular copiável.

informação relacionada