Portál AbcLinuxu, 8. května 2025 20:22
Chtěl bych pomocí TeXu vygenerovat pdf, které bude obsahovat kousky zdrojáků. Bylo by fajn, kdyby čtenář mohl rovnou v pdf prohlížeči označit myší text (zdroják) a někam si ho zkopírovat.
Funguje to celkem dobře kromě apostrofu (\char39). Když ho vezmu do myši v pdf prohlížeči, získám jiný znak, ba dokonce tři znaky.'\xe2\x80\x99'. Nevíte někdo čím to je a jak to obejít?
Testoval jsem evince i okular.
Tak jsem zjistil, že celou dolní polovinu ASCII tabulky je možné z pdf vzít myší a zkopírovat – kromě dvou znaků, a to aspostrofu a zpětného apostrofu. Tyto znaky se nějakou záhadou změní na unicodové znaky RIGHT SINGLE QUOTATION MARK a LEFT SINGLE QUOTATION MARK. To určitě nebude náhoda. Posílám ukázku.
V programu xpdf jde vybírat text vždycky.
Je pravda, že xpdf dolní polovinu ascii tabulky překopíruje zcela beze změny. Ale v tomto případě je to náhoda nebo spíš zastaralost xpdf.
Otestoval jsem teď acrobata. Chová se úplně stejně jako evince a okular.
Je potřeba hledat příčinu někde v TeXu.
Skrze evince jsem dosáhl výstupu
!"#$%&’()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_‘abcdefghijklmnopqrstuvwxyz{|}~ Předcházející řádek obsahuje dolní polovinu ASCII tabulky, ale dva znaky jsou změněné. Znak číslo 39 se změnil na U+2019 (RIGHT SINGLE QUOTATION MARK) znak 96 se změnil na U+2018 (LEFT SINGLE QUOTATION MARK). Čím to je? Všechny znaky jsou přitom zapsány pomocí \charčíslo.a v mc - v pdf2text - nevidim první mezeru.
Jo, dík za ukázku. Dva znaky jsou špatně. Je tam
’ namísto ' a
‘ namísto `
Pokud chcete, aby se přes schránku kopírovaly znaky tak, jak jsou zapsány ve zdrojovém souboru, doporučuji přidat do preambule \usepackage{cmap} - funguje zejména na češtinu. Používám tedy vstupní kódování UTF-8, ale snad by to mělo fungovat i jinde.
Čím překládáte? Mně to nefunguje.
\documentclass{article} \usepackage[resetfonts]{cmap} \usepackage[czech]{babel} \usepackage[utf8]{inputenc} \begin{document} žížala \end{document}
Překládám pomocí pdflatex z texlive-2008 a mám tyto verze:
This is pdfTeXk, Version 3.1415926-1.40.9 (Web2C 7.5.7) (format=pdflatex 2009.9.7) (/usr/share/texmf-dist/tex/latex/cmap/cmap.sty Package: cmap 2008/03/06 v1.0h CMap support: searchable PDF
Stále mám diakritiku zvlášť.
Tak jsem to vyzkoušel, a pokud do Vašeho dokumentu výše přidáte:
\usepackage[T1]{fontenc}
tak to funguje. Jinak používám MikTeX 2.7 vč. posledních updatů pod Windows .
Jo, pak to jde, ale písmo se vloží jako bitmapa.
Právě jsem si doinstaloval xelatex tam to funguje lépe (OpenType písma, prohledávatelné PDF, obstojná podpora Unicode jak na vstupu, tak na výstupu).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.