Najczęstszy błąd w dokumentach uczniów to formatowanie „ręczne”: zaznaczony tytuł, pogrubienie, większa czcionka — i tak w każdym rozdziale. Gdy trzeba zmienić wygląd, poprawia się to w kilkunastu miejscach. Style rozwiązują ten problem: wygląd opisuje się raz, a akapity tylko wskazują, jakiego stylu używają. Style dziedziczą po sobie, więc zmiana stylu podstawowego przenosi się na pochodne. Na lekcji uczniowie odtwarzają ten mechanizm w modelu i sprawdzają, co się zmienia po edycji stylu.
Scenariusz jest przeznaczony na 45 minut dla klasy znającej podstawy edytora tekstu i słowniki w Pythonie; kontynuuje temat z lekcji o automatycznym spisie treści. Uwaga: lekcja opisuje działanie spisu treści (numeracja, strony, aktualizacja) na modelu w Pythonie; kroki w programie Word są podane ogólnie i nie były uruchamiane w konkretnej wersji — uczniowie porównują wynik z kluczem.
Przygotowanie stanowisk
Potrzebny jest Python 3 i edytor lub IDLE. Rozpakuj pakiet z sekcji materiałów do osobnego folderu i uruchamiaj skrypty z tego folderu. Program uruchomisz przez Run → Run Module albo poleceniem python start.py, python3 start.py lub py start.py.
Cele i plan lekcji
Po zajęciach uczeń potrafi:
- wyjaśnić, czym jest styl i czym różni się od formatowania ręcznego;
- wskazać, jak działa dziedziczenie ustawień między stylami;
- przewidzieć wygląd akapitu w danym stylu;
- zmienić styl Normalny i ocenić, które elementy dokumentu się zmienią.
| Czas | Praca na lekcji |
|---|---|
| 0–5 min | Problem: zmiana wyglądu w dwudziestu miejscach |
| 5–15 min | Style akapitu i dziedziczenie |
| 15–22 min | Model stylów w Pythonie |
| 22–37 min | Trzy zadania |
| 37–42 min | Style w prawdziwym dokumencie |
| 42–45 min | Pytania kontrolne |
Czym jest styl
Styl to nazwany zestaw ustawień formatowania: czcionka, rozmiar, kolor, pogrubienie, odstępy. Akapit „ma” styl, więc zmiana stylu zmienia wszystkie akapity, które go używają. Najważniejsze style to Normalny (zwykły tekst), Nagłówek 1–3 (tytuły i podtytuły; używane także do spisu treści) i Cytat.
Dziedziczenie
Styl może być oparty na innym: ma jego ustawienia, a własne tylko nadpisuje. W modelu Nagłówek 1 opiera się na stylu Normalny (dziedziczy czcionkę Calibri), ale ma własny rozmiar 16, pogrubienie i kolor; Nagłówek 2 opiera się na Nagłówku 1 i zmienia tylko rozmiar na 13. Funkcja rozwiaz zbiera ustawienia od bazy do stylu pochodnego, a ustawienia pochodnego mają pierwszeństwo.
Co daje zmiana stylu
Jeśli w stylu Normalny zmienimy czcionkę na Arial, zmieni się ona także w nagłówkach i cytatach (dziedziczą czcionkę), ale rozmiary nagłówków pozostaną własne. Dlatego formatowanie dokumentu zaczyna się od stylu Normalny, a nie od zaznaczania pojedynczych akapitów.
Formatowanie ręczne
Zaznaczenie fragmentu i zmiana czcionki działa tylko tam i nie jest powiązane ze stylem — po zmianie stylu może zostać „wyspą” o innym wyglądzie. Zasada: formatowanie ręczne tylko wyjątkowo (np. wyróżnienie słowa), całość formatuj stylami.
Zadania
Zadanie 1. Dziedziczenie. Napisz rozwiaz(nazwa) zwracającą pełne ustawienia stylu razem z odziedziczonymi i wypisz je dla czterech stylów.
Zadanie 2. Zmiana stylu podstawowego. Zmień w stylu Normalny czcionkę na Arial i rozmiar na 12; sprawdź czcionkę i rozmiar czterech stylów po zmianie.
Zadanie 3. Zasięg zmiany. Policz akapity dokumentu w każdym stylu i ustal, ile akapitów zmieni czcionkę po zmianie stylu Normalny (bezpośrednio i przez dziedziczenie).
Dla chętnych: dodaj styl „Podpis” oparty na stylu Cytat z rozmiarem 9 i sprawdź jego ustawienia.
Rozwiązanie i wyniki
# Model: styl ma opcjonalna baze (dziedziczenie) i wlasne ustawienia
STYLE = {
"Normalny": {"czcionka": "Calibri", "rozmiar": 11, "kolor": "czarny", "pogrubienie": False, "kursywa": False},
"Naglowek 1": {"baza": "Normalny", "rozmiar": 16, "pogrubienie": True, "kolor": "granatowy"},
"Naglowek 2": {"baza": "Naglowek 1", "rozmiar": 13},
"Cytat": {"baza": "Normalny", "kursywa": True},
}
def rozwiaz(nazwa, style=STYLE):
"""Zbiera ustawienia stylu razem z odziedziczonymi od bazy."""
styl = style[nazwa]
wynik = dict(rozwiaz(styl["baza"], style)) if "baza" in styl else {}
wynik.update({k: v for k, v in styl.items() if k != "baza"})
return wynik
DOKUMENT = [("Naglowek 1", "Wstep"), ("Normalny", "Tresc akapitu."), ("Naglowek 2", "Podrozdzial"), ("Cytat", "Cytat z ksiazki."), ("Normalny", "Drugi akapit.")]
# Zadanie 1: ustawienia po dziedziczeniu
for nazwa in STYLE:
print(nazwa, "->", rozwiaz(nazwa))
# Zadanie 2: zmiana stylu Normalny zmienia caly dokument
nowe = {k: dict(v) for k, v in STYLE.items()}
nowe["Normalny"]["czcionka"] = "Arial"
nowe["Normalny"]["rozmiar"] = 12
for nazwa in ("Normalny", "Naglowek 1", "Naglowek 2", "Cytat"):
print(nazwa, "po zmianie:", rozwiaz(nazwa, nowe)["czcionka"], rozwiaz(nazwa, nowe)["rozmiar"])
# Zadanie 3: formatowanie reczne a styl
akapity_w_stylu = {}
for styl, _ in DOKUMENT:
akapity_w_stylu[styl] = akapity_w_stylu.get(styl, 0) + 1
print("Akapity wg stylu:", akapity_w_stylu)
print("Zmiana stylu Normalny obejmie", akapity_w_stylu["Normalny"], "akapity bezposrednio i",
sum(akapity_w_stylu[s] for s in ("Naglowek 1", "Naglowek 2", "Cytat") if "czcionka" not in STYLE[s]), "przez dziedziczenie czcionki")
Program wypisze:
Normalny -> {'czcionka': 'Calibri', 'rozmiar': 11, 'kolor': 'czarny', 'pogrubienie': False, 'kursywa': False}
Naglowek 1 -> {'czcionka': 'Calibri', 'rozmiar': 16, 'kolor': 'granatowy', 'pogrubienie': True, 'kursywa': False}
Naglowek 2 -> {'czcionka': 'Calibri', 'rozmiar': 13, 'kolor': 'granatowy', 'pogrubienie': True, 'kursywa': False}
Cytat -> {'czcionka': 'Calibri', 'rozmiar': 11, 'kolor': 'czarny', 'pogrubienie': False, 'kursywa': True}
Normalny po zmianie: Arial 12
Naglowek 1 po zmianie: Arial 16
Naglowek 2 po zmianie: Arial 13
Cytat po zmianie: Arial 12
Akapity wg stylu: {'Naglowek 1': 1, 'Normalny': 2, 'Naglowek 2': 1, 'Cytat': 1}
Zmiana stylu Normalny obejmie 2 akapity bezposrednio i 3 przez dziedziczenie czcionki
Nagłówek 2 dziedziczy pogrubienie i kolor po Nagłówku 1, a czcionkę — po Normalnym; ma tylko własny rozmiar 13. Po zmianie stylu Normalny wszystkie cztery style mają czcionkę Arial, ale rozmiar zmienia się tylko w Normalnym i w Cytacie (które go dziedziczą), a nagłówki mają rozmiary własne. W dokumencie jest pięć akapitów: dwa w stylu Normalny, jeden w Nagłówku 1, jeden w Nagłówku 2 i jeden w Cytacie — czcionkę zmieni więc wszystkie pięć, przy czym trzy z nich przez dziedziczenie.
Plik rozszerzenie.py (zadanie dla chętnych) wypisze:
{'a': 1, 'b': 3}
Typowe błędy
| Objaw | Co sprawdzić |
|---|---|
| Formatowanie ręczne zamiast stylów | Zmiana wyglądu wymaga poprawiania każdego akapitu osobno. |
| Nagłówek jako pogrubiony zwykły akapit | Nie trafi do spisu treści i nie ma poziomu. |
| Zmiana stylu nie działa na akapit | Akapit ma formatowanie ręczne, które nadpisuje styl — usuń je. |
| Za dużo własnych stylów | Używaj kilku podstawowych i dziedzicz po nich. |
| Edycja stylu Nagłówek zamiast Normalny | Czcionkę całego dokumentu ustawia się w stylu Normalny. |
| Niespójne odstępy między akapitami | Używaj odstępów w stylu, nie pustych akapitów. |
Pytania kontrolne i punktacja
- Czym różni się styl od formatowania ręcznego?
- Co oznacza, że Nagłówek 2 dziedziczy po Nagłówku 1?
- Gdzie ustawić czcionkę całego dokumentu?
Odpowiedzi: Styl jest nazwanym, wielokrotnie używanym zestawem ustawień; formatowanie ręczne dotyczy tylko zaznaczonego fragmentu. Że ma jego ustawienia i nadpisuje tylko te, które sam zmienia. W stylu Normalny.
Proponowana punktacja (razem 10 punktów): zadanie 1 — rozwiązywanie dziedziczenia 3 pkt; zadanie 2 — zmiana stylu podstawowego 2 pkt; zadanie 3 — liczenie akapitów 2 pkt; zasada stylów w pytaniach 3 pkt. Zadanie dla chętnych nie jest wymagane do pełnej oceny.
Materiały do pobrania
- Pakiet Informatyka: materiały do lekcji, rozwiązanie i karta pracy
- Karta pracy ucznia — otwórz i wydrukuj
Rozpakuj ZIP przed otwarciem plików. Materiały są dostępne bez logowania; publiczne rozwiązanie służy nauce i samodzielnemu sprawdzeniu, a nie poufnemu sprawdzianowi.
Co dalej?
Następny krok to sekcje, numeracja stron, spis treści i tabele w dokumencie. Ten materiał rozwija dział o edytorze tekstu w kursie Informatyka w TablicaPro, gdzie znajdziesz prezentacje, ćwiczenia i testy do prowadzenia lekcji.
Źródła techniczne: pomoc Microsoft: style w programie Word oraz style w LibreOffice Writer. Zobacz też lekcję o spisie treści.
Poprowadź kolejne lekcje Informatyka
Pełny kurs: prezentacje, ćwiczenia i testy do pracy z klasą.
Kup dostęp do kursu Informatyka →