Kolorowanie składni listingów w Adobe InDesign

Adobe InDesign to jedna z najbardziej popularnych aplikacji DTP, skład i łamanie wielu książek, czasopism, broszur itp., które przeszły przez nasze ręce odbył się właśnie przy użyciu InDesign. Ale oczywiście jak wiadomo – nie ma aplikacji idealnych, jedną z wad Indesigna jest brak łatwej możliwości pokolorowania składni listingów, a ręczne kolorowanie składni to dość karkołomne zadanie. Można temu zaradzić, w moim konkretnym przypadku został wykorzystany pakiet highlight w wersji 3.47 i prosty skrypt w języku ExtendScript (rozszerzona przez Adobe wersja JavaScript). Skrypt jest bardzo surowy, w przyszłości być może zostanie rozwinięty, ale spełnił swoje zadanie, może komuś z Was się przyda. Co po kolei robi skrypt i jak należy z niego korzystać?

  1. Zaznaczamy listing i uruchamiamy skrypt
  2. Skrypt zapisuje treść listingu do pliku o nazwie listing.txt
  3. Skrypt uruchamia plik wsadowy hl.bat, który z kolei wywołuje plik wykonywalny highlight.exe, który koloruje składnię i zapisuje wynik jako plik RTF
  4. Skrypt zastępuje zaznaczony listing pokolorowaną zawartością pliku RTF

Czyli podsumowując jednym kliknięciem uzyskujemy pokolorowany listing wstawiony w miejsce starego niepokolorowanego. Ale żeby nie było za łatwo całość wymaga niewielkiej konfiguracji.

Instalacja

Aby uruchomić całość, należy wcześniej pobrać załączone archiwum highlight, które zawiera komplet potrzebnych plików, archiwum należy rozpakować na dysku w miejscu, w którym zapis nie wymaga uprawnień administratora, czyli np. w katalogu Dokumenty, następnie w katalogu highlight znajdziemy plik highlight.jsv, należy za pomocą Eksploratora Windows utworzyć skrót do tego pliku i umieścić w odpowiednim katalogu zależnie od wersji Adobe InDesign, przykładowo:

  • dla 32-bitowej wersji będzie to c:\Program Files (x86)\Adobe\Adobe InDesign CS6\Scripts\Scripts Panel\
  • dla 64-bitowej wersji CC – c:\Program Files\Adobe\Adobe InDesign CC 2019\Scripts\Scripts Panel\

Domyślnie skrypt jest skonfigurowany do kolorowania składni języka C/C++, aby to zmienić należy otworzyć plik highlight\README_LANGLIST.adoc, w nim znajduje się lista obsługiwanych języków oraz symbol, który za chwilę będzie potrzebny:

…
| Blitz Basic                               | blitzbasic (bb)
| BM Script                                 | bms
| Backus-Naur Form                          | bnf
| Boo                                       | boo
| C and C++                                 | c (c++ cc cpp cu cxx h hh hpp hxx)
| Ceylon                                    | ceylon
| Charmm                                    | charmm (inp)
…

Przykładowo dla Blitz Basic będzie to blitzbasic, otwieramy plik hl.bat i modyfikujemy odpowiednią wartość znajdującą się za „-S”:

START /WAIT """%~dp0\highlight\highlight.exe" --style=acid -O rtf -i "%~dp0\listing.txt" -o "%~dp0\listing.txt.rtf" -S blitzbasic

W tej chwili skrypt można już uruchomić w InDesign, w menu wybieramy Okno>Użytki>Skrypty, w liście skryptów powinna się znajdować pozycja highlight, zaznaczamy listing, klikamy dwukrotnie w nazwę skryptu, listing powinien zostać pokolorowany.

Uwaga

Ponieważ nie udało mi się znaleźć łatwej metody na zmuszenie skryptu ExtendedScript do poczekania na zakończenie kolorowania listingu, zastosowane zostało obejście w postaci funkcji sleep ($.sleep(2000);) w pliku highlight.jsx, która odczekuje 2 sekundy. Jeśli przy wykonywaniu skryptu dostajesz błąd o nieistniejącym pliku listing.txt.rtf, to zwiększ ten czas o sekundę bądź kilka sekund (liczba w nawiasie to liczba milisekund, czyli dla 2000 czekamy 2 sekundy, dla 3000 – 3 sekundy itd.).

Wybór palety kolorów

W plikach z rozszerzeniem „.theme”, znajdujących się w katalogu „highlight\themes” znajdziemy różne ustawienia kolorów. Aby z nich skorzystać, należy umieścić w pliku „hl.bat” polecenie ” –style=x”, gdzie w miejscu „x” wpisujemy nazwę wybranego przez nas pliku .theme. Przykładowy zapis komendy w pliku „hl.bat” wygląda następująco:

START /WAIT "" "%~dp0\highlight\highlight.exe" --style=acid -O rtf -i "%~dp0\listing.txt" -o "%~dp0\listing.txt.rtf" -S c

Można też oczywiście samemu stworzyć własną paletę kolorów, tworząc swój plik .theme i podając swoje wartości kolorów RGB.

    Skontaktuj się z nami