Spis treści Skorowidz Poziom główny Poziom nadrzędny Wstecz Wersja XHTML+XML Wersja Text/HTML Dalej

Ilustracje i elementy graficzne
w dokumencie sformatowanym

Obraz, rysunek, ilustracja

Obraz
Środek wyrazu, posługujący się grafiką typu rastrowego, np. fotografią. W pliku HTML można umieścić odwołanie do pliku graficznego, zawierającego obraz. Obraz ten zostanie umieszczony w dokumencie.
Rysunek
Środek wyrazu, posługujący się grafiką typu wektorowego, np. szkicem sytuacyjnym lub rysunkiem technicznym. W pliku HTML można umieścić bezpośrednie polecenia kreślące rysunek w formacie SVG lub odwołanie do takiego rysunku znajdującego się w pliku zewnętrznym. Starsze środowiska prezentacji dokumentów nie będą rozumieć takich rysunków; pozostaje wtedy konwersja rysunku do obrazu rastrowego i osadzenie w dokumencie tego ostatniego lub skorzystanie z obsługi obiektów grafiki wektorowej przez moduły typu plugin.
Ilustracja
Fragment dokumentu, umieszczony poza głównym tokiem tekstu zwartego, przeznaczony do prezentowania informacji uzupełniających. Ilustracjami mogą być obrazy i rysunki, ale także tabele, objaśnienia, zestawienia itp. W szerszym sensie ilustracja może zawierać nawet obraz ruchomy, sekwencję dźwięków, zapach(!?), próbkę materiału czy też plik danych. Położenie ilustracji nie musi być „sztywno” ustalone w stosunku do kolejnych akapitów tekstu ciągłego. Na przykład osoba opracowująca dokument od strony prezentacyjnej może przyjąć zasadę, że ilustracje będą grupowane na osobnych stronach książki, że będą umieszczane na początku strony, lub że będą równolegle towarzyszyć tekstowi zasadniczemu, który ma je „opływać”. W dokumencie HTML można do pewnego stopnia zautomatyzować rozmieszczanie ilustracji za pomocą znaczników i stylów.

Włączanie obrazka do dokumentu

Obrazek zapisany w postaci rastrowej można włączyć do dokumentu HTML znacznikiem <img src="nazwa" alt="opis" height="wys" width="szer" />. Konieczne zdroworozsądkowe minimum to <img src="nazwa" />, lecz w XHTML obowiązkowe są atrybuty src i alt. Argument nazwa ma zawierać adres URI pliku graficznego. Większość współczesnych przeglądarek potrafi odczytywać obrazy rastrowe przechowywane w plikach formatów: gif, jpeg i png.

Umieszczając ilustrację w dokumencie musisz pamiętać, że będzie ona widoczna dopiero w jego sformatowanej postaci; sam plik źródłowy nie zawiera obrazka, tylko znacznik z adresem URI. Nic więc dziwnego, że obrazek trzeba dostarczyć jako oddzielny plik graficzny. Chcąc zrobić kopię dokumentu musisz w nowym miejscu umieścić wszystkie pliki — w tym wszystkie ilustracje — do których odwołujesz się względnymi adresami URI. Adresów bezwzględnych używaj tylko do obrazów pozyskiwanych z sieci, gdy zależy Ci na ich aktualnej wersji (np. zdjęcie satelitarne z układem chmur) lub gdy na skopiowanie nie pozwala rozmiar albo prawa autorskie. Nie pisz w ścieżce dostępu URI, że plik znajduje się na dyskietce: nikt inny nie ma Twojej dyskietki!

Jeżeli obrazek jest niedostępny (np. gdy plik o podanej nazwie nie istnieje lub gdy przeglądarka nie wyświetla grafiki), w dokumencie pojawi się opis tekstowy. Wstawiony do dokumentu obrazek jest traktowany identycznie, jak znaki tekstu i inne elementy dokumentu, np. tutaj malutki Księżyc jest elementem wiersza w akapicie, zaś bezpośrednio poniżej jest jedynym elementem wycentrowanego bloku.

malutki Księżyc jako element osobnego (wycentrowanego) bloku

Skalowanie obrazka

Atrybuty width i height wymuszają rozmiary obrazka w dokumencie. Ich wartości wys oraz szer podaje się w pikselach lub w ułamkach szerokości dostępnej przestrzeni. Wszystkie obrazki widoczne niżej pochodzą z tego samego pliku graficznego i są odpowiednio przeskalowane przez przeglądarkę HTML.

Różne sposoby patrzenia na Księżyc
Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc
Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc
Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc Księżyc

W następnym, ostatnim już przykładzie skalowania obrazek zajmuje zawsze 1/5 dostępnej szerokości.

Księżyc na 1/5

