DVIDVI
autor: Maciej Głowacki
DVIDVI
jest programem sygnowanym przez Radical Eye Software (co w praktyce
oznacza autorstwo Tomasa Rokickiego). Program ten, operując na pliku typu DVI
wybiera strony, zmienia ich wzajemne położenie i pozycjonuje na arkuszu druku.
Format:
d:p1[(x1,y1)][,p2[(x2,y2)]]...[,pn[(xn,yn)]] fi fo
gdzie:
- nawiasy kwadratowe oznaczają nieobowiązkowe użycie tego co zawierają;
- odstępy, nawiasy okrągłe i przecinki są konieczne w kontekście;
d
- dzielnik (modulo); liczba dodatnia z zakresu 1 do 32,
określająca rozmiar porcji (w stronach), na jakie zostanie podzielony plik
wejściowy;
p
- pozycja; liczba określająca pozycję strony w ramach porcji
(pierwsza strona w porcji jest określana liczbą 0, a więc najwyższa możliwa
pozycja to
d
-1); gdy liczba ta jest poprzedzona znakiem '-',
w przetwarzaniu brane będą pod uwagę porcje w odwrotnej kolejności, czyli
począwszy od ostatniej (nie znaczy to że liczba jest ujemna!); w szczególności
więc możliwy jest zapis '-0' znaczący co innego niż '0'; można określić
pozycje tylko niektórych stron, można też powtarzać specyfikacje tych samych
stron (wtedy w pliku wyjściowym te strony pojawią się wielokrotnie);
x
i y
- współrzędna pozioma i pionowa lewego górnego rogu
strony z pliku wejściowego na arkuszu pliku wyjściowego; specyfikacja -- tak
jak w TeX-u1; gdy
x
i y
są
równocześnie zerowe, można je wraz z nawiasami pominąć;
fi
- nazwa pliku wejściowego; rozszerzenie (
.dvi
) można pominąć;
fo
- nazwa pliku wyjściowego; w podpowiedzi przy wywołaniu programu
z błędnymi parametrami czytamy, że parametr ten można pominąć; jest to nieprawda
przynajmniej w używanej przeze mnie wersji 0.5 -- gdy nie zostanie podany ten
parametr, pierwsza próba zapisu do tego pliku kończy się zawieszeniem programu,
czyli koniecznością restartu systemu (sic!).
Opis działania
- Program czyta plik wejściowy i dzieli go na porcje o
d
stronach (ewentualnie ostatnia porcja jest uzupełniana pustymi stronami).
Następnie zaczyna budować arkusze, tworząc plik wyjściowy.
- Dla każdego tworzonego arkusza zostaje raz użyta każda grupa
parametrów
p(x,y)
; kolejność grup w wywołaniu nie ma znaczenia. Arkuszy
powstanie tyle, ile zostało utworzonych porcji.
- Dla pierwszego arkusza zostają pobrane -- określone przez kolejne
p
z wywołania -- strony z pierwszej porcji
(gdy przed p
jest
'-', to z ostatniej) i umieszczone w pierwszym arkuszu, w miejscu określonym
przez odpowiadające im (x,y)
.
- Dla każdego następnego arkusza pobrane zostają strony z następnej
(lub poprzedniej gdy przed
p
jest '-') porcji. I te deum.
Ograniczenia:
- Program z całego dostępnego pliku produkuje jedną zszywkę. Chcąc
więc utworzyć więcej zszywek, należy najpierw plik wejściowy podzielić na
mniejsze (o ilości stron takiej, jak pojemność jednej zszywki). Nie znam
sposobu, w jaki mógłby to zrobić
DVIDVI
.
- Przy tworzeniu arkuszy zawierających piętrowo umieszczone strony,
program nie potrafi ich obracać włosami w dół, a jest to potrzebne gdy trzeba
arkusz falcować2,
a potem dopiero przycinać; można
temu zaradzić na trzy sposoby: --> pociąć najpierw arkusze na
poziome pasy o wysokości jednej strony, a potem dopiero falcować;
--> wydrukować częściowo strony, obrócić o 1800 i wydrukować
resztę po tej samej stronie kartek, jednak wtedy trudno (szczególnie na
drukarce laserowej) uzyskać powtarzalność pozycjonowania; -->
(najmniej fizyczny) sprzęg z TeX-em: można w obsłudze procesu zrzutu stron
(output routine) oprogramować obrót wybranych stron. Oczywiście w każdym
z tych trzech przypadków trzeba przygotować inne parametry dla programu
DVIDVI
.
Przykłady:
- Ekstrakcja:
dvidvi
30:6 we wy (różne od dvidvi
5 we wy)
z pliku we
do pliku wy
zostanie przeniesiona 7 strona, pod
warunkiem, że ilość stron w pliku we
nie jest większa niż suma obu
użytych w wywołaniu liczb.
- Panie na lewo, panowie na prawo:
dvidvi 2:0 we wy1
dvidvi 2:-1 we wy2
Jeśli założymy, że plik wejściowy zawierał 27 lub 28 stron, to program
poprzestawia je następująco (strzałki unaoczniają machinacje programu DVIDVI
):
w pliku wy1
znajdą się strony nieparzyste, a w wy2
parzyste, ale
w odwrotnej kolejności. W przypadku korzystania z drukarki laserowej wystarczy
wypuścić arkusze zadrukowane jednostronnie zawartością pliku wy1
do
odbiornika drukiem w górę (na ogół służy do tego tacka z przodu drukarki),
i nie odwracając (tak, by ostatnio wydrukowany arkusz stał się pierwszym
drukowanym z drugiej strony) podstawić pod druk zawartości pliku wy2
(także
drukiem w górę).
- Broszurka w A53:
dvidvi 4:-3,0(5.5in,0in) we wy1
dvidvi 4:1,-2(5.5in,0in) we wy2
Przy założeniu, że na wejściu było od 37 do 40 stron, zostaną one
poprzemieszczane i połączone jak niżej (strzałki kropkowane łączą przeciwne
strony kartki przyszłej książeczki):
Jeśli więc w pliku we
znajdą się strony w formacie A5, to w pliku wy1
zostaną umieszczone ,,prawe'' strony arkuszy formatu A4, a w wy2
--- w tej
samej kolejności arkuszy --- ,,lewe''. Tym razem należy w pierwszym przebiegu
wypuścić arkusze do odbiornika drukiem w dół, po czym cały pakiet odwrócić
,,na grzbiet'' wzdłuż osi równoległej do krótszego boku kartek i tak podstawić
do druku z drugiej strony. Dodatkowo po zakończeniu drukowania trzeba arkusze
odpowiednio potasować.
- Po tym co napisano powyżej, uważny TeX-nik nie potrzebuje już chyba
wyjaśnienia (ewentualnie warto to sobie rozrysować):
dvidvi 8:-7,0(4.12in,0in),-5(0in,5.8in),2(4.12in,5.8in) we wy1
dvidvi 8:1,-6(4.12in,0in),3(0in,5.8in),-4(4.12in,5.8in) we wy2
Przypisy
1 Z tą zgodnością z TeX-em nie jest tak
radośnie. Na przykład nie można pominąć w liczbie cyfry '0' przed kropką
dziesiętną. W ogóle p. Rokicki sprawia wrażenie jakby się trochę dąsał na
TeX-a --- np. TeX numeruje strony od '1' --- DVIDVI
od '0'. Natomiast gdy dla
TeX-a nie ma jednostki domyślnej, to w DVIDVI
są aż dwie: jedna to cal,
a druga --- mocniejsza --- taka, jakiej użyto wcześniej.
2 Podobno po polsku mówi się: złamywać, ale są
także w użyciu słowa: załamywać, składać.
3 Podane w tym i następnym
przykładzie wielkości współrzędnych oczywiście ściśle zależą od lokalnych cech
środowiska systemowego i parametrów drukarki.
Zredagował
Włodzimierz Macewicz
Ostatnie zmiany: 07.04.2001 (StaW).