在某些阅读器中,文本很难复制粘贴到使用 PDFLatex 生成的特定 PDF 上

在某些阅读器中,文本很难复制粘贴到使用 PDFLatex 生成的特定 PDF 上

所以,这是一个奇怪的问题:我知道 LaTeX 在从 PDF 复制粘贴时会遇到一些问题,有时需要像 cmap 包这样的东西。但目前我从来不需要这样的东西,因为我用 PDFLatex 生成的 PDF 总是非常清晰。

但目前我正在写一篇论文(大的由于包的数量太多,而且奇怪的是,生成的 PDF 中的文本很难选择。

我的问题与经典问题的不同之处在于,对于同一个 PDF,问题似乎只发生在某些编辑器(如 Sumatra PDF)中,而不会发生在其他编辑器(如 Adob​​e Reader)中,这非常奇怪:如果问题是连字和特殊字符等字符问题,那么它应该出现在每个阅读器中。

我错过了什么?

编辑 :

一些精确度和说明。

问题:关于这个短语(抱歉,是法语):

“机器人今天出现了新的用法,伴随着新的限制和对新技术的呼吁:寻找能够将机器人部署在公共空间或门厅中的例子。”

来自 Adob​​e 的副本给出了良好的结果。来自 Sumatra 的副本给出了:

那天晚上,我被要求展示一些我从未见过的、没有见过的、没有见过的技术:为了寻找例子,我不得不放弃那些我曾被关在监狱里、被关在外面的人,以及那些被关在外面的人。

当我进行选择时,它会给出: 复制

我们看到了所选文本中的洞。

理想情况下,我希望我的 pdf 在每个编辑器中都是可选的。这不是苏门答腊的普遍问题,因为它可以成功打开其他 pdf,所以我想应该可以修复。

我的 tex 中的软件包(抱歉,这是一个包含很多软件包的大文档):

\pdfobjcompresslevel 0
\documentclass[a4paper,12pt,oneside,final, DIV=12, listof=totoc, bibliography=totoc, toc=bibliography, open=right, chapterprefix=true]{scrbook}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage[greek,english,french]{babel}
\def\frenchtablename{Tableau}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{pdfpages}
\usepackage{xspace}
\newcommand{\g}[1]{\og #1 \fg}

\definecolor{usccardinal}{rgb}{0.0, 0.0, 0.4}
\usepackage[final]{hyperref}
\usepackage{footnotehyper}
\usepackage{footnotebackref}
\usepackage{tablefootnote}

\usepackage{enumitem}
\setuptoc{toc}{totoc}
\usepackage{etoc, blindtext}

\newlength\tocrulewidth
\setlength{\tocrulewidth}{0.5pt}

\newcommand{\chaptertoc}[1][Chaptertoc]{%
\begingroup
\textbf{Sommaire du chapitre :} 
\parindent=0em
\etocsettocstyle{\rule{\linewidth}{\tocrulewidth}\vskip0.5\baselineskip}{\rule{\linewidth}{\tocrulewidth}}
\localtableofcontents 
\endgroup
}

\makeatletter
\renewcommand*\@pnumwidth{2em}
\makeatother

\rmfamily % initialise la famille de font pour les deux commandes suivantes, sinon ce n'est fait qu'au begin document
\DeclareFontShape{T1}{lmr}{b}{sc}{<->ssub*cmr/bx/sc}{}
\DeclareFontShape{T1}{lmr}{bx}{sc}{<->ssub*cmr/bx/sc}{}

\usepackage[backend=biber,natbib=true, style=authoryear, autopunct=false, uniquename=false, uniquelist=false, mincitenames=1,maxcitenames=2,bibencoding=utf8, maxbibnames=99]{biblatex} % On utilise biblatex à la place de bibtex, ce qui permet une meilleure compatibilité avec koma-script. Pour ne pas s'embeter on lui demande de mimer le comportement de natbib, ce qui permet d'avoir la commande citep.
\usepackage{csquotes}
\addbibresource{biblio.bib} % on précise la source biblio

\setlength\bibitemsep{1.5\itemsep}

\DeclareCiteCommand{\cite}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{\usebibmacro{cite}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\cite}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{\usebibmacro{citeyear}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\parencite}[\mkbibparens]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
    \printtext[bibhyperref]{\usebibmacro{cite}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\parencite}[\mkbibparens]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
    \printtext[bibhyperref]{\usebibmacro{citeyear}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\footcite}[\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
  \printtext[bibhyperref]{ \usebibmacro{cite}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\footcitetext}[\mkbibfootnotetext]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{\usebibmacro{cite}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\textcite}
  {\boolfalse{cbx:parens}}
  {\usebibmacro{citeindex}%
   \printtext[bibhyperref]{\usebibmacro{textcite}}}
  {\ifbool{cbx:parens}
     {\bibcloseparen\global\boolfalse{cbx:parens}}
     {}%
   \multicitedelim}
  {\usebibmacro{textcite:postnote}}

\DeclareCiteCommand{\longcite}
  {\usebibmacro{prenote}}%
  {\usebibmacro{citeindex}%
   \defcounter{maxnames}{99}%
   \printtext[bibhyperref]{\usebibmacro{cite}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

  \DeclareCiteCommand*{\longcite}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \defcounter{maxnames}{99}%
   \printtext[bibhyperref]{\usebibmacro{citeyear}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\longparencite}[\mkbibparens]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
    \defcounter{maxnames}{99}%
    \DeclareNameAlias{labelname}{given-family}%
    \printtext[bibhyperref]{\usebibmacro{cite}}}%
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\longparencite}[\mkbibparens]
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
    \defcounter{maxnames}{99}%
    \DeclareNameAlias{labelname}{given-family}%
    \printtext[bibhyperref]{\usebibmacro{citeyear}}}%
  {\multicitedelim}
  {\usebibmacro{postnote}}  

\RedeclareSectionCommand[beforeskip=0pt,afterskip=5\baselineskip]{chapter}
\setkomafont{chapterprefix}{\Large\mdseries}
%
\renewcommand*{\chapterformat}{%
  \chapappifchapterprefix{\nobreakspace}\thechapter\autodot%
  \IfUsePrefixLine{%
    \par\nobreak\vspace{-\parskip}\vspace{-.2\baselineskip}%
    \rule{0.9\textwidth}{.5pt}%trace une ligne
  }{\enskip}%
}


\renewcommand{\chapterlineswithprefixformat}[3]{%
  \ifstr{#2}{}{#2#3\par\bigskip\hrule}{#2#3}%
  %
}

\renewcommand*{\sectionformat}{%
  \thesection\enskip
  \textcolor{RoyalBlue!50}{\rule[-\dp\strutbox]{2pt}{\baselineskip}}\enskip
}

\addtokomafont{section}{\clearpage\phantomsection}

\usepackage[automark, headsepline, footsepline,plainfootsepline, plainheadsepline]{scrlayer-scrpage}
\clearpairofpagestyles

\ihead[]{}
\ofoot[\pagemark]{\pagemark} 
\ifoot[Nils Beaussé]{Nils Beaussé} 
\pagestyle{scrheadings}

\usepackage{bookmark}

\usepackage{lipsum}
\usepackage{graphicx}
\graphicspath{ {images/} }
\usepackage[format=plain, font=small, labelfont=bf, textfont=it]{caption}
\usepackage{floatrow}
\usepackage{pifont}
\usepackage{placeins}
\usepackage{wrapfig}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{import}
\usepackage{subcaption}

\definecolor{bleu_defaut}{RGB}{31, 119, 180}

\DeclarePairedDelimiter\abs{\lvert}{\rvert}%
\DeclarePairedDelimiter\norm{\lVert}{\rVert}%
\makeatletter
\let\oldabs\abs
\def\abs{\@ifstar{\oldabs}{\oldabs*}}
%
\let\oldnorm\norm
\def\norm{\@ifstar{\oldnorm}{\oldnorm*}}
\makeatother

\DeclareMathOperator{\e}{e}
\usepackage[french,onelanguage,noend]{algorithm2e}
\usepackage{amsmath,eqparbox,xintexpr}
\usepackage{nccmath}

\newcommand{\norme}[1]{\left\Vert #1\right\Vert}

\makeatletter
\newcommand*\addsubsec{\secdef\@addsubsec\@saddsubsec}
\newcommand*{\@addsubsec}{}
\def\@addsubsec[#1]#2{\subsection*{#2}\addcontentsline{toc}{subsection}{#1}
  \if@twoside\ifx\@mkboth\markboth\markright{#1}\fi\fi
}
\newcommand*{\@saddsubsec}[1]{\subsection*{#1}\@mkboth{}{}}
\makeatother

\definecolor{bleuNuit}{rgb}{0.0, 0.0, 0.6}
\definecolor{rougepr}{rgb}{0.6, 0.0, 0.0}

\date{\today}

\sloppy

\newcommand*{\tg}[1]{\textgreek{#1}}

\newcommand{\sebrace}[1]{%
    \ifcase#1\or\or%
        \newcommand\NumOfStruts{\mathstrut\\}%
    \or 
        \newcommand\NumOfStruts{\mathstrut\\\mathstrut\\}%
    \or
        \newcommand\NumOfStruts{\mathstrut\\\mathstrut\\\mathstrut\\}%
    \or
        \newcommand\NumOfStruts{\mathstrut\\\mathstrut\\\mathstrut\\\mathstrut\\}%
    \or
        \newcommand\NumOfStruts{\mathstrut\\\mathstrut\\\mathstrut\\\mathstrut\\\mathstrut\\}%
    \fi
    \raisebox{\xinttheiexpr [1](0.5*((#1)-1))\relax\normalbaselineskip}[0pt][0pt]{%
        $\left\{\begin{array}{@{}c@{}} \NumOfStruts\mathstrut\end{array}\right.$
    }
}

\newcommand{\sebracein}[1]{%
    \ifcase#1\or\or%
        \newcommand\NumOfStruts{\mathstrut\\}%
    \or 
        \newcommand\NumOfStruts{\mathstrut\\\mathstrut\\}%
    \or
        \newcommand\NumOfStruts{\mathstrut\\\mathstrut\\\mathstrut\\}%
    \fi
    \raisebox{\xinttheiexpr [1](0.5*((#1)-1))\relax\normalbaselineskip}[0pt][0pt]{%
        \left\{\begin{array}{@{}c@{}} \NumOfStruts\mathstrut\end{array}\right.
    }
}

\renewcommand{\contentsname}{Table des matières}

\usepackage[float=false]{scrhack}

\usepackage{siunitx}
\sisetup{
  locale=FR,
  detect-all,
  output-decimal-marker={,},
  group-minimum-digits = 3,
  group-separator={\,},
  number-unit-product={\,},
  group-digits = integer,
  inter-unit-product=\ensuremath{{\cdot}}
}

编辑:新的最小示例:


%%%%%%%%%%% LOT OF PACKAGES AND DEFINITIONS %%%%%%%%%%
\pdfobjcompresslevel 0

\documentclass[a4paper,12pt,oneside,final, DIV=12, listof=totoc, bibliography=totoc, toc=bibliography, open=right, chapterprefix=true]{scrbook}

\usepackage[greek,english,french]{babel}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[final]{hyperref}
\usepackage{amssymb}

%%%%%%%%%%% LOT OF PACKAGES AND DEFINITIONS END %%%%%%%%%%

%%%%%%%%%%% BEGENNING OF THE WORK ON FOOTNOTES %%%%%%%%%%

%%%%%%% some package %%%%%%%
\KOMAoptions{DIV=last}

%%%%%% begin %%%%%%%
\begin{document}
\frontmatter
%%%%%% TEST %%%%%%

\chapter{TEST}
\section{Introduction}

EEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEE

EEEEEEEEEEEEEEEEE
EEEEEEEEEEEEEEEEE


\end{document}

给 :

EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

如果在某些观众上选择像苏门答腊的最后一个版本。

请注意,这似乎不是一个重音问题,因为

ÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉÉEEEEEEEEEEEEEEEEE

EEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEE

给 :

É É É É É É É É É É É É É É É É É EEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEE

答案1

最后,让我们回顾一下评论和其他网站上的讨论:这似乎不是 latex 的问题。而是一个 SumatraPDF 错误,似乎是在 3.1.2 和 3.2 之间引入的。

我在 sumatra_pdf 的 github 上开了一个问题,这个错误已经被重现,目前该软件的合作者正在跟踪它。

欢迎随时参与该 Bug 的 github 页面: https://github.com/sumatrapdfreader/sumatrapdf/issues/1505

相关内容