Włączanie rysunku wektorowego do dokumentu

Zgodnie z zaleceniami Konsorcjum WWW, rysunki wektorowe winny być umieszczane w dokumentach HTML w postaci ciągów poleceń rysowania. Przykładem takiego formatu, przeznaczonego specjalnie do współpracy z językiem XHTML, jest język SVG (Scalable Vector Graphics). Rzut oka na zamieszczoną niżej próbkę SVG pozwala stwierdzić, że dane przechowywane są znakowo za pomocą pewnego języka znaczników. Oprogramowanie umożliwiające oglądanie oraz interaktywną edycję takiej grafiki jest dziś już powszechnie dostępne.

Ilustracje przedstawiają próbki kodu źródłowego SVG wraz z przykładami interpretacji. Pierwszy z nich ma postać zrzutu ekranowego działającej przeglądarki SVG.

Większość współcześnie dostępnych graficznych przeglądarek internetowych wyświetla rysunki SVG po zainstalowaniu dodatkowego modułu, a niektóre robią to nawet same. Dwa przykłady umieszczone poniżej poleceń angażują przeglądarkę używaną przez Czytelnika. Uzyskane efekty zależą więc od tego, jaka to jest przeglądarka i jak jest skonfigurowana.

Format wektorowy SVG
[ kod źródłowy rysunku SVG ] zrzut okna programu graficznego z interpretacją rysunku SVG
Kod źródłowy rysunku SVG Zrzut okna programu graficznego Inkscape z interpretacją rysunku SVG (oglądasz obraz rastrowy)
[ Nie widzisz kolorowych kół ]
Interpretacja rysunku SVG pobranego z osobnego pliku (efekt będzie widoczny tylko w przeglądarkach obsługujących obiekty SVG) Rysunki SVG mogą być umieszczane także bezpośrednio w pliku dokumentu. Efekt będzie widoczny tylko w przeglądarkach obsługujących bezpośrednie znakowanie SVG i tylko w dokumentach XML. Bieżący dokument ma nowocześniejszą wersję, w której jest to możliwe.

Jako poważny przykład zastosowań grafiki SVG niech posłuży następujący uproszczony kontur Polski (dane dotyczą współrzędnych geograficznych, ale przy odwzorowaniu na płaszczyznę traktowane są jako współrzędne kartezjańskie. Nie ma to nic wspólnego z prawdziwą kartografią, ale nie o nią w naszym przykładzie chodzi):

[ kod źródłowy rysunku SVG ] zrzut okna programu graficznego z interpretacją rysunku SVG
Kod źródłowy rysunku SVG Zrzut okna programu graficznego Inkscape z interpretacją rysunku SVG (oglądasz obraz rastrowy)
[ Nie widzisz konturu Polski ]
Interpretacja rysunku SVG pobranego z osobnego pliku (efekt będzie widoczny tylko w przeglądarkach obsługujących obiekty SVG) Rysunki SVG mogą być umieszczane także bezpośrednio w pliku dokumentu. Efekt będzie widoczny tylko w przeglądarkach obsługujących bezpośrednie znakowanie SVG i tylko w dokumentach XML. Bieżący dokument ma nowocześniejszą wersję, w której jest to możliwe.

Materiały do tego rysunku pochodzą z witryny firmy GeoTechnologies. Tam też znaleźć można znacznie bardziej rozbudowane przykłady.

Położenie ilustracji względem otaczającego tekstu

Obrazek umieszczony w dokumencie za pomocą omówionych wyżej poleceń jest traktowany równorzędnie ze zwyczajnymi znakami tekstu: można go ulokować w wierszu akapitu lub w wierszu wyeksponowanym. Czasem jednak chcemy, żeby tekst i obraz przeplatały się w dokumencie, wzajemnie się uzupełniając.

Księżyc z prawej strony akapitu

Tak jest na przykład w tym akapicie, któremu z prawej strony towarzyszy wizerunek Księżyca. Efekt ten osiągnęliśmy, umieszczając w znaczniku osadzającym obrazek dodatkową opcję align="right". Znacznik zaś znajduje się w obszarze akapitu, któremu obrazek towarzyszy. Przed końcem akapitu umieściliśmy dodatkowy znacznik końca wiersza (br) z opcją clear="right", który zamyka fragment tekstu mającego opływać obrazek.

Księżyc z prawej strony akapitu

Zbliżony efekt uzyskaliśmy także w kolejnym akapicie. Tym razem jednak nasz sympatyczny towarzysz pojawił się z lewej strony tekstu. Jak to się stało? Podobnie jak w poprzednim przykładzie, tylko w opcji align elementu img zamiast wartości "right" wpisaliśmy "left".
Tym razem fragment tekstu opływającego obraz został zamknięty poleceniem końca wiersza z opcją clear="left" jeszcze przed końcem akapitu. Powstały odstęp pionowy nie wynika z zakończenia akapitu, a tylko z narzuconego wymagania synchronizacji obrazu i tekstu. Akapit skończy się dopiero po tym zdaniu.

