
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:
- Espaços copiáveis independentes do visualizador no início de uma linha?
- Como fazer com que o recuo do código das listagens permaneça inalterado quando copiado do PDF?
- produzir saída PDF que pode ser copiada e colada com recuo correto com listagem
- Como copiar/colar vários espaços de lstlistings?- ** observe aqui que eles dizem "caracteres de espaço não podem ser copiados de forma confiável de um PDF" com referência a outro artigo. Não tenho certeza se esta é uma afirmação correta, é por isso que publicamos este post, para ir ao final desta questão :)
- Copiar e colar espaços em branco e linhas em branco no pacote de listagens (pdf)
- https://www.monperrus.net/martin/copy-pastable-listings-in-pdf-from-latex
Há mais discussões sobre AccSup emTécnicas para tornar o conteúdo tabular copiável.