Как создать документ LaTeX, генерирующий PDF-файл, в котором копирование и вставка будут работать корректно для пустых строк и отступов начальных пробелов?

Как создать документ LaTeX, генерирующий PDF-файл, в котором копирование и вставка будут работать корректно для пустых строк и отступов начальных пробелов?

Мы пишем PDF-документ в LaTeX, который содержит различные инструкции по установке и другой технологический текст. Наша идея заключается в том, что пользователь читает различные инструкции шрифтом Serif, а затем есть многострочные разделы monotype, которые он копирует-вставляет в консоль или редактор, то есть monotype inline — это shellscript, C, например.

Наконец, мы предпочитаем, чтобы эти фрагменты shell/C/и т. д. былинеэкранированный(то есть HEREDOC, <PRE>своего рода поведение). По этой причине мы попробовали пакет "listings" и \lstset+ \begin{lstlisting}формы для поведения HEREDOC для текстового содержимого, которое является файлом Tex, который будет содержать текст без использования каких-либо управляющих последовательностей, а затем мы попытались \usepackage[space=true]{accsupp}сделать так, чтобы копирование текста из PDF работало так, как ожидалось.

Однако эта попытка не увенчалась успехом, и мы не понимаем, почему, а именно, почему скопированный текст имеет тенденциюисключить пустые строки и начальные пробелы.

Последние подробности:

  • Для технического шрифта нам нравится использовать IBM Plex Mono.

  • При необходимости мы можем добавить пустой пробел в каждую пустую строку.

  • Мы пытаемся использовать некоторые трюки, чтобы нижний колонтитул страницы (и любой номер строки сбоку) не попадал в копипаст, и это сработало довольно хорошо.

  • Если копирование-вставка будет работать только в некоторых определенных просмотрщиках PDF, это нормально. Если так, то один из кроссплатформенных просмотрщиков PDF будет предпочтительнее, это: Evince, Chrome, Firefox, MuPDF. (Если придут в голову еще какие-то, пожалуйста, поделитесь.) Просмотрщики PDF с ограниченными платформами: Adobe Reader и PDF Exchange Viewer.

  • Еслистиль heredoc невозможен в латексе, то мы можем обойтись без него, например, один BeginAccsupp на строку или любая другая необходимая мера.

Можете ли вы поделиться своими мыслями и примерами по этому поводу?

Если это не может быть сделано удовлетворительно, что вы предлагаете - использовать какой-то другой язык вывода, например HTML, сгенерированный "htlatex"? Поможет ли использование PS, но если да, то какое программное обеспечение для просмотра существует.

Tex код мы попробовали

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

Рекомендации

Ссылки на то, что мы уже пробовали и что не сработало:

Больше обсуждений AccSup можно найти наМетоды, позволяющие сделать содержимое таблиц копируемым.

Связанный контент