Zaprezentowana wyżej technika ta jest dzisiaj przestarzała. Taki sam efekt uzyskamy korzystając z bardziej ogólnego mechanizmu stylów.

Księżyc Tak jest na przykład w tym akapicie, któremu z prawej strony towarzyszy wizerunek Księżyca. Efekt ten osiągnęliśmy, nadając elementowi graficznemu odpowiedni styl float: right. Z kolei akapity mają nadany za pośrednictwem stylu clear: both zakaz rozpoczynania się przed zakończeniem elementów współbieżnych z tekstem.

Księżyc Tak samo jest i w tym akapicie. Tym razem jednak nasz sympatyczny towarzysz pojawił się z lewej strony tekstu. Jak to się stało? Podobnie jak w poprzednim przykładzie, tylko w opcji stylu zamiast wartości float: right wpisaliśmy float: left.

Powstały odstęp pionowy wynika z zakończenia akapitu. Następny akapit nie rozpoczyna się od razu, tylko „czeka” na zakończenie obrazka.

Uogólnienie pojęcia ilustracji

Jak wspomniano na wstępie, z pojęciem ilustracji nie wiąże się jednoznacznie jej graficzna zawartość. Należy spodziewać się tendencji do ujednolicania zasad zamieszczania w dokumentach ilustracji multimedialnych. Do ich obsługi służy niezwykle ogólny znacznik object. Jednym z jego możliwych zastosowań jest osadzanie ilustracji pochodzących z plików grafiki rastrowej (a także grafiki wektorowej, co uważni czytelnicy zapewne już dostrzegli), co sprawia, że element img staje się zbędny.

Ilustracją może być też „zwykły” tekst, sformatowany lub nie. Dwa najbliższe przykłady ukazują ramki informacyjne, których zawartość jest pobierana z osobnego pliku źródłowego zawierającego dokument sformatowany.

[ infografika wstawiona jako element object ]

Wydzielone ramki z tekstem objaśniającym lub infografiką można realizować m.in. za pomocą wspomnianego już elementu object. Do wykonania składu niezbędne są następujące informacje: nazwa pliku z zawartością ramki (atrybut data), jego typ MIME (atrybut type) i rozmiar ramki (atrybuty width i height). Innymi szczegółowymi właściwościami warto zarządzać z poziomu stylów.

Mimo że zademonstrowane techniki służą głównie obsłudze multimediów w dokumentach elektronicznych, mogą także przyczynić się do ujednolicenia formy i zwiększenia przejrzystości dokumentów technicznych nie korzystających z multimedialnych form przekazu. Idea traktowania dokumentów jako części składowej dokumentów wyższego rzędu bywa użyteczna w wielu sytuacjach, niekoniecznie związanych z konkretnym językiem znakowania.

Podobne możliwości wstawiania tekstu sformatowanego umieszczonego w zewnętrznym dokumencie dawał element znakowania o nazwie iframe. Występował on w kilku przejściowych wersjach języka HTML, z wersji najnowszych został już usunięty.

Dalsze możliwości wpływania na wygląd ilustracji wiążą się z wykorzystaniem składników stylów, dotyczących prezentacji elementów blokowych.

Obraz, rysunek, ilustracja

Obraz
Środek wyrazu, posługujący się grafiką typu rastrowego, np. fotografią. W pliku HTML można umieścić odwołanie do pliku graficznego, zawierającego obraz. Obraz ten zostanie umieszczony w dokumencie.
Rysunek
Środek wyrazu, posługujący się grafiką typu wektorowego, np. szkicem sytuacyjnym lub rysunkiem technicznym. W pliku HTML można umieścić bezpośrednie polecenia kreślące rysunek w formacie SVG lub odwołanie do takiego rysunku znajdującego się w pliku zewnętrznym. Starsze środowiska prezentacji dokumentów nie będą rozumieć takich rysunków; pozostaje wtedy konwersja rysunku do obrazu rastrowego i osadzenie w dokumencie tego ostatniego lub skorzystanie z obsługi obiektów grafiki wektorowej przez moduły typu plugin.
Ilustracja
Fragment dokumentu, umieszczony poza głównym tokiem tekstu zwartego, przeznaczony do prezentowania informacji uzupełniających. Ilustracjami mogą być obrazy i rysunki, ale także tabele, objaśnienia, zestawienia itp. W szerszym sensie ilustracja może zawierać nawet obraz ruchomy, sekwencję dźwięków, zapach(!?), próbkę materiału czy też plik danych. Położenie ilustracji nie musi być „sztywno” ustalone w stosunku do kolejnych akapitów tekstu ciągłego. Na przykład osoba opracowująca dokument od strony prezentacyjnej może przyjąć zasadę, że ilustracje będą grupowane na osobnych stronach książki, że będą umieszczane na początku strony, lub że będą równolegle towarzyszyć tekstowi zasadniczemu, który ma je „opływać”. W dokumencie HTML można do pewnego stopnia zautomatyzować rozmieszczanie ilustracji za pomocą znaczników i stylów.

