Blog (76)
Komentarze (1.5k)
Recenzje (3)

[LaTeX] Przycinanie PDF-a i jego podgląd, czyli PDFCrop w Kile

@Jaahquubel_[LaTeX] Przycinanie PDF-a i jego podgląd, czyli PDFCrop w Kile21.02.2013 15:23

Przed przeczytaniem tego wpisu warto chyba przeczytać wpis Przycinanie dokumentu w pdf-ie, bo tam już o samym PDFCrop nieco pisałem.

tl;dr

Jeśli nie chce Ci się czytać długiego wstępu, przejdź do nagłówka "Wstęp krótki". Jeśli nie interesuje Cię wywód o rozwiązaniu niedziałającym, omiń "Pierwsze podejście" i przejdź do nagłówka "Rozwiązanie problemu". Jeśli nic Cię nie interesuje, naciśnij czerwoną słuchawkę.

Wstęp długi

Ostatnio skończyłem pisać artykuł naukowy w LaTeX-u, w edytorze Kile (gdzie Kile znaczyło kiedyś "Kile Isn't LaTeX Editor" :P). Był to pierwszy dłuższy dokument, który robiłem na komputerze z dużym monitorem. Zamiast przełączać się z Kile'a na wynikowy PDF (w programie Okular) i z powrotem, otworzyłem sobie Kile z lewej, Okular z podglądem z prawej i działałem. Było jednak pewne "ale"... Otóż szablon, w którym pisałem ów artykuł, miał ustawione bardzo szerokie marginesy (to częste w przypadku czasopism matematycznych, ale skąd się to bierze - nie wiem, może i wygodniej, jak nie jest tak szeroko, jak w przypadku podań itp.). Tak szerokie marginesy powodują, że litery na ekranie są mniejsze, niżby mogły być. A chciałem, aby czytało mi się wygodniej.

Mogłem włączyć w Okularze opcję "Obetnij marginesy", ale nie lubię jej mieć włączonej na stałe, ani za każdym razem włączać i wyłączać. Zwłaszcza, że raz ona działa, a raz nie. Mogłem zainstalować Acrobat Readera, zmienić ustawienia Kile i mieć podgląd wyniku w programie Adobe, który ma opcję "Fit Visible". Ale nie ma on automatycznego odświeżania pliku (a przynajmniej nie widzę żeby miał). Poza tym, zostaje problem szerokich marginesów u góry i u dołu strony, co też chciałem wyeliminować. Mogłem jeszcze zmienić na siłę rozmiar marginesów w samym kodzie latechowym, ale to spowodowałoby zmianę układu tekstu i (co gorsze) matematycznych krzaków na stronie, przez co potem musiałbym się użerać z formatowaniem całego bałaganu z powrotem w domyślnych marginesach.

Stwierdziłem, że najlepiej użyć do tego celu wspomnianego PDFCrop, którego i tak często używam i o którym pomyślałem jako o pierwszym. Poza tym, kliknięcie opcji w programie to rozwiązanie niegodne prawdziwego zawodowca. Więcej, odpalanie "pdfcrop artykuł.pdf" w konsoli po każdej kompilacji pliku LaTeX-a też mnie nie zadowalało - za dużo trwa. Fachowo trzeba sobie było to zautomatyzować. A do tego Kile nadaje się wyśmienicie!

Wstęp krótki

Chodzi o to, żeby tak skonfigurować edytor latechowy Kile, żeby na wynikowym PDF-ie uruchamiał jeszcze PDFCrop, żeby w podglądzie mieć obcięte marginesy przy tym samym układzie zawartości na stronie.

Pierwsze podejście

W ustawieniach Kile'a, w dziale Tools jest sekcja Build. Są w niej różnorakie narzędzia operujące na plikach: konwertery, kompilatory, przeglądarki itp., oraz sekwencje powyższych.

Kile - narzędzia plikowe
Kile - narzędzia plikowe

Potrzebowałem trzech nowych narzędzi: 1. samego PDFCrop, 2. sekwencji: Kompilacja -> Przycięcie 3. podglądu przyciętego PDF-a (do odpalenia jednokrotnego, na początku pracy).

Drugie jest banalne: złożenie dwóch/czterech klocków - to wiedziałem na starcie. W trakcie prac nad pierwszym, trzecie (zanim zacząłem o nim myśleć) okazało się równie łatwe, co drugie. A pierwsze? Też banał - pomyślałem. I bardzo mocno się myliłem!

Po kolei: w sekcji "Build" ustawień klikamy na przycisk New... pod listą narzędzi. Prostego "czarodzieja" uzupełniamy jak na obrazku, dowolną sensowną nazwą i wzorcowym istniejącym narzędziem (bierzemy jakiekolwiek konwertujące), żeby były dostępne odpowiednie pola w ustawieniach.

