summaryrefslogtreecommitdiff
path: root/README.org
blob: 94a36736c04e1642572c275454a2f81d606bf6d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
#+TITLE:     PDF Tools README
#+AUTHOR:    Andreas Politz
#+EMAIL:     mail@andreas-politz.de
#+Maintainer: Vedang Manerikar
#+Maintainer_Email: vedang.manerikar@gmail.com

[[https://app.circleci.com/pipelines/github/vedang/pdf-tools][https://circleci.com/gh/vedang/pdf-tools.svg?style=svg]]
[[https://stable.melpa.org/#/pdf-tools][http://stable.melpa.org/packages/pdf-tools-badge.svg]]
[[https://melpa.org/#/pdf-tools][http://melpa.org/packages/pdf-tools-badge.svg]] [[https://ci.appveyor.com/project/vedang/pdf-tools][https://ci.appveyor.com/api/projects/status/yqic2san0wi7o5v8/branch/master?svg=true]]

* About this package
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       5a884389-6aec-498a-90d5-f37168809b4f
:END:
PDF Tools is, among other things, a replacement of DocView for PDF files. The key difference is that pages are not pre-rendered by e.g. ghostscript and stored in the file-system, but rather created on-demand and stored in memory.

This rendering is performed by a special library named, for whatever reason, ~poppler~, running inside a server program. This program is called ~epdfinfo~ and its job is to successively read requests from Emacs and produce the proper results, i.e. the PNG image of a PDF page.

Actually, displaying PDF files is just one part of PDF Tools. Since poppler can provide us with all kinds of information about a document and is also able to modify it, there is a lot more we can do with it. [[http://www.dailymotion.com/video/x2bc1is_pdf-tools-tourdeforce_tech?forcedQuality%3Dhd720][Watch]]

Please read also about [[id:4baf936a-2454-41c9-99db-177133ee9568][Known problems]]

* Installation
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       6ceea50c-cbaa-4d8a-b450-8067c5e8c9da
:END:
The package may be installed via MELPA and it will try to build the server part when it is activated the first time. Though the next section regarding build-prerequisites is still relevant, the rest of the installation instructions assume a build from within a git repository. (The MELPA package has a different directory structure.)

** Server prerequisites
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       8ce3cf4e-d186-4de1-a40e-f41063068ab0
:END:
    You'll need GNU Emacs \ge 24.3 and some form of a GNU/Linux OS.
    Other operating systems are currently not supported (patches
    welcome).  The following instructions assume a Debian-based
    system. (The prerequisites may be installed automatically on this
    kind of systems, see [[#compilation][Compilation]] .)

    First make sure a suitable build-system is installed.  We need at
    least a C/C++ compiler (both ~gcc~ and ~g++~), ~make~, ~automake~
    and ~autoconf~.

    Next we need to install a few libraries PDF Tools depends on, some
    of which are probably already on your system.
#+begin_src sh
  $ sudo aptitude install libpng-dev zlib1g-dev
  $ sudo aptitude install libpoppler-glib-dev
  $ sudo aptitude install libpoppler-private-dev
#+end_src
    On some older Ubuntu systems, the final command will possibly give
    an error.  This should be no problem, since in some versions this
    package was contained in the main package ~libpoppler-dev~.  Also
    note, that ~zlib1g-dev~ was for a long time called ~libz-dev~,
    which it still may be on your system.

    Debian wheezy comes with libpoppler version 0.18, which is pretty
    old.  The minimally required version is 0.16, but some features of
    PDF Tools depend on a more recent version of this library.  See
    the following table for what they are and what version they
    require.

    | You want to ...                           | Required version |
    |-------------------------------------------+------------------|
    | ... create and modify text annotations.   | \ge 0.19.4       |
    | ... search case-sensitive.                | \ge 0.22         |
    | ... create and modify markup annotations. | \ge 0.26         |
    |-------------------------------------------+------------------|

    In case you decide to install libpoppler from source, make sure
    to run its configure script with the ~--enable-xpdf-headers~
    option.

    Finally there is one feature (following links of a PDF document by
    plain keystrokes) which requires imagemagick's convert utility.
    This requirement is optional and you may install it like so:
#+begin_src sh
  $ sudo aptitude install imagemagick
#+end_src
*** Compiling on macOS
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       f10e9d94-bdec-44dc-8d3c-1816d62ef1c4
:END:
     Although macOS is not officially supported, it has been reported
     to have been successfully compiled.  You will need to install
     poppler which you can get with Homebrew via
#+BEGIN_SRC sh
  $ brew install poppler automake
#+END_SRC

     You will also have to help ~pkg-config~ find some libraries by
     setting ~PKG_CONFIG_PATH~, e.g.
#+BEGIN_SRC sh
  $ export PKG_CONFIG_PATH=/usr/local/Cellar/zlib/1.2.8/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig
#+END_SRC
     or likewise within Emacs using `setenv`.

     After that, compilation should proceed as normal.
*** FreeBSD
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       00faf3e3-6d09-4cf7-9373-838f3d231504
:END:
     Although not officially supported, it has been reported that
     pdf-tools work well on FreeBSD.  Instead of building pdf-tools, you
     can install one of the OS packages with, e.g.
#+BEGIN_SRC sh
  $ pkg install pdf-tools-emacs26
#+END_SRC
     To see the current list of pdf-tools packages for FreeBSD visit
     [[https://repology.org/metapackages/?search=pdf-tools&inrepo=freebsd][the Repology list]].

     To build pdf-tools from either MELPA or directly from the source
     repository, install the dependencies with
#+BEGIN_SRC sh
  $ pkg install autotools gmake poppler-glib
#+END_SRC

     If you choose not to install from MELPA, you must substitute
    ~gmake~ for ~make~ in the instructions below.
*** Compiling on CentOS
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       e39946d0-3a28-405d-bb23-337120412dac
:END:
     It is possible to compile pdf-tools on CentOS. Install poppler the dependencies with:
#+BEGIN_SRC sh
  $ yum install poppler-devel poppler-glib-devel
#+END_SRC

*** Compiling on Fedora
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       d0013822-f4d0-4354-b3db-c54ffe41ce58
:END:
#+BEGIN_SRC sh
  $ sudo dnf install make automake autoconf gcc gcc-c++ ImageMagick libpng-devel zlib-devel poppler-glib-devel
#+END_SRC

*** Compiling on Alpine Linux
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       443d9b18-096e-4770-b59c-4e472a5d4b0e
:END:
#+BEGIN_SRC sh
  $ apk add build-base g++ gcc automake autoconf libpng-dev glib-dev poppler-dev
#+END_SRC

*** Compiling on Windows
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       005243cb-1557-4f94-a73d-e647e0d4b53d
:END:
     PDF Tools can be built and used on Windows using the MSYS2
     compiler. This will work with native (not cygwin) Windows builds of
     emacs. This includes the standard binaries provided by the GNU
     project, those available as MSYS2 packages and numerous third-party
     binaries. It has been tested with Emacs 25.1. Instructions are
     provided under [[#compilation-and-installation-on-windows][Compilation and installation on Windows]], below.
     PDF Tools will successfully compile using Cygwin, but it will not be
     able to open PDFs properly due to the way binaries compiled with Cygwin
     handle file paths.

** Compilation
    :PROPERTIES:
    :CUSTOM_ID: compilation
    :CREATED:  [2021-12-29 Wed 18:34]
    :ID:       e305cd0a-e798-4c2b-af27-21bcd936c1c9
    :END:
    Now it's time to compile the source.
#+begin_src sh
    $ cd /path/to/pdf-tools
    $ make install-server-deps # optional
    $ make -s
#+end_src
    The ~make install-server-deps~ command will try to install all
    necessary programs and libraries to build the package, though
    it'll only work, if ~sudo~ and ~apt-get~ are available.

    This should compile the source code and create a Emacs Lisp
    Package in the root directory of the project. The configure script
    also tells you at the very end, which features, depending on the
    libpoppler version, will be available.  These commands should give
    no error, otherwise you are in trouble.
*** Compilation and installation on Windows
     :PROPERTIES:
     :CUSTOM_ID: compilation-and-installation-on-windows
     :CREATED:  [2021-12-29 Wed 18:34]
     :ID:       d14e01ff-9bd5-47ee-86fc-859b4499d5d7
     :END:
      If using the GNU binaries for Windows, support for PNG and zlib
      must first be installed by copying the appropriate dlls into
      emacs' ~bin/~ directory. Most third-party binaries come with this
      already done.

      First, install [[http://www.msys2.org/][install MSYS2]] and update
      the package database and core packages using the instructions
      provided. Then, to compile PDF tools itself:

      1. Open msys2 shell

      2. Update and install dependencies, skipping any you already have
         #+BEGIN_SRC sh
         $ pacman -Syu
         $ pacman -S base-devel
         $ pacman -S mingw-w64-x86_64-toolchain
         $ pacman -S mingw-w64-x86_64-zlib
         $ pacman -S mingw-w64-x86_64-libpng
         $ pacman -S mingw-w64-x86_64-poppler
         $ pacman -S mingw-w64-x86_64-imagemagick
         #+END_SRC

      3. Install PDF tools in Emacs, but do not try to compile the
         server. Instead, get a separate copy of the source somewhere
         else.
         #+BEGIN_SRC sh
         $ git clone https://github.com/politza/pdf-tools
         #+END_SRC

      4. Open ~mingw64~ shell (*Note:* You must use ~mingw64.exe~ and not ~msys2.exe~)

      5. Compile pdf-tools
         #+BEGIN_SRC sh
         $ cd /path/to/pdf-tools
         $ make -s
         #+END_SRC

      6. This should produce a file ~server/epdfinfo.exe~. Copy this file
         into the ~pdf-tools/~ installation directory in your Emacs.

      7. Start Emacs and activate the package.
         #+BEGIN_SRC
         M-x pdf-tools-install RET
         #+END_SRC

      8. Test.
         #+BEGIN_SRC
         M-x pdf-info-check-epdfinfo RET
         #+END_SRC

      If this is successful, ~(pdf-tools-install)~ can be added to Emacs'
      config. Note that libraries from other GNU utilities, such as Git
      for Windows, may interfere with those needed by PDF Tools.
      ~pdf-info-check-epdinfo~ will succeed, but errors occur when trying
      to view a PDF file. This can be fixed by ensuring that the MSYS
      libraries are always preferred in Emacs:

 #+BEGIN_SRC emacs-lisp
 (setenv "PATH" (concat "C:\\msys64\\mingw64\\bin;" (getenv "PATH")))
 #+END_SRC

** Elisp prerequisites
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       3d4e6b6b-f015-475d-8ea2-84988efd6c22
:END:
    This package depends on the following Elisp packages, which should
    be installed before installing the PDF Tools package.

    | Package   | Required version                 |
    |-----------+----------------------------------|
    | [[https://elpa.gnu.org/packages/let-alist.html][let-alist]] | >= 1.0.4 (comes with Emacs 25.2) |
    | [[http://melpa.org/#/tablist][tablist]]   | >= 0.70                          |
    |-----------+----------------------------------|

** Installing
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       32c4fc3b-b4ea-43bd-b92c-bdf2d3831fcf
:END:
    If ~make~ produced the ELP file ~pdf-tools-${VERSION}.tar~ you are
    fine.  This package contains all the necessary files for Emacs
    and may be installed by either using
#+begin_src sh
    $ make install-package
#+end_src
    or executing the Emacs command
#+begin_src elisp
  M-x package-install-file RET pdf-tools-${VERSION}.tar RET
#+end_src

  To complete the installation process, you need to activate the
  package by putting
#+begin_src elisp
  (pdf-tools-install)
#+end_src
  somewhere in your ~.emacs~.  Alternatively, and if you care about
  start-up time, you may want to use
#+begin_src elisp
  (pdf-loader-install)
#+end_src
  instead.

Once the Installation process is complete, check out [[id:19a3daea-6fa6-4ac3-9201-d2034c46ad8c][Easy Help for PDF Tools features]] and [[id:8dccd685-18b8-4c98-977a-0fe2d66b724c][Configuring PDF Tools features]] to get started!
** Updating
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       9dd62314-f5ad-4bd4-83fa-8e28343e3d9c
:END:
    Some day you might want to update this package via ~git pull~ and
    then reinstall it.  Sometimes this may fail, especially if
    Lisp-Macros are involved and the version hasn't changed.  To avoid
    this kind of problems, you should delete the old package via
    ~list-packages~, restart Emacs and then reinstall the package.

    This also applies when updating via package and MELPA.
* Features
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       555b4a2a-7881-49ac-a066-7e3f10034ca4
:END:
+ View :: View PDF documents in a buffer with DocView-like
          bindings.
+ Isearch :: Interactively search PDF documents like any other
             buffer, either for a string or a PCRE.
+ Occur :: List lines matching a string or regexp in one or more
           PDF documents.
+ Follow ::
 Click on highlighted links, moving to some part of a different
 page, some external file, a website or any other URI.  Links may
 also be followed by keyboard commands.
+ Annotations :: Display and list text and markup annotations (like
                 underline), edit their contents and attributes
                 (e.g. color), move them around, delete them or
                 create new ones and then save the modifications
                 back to the PDF file.
+ Attachments :: Save files attached to the PDF-file or list them
                 in a dired buffer.
+ Outline :: Use imenu or a special buffer to examine and navigate
             the PDF's outline.
+ SyncTeX :: Jump from a position on a page directly to the TeX
             source and vice versa.
+ Virtual ::
 Use a collection of documents as if it were one, big single PDF.

+ Misc ::
  - Display PDF's metadata.
  - Mark a region and kill the text from the PDF.
  - Keep track of visited pages via a history.
  - Apply a color filter for reading in low light conditions.
** View and Navigate PDFs
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:25]
:ID:       18d362e1-a1a3-4c51-9d45-04e2c53d8c0c
:END:
PDFView Mode is an Emacs PDF viewer. It displays PDF files as PNG images in Emacs buffers. PDFs are navigable using DocView-like bindings.
*** Keybindings for navigating PDF documents
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:25]
:ID:       01864499-2286-4e64-91f5-f8133f53ec61
:END:
| Navigation                                    |                       |
|-----------------------------------------------+-----------------------|
| Scroll Up / Down by Page-full                 | ~space~ / ~backspace~ |
| Scroll Up / Down by Line                      | ~C-n~ / ~C-p~         |
| Scroll Right / Left                           | ~C-f~ / ~C-b~         |
| First Page / Last Page                        | ~<~ / ~>~             |
| Next Page / Previous Page                     | ~n~ / ~p~             |
| First Page / Last Page                        | ~M-<~ / ~M->~         |
| Incremental Search Forward / Backward         | ~C-s~ / ~C-r~         |
| Occur (list all lines containing a phrase)    | ~M-s o~               |
| Jump to Occur Line                            | ~RETURN~              |
| Pick a Link and Jump                          | ~F~                   |
| Incremental Search in Links                   | ~f~                   |
| History Back / Forwards                       | ~B~ / ~N~             |
| Display Outline                               | ~o~                   |
| Jump to Section from Outline                  | ~RETURN~              |
| Jump to Page                                  | ~M-g g~               |
| Store position / Jump to position in register | ~m~ / ~'~             |
|-----------------------------------------------+-----------------------|
|                                               |                       |
Note that PDF Tools renders the PDF as images inside Emacs. This means that all the keybindings of ~image-mode~ work on individual PDF pages as well.
| Image Mode             |                                             |
|------------------------+---------------------------------------------|
| image-scroll-right     | ~C-x >~ / ~<remap> <scroll-right>~          |
| image-scroll-left      | ~C-x <~ / ~<remap> <scroll-left>~           |
| image-scroll-up        | ~C-v~ / ~<remap> <scroll-up>~               |
| image-scroll-down      | ~M-v~ / ~<remap> <scroll-down>~             |
| image-forward-hscroll  | ~C-f~ / ~right~ / ~<remap> <forward-char>~  |
| image-backward-hscroll | ~C-b~ / ~left~  / ~<remap> <backward-char>~ |
| image-bob              | ~<remap> <beginning-of-buffer>~             |
| image-eob              | ~<remap> <end-of-buffer>~                   |
| image-bol              | ~<remap> <move-beginning-of-line>~          |
| image-eol              | ~<remap> <move-end-of-line>~                |
| image-scroll-down      | ~<remap> <scroll-down>~                     |
| image-scroll-up        | ~<remap> <scroll-up>~                       |
| image-scroll-left      | ~<remap> <scroll-left>~                     |
| image-scroll-right     | ~<remap> <scroll-right>~                    |
|------------------------+---------------------------------------------|
|                        |                                             |

*** Keybindings for manipulating display of PDF
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:33]
:ID:       73a18ea8-aa21-48d4-9d8b-dc64e3601000
:END:
| Display                                  |                 |
|------------------------------------------+-----------------|
| Zoom in / Zoom out                       | ~+~ / ~-~       |
| Fit Height / Fit Width / Fit Page        | ~H~ / ~W~ / ~P~ |
| Trim Margins (set slice to bounding box) | ~s b~           |
| Reset Margins                            | ~s r~           |
| Reset Zoom                               | ~0~             |

** Annotations
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 16:58]
:ID:       5fff6471-a933-46d7-8ae9-b2fa4a9de952
:END:
PDF Tools supports working with PDF Annotations. You can display and list text and markup annotations (like squiggly, highlight), edit their contents and attributes (e.g. color), move them around, delete them or create new ones and then save the modifications back to the PDF file.
*** Keybindings for working with Annotations
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 17:08]
:ID:       243b3843-b912-430b-884a-641304755b92
:END:
| Annotations                          |                                                   |
|--------------------------------------+---------------------------------------------------|
| List Annotations                     | ~C-c C-a l~                                       |
| Jump to Annotations from List        | ~SPACE~                                           |
| Mark Annotation for Deletion         | ~d~                                               |
| Delete Marked Annotations            | ~x~                                               |
| Unmark Annotations                   | ~u~                                               |
| Close Annotation List                | ~q~                                               |
| Enable/Disable Following Annotations | ~C-c C-f~                                         |
|--------------------------------------+---------------------------------------------------|
| Add and Edit Annotations             | Select region via Mouse selection.                |
|                                      | Then left-click context menu OR keybindings below |
|--------------------------------------+---------------------------------------------------|
| Add a Markup Annotation              | ~C-c C-a m~                                       |
| Add a Highlight Markup Annotation    | ~C-c C-a h~                                       |
| Add a Strikeout Markup Annotation    | ~C-c C-a o~                                       |
| Add a Squiggly Markup Annotation     | ~C-c C-a s~                                       |
| Add an Underline Markup Annotation   | ~C-c C-a u~                                       |
| Add a Text Annotation                | ~C-c C-a t~                                       |
|--------------------------------------+---------------------------------------------------|
|                                      |                                                   |

** Working with AUCTeX
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:37]
:ID:       698bdbad-e5f1-4958-b61e-9ed12d4b1234
:END:
*** Keybindings for working with AUCTeX
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:37]
:ID:       ab7872c1-edd6-465d-9d1d-b621db6364a3
:END:
| Syncing with AUCTeX                           |             |
|-----------------------------------------------+-------------|
| Refresh File (e.g., after recompiling source) | ~g~         |
| Jump to PDF Location from Source              | ~C-c C-g~   |
| Jump Source Location from PDF                 | ~C-mouse-1~ |

** Miscellaneous features
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:37]
:ID:       bbefb49d-fca8-4d4f-9d16-4a4ad1946d89
:END:
*** Keybindings for miscellaneous features in PDF tools
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 18:35]
:ID:       9148deff-dd5a-46be-a48f-cd2f96b7ce19
:END:
| Miscellaneous                                 |           |
|-----------------------------------------------+-----------|
| Print File                                    | ~C-c C-p~ |

** Easy Help for PDF Tools features
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 13:49]
:ID:       19a3daea-6fa6-4ac3-9201-d2034c46ad8c
:END:
#+begin_src elisp
  M-x pdf-tools-help RET
#+end_src

Run ~pdf-tools-help~ inside Emacs, as shown above. It will list all the features provided by PDF Tools as well as the key-bindings for these features.

** Configuring PDF Tools features
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 13:51]
:ID:       8dccd685-18b8-4c98-977a-0fe2d66b724c
:END:
Once you have read through the features provided by PDF Tools, you probably want to customize the behavior of the features as per your requirements. Full customization of features is available by running the following:
#+begin_src elisp
  M-x pdf-tools-customize RET
#+end_src

* Known problems
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:29]
:ID:       4baf936a-2454-41c9-99db-177133ee9568
:END:

** linum-mode
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       73625d02-d472-4e7d-9805-db6d3b60e0ff
:END:
PDF Tools does not work well together with ~linum-mode~ and activating it in a ~pdf-view-mode~, e.g. via ~global-linum-mode~, might make Emacs choke.

** auto-revert
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       24b671c6-c242-4983-9d11-38421d2752e9
:END:
Autorevert works by polling the file-system every ~auto-revert-interval~ seconds, optionally combined with some event-based reverting via [[https://www.gnu.org/software/emacs/manual/html_node/elisp/File-Notifications.html][file notification]]. But this currently does not work reliably, such that Emacs may revert the PDF-buffer while the corresponding file is still being written to (e.g. by LaTeX), leading to a potential error.

With a recent [[https://www.gnu.org/software/auctex/][AUCTeX]] installation, you might want to put the following somewhere in your dotemacs, which will revert the PDF-buffer *after* the TeX compilation has finished.
#+BEGIN_SRC emacs-lisp
  (add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer)
#+END_SRC

** sublimity
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       4766d18a-c02a-456d-8398-701bbea3ee80
:END:
L/R scrolling breaks while zoomed into a pdf, with usage of sublimity smooth scrolling features

* Key-bindings in PDF Tools
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       fa99285a-437e-4be4-9a65-426db019019f
:END:
- [[brain-child:01864499-2286-4e64-91f5-f8133f53ec61][Keybindings for navigating PDF documents]]
- [[brain-child:243b3843-b912-430b-884a-641304755b92][Keybindings for working with Annotations]]
- [[brain-child:73a18ea8-aa21-48d4-9d8b-dc64e3601000][Keybindings for manipulating display of PDF]]
- [[brain-child:ab7872c1-edd6-465d-9d1d-b621db6364a3][Keybindings for working with AUCTeX]]
- [[brain-child:9148deff-dd5a-46be-a48f-cd2f96b7ce19][Keybindings for miscellaneous features in PDF tools]]

* Tips and Tricks for Developers
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       fd64c10c-4ea5-4ece-8d95-b723098dd4f6
:END:
** Turn on debug mode
:PROPERTIES:
:CREATED:  [2021-12-29 Wed 18:34]
:ID:       100fc888-7064-4dd3-9db4-c84a7e8f4af0
:END:
#+begin_src elisp
  M-x pdf-tools-toggle-debug RET
#+end_src
Toggling debug mode prints information about various operations in the ~*Messages*~ buffer, and this is useful to see what is happening behind the scenes

# Local Variables:
# mode: org
# End:

* FAQs
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 22:04]
:ID:       3be6abe7-163e-4c3e-a7df-28e8470fe37f
:END:
** I'm on a Macbook and PDFs are rendering blurry
:PROPERTIES:
:CREATED:  [2021-12-30 Thu 22:04]
:ID:       20ef86be-7c92-4cda-97ec-70a22484e689
:END:
If you are on a Macbook with a Retina display, you may see PDFs as blurry due to the high resolution display. Use:\
#+begin_src elisp
  (setq pdf-view-use-scaling t)
#+end_src
to scale the images correctly when rendering them.