W poprzednich przykładach mieliśmy do czynienia z ramką informacyjną przedstawiającą treść zewnętrznego dokumentu. Nie zawsze jest to wygodne, zwłaszcza w dokumentach przeznaczonych przede wszystkim do wydruku, a nie do prezentacji elektronicznej. Kolejny przykład przedstawia ruchomą ramkę zawierającą blok pobrany z bieżącego pliku źródłowego. Za pomocą samych znaczników HTML nie da się osiągnąć takiego efektu; zresztą nie miałoby to większego sensu. Tutaj przyjęto następujące rozwiązanie: treść ramki została ujęta w blok ogólnego przeznaczenia (czyli <div > </div>), z atrybutem klasy wskazującym na jego szczegółowe przeznaczenie (inforamka). Autora nie interesuje, jak ilustracja zostanie włączona do dokumentu; pozostawił jedynie czytelną informację dla redaktora. To redaktor podejmie ostateczną decyzję, czy ilustracje będą wyraźnie oddzielone od tekstu (np. centrowane w obszarze między akapitami), czy raczej z nim zintegrowane (np. przez opływanie). Tym razem zdecydował się na to drugie rozwiązanie. Pożądane właściwości takich ilustracji opisał w ramach definicji stylu o nazwie inforamka przeznaczonego wcześniej przez autora do znakowania ramek informacyjnych, którą z kolei umieścił w sekcji opisu stylów w nagłówku bieżącego dokumentu.

Oczywiście ramka tego typu może zawierać nie tylko tekst, ale dowolne elementy formatowania. Z przyczyn związanych z logiką lepiej jednak będzie, jeżeli nie znajdą się w niej nagłówki rozdziałów ani innych części dokumentu. (Chociaż z drugiej strony łatwo wyobrazić sobie sensowne rozwiązanie graficzne, w którym wszystkie nagłówki „pływają” na marginesie.)

Podobne rozwiązanie powinno dotyczyć przypisów, lecz przedstawianymi tu środkami (HTML + CSS) nie da się go skutecznie zastosować wobec braku pojęć „stronicy” i „opływania w pionie”.

Automatyzacja opływania ilustracji

Jak widzieliśmy przed chwilą, tekst ciągły może być rozmieszczony obok ilustracji i na ogół tego właśnie chcemy; możemy również tego zabronić — wtedy w razie potrzeby powstanie pionowy odstęp ciągnący się aż do zakończenia ilustracji. Niekiedy chcielibyśmy, by pewne elementy, na przykład nagłówki rozdziałów, nigdy nie towarzyszyły ilustracjom, lecz by miały do dyspozycji cały dostępny obszar. Oczywiście posługując się znacznikami <br clear="strona" /> możemy takie zachowanie wymusić, lecz praca sprowadza się wtedy do wstawiania dodatkowych znaczników (po jednym przed każdym nagłówkiem), a tego nie lubimy. Pracując na poziomie stylów, możemy elementowi nagłówka przypisać cechę stylu clear: strona; efekt będzie ten sam. Jeżeli zrobimy to samo na poziomie arkusza stylów, to efekt będzie się stosował do wszystkich wystąpień danego elementu (np. nagłówka). Rozwiązanie takie zastosowano w bieżącej części opracowania. Sprawia ono, że ilustracje umieszczone w rozdziale bieżącym na pewno zostaną umieszczone w dokumencie wcześniej, niż początek tytułu rozdziału następnego.

Każdą ilustrację — traktowaną jako komplet wzajemnie powiązanych elementów graficznych i tekstowych — należy osadzać w sposób przyjęty jednolicie w skali całego dokumentu, np. za pomocą znacznika div ze wskazaniem klasy; umożliwi nie tylko automatyzację rozmieszczenia ilustracji względem tekstu, ale także ułatwi korzystanie z bardziej zaawansowanych funkcji formatowania, takich jak nadawanie podpisów i numerowanie.

© Copyright 2000–2008 by Jan Jełowicki, Katedra Matematyki Uniwersytetu Przyrodniczego we Wrocławiu
janj@aqua.ar.wroc.pl
http://karnet.up.wroc.pl/~jasj