Kreator narzędzia
Kreator narzędzia

Następnie ustawiamy opcje nowo powstałego narzędzia wedle kolejnego obrazka.

Ustawienia narzędzia PDFCrop w Kile
Ustawienia narzędzia PDFCrop w Kile

"Command: pdfcrop" powoduje oczywiście wykonanie polecenia "pdfcrop", a "'%S.pdf'" oznacza, że parametrem wywołania będzie nazwa bieżącego pliku .tex, z rozszerzeniem .pdf - a tak się właśnie najprościej korzysta z PDFCrop.

Odpalamy polecenie: menu Build -> Convert -> PDFCrop i...

Komunikaty z wywołania polecenia
Komunikaty z wywołania polecenia

...błąd! Kile pisze w logu, że nie udało mu się uruchomić pdfcrop, chociaż w Output pokazuje, że próba nastąpiła. Podanie pełnej ścieżki do programu - "/usr/bin/pdfcrop" - też nic nie daje. Czemu tak jest, to ja nie wiem. Nie wnikałem, zrobiłem obejście - prosty skrypt.

Rozwiązanie problemu

W jakimś katalogu tworzymy plik o jakiejś sensownej nazwie, u mnie ~/pc.sh. Możemy to zrobić z Konsole w Kile, np.:

cd ~
touch pc.sh && kile pc.sh

Skrypt wypełniamy następującą zawartością:

#!/bin/bash
pdfcrop $1

Zapisujemy, zamykamy, nadajemy prawa wykonywania:

chmod +x pc.sh

Dla sprawdzenia możemy wykonać taką sekwencję:

q@q:~/TeX$ ls -lah pc*
-rw-rw-r-- 1 q q 30 lut 30 25:61 pc.sh
-rw-rw-r-- 1 q q  0 lut 30 25:61 pc.sh~
q@q:~/TeX$ chmod +x pc.sh
q@q:~/TeX$ ls -lah pc*
-rwxrwxr-x 1 q q 30 lut 30 25:61 pc.sh
-rw-rw-r-- 1 q q  0 lut 30 25:61 pc.sh~

Skrypt bierze jeden argument i wywołuje "pdfcrop" z tym argumentem. Z naszego punktu widzenia to nic nowego, ale dla Kile jest to duża różnica. A dalej to prosto: albo edytujemy narzędzie PDFCrop, albo usuwamy i robimy je od nowa: w sekcji "Build" ustawień klikamy na przycisk New... pod listą narzędzi. Kreator uzupełniamy jak na obrazku:

Kreator narzędzia
Kreator narzędzia

Następnie ustawiamy opcje nowo powstałego narzędzia wedle kolejnego obrazka.

Prawidłowe ustawienia narzędzia PDFCrop w Kile
Prawidłowe ustawienia narzędzia PDFCrop w Kile

Odpalamy polecenie: menu Build -> Convert -> PDFCrop i...

Komunikaty z wywołania prawidłowego polecenia
Komunikaty z wywołania prawidłowego polecenia

...działa!

No to teraz dalsze kroki.

Sekwencja Kompilacja -> Przycięcie

Tworzymy nowe narzędzie do kompilacji, dla spójności nazw: QuickPDFCrop, na podstawie i na wzór istniejącego QuickBuild lub QuickPDF, w zależności od tego czy kompilujemy PDFLaTeX-em, czy LaTeX-em i przechodzimy przez DVI i PS. Ja byłem zmuszony do tego drugiego rozwiązania, stąd zrobiłem tak:

QuickPDFCrop - kompilacja z przycięciem w jednym
QuickPDFCrop - kompilacja z przycięciem w jednym

Narzędzie przydzieliłem dla porządku do podmenu Compile i wybrałem mu ikonę.

Podgląd

Tworzymy nowe narzędzie podglądu, dla spójności nazw: ViewPDFCrop, na podstawie i na wzór ViewPDF. Tutaj konfiguracja jest jeszcze prostsza:

ViewPDFCrop - narzędzie podglądu
ViewPDFCrop - narzędzie podglądu

Wystarczy powiedzieć, że pdfcrop domyślnie nazywa przycięty plik nazwą oryginalnego, przedłużoną o "-crop" - to odzwierciedla opcja '%S-crop.pdf'. Temu narzędziu też możemy dać ikonę.

Na zakończenie całości można jeszcze pozmieniać sobie skróty klawiszowe, aby móc szybko dostać się do stworzonych narzędzi.

Poniższe obrazki demonstrują efekt końcowy.

Kod latechowy i logi Kile
Kod latechowy i logi Kile
Porównanie dokumentu nieprzyciętego i przyciętego
Porównanie dokumentu nieprzyciętego i przyciętego
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.