> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/pl/formatowanie/04-articles-how-to-change-paragraph-spacing-in-latex.md).

# Formatowanie akapitów

## Wstęp

Ten artykuł omawia dwie metody wprowadzania zmian w różnych aspektach odstępów między akapitami:

* najlepsza i zalecana metoda korzystania z pakietów LaTeX, takich jak [`setspace`](https://ctan.org/pkg/setspace) i [`parskip`](https://ctan.org/pkg/parskip) które zapewniają opcje i polecenia na poziomie użytkownika do zmiany odstępów w dokumentach LaTeX;
* użycie niskopoziomowych poleceń parametrów TeX/LaTeX *polecenia parametrów* do modyfikowania odstępów między akapitami. Bezpośrednie użycie poleceń parametrów może omijać sprawdzenia lub mechanizmy kontrolne zapewniane przez starannie opracowane pakiety LaTeX, co może prowadzić do nieoczekiwanych konsekwencji/skutków ubocznych w innych miejscach dokumentu LaTeX, dlatego należy używać ich ostrożnie...

### Przejdź do interesujących sekcji

Czytelnicy szukający szybkich rozwiązań:

* przejdź do sekcji [*Korzystanie z pakietów LaTeX: setspace i parskip*](#using-latex-packages-setspace-and-parskip)

Czytelnicy zainteresowani poleceniami niskopoziomowymi:

* przejdź do sekcji [*Polecenia parametrów TeX/LaTeX*](#using-texlatex-parameter-commands) i [*Podstawy: polecenia parametrów i przykłady*](#the-fundamentals-parameter-commands-and-examples)

Czytelnicy zainteresowani szczegółami obliczeń odstępów między wierszami i struktury akapitów:

* przejdź do sekcji [*Struktura akapitu i obliczenia odstępów między wierszami*](#paragraph-structure-and-line-space-calculations)

## Korzystanie z pakietów LaTeX: setspace i parskip

* [Pakiet parskip](#the-parskip-package)
* [Pakiet setspace](#the-setspace-package)

### Pakiet parskip

Ta [`parskip` pakietu](https://ctan.org/pkg/parskip?lang=en) pomaga bezpiecznie zmienić odstęp wstawiany między akapitami w dokumencie. Został zaprojektowany tak, aby zapewnić, że struktury dokumentu, takie jak spis treści, środowiska list i nagłówki wyświetlane, nie zostaną negatywnie dotknięte niezerową wartością [`\parskip` polecenie](#parskip-tex-primitive), która służy do ustawiania ilości odstępu wstawianego przez TeX/LaTeX między akapitami.

Ta `parskip` pakiet nie zapewnia żadnych poleceń na poziomie użytkownika; zamiast tego używa opcji pakietu do konfiguracji swojego działania. Dokumentacja [`parskip` dokumentację](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/parskip/parskip.pdf) jest krótka, ma tylko trzy strony, ale oto krótkie podsumowanie opcji pakietu:

* **`skip`**: określa `\parskip`, pionowy odstęp między akapitami;
* **`tocskip`**: określa niezerową `\parskip` wartość do użycia w `\tableofcontents` i podobnych listach;
* **`indent`**: ustawia wartość `\parindent`, wcięcia akapitu;
* **`parfill`**: dostosowuje wartość `\parfillskip`, kleju dodawanego na końcu ostatniego wiersza akapitu.

Domyślnie używany jest `parskip` pakiet ustawia `\parindent` na `0pt` i zapewnia niezerowe `\parskip` wartości `.5[\baselineskip](#baselineskip-tex-primitive) plus 2pt`.

#### Przykłady pakietu parskip

Poniższe przykłady pokazują niektóre zastosowania pakietu `parskip` pakietu. Wybierz łącza „Open in Overleaf”, aby otworzyć i skompilować przykłady w Overleaf.

**Minimalny przykład pakietu parskip**

Poniższy minimalny przykład ładuje pakiet `parskip` pakiet i składa dwa akapity utworzone za pomocą [`blindtext` pakietu](https://ctan.org/pkg/blindtext?lang=en). Przykład składa także domyślne wartości `\baselineskip`, `\parskip` i `\parindent`. Ilość odstępu między dwoma akapitami jest określana przez wartość `\parskip`:

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\usepackage[paperheight=16cm,paperwidth=14cm,textwidth=12cm]{geometry}
% Załaduj pakiet blindtext dla tekstu zastępczego
\usepackage{blindtext}
% Załaduj pakiet parskip bez opcji
\usepackage{parskip}
\begin{document}

\blindtext[1]\par %Użyj \par, aby wymusić nowy akapit
\blindtext[1]

Wartość \verb|\parindent| wynosi \texttt{\the\parindent}. Oto pozostałe wartości:

\begin{itemize}
\item Wartość \verb|\baselineskip| wynosi \texttt{\the\baselineskip}
\item Wartość \verb|\parskip| wynosi \texttt{\the\parskip}
\end{itemize}
\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+parskip+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+parskip+package+without+options%0A%5Cusepackage%7Bparskip%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cblindtext%5B1%5D%5Cpar+%25Use+%5Cpar+to+force+a+new+paragraph%0A%5Cblindtext%5B1%5D%0A%0AThe+value+of+%5Cverb%7C%5Cparindent%7C+is+%5Ctexttt%7B%5Cthe%5Cparindent%7D.+Here+are+the+other+values%3A%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+The+value+of+%5Cverb%7C%5Cbaselineskip%7C+is+%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D%0A%5Citem+The+value+of+%5Cverb%7C%5Cparskip%7C+is+%5Ctexttt%7B%5Cthe%5Cparskip%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Przykładowe użycie pakietu LaTeX parskip](/files/3a09ad834012ef4a562b02be3cff39233f3cdd75)

Zauważ, że `\parskip` klej zazwyczaj zawiera rozciągliwy [składnik kleju](#a-few-notes-on-glue) ponieważ pomaga to LaTeX-owi dopasować zawartość do strony i uzyskać najlepsze (optymalne) podziały stron.

**Korzystanie z opcji pakietu parskip**

Poniższy przykład ładuje i konfiguruje `parskip` pakiet, używając `skip` i `indent` opcje. Składa także dwa akapity za pomocą [`blindtext` pakietu](https://ctan.org/pkg/blindtext?lang=en), oraz składa wartości `\baselineskip`, `\parskip` i `\parindent`.

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% Załaduj pakiet blindtext dla tekstu zastępczego
\usepackage{blindtext}
% Załaduj pakiet parskip z opcjami skip i indent
\usepackage[skip=10pt plus1pt, indent=40pt]{parskip}
\begin{document}

\blindtext[1]\par % Użyj \par, aby wymusić nowy akapit
\blindtext[1]

Wartość \verb|\parindent| została ustawiona przez opcję \texttt{indent}, więc teraz wynosi \texttt{\the\parindent}. Pozostałe wartości to:

\begin{itemize}
\item \verb|\baselineskip| wynosi \texttt{\the\baselineskip}
\item \verb|\parskip| został ustawiony przez opcję \texttt{skip}, więc jego wartość wynosi \texttt{\the\parskip}
\end{itemize}
\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+parskip+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+parskip+package+with+skip+and+indent+options%0A%5Cusepackage%5Bskip%3D10pt+plus1pt%2C+indent%3D40pt%5D%7Bparskip%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cblindtext%5B1%5D%5Cpar+%25+Use+%5Cpar+to+force+a+new+paragraph%0A%5Cblindtext%5B1%5D%0A%0AThe+value+of+%5Cverb%7C%5Cparindent%7C+was+set+via+the+%5Ctexttt%7Bindent%7D+option%2C+so+it+is+now+%5Ctexttt%7B%5Cthe%5Cparindent%7D.+The+other+values+are%3A%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Cverb%7C%5Cbaselineskip%7C+is+%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D%0A%5Citem+%5Cverb%7C%5Cparskip%7C+was+set+via+the+%5Ctexttt%7Bskip%7D+option%2C+so+its+value+is+%5Ctexttt%7B%5Cthe%5Cparskip%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Drugi przykład użycia pakietu LaTeX parskip](/files/77fa8577607a6259826810899fc0ba9c88e911e1)

### Pakiet setspace

Ta [`setspace` pakietu](https://ctan.org/pkg/setspace?lang=en) zapewnia polecenia i środowiska do zmiany odstępów między wierszami tekstu dokumentu. Oto krótkie podsumowanie głównych poleceń i środowisk zapewnianych przez `setspace`:

* polecenia **`\singlespacing`**, **`\onehalfspacing`** i **`\doublespacing`** mogą być używane w preambule dokumentu lub w jego treści, aby zmienić odstępy w części albo w całym dokumencie;
* stronie **`\setstretch{*baselinestretch amount*}`** polecenie ustawia niestandardowy odstęp (poprzez zmiany w [`\baselinestretch`](#demonstrating-baselinestretch)) — może również być używane w preambule dokumentu;
* środowiska **`singlespace`**, **`singlespace*`** **`onehalfspace`** i **`doublespace`** umożliwiają zmianę odstępów między wierszami dla wybranych części tekstu dokumentu;
* stronie **`\SetSinglespace{*value*}`** polecenie używa `*value*` do dostosowania odstępu pojedynczego wiersza, aby uwzględnić odstępy między wierszami tekstu składanego krojami pisma, których kształty znaków („glify”) są względnie małe lub duże dla danego rozmiaru punktowego. Zobacz sekcję [*Krótkie uwagi o fontach i rozmiarze punktowym*](#brief-notes-on-fonts-and-point-size) aby zobaczyć ilustrację pokazującą zróżnicowanie rozmiaru glifów fontu dla danego rozmiaru punktowego;
* stronie **`spacing`** środowisko zapewnia niestandardowy odstęp i wymaga jednego argumentu: [`\baselinestretch` wartości](#demonstrating-baselinestretch) do użycia; na przykład:

```latex
\begin{spacing}{2.5}
...
...
\end{spacing}
```

#### Przykłady pakietu setspace

Poniższe przykłady pokazują niektóre zastosowania pakietu `setspace` pakiet: kliknij łącza „Open in Overleaf”, aby otworzyć i skompilować przykłady w Overleaf.

**Używanie \doublespacing w preambule dokumentu**

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% Załaduj pakiet blindtext dla tekstu zastępczego
\usepackage{blindtext}
% Załaduj pakiet setspace
\usepackage{setspace}
% Użycie \doublespacing w preambule
% zmienia tekst na podwójny odstęp między wierszami
\doublespacing
\begin{document}
\blindtext[1]
\end{document}
```

&#x20;[Otwórz ten `setspace` przykład w Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+doublespacing+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+setspace+package%0A%5Cusepackage%7Bsetspace%7D%0A%25+Using+%5Cdoublespacing+in+the+preamble+%0A%25+changes+text+to+double+line+spacing%0A%5Cdoublespacing%0A%5Cbegin%7Bdocument%7D%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Przykład polecenia setspace \doublespacing](/files/f404d8b31f63f66dfe7d23ae70c167b58ccacb6a)

**Używanie środowiska spacing**

Ponieważ poniższy kod składa 3 strony, lepiej wyświetlić wynik w Overleaf, wybierając udostępnione poniżej łącze „Open in Overleaf”.

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% Załaduj pakiet blindtext dla tekstu zastępczego
\usepackage{blindtext}
% Załaduj pakiet setspace
\usepackage{setspace}
% Użycie \doublespacing w preambule
% zmienia tekst na podwójny odstęp między wierszami
\doublespacing
\begin{document}
\blindtext[1]

Teraz zastosuj większy (niestandardowy) odstęp, stosując wartość \verb|\baselinestretch| równą 3:

\begin{verbatim}
\begin{spacing}{3}
\blindtext[1]
\end{spacing}
\end{verbatim}

\begin{spacing}{2.5}
\blindtext[1]
\end{spacing}
Teraz wróć do \verb|\singlespacing|\singlespacing\blindtext[1]
\end{document}
```

&#x20;[Otwórz ten `setspace` przykład w Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+various+setspace+commands\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+setspace+package%0A%5Cusepackage%7Bsetspace%7D%0A%25+Using+%5Cdoublespacing+in+the+preamble+%0A%25+changes+text+to+double+line+spacing%0A%5Cdoublespacing%0A%5Cbegin%7Bdocument%7D%0A%5Cblindtext%5B1%5D%0A%0ANow%2C+apply+a+larger+%28custom%29+spacing+by+applying+a+%5Cverb%7C%5Cbaselinestretch%7C+value+of+3%3A%0A%0A%5Cbegin%7Bverbatim%7D%0A%5Cbegin%7Bspacing%7D%7B3%7D%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bspacing%7D%0A%5Cend%7Bverbatim%7D%0A%0A%5Cbegin%7Bspacing%7D%7B2.5%7D%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bspacing%7D%0ANow%2C+revert+to+%5Cverb%7C%5Csinglespacing%7C%5Csinglespacing%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

**Używanie środowiska singlespace\***

Jak zauważono w artykule [*Krótka uwaga o odstępach między wierszami*](https://texblog.org/2011/09/30/quick-note-on-line-spacing/), a `setspace` pakiet zapewnia wersje z gwiazdką (`singlespace*`) i bez gwiazdki środowiska `singlespace` środowiska. Komentarze w `setspace` kodzie pakietu wskazują, że środowisko `singlespace*` jest zaprojektowane, aby „... zapewniać lepsze odstępy pionowe wokół środowisk itemize i quote”.

Poniższy przykład używa list wypunktowanych zawartych w dwóch `minipage` środowiskach, umieszczonych obok siebie, aby zademonstrować różne odstępy tworzone przez `singlespace` i `singlespace*` środowiska.

```latex
\doublespacing
\blindtext[1]

\begin{minipage}{.4\textwidth}
\begin{singlespace}
Oto lista wypunktowana\par (środowisko \texttt{singlespace}).
\begin{itemize}
\item Jeden
\item Dwa
\item Trzy
\end{itemize}
\end{singlespace}%
Lista się zakończyła.
\end{minipage}\kern10pt%
\begin{minipage}{.4\textwidth}
\begin{singlespace*}
Oto lista wypunktowana\par (środowisko \texttt{singlespace*}).
\begin{itemize}
\item Jeden
\item Dwa
\item Trzy
\end{itemize}
\end{singlespace*}
Lista się zakończyła.
\end{minipage}
```

&#x20;[Otwórz ten `setspace` przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+the+starred+singlespace+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cdoublespacing+%0A%5Cblindtext%5B1%5D%0A%0A%5Cbegin%7Bminipage%7D%7B.4%5Ctextwidth%7D%0A%5Cbegin%7Bsinglespace%7D%0AHere+is+a+bulleted+list%5Cpar+%28%5Ctexttt%7Bsinglespace%7D+environment%29.%0A%5Cbegin%7Bitemize%7D%0A%5Citem+One%0A%5Citem+Two%0A%5Citem+Three%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bsinglespace%7D%25%0AThe+list+has+ended.%0A%5Cend%7Bminipage%7D%5Ckern10pt%25%0A%5Cbegin%7Bminipage%7D%7B.4%5Ctextwidth%7D%0A%5Cbegin%7Bsinglespace%2A%7D%0AHere+is+a+bulleted+list%5Cpar+%28%5Ctexttt%7Bsinglespace%2A%7D+environment%29.%0A%5Cbegin%7Bitemize%7D%0A%5Citem+One%0A%5Citem+Two%0A%5Citem+Three%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bsinglespace%2A%7D%0AThe+list+has+ended.%0A%5Cend%7Bminipage%7D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Przykład środowiska LaTeX singlespace\*](/files/f221ecfd8e6e8b788551bc6dc04ad4c04b0e4538)

**Używanie polecenia \setstretch**

`\setstretch{*value*}` ustawia wartość `\baselinestretch` na *wartości* i wywołuje *natychmiastową* zmianę w `\baselineslip` spowodowaną przez `\baselinestretch`. Poniższy przykład używa `\setstretch{1.618}`— dziwna wartość 1,618 jest [wyjaśniona w dalszej części artykułu](#understanding-and-calculating-values-for-baselinestretch)...

```latex
% Dziwna wartość 1,618 jest wyjaśniona w dalszej części artykułu.
\setstretch{1.618}
Piszemy \verb|\setstretch{1.618}|, aby spowodować natychmiastową zmianę odstępu między wierszami. Gdybyśmy napisali \verb|\renewcommand{\baselinestretch}{1.618}|, odstęp między wierszami nie zostałby zmodyfikowany, dopóki nie zostałoby użyte polecenie zmieniające font, takie jak \verb|\selectfont|.

\blindtext[1]
```

&#x20;[Otwórz ten `setspace` przykład w Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+setstretch+command\&snip=%5Cdocumentclass%5B11pt%5D%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+setspace+package%0A%5Cusepackage%7Bsetspace%7D%0A%5Cbegin%7Bdocument%7D%0A%25+The+strange+figure+of+1.618+is+explained+later+in+the+article.%0A%5Csetstretch%7B1.618%7D%0AWe+write+%5Cverb%7C%5Csetstretch%7B1.618%7D%7C+to+cause+an+immediate+change+to+the+line+spacing.+If+we+wrote+%5Cverb%7C%5Crenewcommand%7B%5Cbaselinestretch%7D%7B1.618%7D%7C+the+line+spacing+would+not+be+modified+until+a+font-changing+command%2C+such+as+%5Cverb%7C%5Cselectfont%7C%2C+is+used.%0A%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Przykład polecenia \setstretch](/files/d2764a39b801973c0a06adecd3aea3c08677f928)

**Używanie polecenia \SetSinglespace**

Poniższy projekt jest kompilowany za pomocą LuaLaTeX i używa pakietu `fontspec` pakietu do uzyskania dostępu do fontów TeX Gyre Pagella. Porównuje dwa akapity tekstu składanego fontem TeX Gyre Pagella: pierwszy akapit używa domyślnego pojedynczego odstępu między wierszami, a drugi ma większy pojedynczy odstęp między wierszami dzięki zastosowaniu `\SetSinglespace{1.1}`. Niektórzy mogą preferować drugi, nieco „bardziej otwarty” akapit, uznając, że poprawia komfort czytania, lecz jest to oczywiście kwestia osobistych preferencji.

```latex
\section*{Domyślny pojedynczy odstęp Computer Modern}
Zwykły tekst. \blindtext[1]
\setmainfont{TeX Gyre Pagella}
\section*{Domyślny pojedynczy odstęp między wierszami TeX Gyre Pagella}
Oto zwykły tekst. \blindtext[1]
\section*{Dostosowany pojedynczy odstęp między wierszami TeX Gyre Pagella}
Uwaga: po zapisaniu musimy wydać \verb|\singlespacing|
\verb|\SetSinglespace{1.1}|\SetSinglespace{1.1}\singlespacing
\begin{singlespace*}
Oto zwykły tekst. \blindtext[1]
\end{singlespace*}
```

&#x20;[Otwórz ten `setspace` przykład w Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Example+use+of+the+SetSinglespace+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfontspec%7D%0A%5Cusepackage%7Bblindtext%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csection%2A%7BComputer+Modern+default+single+spacing%7D%0ASome+regular+text.+%5Cblindtext%5B1%5D%0A%5Csetmainfont%7BTeX+Gyre+Pagella%7D%0A%5Csection%2A%7BTeX+Gyre+Pagella+default+single+line+spacing%7D%0AHere+is+some+regular+text.+%5Cblindtext%5B1%5D%0A%5Csection%2A%7BTeX+Gyre+Pagella+adjusted+single+line+spacing%7D%0ANote%3A+we+need+to+issue+%5Cverb%7C%5Csinglespacing%7C+after+writing++%0A%5Cverb%7C%5CSetSinglespace%7B1.1%7D%7C%5CSetSinglespace%7B1.1%7D%5Csinglespacing%0A%5Cbegin%7Bsinglespace%2A%7D+%0AHere+is+some+regular+text.+%5Cblindtext%5B1%5D%0A%5Cend%7Bsinglespace%2A%7D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Demonstracja polecenia LaTeX \SetSinglespace](/files/8598df349caedaa2c1d376b8aa43661872e9a5e4)

W następnej sekcji omawiamy polecenia `\baselinestretch` i `\linespread`.

#### Zrozumienie \baselinestretch i \linespread

Część projektu LaTeX dotycząca obsługi odstępów między wierszami i zmian fontu (rozmiar fontu, rodzina fontu, kodowanie fontu itd.) wykorzystuje dwa polecenia, które możesz napotkać:

* **`\baselinestretch`**: to polecenie przechowuje współczynnik skali używany do pomnożenia (przeskalowania) bieżącej wartości [`\baselineskip`](#baselineskip-tex-primitive). To skalowanie jest zwykle stosowane, gdy *przy następnym* używane jest polecenie wyboru fontu — takie jak `\selectfont`. Aby zmienić wartość przechowywaną przez `\baselinestretch` należy napisać `\renewcommand{\baselinestretch}{*scale*}`
  * **Uwaga**: Jeśli napiszesz `\renewcommand{\baselinestretch}{*scale*}` w treści dokumentu, nowa wartość `\baselinestretch` [nie zacznie działać natychmiast](https://tex.stackexchange.com/questions/241120/why-does-changing-baselinestretch-not-change-line-spacing): nowy współczynnik `*scale*` jest przechowywany do przyszłego użycia. Aby natychmiast użyć/zastosować nową`*scale*` wartość, napisz `\selectfont` jak pokazano w [fragmencie kodu poniżej](#demonstrating-baselinestretch).
* **`\linespread{*scale*}`**: może być używane do zmiany [`\baselineskip`](#baselineskip-tex-primitive) bez wpływu na bieżący rozmiar fontu. To polecenie ustawia `\baselinestretch` na `*scale*` co następnie zmienia `\baselineskip` na `*scale* × [\baselineskip](#baselineskip-tex-primitive)`. Jednak to skalowanie również nie następuje natychmiast, chyba że polecenie `\linespread` jest używane w preambule dokumentu. Jeśli jest `\linespread` używane w treści dokumentu, zaczyna działać po użyciu następnego polecenia zmiany rozmiaru/wyboru fontu.

Na podstawie powyższego można użyć jednego z:

* `\renewcommand{\baselinestretch}{*scale*}\selectfont` lub
* `\linespread{*scale*}\selectfont`

do zmiany odstępów między wierszami, a oba będą działały przy zmianach rozmiaru fontu, jak pokazano w poniższym przykładzie. Którego zatem użyć? Zobacz [tę krótką dyskusję na tex.stackexchange](https://tex.stackexchange.com/a/241121).

**Demonstracja \linespread**

Poniższy przykład używa `\linespread{2.5}` w preambule dokumentu, co zmienia odstępy między wierszami bez konieczności stosowania dodatkowych poleceń wyboru fontu:

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% Załaduj pakiet blindtext dla tekstu zastępczego
\usepackage{blindtext}
% Użycie \linespread w preambule zmienia
% odstępy między wierszami bez konieczności stosowania dodatkowych
% poleceń wyboru fontu, takich jak \selectfont
\linespread{2.5}
\begin{document}
\blindtext[1] % Na wiersze wpływa \linespread{2.5}
\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+linestretch+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Using+%5Clinespread+in+the+preamble+changes+%0A%25+line+spacing+without+requiring+additional%0A%25+font-selection+commands%2C+such+as+%5Cselectfont%0A%5Clinespread%7B2.5%7D+%0A%5Cbegin%7Bdocument%7D%0A%5Cblindtext%5B1%5D+%25+The+lines+are+affected+by+%5Clinespread%7B2.5%7D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Używanie polecenia linespread](/files/d034a9c67782492db981bb9d98513480928ae6d9)

Korzystanie z `\linespread{2.5}` w treści dokumentu (po `\begin{document}`) *wymagałoby* poleceń wyboru fontu, aby wywołać zmianę odstępu między wierszami. Otwórz poniższy kod w Overleaf i porównaj wynik z poprzednim przykładem:

```latex
Ponieważ poniższe polecenie \verb|\linespread| jest używane w treści dokumentu, do zmiany odstępu między wierszami wymagane jest polecenie wyboru fontu. Usuń komentarz z \verb|\selectfont|, aby zobaczyć różnicę:

\linespread{2.5}%\selectfont

% Bez \selectfont na wiersze poniższego akapitu
% nie wpływa wpływa \linespread{2.5}:
\blindtext[1]
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Second+example+using+the+linestretch+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0ABecause+the+following+%5Cverb%7C%5Clinespread%7C+command+is+used+in+the+document+body%2C+a+font-selection+command+is+required+to+change+the+line+spacing.+Un-comment+%5Cverb%7C%5Cselectfont%7C+to+see+the+difference%3A%0A%0A%5Clinespread%7B2.5%7D%25%5Cselectfont%0A+%0A%25+Without+%5Cselectfont+the+following+paragraph+lines+are+%0A%25+unaffected+affected+by+%5Clinespread%7B2.5%7D%3A+%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![użycie polecenia LaTeX \linespread w dokumencie](/files/cca943eca61863f536ee57c21cbf31609642ff97)

**Demonstracja \baselinestretch**

Poniższy przykład demonstruje `\baselinestretch` i `\selectfont` aby pokazać odpowiadające skutki dla [`\baselineskip`](#baselineskip-tex-primitive):

```latex
Domyślna wartość \verb|\baselineskip|=\the\baselineskip. Teraz zaktualizuj \verb|\baselinestretch|\renewcommand\baselinestretch{2.5}. Jednak mimo że wykonaliśmy

\vspace{5pt}
\verb|\renewcommand\baselinestretch{2.5}|
\vspace{5pt}

\noindent nie miało to (jeszcze) żadnego skutku: nowa wartość \verb|\baselinestretch| jest przechowywana, ale nie jest stosowana. Możemy wydać polecenie \verb|\selectfont|, aby zmiana zaczęła działać; lecz na razie wartość \verb|\baselineskip| nadal wynosi \the\baselineskip{} (bez zmian).

Jeśli teraz wykonamy \verb|\selectfont|, zmiana \verb|\baselinestretch| ustawiająca ją na 2,5 zacznie działać ---\selectfont nawet jeśli jesteśmy w środku akapitu. Teraz wartość \verb|\baselineskip| wynosi \the\baselineskip{} (= \(2.5 \times 12=30\mathrm{pt}\)).

Co się stanie, jeśli zmienimy rozmiar fontu na 14pt, a \verb|\baselineskip| na 16pt za pomocą poleceń \verb|\fontsize{14}{16}\selectfont|?

\fontsize{14}{16}\selectfont Teraz \verb|\baselineskip| \textit{nie} wynosi 16pt, lecz \the\baselineskip{}, ponieważ wartość \verb|\baselinestretch| (2,5) została zachowana i zastosowana, dając \verb|\baselineskip| = \(2.5 \times 16=40\mathrm{pt}\).

\section{\texttt{\bfseries\string\linespread}}
Polecenie \verb|\linespread| może być używane do modyfikowania \verb|\baselineskip| bez zmiany rozmiaru fontu.
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Demonstrating+baselinestretch\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D16cm%2Ctextwidth%3D14cm%5D%7Bgeometry%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cbegin%7Bdocument%7D%0AThe+default+value+of+%5Cverb%7C%5Cbaselineskip%7C%3D%5Cthe%5Cbaselineskip.+Now+update+%5Cverb%7C%5Cbaselinestretch%7C%5Crenewcommand%5Cbaselinestretch%7B2.5%7D.+However%2C+although+we+have+executed%0A%0A%5Cvspace%7B5pt%7D%0A%5Cverb%7C%5Crenewcommand%5Cbaselinestretch%7B2.5%7D%7C+%0A%5Cvspace%7B5pt%7D%0A%0A%5Cnoindent+it+%5Ctextit%7Bhas+not%7D+%28yet%29+had+any+effect%3A+the+new+value+of+%5Cverb%7C%5Cbaselinestretch%7C+is+stored%2C+but+not+actioned.+We+can+issue+a+%5Cverb%7C%5Cselectfont%7C+command+to+make+the+change+take+effect%3B+but%2C+for+now%2C+the+value+of+%5Cverb%7C%5Cbaselineskip%7C+is+still+%5Cthe%5Cbaselineskip%7B%7D+%28unchanged%29.+%0A%0AIf+we+now+execute+%5Cverb%7C%5Cselectfont%7C+the+change+to+%5Cverb%7C%5Cbaselinestretch%7C%2C+setting+it+to+2.5%2C+will+now+take+effect---%5Cselectfont+even+though+we+are+in+the+middle+of+a+paragraph.+Now%2C+the+value+of+%5Cverb%7C%5Cbaselineskip%7C+is+%5Cthe%5Cbaselineskip%7B%7D+%28%3D+%5C%282.5+%5Ctimes+12%3D30%5Cmathrm%7Bpt%7D%5C%29%29.%0A%0AWhat+happens+if+we+change+the+font+size+to+14pt+and+%5Cverb%7C%5Cbaselineskip%7C+to+16pt+using+the+commands+%5Cverb%7C%5Cfontsize%7B14%7D%7B16%7D%5Cselectfont%7C%3F+%0A%0A%5Cfontsize%7B14%7D%7B16%7D%5Cselectfont+Now%2C+%5Cverb%7C%5Cbaselineskip%7C+is+%5Ctextit%7Bnot%7D+16pt+but+%5Cthe%5Cbaselineskip%7B%7D+because+the+value+of++%5Cverb%7C%5Cbaselinestretch%7C+%282.5%29+has+been+preserved+and+applied%2C+giving+%5Cverb%7C%5Cbaselineskip%7C+%3D+%5C%282.5+%5Ctimes+16%3D40%5Cmathrm%7Bpt%7D%5C%29.%0A%0A%5Csection%7B%5Ctexttt%7B%5Cbfseries%5Cstring%5Clinespread%7D%7D%0AThe+%5Cverb%7C%5Clinespread%7C+command+can+be+used+to+modify+%5Cverb%7C%5Cbaselineskip%7C+without+changing+the+font+size.%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Demonstracja baselinestretch](/files/94c84c2bf761550354309fc5bea306b07cab0ce8)

#### Jak w pakiecie setspace definiowane i zmieniane są „odstępy między wierszami”?

Ta *precyzyjna* definicja oraz *pomiar* „odstępów między wierszami” podlegają interpretacji, co może skutkować różnymi implementacjami w systemach/aplikacjach. Oczywiście pakiet `setspace` musi przyjąć roboczą definicję odstępów między wierszami, aby zapewnić obsługę składu wierszy z „pojedynczym” i „podwójnym” odstępem lub z dowolną inną wielokrotnością odstępu. Ale które zmienne są modyfikowane przez `setspace` aby tworzyć wiersze o różnych poziomach białej przestrzeni między nimi?

Na szczęście [dyskusjach na tex.stackexchange](https://tex.stackexchange.com/a/30106) i [komentarze w kodzie pakietu](https://tex.stackexchange.com/a/632830) wyjaśniają, jak `setspace` implementuje odstępy między wierszami: ustawia wartość `\baselineskip` za pomocą wielokrotności rozmiaru punktowego fontu.

**Krótkie uwagi o fontach i rozmiarze punktowym**

Używanie fontów o określonym rozmiarze punktowym oznacza stosowanie *współczynnika skali* do kształtów znaków (glifów) w tych fontach; po przeskalowaniu zgodnie z rozmiarem punktowym widoczny rozmiar znaku jest funkcją projektu fontu (kroju pisma). Rozmiar punktowy nie ma uniwersalnego, ścisłego związku z rzeczywistym rozmiarem wyświetlania kształtów znaków w fontach.

Poniższy obraz pokazuje małe litery „abc” stylizowane za pomocą 4 różnych fontów, wszystkie *wyświetlane w tym samym rozmiarze punktowym*. Zauważ, jak „rozmiar” tych małych liter różni się zależnie od projektu fontu (kroju pisma), mimo że wszystkie są składane w *tym samym* rozmiarze punktowym:

![Różne fonty w tym samym rozmiarze punktowym](/files/da1081d9bca3278afd05438ea1a2c5f7b685be2f)

#### Pojedynczy odstęp między wierszami w pakiecie setspace

Możemy użyć [dyskusjach na tex.stackexchange](https://tex.stackexchange.com/a/30106) jako podstawy do dalszych wyjaśnień.

Podstawowy dokument używający klasy `article` ma domyślny rozmiar fontu tekstowego 10pt z `\baselineskip` równym 12pt. Z opcją \[11pt] lub \[12pt] klasa article używa większego rozmiaru tekstu i odpowiednio większej wartości dla `\baselineskip` jak pokazano w poniższej tabeli:

| opcji               | rozmiar fontu               | $$\texttt{\baselineskip}$$ | $$\displaystyle\frac{\texttt{\baselineskip}}{\text{font size}}$$ |
| ------------------- | --------------------------- | -------------------------- | ---------------------------------------------------------------- |
| \[10pt] (domyślnie) | 10pt                        | 12pt                       | 1.2                                                              |
| \[11pt]             | 10.95pt$${}^{\textbf{\*}}$$ | 13.6pt                     | 1.24                                                             |
| \[12pt]             | 12pt                        | 14.5                       | 1.21                                                             |

$${}^{\textbf{\*}}$$Powód anomalnej wartości `10.95pt`, a nie dokładnie `11pt`, jest dobrze wyjaśniony w tym [poście na Reddicie](https://www.reddit.com/r/LaTeX/comments/ihle9h/why_does_latex_use_1095pt_text_when_the_11pt/).

Jak pokazano w tabeli, dla każdej kombinacji rozmiaru punktowego tekstu i odpowiadającej mu domyślnej (tj. pojedynczego odstępu między wierszami) wartości `\baselineskip`, stosunek

$$\frac{\texttt{\baselineskip}}{\text{font size}}$$

jest bliski 1,2. Ta wartość stosunku oznacza pojedynczy odstęp między wierszami i stanowi podstawę obliczeń odstępów między wierszami używanych przez `setspace` pakiet.

**Zrozumienie i obliczanie wartości \baselinestretch**

Aby uzyskać określoną wielokrotność odstępu między wierszami, taką jak 1,5, 2, 3 itd., polecenie `\baselinestretch` musi zostać ustawione na pozornie [„dziwne” wartości](https://tex.stackexchange.com/a/30106); na przykład przez [z użyciem `\linespread` polecenie](https://texblog.org/2011/09/30/quick-note-on-line-spacing/). W tej sekcji przyjrzymy się bliżej `\baselinestretch` aby zobaczyć, skąd biorą się te „dziwne” wartości.

Wybierzmy dokument z domyślnym rozmiarem fontu $$f$$ i domyślnym `\baselineskip` o wartości $$\text{dbls}\_1$$, gdzie indeks dolny $${}\_1$$ oznacza domyślną `\baselineskip` wartość pojedynczego odstępu między wierszami przy rozmiarze fontu $$f$$.

Będziemy ***definiować*** pojedynczy odstęp między wierszami jako następujący stosunek, który będziemy nazywać $$\alpha\_f$$:

$$\frac{\text{dbls}\_1}{f}=\alpha\_f$$

Dla danego rozmiaru fontu $$f$$, również *definiować* następujące wartości odstępów między wierszami:

* wielokrotność 1,5 odstępu między wierszami jest *zdefiniowana* jako

$$\frac{\text{dbls}\_{1.5}}{f}=1.5$$

* wielokrotność 2,0 odstępu między wierszami jest *zdefiniowana* jako

$$\frac{\text{dbls}\_{2.0}}{f}=2.0$$

* wielokrotność $$m$$, odstępu między wierszami wynosi *zdefiniowana* jako

$$\frac{\text{dbls}\_{m}}{f}=m$$

Korzystając z naszego pojedynczego odstępu między wierszami, zdefiniowanego przez stosunek $$\alpha\_f$$, możemy zapisać następujący „pseudokod”, aby obliczyć `\baselinestretch` wartość odpowiadającą dowolnej wielokrotności odstępu między wierszami $$m$$:

$$\begin{align\*} \texttt{multi spacing } (m) &= \text{a constant } (\lambda) \times \texttt{single spacing}\ \frac{\text{dbls}\_{m}}{f}&=\lambda \times \alpha\_f\ m&=\lambda\alpha\_f\ \lambda&=\frac{m}{\alpha\_f}\kern5pt(\text{refer to }\lambda\text{ as }\texttt{\baselinestretch})\ \implies \texttt{\baselinestretch}&=\frac{m}{\alpha\_f} \end{align\*}$$

Użyjmy `11pt` tekst (właściwie `10.95pt`) i domyślnym `\baselineskip` wartości `13.6pt` obliczyć `\baselinestretch` dla *podwójne* interlinia:

$$\begin{align\*} m&=2.0\ \texttt{\baselinestretch}&=\frac{2.0}{\alpha\_f}\ &=\frac{2.0}{\frac{\text{dbls}\_1}{f}}\ &=\frac{2.0}{\frac{13.6}{11}}\ &=2.0 \times \frac{11}{13.6}\ &=1.618\ \end{align\*}$$

Poniższy fragment kodu jest używany w `setspace` pakiecie, aby uzyskać `\doublespacing` gdy rozmiar czcionki wynosi 11pt. Zauważ, jak wartość `1.618`, obliczona powyżej, jest przechowywana w poleceniu `\baselinestretch`:

```latex
\\newcommand{\\doublespacing}{%
  \\setstretch {1.667}%  domyślnie
  \\ifcase \\@ptsize \\relax % 10pt
    \\setstretch {1.667}%
  \\or % 11pt
    \\setstretch {1.618}%
  \\or % 12pt
    \\setstretch {1.655}%
  \fi
}
```

Używając `article` klasy dokumentu z opcją czcionki 11pt, poniższy przykład porównuje `\doublespacing` z `spacing` środowisko używające naszej obliczonej wartości `1.618` dla `\baselinestretch`. Nic dziwnego, że `\baselineskip` wartości są identyczne (`22.00475pt`):

```latex
\begingroup
\doublespacing
\\verb|\\baselineskip|=\\texttt{\\the\\baselineskip} (za pomocą \\verb|\\doublespacing|)

\blindtext[1]

\endgroup

\\begin{spacing}{1.618}
\\verb|\\baselineskip|=\\texttt{\\the\\baselineskip} (za pomocą \\verb|\\begin{spacing}{1.618})|

\blindtext[1]
\end{spacing}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Demonstrating+baselinestretch+calculations\&snip=%5Cdocumentclass%5B11pt%5D%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D25cm%2Cpaperwidth%3D16cm%2Ctextwidth%3D14cm%5D%7Bgeometry%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cusepackage%7Bblindtext%7D+%25+For+dummy+text.%0A%5Cbegin%7Bdocument%7D%0A%5Cbegingroup%0A%5Cdoublespacing%0A%5Cverb%7C%5Cbaselineskip%7C%3D%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D+%28via+%5Cverb%7C%5Cdoublespacing%29%7C%0A%0A%5Cblindtext%5B1%5D%0A%0A%5Cendgroup%0A%0A%5Cbegin%7Bspacing%7D%7B1.618%7D%0A%5Cverb%7C%5Cbaselineskip%7C%3D%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D+%28via+%5Cverb%7C%5Cbegin%7Bspacing%7D%7B1.618%7D%29%7C%0A%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bspacing%7D%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![demonstracja \\\baselinestretch](/files/359991eb3acaa2c9b5afd31053ec79fe5d7ce0f9)

Podobne obliczenia `\baselinestretch` wartości mają zastosowanie do innych rozmiarów czcionek i kombinacji interlinii, jak pokazano w poniższych tabelach:

![parametry setspace](/files/30ccc1cfdeef06ff4832183b926481cd94af06b4)

## Korzystanie z poleceń parametrów TeX/LaTeX

W poniższych sekcjach omówiono szereg poleceń związanych z odstępami/formatowaniem akapitów: niektóre z tych poleceń są *wbudowanych w* silnikami składu TeX, inne są makrami TeX/LaTeX. Polecenia wbudowane w silniki TeX są znane jako *prymitywów*, co oznacza, że są *fundamentalnym* i *nieredukowalne* ponieważ, w przeciwieństwie do makr, prymitywy nie są zbudowane z sekwencji innych poleceń.

W szczególności rozważymy szereg prymitywnych *polecenia parametrów* obsługiwanych przez wszystkie silniki TeX, w tym pdfTeX, XeTeX i LuaTeX. Polecenia parametrów, niezależnie od tego, czy dotyczą akapitów, służą do *pobierania bieżącej wartości* odpowiadającego parametru lub *ustawiania tego parametru na nową wartość*. Na przykład `\parskip` polecenie, prymityw, określa wartość parametru sterującego ilością białego miejsca wstawianego między dwa składane akapity.

Aby *pobrać* (tutaj: wyświetlić) bieżącą wartość `\parskip` należałoby napisać:

```latex
\\the\\parskip
```

Aby *set* bieżącą wartość `\parskip` na `1pt plus2pt` (elastyczny glue) można napisać coś takiego:

```latex
\\setlength{\\parskip}{1pt plus2pt}
```

Omówimy także kilka użytecznych TeX/LaTeX *makr*, poleceń wyższego poziomu zapisanych i zbudowanych z sekwencji składowych poleceń.

### Polecenia używane do odstępów między akapitami

Poniższych poleceń (prymitywów i makr) można używać do wpływania na odstępy między akapitami. Niektóre z nich omówiono bardziej szczegółowo; można do nich przejść, klikając łącze z nazwy polecenia.

#### Polecenia prymitywne

* [`**\\parindent**`](#parindent-tex-primitive): ilość wcięcia (białego miejsca) dodawanego do pierwszej linii akapitu.
* [`**\\parskip**`](#parskip-tex-primitive): ilość elastycznego białego miejsca („glue”) umieszczanego między akapitami.
* [`**\\rightskip**`](#leftskip-and-rightskip-tex-primitives): elastyczny odstęp (glue) wstawiany po prawej stronie każdej linii w akapicie.
* [`**\\leftskip**`](#leftskip-and-rightskip-tex-primitives): elastyczny odstęp (glue) wstawiany po lewej stronie każdej linii w akapicie.
* [`**\\baselineskip**`](#baselineskip-tex-primitive): wartość tego parametru pełni dwie funkcje:
  * ustawia pożądaną odległość między liniami bazowymi tekstu w akapicie;
  * jest używana do obliczania (zmiennej) ilości odstępu (glue) dodawanego między liniami w celu uzyskania pożądanej odległości między liniami bazowymi ([zobacz później w artykule](#how-the-space-glue-between-paragraph-lines-is-calculated)).
* [`**\\lineskiplimit**`](#lineskip-and-lineskiplimit-tex-primitives): parametr, którego wartość określa minimalną dopuszczalną odległość między dwiema sąsiednimi liniami akapitu.
* [`**\\lineskip**`](#lineskip-and-lineskiplimit-tex-primitives): ilość odstępu (glue) wstawiana między dwie linie w akapicie, jeśli obliczony `\baselineskip` glue spowodowałby, że linie byłyby zbyt blisko siebie.
* `**\\parfillskip**`: bardzo elastyczny glue dodawany na końcu ostatniej linii akapitu, aby „wypełnić ją” białym miejscem; dla przykładu wizualnego zobacz ilustrację w sekcji [*Wizualizacja innych rodzajów glue akapitowego*](#visualizing-other-types-of-paragraph-glue).

#### Polecenia makro

Poniższe polecenia makr TeX/LaTeX są często używane do modyfikowania odstępów między akapitami:

* [`**\\offinterlineskip**` i `**\\nointerlineskip**`](#offinterlineskipandnointerlineskip): polecenia, których można użyć do wyłączenia obliczania i wstawiania `\baselineskip` glue;
* [`**\\baselinestretch**`](#understanding-and-calculating-values-for-baselinestretch): polecenie przechowujące współczynnik liczbowy używany do obliczania wartości `\baselineskip` po wybraniu czcionki. Ma domyślną wartość 1;
* [`**\\linespread**`](#demonstrating-linespread): tego polecenia można użyć do zmiany bieżącej wartości `\baselinestretch`.

### Elastyczne odstępy (glue)

Silniki TeX osiągają efekty odstępów, także wewnątrz akapitów i między nimi, dzięki użyciu elastycznego białego miejsca zwanego *glue* które można rozciągać lub zmniejszać w zależności od wymaganej ilości miejsca. Jeśli chcesz poznać koncepcję glue w TeX, więcej szczegółów znajdziesz w następujących artykułach Overleaf:

* [Badanie pudełek niedopełnionych lub przepełnionych oraz obliczeń „badness”](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv)
* [Jak TeX oblicza ustawienia glue w \hbox](/latex/pl/artykuly-szczegolowe/24-how-tex-calculates-glue-settings-in-an-hbox.md)
* [Zrozumienie ostrzeżeń o pudełkach niedopełnionych i przepełnionych](/latex/pl/baza-wiedzy/138-understanding-underfull-and-overfull-box-warnings.md).

## Podstawy: polecenia parametrów i przykłady

W tej sekcji wyjaśniamy szereg poleceń parametrów związanych z akapitami i podajemy przykłady ich użycia.

### \\\parindent (TeX primitive)

To polecenie parametru ustawia ilość wcięcia (białego miejsca) dodawanego do pierwszej linii akapitu. Można je zmienić za pomocą polecenia LaTeX `\setlength` na przykład, aby wciąć akapity na `15pt` set `\parindent` na `15pt` należy napisać:

```latex
\\setlength{\\parindent}{15pt}
```

Zauważ, że:

* możesz zmienić `\parindent` wewnątrz grupy, zapewniając, że jego działanie jest ograniczone do akapitów w tej grupie;
* `\parindent` może być ujemne, powodując „wysunięcie” zamiast wcięcia;
* domyślnie LaTeX nie stosuje wcięcia w pierwszym akapicie po nagłówku sekcji dokumentu (`\section{...}` itp.).

Poniższy przykład demonstruje użycie `\parindent`.

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Utwórz polecenie przechowujące akapit tekstu
\\newcommand{\\testpar}{\\texttt{\\string\\parindent=\\the\\parindent\\ }Gdy \\TeX{} składa akapit, traktuje każdy pojedynczy znak jako 2D „pudełko” o określonej szerokości, wysokości i głębokości.\\par}
\begin{document}

% Ustaw \\parskip tak, aby umieścić 10pt między akapitami
\\setlength{\\parskip}{10pt}

% Ustaw wartość \\parindent na 0pt
\\setlength{\\parindent}{0pt}
\\testpar

% Ustaw wartość \\parindent na 10pt
\\setlength{\\parindent}{10pt}
\\testpar

% Ustaw \\parindent w grupie
{\\setlength{\\parindent}{50pt}\\testpar}

% Teraz \\parindent znów wynosi 10pt
\\testpar

% Tak, \\parindent może być ujemne
\\setlength{\\parindent}{-20pt}
\\testpar
\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+paragraph+indentation\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D8cm%5D%7Bgeometry%7D%0A%25+Create+a+command+to+hold+a+paragraph+of+text%0A%5Cnewcommand%7B%5Ctestpar%7D%7B%5Ctexttt%7B%5Cstring%5Cparindent%3D%5Cthe%5Cparindent%5C+%7DWhen+%5CTeX%7B%7D+typesets+a+paragraph+it+treats+each+individual+character+as+a+2D+%60%60box%27%27+with+a+specific+width%2C+height+and+depth.%5Cpar%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%25+Set+%5Cparskip+to+put+10pt+between+paragraphs%0A%5Csetlength%7B%5Cparskip%7D%7B10pt%7D%0A%0A%25+Set+the+value+of+%5Cparindent+to+0pt%0A%5Csetlength%7B%5Cparindent%7D%7B0pt%7D%0A%5Ctestpar%0A%0A%25+Set+the+value+of+%5Cparindent+to+10pt%0A%5Csetlength%7B%5Cparindent%7D%7B10pt%7D%0A%5Ctestpar%0A%0A%25+Set+%5Cparindent+in+a+group%0A%7B%5Csetlength%7B%5Cparindent%7D%7B50pt%7D%5Ctestpar%7D%0A%0A%25+Now+%5Cparindent+is+again+10pt%0A%5Ctestpar%0A%0A%25+Yes%2C+you+can+have+a+negative+%5Cparindent%0A%5Csetlength%7B%5Cparindent%7D%7B-20pt%7D%0A%5Ctestpar%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Używanie różnych wartości wcięcia akapitu w LaTeX](/files/f9c87f59aa57a9a1841be34b7dc87d0f7d60cf30)

### \\\parskip (TeX primitive)

Czytelność tekstu można poprawić, oddzielając akapity ilością białego miejsca, która będzie się różnić zależnie od założeń projektowych. TeX/LaTeX pozwalają użytkownikom kontrolować te odstępy między akapitami za pomocą `\parskip` polecenia parametru.

* **Rada z `parskip` pakietu**: Pakiet [pakietu parskip](https://ctan.org/pkg/parskip) zaleca, aby bezpośrednie modyfikowanie `\parskip` może „skutkować pionowymi odstępami w nieoczekiwanych miejscach” (w dokumencie LaTeX). `parskip` Pakiet stara się naprawić problemy z odstępami, które mogą wyniknąć ze zmian wartości `\parskip`—na przykład w spisie treści i środowiskach list. Zobacz także [`parskip` sekcję o pakiecie w tym artykule](#the-parskip-package).

Aby ręcznie ustawić bieżącą wartość `\parskip` użyj polecenia LaTeX `\setlength` na przykład, aby oddzielić akapity odstępem 3pt, możesz napisać:

```latex
\\setlength{\\parskip}{3pt}
```

Poniższy przykład demonstruje użycie `\parskip`:

```latex
\documentclass{article}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Utwórz polecenie przechowujące akapit tekstu
\\newcommand{\\testpar}{\\noindent Bieżąca wartość \\texttt{\\string\\parskip} to \\texttt{\\the\\parskip}. Gdy \\TeX{} składa akapit, traktuje każdy pojedynczy znak jako 2D~„pudełko” o określonej szerokości, wysokości i głębokości.\\par}
\begin{document}
\\testpar
% Ustaw \\parskip na 5pt
\\setlength{\\parskip}{5pt}\\testpar
% Ustaw parskip na 10pt
\\setlength{\\parskip}{10pt}\\testpar
% Ustaw \\parskip na 25pt (ale w grupie)
{\\setlength{\\parskip}{25pt}\\testpar}
% Koniec grupy, teraz \\parskip znów wynosi 10pt
\\testpar
% Tak, \\parskip może być ujemne
\\setlength{\\parskip}{-20pt}\\testpar
\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+parskip+settings\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D8cm%5D%7Bgeometry%7D%0A%25+Create+a+command+to+hold+a+paragraph+of+text%0A%5Cnewcommand%7B%5Ctestpar%7D%7B%5Cnoindent+The+current+value+of+%5Ctexttt%7B%5Cstring%5Cparskip%7D+is+%5Ctexttt%7B%5Cthe%5Cparskip%7D.+When+%5CTeX%7B%7D+typesets+a+paragraph+it+treats+each+individual+character+as+a+2D%7E%60%60box%27%27+with+a+specific+width%2C+height+and+depth.%5Cpar%7D%0A%5Cbegin%7Bdocument%7D%0A%5Ctestpar%0A%25+Set+%5Cparskip+to+5pt+%0A%5Csetlength%7B%5Cparskip%7D%7B5pt%7D%5Ctestpar%0A%25+Set+parskip+to+10pt%0A%5Csetlength%7B%5Cparskip%7D%7B10pt%7D%5Ctestpar%0A%25+Set+%5Cparskip+to+25pt+%28but+in+a+group%29%0A%7B%5Csetlength%7B%5Cparskip%7D%7B25pt%7D%5Ctestpar%7D%0A%25+Group+ends%2C+now+%5Cparskip+is+again+10pt%0A%5Ctestpar%0A%25+Yes%2C+you+can+have+a+negative+%5Cparskip%0A%5Csetlength%7B%5Cparskip%7D%7B-20pt%7D%5Ctestpar%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Demonstracja użycia \\\parskip w LaTeX](/files/9d188e34c6e02d53353b00c141968507dbb12495)

#### Elastyczny \\\parskip

Tradycyjnie, `\parskip` nie jest *stałą* wartością, co skutkowałoby taką samą ilością odstępu między wszystkimi akapitami. Zamiast tego, `\parskip` jest zwykle definiowane jako „elastyczna przestrzeń” (nazywana glue), która pozwala TeX-owi rozciągać lub zmniejszać odstęp między akapitami, pomagając dopasować treść do strony i znaleźć „dobre” miejsce na podział strony.

Aby uczynić `\parskip` elastycznym, należy zapisać go w postaci specyfikacji glue:

`\\setlength{\\parskip}{*fixed amount* **plus** *amount to stretch* **minus** *amount to shrink*}`

gdzie `**plus**` i `**minus**` jesteś *słowa kluczowe* używane przez TeX/LaTeX do oznaczenia *ilości do rozciągnięcia* lub *ilości do zmniejszenia* zawartej w specyfikacji glue. Artykuł Overleaf [*Badanie pudełek niedopełnionych lub przepełnionych oraz obliczeń „badness”*](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv) zawiera bardziej szczegółowe omówienie glue.

Na przykład, aby umożliwić `\parskip` zmienianie się od `3 + 1 = 4pt` i `3 — 1 = 2pt` można napisać

```latex
\\setlength{\\parskip}{3pt plus1pt minus1pt}
```

### \\\leftskip and \\\rightskip (TeX primitives)

Silniki TeX udostępniają dwa polecenia parametrów, które dodają odstęp (glue) po lewej i prawej stronie każdej linii w składanym akapicie. Jak wskazują ich nazwy:

* `\leftskip` wstawia odstęp (glue) po lewej stronie każdej linii akapitu;
* `\rightskip` wstawia odstęp (glue) po prawej stronie każdej linii akapitu.

Poniższe przykłady używają `\leftskip` i `\rightskip` do bezpośredniej modyfikacji wyrównania akapitu; jednak... zmiany wyrównania tekstu najlepiej zwykle osiąga się za pomocą odpowiednich środowisk lub pakietów LaTeX — na przykład zobacz [artykuł Overleaf o wyrównaniu tekstu](/latex/pl/formatowanie/06-text-alignment.md). Chociaż demonstrujemy działanie niektórych niskopoziomowych (prymitywnych) poleceń parametrów udostępnianych przez silniki TeX, zazwyczaj zaleca się używanie odpowiednich pakietów LaTeX wszędzie tam, gdzie to możliwe.

#### Ustawianie \\\leftskip na stałe i \\\rightskip jako elastycznego

Poniższy przykład generuje dwa akapity: pierwszy używa domyślnych wartości LaTeX dla `\leftskip` i `\rightskip` a drugi akapit jest składany z następującymi ustawieniami:

```latex
\\leftskip 10pt
\\rightskip 0pt plus 1 fill
```

Otwórz następujący projekt Overleaf, aby zobaczyć wynik:

```latex
\documentclass{article}
\\title{Drugi przykład leftskip i rightskip}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Ustaw wartość niektórych parametrów związanych z akapitami
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % Wygenerowany plik TeX, który definiuje makra
% \\mytextA i \\mytextB, z których każde zawiera tekst akapitu.
% Składamy akapit z domyślnymi wartościami \\leftskip i \\rightskip

\\mytextB

% Ustaw \\leftskip i \\rightskip na nowe wartości
\\leftskip 10pt
\\rightskip 0pt plus 1fill
\\vspace{8pt}

% Teraz ponownie składaj ten sam akapit
\\mytextB

\end{document}
```

&#x20;Otwórz ten przykład jako projekt LaTeX w Overleaf

Ten przykład generuje następujący wynik:

![Ustawianie glue \\\leftskip w LaTeX](/files/6f9ffc442e218ece00cbe3e909504b24656217ab)

Poniższa grafika jest opatrzoną komentarzami wersją drugiego akapitu wygenerowanego przez powyższy przykład. Ma na celu wyróżnienie i pokazanie ilości `\leftskip` i `\rightskip` glue wstawionych w liniach akapitu, wraz z `\parindent` miejscem na pierwszą linię:

![Ustawianie glue \\\leftskip w LaTeX](/files/86c4899035b4446f5d2a7dceccd012b66ec33868)

Zauważ, że `\leftskip` glue ma stały rozmiar (10pt), ale `\rightskip` glue rozciągnęło się, aby zapewnić dowolną ilość białego miejsca wymaganą do wypełnienia prawej strony każdej linii. Ta „elastyczność” wynika ze specyfikacji `\rightskip` która zawiera `plus 1 fill`—co zapewnia „nieskończenie rozciągliwą” formę glue.

#### Ustawianie \\\rightskip na stałe i \\\leftskip jako elastycznego

Poniższy przykład generuje dwa akapity: pierwszy używa domyślnych wartości LaTeX dla `\leftskip` i `\rightskip` a drugi akapit jest składany z następującymi ustawieniami:

```latex
\\leftskip 0pt plus 1 fill
\\rightskip 10pt
```

Otwórz następujący projekt Overleaf, aby zobaczyć wynik:

```latex
\documentclass{article}
\\title{Przykłady leftskip i rightskip}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Ustaw wartość niektórych parametrów związanych z akapitami
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % Wygenerowany plik TeX, który definiuje makra
% \\mytextA i \\mytextB, z których każde zawiera tekst akapitu.
% Składamy akapit z domyślnymi wartościami \\leftskip i \\rightskip

\\mytextB

% Ustaw \\leftskip i \\rightskip na nowe wartości
\\rightskip 10pt
\\leftskip 0pt plus 1fill
\\vspace{8pt}

% Teraz ponownie składaj ten sam akapit
\\mytextB

\end{document}
```

&#x20;Otwórz ten przykład jako projekt LaTeX w Overleaf

Ten przykład generuje następujący wynik:

![Ustawianie glue \\\rightskip w LaTeX](/files/f8eb5fef99dcbe83d49460a23ff1b73dc27e7667)

Poniższa grafika jest opatrzoną komentarzami wersją drugiego akapitu wygenerowanego przez powyższy przykład. Ma na celu wyróżnienie i pokazanie ilości `\leftskip` i `\rightskip` glue wstawionych w liniach akapitu, wraz z `\parindent` miejscem na pierwszą linię:

![Ustawianie glue \\\rightskip w LaTeX](/files/9dcc40726405009e7c9d12dc435c4d1d81241416)

Zauważ, że `\rightskip` glue ma stały rozmiar (10pt), ale `\leftskip` glue rozciągnęło się, aby zapewnić dowolną ilość białego miejsca wymaganą do wypełnienia lewej strony każdej linii. Ta „elastyczność” wynika ze specyfikacji `\leftskip` która zawiera `plus 1 fill`—co zapewnia „nieskończenie rozciągliwą” formę glue.

#### Ustawianie \\\leftskip i \\\rightskip na wartości elastyczne

Poniższy przykład generuje dwa akapity: pierwszy używa domyślnych wartości LaTeX dla `\leftskip` i `\rightskip` a drugi używa następujących, elastycznych ustawień glue:

```latex
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
```

Te ustawienia powodują wyśrodkowanie linii akapitu:

```latex
\documentclass{article}
\\title{Przykłady leftskip i rightskip}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight==16cm,paperwidth==12cm,textwidth=8cm]{geometry}
% Ustaw wartość niektórych parametrów związanych z akapitami
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % Wygenerowany plik TeX, który definiuje makra
% \\mytextA i \\mytextB, które definiują tekst dwóch akapitów
% Składamy akapit z domyślnymi wartościami \\leftskip i \\rightskip

\\mytextB

% Ustaw \\leftskip i \\rightskip na „bardzo elastyczne” ustawienia glue
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
\\vspace{20pt}

% Teraz ponownie składaj ten sam akapit
\\mytextB

\end{document}
```

&#x20;Otwórz ten przykład jako projekt LaTeX w Overleaf

Ten przykład generuje następujący wynik:

![Przykład pokazujący \\\leftskip i \\\rightskip](/files/2b540029ff62cce218bc6a419b65a03f04ee2180)

Poniższa grafika jest opatrzoną komentarzami wersją drugiego akapitu wygenerowanego przez powyższy przykład. Ma na celu wyróżnienie i pokazanie ilości `\leftskip` i `\rightskip` glue wstawionych w liniach akapitu, wraz z `\parindent` miejscem na pierwszą linię:

![Przykład pokazujący \\\leftskip i \\\rightskip](/files/cadb34b94a27536d603b00a298aa7746bf348984)

Zauważ, że oba `\leftskip` i `\rightskip` są określone jako `0pt plus 1fill` czyniąc je równie „nieskończenie elastycznymi”; w konsekwencji rozciągają się o tę samą wartość, co powoduje wyśrodkowanie składanych linii.

#### Ustawianie \\\leftskip i \\\rightskip w grupie

Poniższy przykład pokazuje, jak wprowadzać tymczasowe zmiany w `\leftskip` i `\rightskip` przez umieszczenie ich w grupie. W naszym przykładzie grupa jest tworzona przez `\begingroup`... `\endgroup`, jak pokazano w poniższym fragmencie kodu:

```latex
\begingroup
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
\\mytextB
\endgroup
```

Pierwszy akapit jest składany z użyciem „bardzo elastycznego” glue dla `\leftskip` i `\rightskip`:

```latex
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
```

natomiast drugi akapit używa domyślnych wartości LaTeX:

```latex
\documentclass{article}
\\title{Kolejny przykład leftskip i rightskip}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Ustaw wartość niektórych parametrów związanych z akapitami
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % Wygenerowany plik TeX, który definiuje makra
% \\mytextA i \\mytextB, które definiują tekst dwóch akapitów
% Tutaj zmieniamy \\leftskip i \\rightskip na „bardzo elastyczne” ustawienia glue
% wewnątrz grupy utworzonej przez \\begingroup ... \\endgroup

\begingroup
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
\\mytextB
\endgroup

% Teraz ponownie składamy ten sam akapit po zamknięciu grupy
% co powoduje, że \\leftskip i \\rightskip wracają do poprzednich wartości

\\vspace{20pt}
\\mytextB

\end{document}
```

&#x20;Otwórz ten przykład jako projekt LaTeX w Overleaf

Ten przykład generuje następujący wynik:

![Używanie \\\leftskip i \\\rightskip w grupie](/files/d5d6cb5578f8ac14848ff65e5ca3e60bf8d03ff2)

**Uwaga**: Ustawienia (skutki) `\leftskip` i `\rightskip` są ograniczone do akapitu wewnątrz grupy utworzonej przez `\begingroup`... `\endgroup`. Po zamknięciu grupy następny akapit jest składany przy użyciu domyślnych wartości LaTeX dla `\leftskip` i `\rightskip`.

### \\\baselineskip (TeX primitive)

Powszechnie przyjętą praktyką składu jest to, że linie tekstu w akapitach powinny być równomiernie rozmieszczone, z wyjątkiem sytuacji, gdy niektóre linie zawierają duże elementy, takie jak wzory matematyczne lub obraz, co uniemożliwia zachowanie stałych odstępów między liniami dla takich linii.

TeX/LaTeX udostępniają polecenia i mechanizmy, które pozwalają użytkownikom na pewien stopień kontroli nad odstępami między liniami. Jednym z takich poleceń jest `\baselineskip` które pobiera lub ustawia wartość parametru określającego preferowany odstęp między liniami (odległość od linii bazowej do linii bazowej) w składanym akapicie.

Aby wyświetlić bieżącą wartość `\baselineskip` możesz napisać

```latex
\\the\\baselineskip
```

Aby ustawić `\baselineskip` na jakąś `wartości` (wartość długości LaTeX, taka jak `pt`) możesz napisać

```latex
\\setlength{\\baselineskip}{value}
```

Na przykład, aby ustawić `\baselineskip` na `12pt` możesz napisać

```latex
\\setlength{\\baselineskip}{12pt}
```

Możemy zademonstrować rolę `\baselineskip` przy użyciu następującego (typowego) akapitu:

![Przykładowy akapit LaTeX](/files/e69af5aa3d69873c09cbb546a73cfc4464cb4498)

i dodając adnotacje pokazujące odległość między liniami bazowymi kontrolowaną przez `\baselineskip`:

![Przykładowy akapit LaTeX z adnotacjami pokazującymi odległości bazowe](/files/649de4b1ae3e4e06d8bfbb7dbcdbdf0be4780696)

Diagram pokazuje także międzywierszowy „glue”: obliczoną ilość białego miejsca dodawaną między liniami — omówimy to szerzej później w artykule.

#### \\\baselineskip i inne parametry

`\baselineskip` jest jednym z czterech podstawowych parametrów kontrolujących ilość odstępu wstawianego między liniami akapitu; pozostałe to:

* `\lineskip`
* `\lineskiplimit`
* `\prevdepth`

Później w artykule zbadamy [*jak te cztery parametry są używane*](#paragraph-structure-and-line-space-calculations) do obliczania wartości glue między liniami.

#### \\\baselineskip przykład (stały odstęp)

Poniższy przykład otwiera się w Overleaf, aby utworzyć projekt zawierający plik o nazwie `text.tex` który definiuje polecenia `\\mytextA` i `\\mytextB`—oba polecenia składają akapit. Dla wygody projekt Overleaf używa małego rozmiaru strony, ponieważ ułatwia to przygotowywanie grafik i obrazów na tę stronę pomocy.

```latex
\documentclass{article}
\\title{Demonstracja baselineskip}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Ustaw wartość niektórych parametrów związanych z akapitami (omówimy je)
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
% Ustaw wartość \\baselineskip --- zmień wartość, aby zobaczyć efekt
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % Wygenerowany plik TeX, który definiuje makra
% \\mytextA i \\mytextB, z których każde składa akapit

% Najpierw składa dwa akapity z domyślnym \\baselineskip
\\mytextA\\mytextB

% Teraz zmień \\baselineskip na większą wartość i składaj
% kolejny akapit
\\setlength{\\baselineskip}{24pt}
\\mytextA

\end{document}
```

&#x20;Otwórz ten przykład jako projekt LaTeX w Overleaf

Ten przykład generuje następujący wynik:

![Badanie baselineskip w TeX lub LaTeX](/files/368c089cc18deb4f570a951831f601056eac240a)

Akapit na stronie 2 ma szeroko rozmieszczone linie, ponieważ `\baselineskip` został ustawiony na 24pt.

#### \\\baselineskip przykład (elastyczny odstęp)

Poniższy przykład określa `\baselineskip` wartość, która ma niezwykle elastyczny (tzw. „nieskończony”) składnik rozciągania:

```latex
\\baselineskip=12pt plus1fil
```

Dzięki tej elastyczności białe miejsce między liniami akapitu może rozciągać się o dowolną ilość wymaganą do wypełnienia strony. Taka elastyczność sprawiłaby, że akapity miałyby bardzo różne odstępy między składowymi liniami tekstu, co mogłoby nie być estetyczne ani łatwe do odczytania.

```latex
\documentclass{article}
\usepackage{blindtext}
\\title{Demonstracja elastycznego \\texttt{\\string\\baselineskip}}
\author{Overleaf}
\\date{styczeń 2022}

\begin{document}

\maketitle
Nadamy \\verb|\\baselineskip| bardzo elastyczny składnik „rozciągania”, przypisując wartość \\texttt{12pt plus1fil}: \\verb|\\baselineskip=12pt plus1fil|.\\baselineskip=12pt plus1fil
\section{Wprowadzenie}
Dodaj akapit, który teraz rozciągnie się, aby wypełnić stronę. \\blindtext

\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Flexible+baselineskip+demo\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bblindtext%7D%0A%5Ctitle%7BFlexible+%5Ctexttt%7B%5Cstring%5Cbaselineskip%7D+demo%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cdate%7BJanuary+2022%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cmaketitle%0AWe%E2%80%99ll+provide+%5Cverb%7C%5Cbaselineskip%7C+with+a+very+flexible+%60%60stretch%27%27+component+by+assigning+the+value+%5Ctexttt%7B12pt+plus1fil%7D%3A+%5Cverb%7C%5Cbaselineskip%3D12pt+plus1fil%7C.%5Cbaselineskip%3D12pt+plus1fil+%0A%5Csection%7BIntroduction%7D%0AAdd+a+paragraph+that+will+now+stretch+to+fill+the+page.+%5Cblindtext%0A%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Demonstracja glue baselineskip z nieskończoną elastycznością](/files/7fd51d7f3e3a317e8fdf3740789ec8afd1a9919c)

**Kilka uwag o glue**

Niektóre z poniższych uwag pochodzą z artykułu Overleaf [analizowanie pudełek niedopełnionych lub przepełnionych i obliczeń badness](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv), powtórzone tutaj dla wygody.

Biały odstęp, który TeX wstawia między wierszami akapitu, `\baselineskip`, jest formą elastycznego odstępu zwaną *glue*. Wartość glue można określić trzema składnikami:

* a *stałą* wartość;
* wartość, którą może *rozciągnąć*;
* wartość, którą może *skurczyć*,

W konsekwencji `\baselineskip` wartość może być określona tak:

`\baselineskip`=*stała wartość* **plus** *ilości do rozciągnięcia* **minus** *ilości do zmniejszenia*

gdzie

* **plus** i **minus** są słowami kluczowymi rozumianymi przez silniki TeX-a;
* *stała wartość* jest określany jako *normalny składnik* glue (nazywany także *naturalną szerokość* składnikiem kleju);
* *ilości do rozciągnięcia* jest określany jako *składnik rozciągania* kleju;
* *ilości do zmniejszenia* jest określany jako *składnik kurczenia* kleju.

Ta *stała wartość* jest wymagany dla wszystkich wartości glue, ale *ilości do rozciągnięcia* i *ilości do zmniejszenia* oba są opcjonalne — jeśli któregokolwiek lub obu brakuje, zostają ustawione na wartość 0.

Zwykle `\baselineskip` glue jest określany za pomocą *stała wartość* tylko, składniki rozciągania i kurczenia mają wartość zero, w przeciwnym razie wiersze akapitu miałyby nieregularne (zmienne) odstępy, co mogłoby nie być estetyczne.

### \offinterlineskip i \nointerlineskip (makra)

Te makra są często używane, aby zapobiec wstawianiu kleju międzywierszowego między wierszami akapitu. Czytelnicy zainteresowani większą ilością szczegółów mogą przejść do odpowiednich sekcji artykułu, które wyjaśniają, jak działają te makra.

* **`\offinterlineskip`**: Zobacz sekcję artykułu [*Klej międzywierszowy o zerowym rozmiarze: \offinterlineskip*](#zero-sized-interline-glue-offinterlineskip).
* **`\nointerlineskip`**: Zobacz sekcję artykułu [*Zapobieganie klejowi międzywierszowemu: \prevdepth i \nointerlineskip*](#preventing-interline-glue-prevdepth-and-nointerlineskip).

## Struktura akapitu i obliczenia odstępów między wierszami

Korzystając z możliwości LuaTeX, można [przetworzyć składany akapit po złożeniu](https://www.overleaf.com/latex/examples/luatex-parsing-typeset-paragraphs/mzbpwxtjshsj) uwidocznić granice składowych znaków (glifów), wierszy i klejów, z których jest zbudowany. Zaczniemy od krótkiej sekwencji grafik, aby pomóc zwizualizować model „pudełek i kleju”, którego silniki TeX używają do składu tekstu zawartego w akapicie.

### Struktura akapitu

Gdy TeX składa akapit, traktuje poszczególne znaki jako miniaturowe pudełka, z których każde ma własną szerokość, wysokość i głębokość, a szerokości tych pudełek znaków są używane do obliczania optymalnych miejsc łamania wierszy. Ponadto znaki spacji zawarte w tekście i używane do oddzielania poszczególnych słów są przekształcane w formę elastycznego odstępu (glue), który zapewnia odstępy potrzebne do uzyskania każdego łamania wiersza.

Poniższa sekwencja 7 grafik pokazuje podstawowe składniki złożonego akapitu: różne rodzaje pudełek i glue. Pierwsza grafika pokazuje złożony akapit wraz z wersją opatrzoną adnotacjami, która wyróżnia różne elementy w obrębie akapitu. Jednak akapit z adnotacjami zawiera dużo informacji, więc kolejne grafiki izolują różne składniki, aby (miejmy nadzieję) ułatwić ich zrozumienie.

![Paragraphanatomy1b.png](/files/206852bee96f34c8f1c551b959c4a71a74541035)

* Następna grafika przedstawia wiersze akapitu jako szare pudełka oddzielone klejem reprezentowanym przez poziome zielone paski. Ten klej jest obliczany tak, aby zapewnić, że odległość od linii bazowej do linii bazowej jest równa (tj. wartości) `\baselineskip`:

![Paragraphanatomy2b.png](/files/d43298c3608587e7a212d05739eee7d7212c6dca)

* Następny obraz przedstawia złożone znaki jako pudełka: aby zwizualizować, jak silniki TeX przetwarzają znaki w celu tworzenia łamań wierszy:

![Paragraphanatomy3.png](/files/85e07391b2e8d60839aab7ccf850c6d5e45e221b)

* Następny obraz pokazuje pudełka w pudełkach: większe wiersze akapitu (pudełka) zawierające mniejsze pudełka (pojedyncze znaki):

![Paragraphanatomy5.png](/files/d9bc02e931e7d93573b9bf716a60237a269727ed)

* Następny obraz pokazuje ilość odstępu między słowami w każdym wierszu: te odstępy międzywyrazowe powstają przez przekształcenie znaków spacji w elastyczny glue, który jest rozciągany lub kurczony, aby uzyskać właściwą długość każdego wiersza tekstu. Zwróć uważnie uwagę, że rozmiar tych odstępów zmienia się z wiersza na wiersz:

![Paragraphanatomy4.png](/files/af44841ae9e826d569855bae0a3ff970de22a8ad)

* Następny obraz łączy pudełka znaków i odpowiadające im kleje (spacje) umieszczone między poszczególnymi słowami:

![Paragraphanatomy6.png](/files/62a62c44c894d8f15c1b4502173ea49c02c2f080)

### Wizualizacja innych rodzajów glue akapitowego

Poniższe akapity również zostały złożone i przetworzone przy użyciu LuaTeX, aby pokazać inne rodzaje kleju wewnątrz pary akapitów oraz między nimi. Zwróć uwagę, że `\rightskip` i `\leftskip` są oba ustawione na 0pt, więc nie są pokazane:

* **`\parskip`** klej (jasnoniebieski) umieszczony między dwoma złożonymi akapitami;
* poszczególne słowa są oddzielone przez ***klej międzywyrazowy*** (żółty) utworzony przez przekształcenie znaków spacji w danych wejściowych w białą przestrzeń o zmiennym rozmiarze (glue) w złożonym wyniku. Klej wynikający z odstępów międzywyrazowych jest rozciągany lub kurczony, aby uzyskać wizualnie przyjemne łamanie wierszy;
* **`\baselineskip`** klej (jasnozielony) umieszczony między wierszami — dokładna ilość `\baselineskip` kleju jest obliczana przy użyciu mechanizmu omówionego poniżej;
* **`\lineskip`** klej (czerwony) używany w drugim akapicie — z powodu niskiego pudełka zawartego w przedostatnim wierszu;
* **`\parfillskip`** klej (ciemnozielony) umieszczony na końcu ostatniego wiersza w każdym akapicie.

![](/files/cf1813306f5df080152f46139f4b99f20351e879)

### Radzenie sobie z głębszymi (lub wyższymi) wierszami (pudełkami)

Jak pokazują grafiki w [poprzedniej sekcji](#paragraph-structure), złożony akapit jest pionowym stosem „pudełek”, oddzielonych pewną ilością białej przestrzeni, którą TeX nazywa „glue”. W miarę przetwarzania akapitu i układania poszczególnych wierszy (pudełek) pionowa lista (stos) rośnie w *w dół* kierunku, ku dołowi strony. Chociaż TeX/LaTeX starają się zapewnić, aby wiersze akapitu były układane z liniami bazowymi oddzielonymi stałą odległością `\baselineskip`, nie zawsze jest to możliwe, ponieważ niektóre wiersze mogą mieć większą niż zwykle wysokość lub głębokość.

Wysokość i głębokość każdego wiersza akapitu są określane przez maksymalną odległość, o jaką zawartość tego wiersza wystaje ponad linię bazową lub poniżej niej; w konsekwencji akapity zawierające materiał o stosunkowo dużej wysokości lub głębokości, taki jak grafika w linii lub matematyka w linii, prawdopodobnie spowodują powstanie poszczególnych wierszy o odpowiednio dużych wysokościach i/lub głębokościach. Dla takich wierszy TeX/LaTeX mogą nie być w stanie ułożyć ich tak, aby ich linie bazowe były oddzielone od innych wierszy o `\baselineskip` wartość. Oczywiście TeX/LaTeX potrzebują „mechanizmu awaryjnego”, aby obsłużyć takie wiersze poprzez *obliczanie* odpowiedniej ilości odstępu do wstawienia między każdą parą wierszy dotkniętych dużą wysokością i/lub głębokością.

#### \lineskip i \lineskiplimit (prymitywy TeX-a)

Ten mechanizm awaryjny obejmuje polecenia parametrów `\lineskip` i `\lineskiplimit` wraz z trzecim parametrem zwanym `\prevdepth`. Czytelnicy zainteresowani dodatkowymi szczegółami mogą przejść do sekcji artykułu [*Jak jest obliczany odstęp (klej) między wierszami akapitu*](#how-the-space-glue-between-paragraph-lines-is-calculated).

Poniższy przykład składa pojedynczy akapit, którego ostatni wiersz ma stosunkowo dużą głębokość z powodu przesuniętego pola tekstowego (`\hbox`). Akapit jest składany przy użyciu tych ustawień:

```latex
\\setlength{\\baselineskip}{12pt}
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
```

Użyj linku poniżej poniższego kodu, aby otworzyć projekt Overleaf:

```latex
\documentclass{article}
% Użyj wygodnie małego rozmiaru strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% Ustaw kilka ważnych parametrów
\\setlength{\\baselineskip}{12pt}
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
% Plik wejściowy definiujący \testpar
\input testpar.tex
\title{Przykładowy akapit dla lineskip}
\begin{document}
\testpar % Makro utworzone w projekcie Overleaf
\end{document}
```

&#x20;[Otwórz ten przykład w Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%25+Use+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D8cm%5D%7Bgeometry%7D%0A%25+Set+some+important+parameters%0A%5Csetlength%7B%5Cbaselineskip%7D%7B12pt%7D%0A%5Csetlength%7B%5Clineskip%7D%7B3.5pt%7D%0A%5Csetlength%7B%5Clineskiplimit%7D%7B2pt%7D%0A%5Csetlength%7B%5Cparindent%7D%7B20pt%7D%0A%25+Input+file+defining+%5Ctestpar+%0A%5Cinput+testpar.tex%0A%5Ctitle%7BA+sample+paragraph+for+lineskip%7D%0A%5Cbegin%7Bdocument%7D%0A%5Ctestpar+%25+A+macro+created+in+the+Overleaf+project%0A%5Cend%7Bdocument%7D\&snip_name\[]=testpar.tex\&snip\[]=%5Cnewcommand%7B%5Ctestpar%7D%7B%5CTeX%7B%7D+uses+the+name+%60%60glue%27%27+to+describe+%60%60flexible+white+space%27%27+used+to+separate+any+typeset+item+which+can+appear+on+the+page.+For+example%2C+individual+words%2C+and+whole+lines%2C+within+a+typeset+paragraph+are+seperated+by+%60%60glue%27%27.+%5CTeX%7B%7D+engines+identify+%28give+a+name+to%29+different+types+of+glue+according+to+where+it+is+being+used.+For+example%2C+each+line+is+separated+by+%5Ctexttt%7B%5Cstring%5Cbaselineskip%7D+glue+or%2C+occasionally%2C+%5Ctexttt%7B%5Cstring%5Clineskip%7D+glue%2C+depending+on+%5CTeX%27s+calculations.+Let%27s+trigger+use+of+%5Ctexttt%7B%5Cstring%5Clineskip%7D+glue+by+adding+an+%5Ctexttt%7B%5Cstring%5Chbox%7D+which+has+a+large+depth+due+to+the+%5Ctexttt%7B%5Cstring%5Clower%7D+command%3B+for+example%2C+the+box%0A+%5Clower5pt%5Chbox%7BLOW+BOX%7D+will+cause+%5CTeX%7B%7D+to+insert+%5Ctexttt%7B%5Cstring%5Clineskip%7D+glue+instead+of+%5Ctexttt%7B%5Cstring%5Cbaselineskip%7D+glue.%5Cpar%7D\&main_document=main.tex)

Ten przykład generuje następujący wynik:

![Przykład demonstrujący klej \lineskip](/files/adb0db6e0ed80a1215f6804b57f18add7690feb4)

Poniższa grafika wykorzystuje wersję z adnotacjami akapitu wygenerowaną przez poprzedni projekt Overleaf. Tutaj przybliżamy widok, aby skupić się na ostatnim wierszu akapitu, wskazując użycie `\lineskip` kleju (pokazanego na czerwono) spowodowanego głębokością przesuniętego pola tekstowego:

![Obraz pokazujący klej \lineskip w TeX-u](/files/daf7baef9bad9dc0160cb638eb9ac4fa6dcdb3b3)

Ostatni wiersz tekstu akapitu ma większą niż zwykle głębokość, co uniemożliwia TeX-owi utrzymanie stałej odległości od linii bazowej do linii bazowej określonej przez wartość `\baselineskip` (12pt). Jak wskazują strzałki po prawej stronie grafiki, TeX/LaTeX starają się zapewnić stałą odległość (12pt) między parami wierszy — wartość `\baselineskip`. Jednak dla ostatniej pary wierszy TeX rozdzielił je o odległość większą niż 12pt i używa wartości `\lineskip` dla kleju międzywierszowego zamiast wartości obliczonej przy użyciu `\baselineskip`.

Poniższe sekcje badają i wyjaśniają szczegóły obliczeń TeX-a dotyczących wartości kleju międzywierszowego.

### Jak jest obliczany odstęp (klej) między wierszami akapitu

Na obecne potrzeby *bardzo krótko* wspomnimy o procesie składania stron przez TeX, choć w bardzo uproszczony sposób! Gdy TeX kończy składanie akapitu, uzupełniając dzielenie wyrazów i określając łamania wierszy, można myśleć o tych danych akapitu jako przechowywanych w tymczasowej lokalizacji pamięci. TeX musi następnie przenieść te dane akapitu, wiersz po wierszu, do nowej lokalizacji pamięci, która przechowuje materiał przeznaczony na bieżącą stronę wyjściową.

Gdy TeX przenosi dane akapitu, wiersz po wierszu, w istocie buduje pionowy stos wierszy (pudełek TeX-a), który rośnie *w dół* w kierunku dołu strony. Przenosząc wiersze akapitu na bieżącą stronę, TeX stara się zapewnić, aby te wiersze były rozmieszczone równomiernie, z jednolitym pionowym odstępem (od linii bazowej do linii bazowej) równym wartości `\baselineskip`. Gdy nowy wiersz zostaje przeniesiony na bieżącą stronę, silnik TeX tymczasowo zapisuje *głębokość* tego wiersza, ponieważ zostanie ona użyta do obliczenia ilości kleju międzywierszowego (białej przestrzeni) między tym wierszem a wierszem umieszczonym po nim.

#### Obliczenia rozmiaru kleju

Zacznijmy od podsumowania funkcji odstępów międzywierszowych zapewnianych przez silniki TeX:

* utrzymywanie stałej odległości między liniami bazowymi, równej `\baselineskip`;
* zapewnianie odstępu dla wszystkich wierszy o stosunkowo dużej wysokości lub głębokości;
* możliwość wyłączenia wstawiania kleju międzywierszowego — automatycznie lub pod kontrolą użytkownika. Na przykład:
  * silniki TeX automatycznie wyłączają wstawianie kleju międzywierszowego po regule w trybie pionowym;
  * makra `\offinterlineskip` i `\nointerlineskip` pozwalają użytkownikom tymczasowo wyłączyć wstawianie kleju międzywierszowego — te makra mają różne efekty, jak zobaczymy poniżej.

Decyzja, czy dodać klej międzywierszowy, a jeśli tak, to ile i jakiego rodzaju, przebiega następująco:

* Czy należy dodać klej międzywierszowy? TeX decyduje o tym, sprawdzając, czy *głębokość ostatniego dodanego wiersza* do listy jest mniejsza niż specjalna wartość `–1000pt` (punktów). Zwróć uwagę, że `–1000pt` jest arbitralną wartością „sentinel” używaną wewnętrznie przez silniki TeX-a.
  * **Uwaga**: Wartość „głębokości ostatniego dodanego wiersza”, którą TeX zapisuje wewnętrznie, jest również znana jako „poprzednia głębokość”. Silniki TeX udostępniają polecenie parametru `\prevdepth`—którego można w pewnych okolicznościach użyć do *pobrać* lub *set* ustawienia wartości „poprzedniej głębokości”. `\nointerlineskip` korzysta z `\prevdepth`.
* TeX sprawdza, czy `głębokość poprzedniego wiersza jest większa niż –1000pt`?
  * ***Tak, jest*** (należy dodać klej):
    * oblicz wartość Δ, gdzie Δ = \baselineskip – (głębokość poprzedniego wiersza) – (wysokość następnego wiersza)
    * porównaj Δ z wartością `\lineskiplimit`, parametru używanego do określenia minimalnej akceptowalnej odległości między dwoma wierszami, mierzonej jako odległość między dołem górnego wiersza a górą dolnego wiersza.
    * Jeśli Δ < `\lineskiplimit`:
      * wiersze są zbyt blisko, więc wstaw minimalny akceptowalny odstęp, którym jest `\lineskip`
    * Jeśli Δ >= `\lineskiplimit`:
      * wiersze nie są zbyt blisko, więc użyj Δ jako ilości kleju do wstawienia
  * ***Nie, nie jest*** (nie dodawaj kleju):
    * Dodaj następny wiersz (pudełko) bez wstawiania jakiegokolwiek kleju

Poniższa grafika podsumowuje proces kleju międzywierszowego:

![Jak TeX określa wartości kleju międzywierszowego](/files/53857e0748ffcf43ae0f31f5f3c22dffd882d966)

### Przykład obliczeń kleju międzywierszowego

W poniższym przykładzie zakładamy, że TeX/LaTeX używa następujących wartości parametrów poleceń:

```latex
\baselineskip=12pt
\lineskip=3.5pt
\lineskiplimit=2pt
```

Przyjrzymy się obliczeniu kleju międzywierszowego dla pierwszych dwóch wierszy tego akapitu:

![OLV2glue-calcs-step0.png](/files/fb2fe9924e1c8f97a18342e3f5988489f23681b3)

Na następnym obrazie silnik TeX przetworzył pierwszy wiersz akapitu i przeniósł go do pionowej listy, którą buduje. Śledzi głębokość tego wiersza (`d<sub>1</sub>`) która wynosi `2.1528` (punktów):

![OLV2glue-calcs-step1.png](/files/05c7436ba6a052574b1cc11edc6c92b564da0a91)

Następnie TeX jest gotowy dodać do budowanej listy drugi wiersz: ten wiersz ma wysokość (`h<sub>2</sub>`) która wynosi `6.9444` (punktów) i, nawiasem mówiąc, głębokość, `d<sub>2</sub>` o wartości `0` (punktów):

![OLV2glue-calcs-step2.png](/files/9c5ccbb30df4be1e265da8c20c846dd2cfeaa54c)

W tym momencie TeX musi obliczyć ilość odstępu (kleju, `g<sub>1</sub>`) do wstawienia między tymi dwoma wierszami:

![OLV2glue-calcs-step3.png](/files/29fd8cbd2ba72bce039e3fee23d9cf049d9670db)

Poniższy obraz pokazuje obliczenia kleju dla tej pary wierszy:

![OLV2glue-calcs-stepA3.png](/files/cb40566d4ac4170a1bc65a81cfc984fba6ea67b8)

Ostatni obraz pokazuje oba wiersze przeniesione na bieżącą stronę z obliczoną ilością kleju międzywierszowego umieszczoną między nimi:

![OLV2glue-calcs-step5.png](/files/0259c15efc5bde08e9d1e78dab33a2d65989ba64)

### Kolejny parametr: \prevdepth

Jak wspomniano powyżej, gdy TeX tworzy pionowy stos (listę) pudełek, przechowuje głębokość ostatniego pudełka dodanego do tej listy. Ta przechowywana wartość głębokości jest znana jako „poprzednia głębokość”, do której można uzyskać dostęp za pomocą polecenia parametru `\prevdepth`.

Ta `\prevdepth` polecenie można użyć ***tylko*** gdy TeX jest w trybie pionowym; tzn. między akapitami lub wewnątrz pionowych pudełek: `\vbox`, `\vtop` lub `\vcenter` (uwaga: `\vcenter` pudełek można używać tylko w trybie matematycznym).

`\prevdepth` zapewnia dostęp do odczytu i zapisu wartości „poprzedniej głębokości”:

* aby odczytać bieżącą wartość `\prevdepth` możesz zapisać:

```latex
\the\prevdepth
```

* aby ustawić bieżącą wartość `\prevdepth` na `jakąś wartość`, długość w punktach, mm itd., możesz zapisać:

```latex
\setlength{\prevdepth}{some value}
```

Jeśli spróbujesz użyć \verb`\prevdepth` w okolicznościach, do których nie został przeznaczony, na przykład wewnątrz akapitu lub w `\hbox` otrzymasz błąd

```latex
Improper \prevdepth.
```

z dodatkowymi informacjami mówiącymi, że można go używać tylko w trybie pionowym.

#### Zapobieganie klejowi międzywierszowemu: \prevdepth i \nointerlineskip

Jednym z zastosowań `\prevdepth` jest *uniemożliwienie* TeX-owi wykonywania obliczeń linii bazowej używanych do dodawania kleju międzywierszowego między elementami na pionowej liście, takimi jak wiersze akapitu. Używając `\prevdepth` do oznaczenia `głębokości poprzedniego wiersza` możemy przedstawić obliczenia kleju (pokazane powyżej) następująco:

```latex
if(\prevdepth > –1000pt)
{
     Δ = \baselineskip — \prevdepth — (wysokość bieżącego wiersza)

     if(Δ < \lineskiplimit)
       klej międzywierszowy = \lineskip
     else
       klej międzywierszowy = Δ
}
else
{
     Ułóż pudełko bez dodawania
     jakiegokolwiek kleju międzywierszowego
}
```

Wewnętrznie silniki TeX rozpoznają tak zwaną wartość „sentinel” `\prevdepth` której można użyć, aby wyłączyć obliczanie i dodawanie kleju międzywierszowego. Ta wartość sentynela to `–1000pt`, co widać w pierwszym wierszu powyższego pseudokodu:

```latex
if(\prevdepth > –1000pt)
```

TeX nie doda kleju międzywierszowego, chyba że `\prevdepth` jest większa niż `–1000pt`— co zapewnia mechanizm używany przez `\nointerlineskip` makro, aby zapobiec dodawaniu kleju bazowego między następną parą pudełek na pionowej liście.

`\nointerlineskip` ma definicję równoważną:

```latex
\def\nointerlineskip{
\prevdepth–1000pt
}
```

Zauważ, że `\nointerlineskip` zapewnia *jednorazową dezaktywację* obliczeń kleju międzywierszowego, ponieważ wartość `\prevdepth` jest stale aktualizowana w miarę dodawania nowych pudełek do bieżącej pionowej listy, jak pokazano w poniższym przykładzie:

```latex
\noindent Poniższe \verb|\hbox|y są przetwarzane, gdy \TeX{} jest w tak zwanym \textit{zewnętrznym trybie pionowym}. Po przetworzeniu (złożeniu) te pudełka są dopisywane do bieżącej strony i układane pionowo z wstawionym między nimi klejem międzywierszowym:

\hbox{j}
\hbox{p}
\hbox{g}

Teraz, bezpośrednio po pudełku \verb|\hbox{j}|, ustawiamy \verb|\prevdepth| na \texttt{-1000pt}, co uniemożliwia umieszczenie kleju międzywierszowego między pudełkami \verb|\hbox{j}| i \verb|\hbox{p}|:

\hbox{j}\setlength{\prevdepth}{-1000pt}
\hbox{p}
\hbox{g}

Zauważ, że klej międzywierszowy \textit{jest} umieszczany między pudełkami \verb|\hbox{p}| i \verb|\hbox{g}|, ponieważ wartość \verb|\prevdepth| jest aktualizowana po przetworzeniu \verb|\hbox{p}| i dodaniu go do listy: wartość \verb|\prevdepth| staje się głębokością pudełka \verb|\hbox{p}|. Gdy \verb|\hbox{g}| zostanie dodane do pionowej listy, wartość \verb|\prevdepth| nie jest już \texttt{-1000pt}; w konsekwencji można teraz dodać klej międzywierszowy.
```

&#x20;[Otwórz ten przykład w Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=One-shot+use+of+nointerlineskip\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D10cm%5D%7Bgeometry%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cbaselineskip%7D%7B14pt%7D%0A%5Csetlength%7B%5Cparskip%7D%7B1pt%7D%0A%5Csetlength%7B%5Cparindent%7D%7B0pt%7D%0A%25+A+convenience+macro+to+typeset+%5Cprevdepth+in+an+%5Chbox%2C+although+TeX+has+to+be%0A%25+in+a+vertical+mode+when+this+macro+is+used.%0A%5Cnoindent+The+following+%5Cverb%7C%5Chbox%7Ces+are+processed+when+%5CTeX%7B%7D+is+in+so-called+%5Ctextit%7Bouter+vertical+mode%7D.+After+processing+%28typesetting%29%2C+these+boxes+are+appended+to+the+current+page+and+stacked+vertically+with+interline+glue+inserted+between+them%3A%0A%0A%5Chbox%7Bj%7D%0A%5Chbox%7Bp%7D%0A%5Chbox%7Bg%7D%0A%0ANow%2C+immediately+after+after+the+box+%5Cverb%7C%5Chbox%7Bj%7D%7C%2C+we+set+%5Cverb%7C%5Cprevdepth%7C+to+%5Ctexttt%7B-1000pt%7D+which+prevents+interline+glue+being+placed+between+the+boxes+%5Cverb%7C%5Chbox%7Bj%7D%7C+and+%5Cverb%7C%5Chbox%7Bp%7D%7C%3A+%0A%0A%5Chbox%7Bj%7D%5Csetlength%7B%5Cprevdepth%7D%7B-1000pt%7D%0A%5Chbox%7Bp%7D%0A%5Chbox%7Bg%7D%0A%0AObserve+that+interline+glue+%5Ctextit%7Bis%7D+placed+between+the+boxes+%5Cverb%7C%5Chbox%7Bp%7D%7C+and+%5Cverb%7C%5Chbox%7Bg%7D%7C+because+the+value+of+%5Cverb%7C%5Cprevdepth%7C+is+updated+after+%5Cverb%7C%5Chbox%7Bp%7D%7C+is+processed+and+added+to+the+list%3A+the+value+of+%5Cverb%7C%5Cprevdepth%7C+becomes+the+depth+of+the+box+%5Cverb%7C%5Chbox%7Bp%7D%7C.+When+%5Cverb%7C%5Chbox%7Bg%7D%7C+is+added+to+the+vertical+list+the+value+of+%5Cverb%7C%5Cprevdepth%7C+is+no+longer+%5Ctexttt%7B-1000pt%7D%3B+consequently%2C+interline+glue+can+now+be+added.%0A%5Cend%7Bdocument%7D)

Ten przykład generuje następujący wynik:

![Przykład demonstrujący parametr \prevdepth w TeX-u](/files/0ecb1b903436433eaece024e2f290e20968ddb6d)

#### Klej międzywierszowy o zerowym rozmiarze: \offinterlineskip

Można usunąć całe odstępy międzywierszowe za pomocą polecenia makra `\nointerlineskip`, które ma definicję równoważną:

```latex
\def\offinterlineskip{%
\baselineskip=-1000pt
\lineskip=0pt
\lineskiplimit=\maxdimen
}
```

Zauważ, że `\maxdimen` to `16383.99998pt`, największa długość, jakiej TeX może użyć.

Poniższa grafika pokazuje podstawowe obliczenia kleju międzywierszowego oraz różne wartości parametrów używane przez makro `\nointerlineskip`:

![offinterlineskip](/files/1fb9f826be8d4bd5616d4ffe94bf9fb259cc4d80)

Poniższa grafika pokazuje fragment pseudokodu wynikający z podstawienia wartości makra do obliczeń kleju. Pokazuje, jak działa makro, ustawiając wartości dla `\nointerlineskip` makra do obliczeń kleju. Pokazuje, jak `\nointerlineskip` makro działa, ustawiając wartości dla `\baselineskip` i `\lineskiplimit` tak, aby klej międzywierszowy był zawsze `\lineskip` klejem o wartości `0pt`.

![offinterlineskip](/files/53b84caaa29355e13c9a51313c40d70b374e3708)

#### \offinterlineskip i niezerowy \lineskip

Ta `\nointerlineskip` makro ustawia `\lineskip` na zero, ale, jak pokazuje poniższy projekt Overleaf, możesz połączyć `\nointerlineskip` z niezerowymi wartościami `\lineskip` aby uzyskać efekty odstępów między wierszami.

```latex
\documentclass{article}
\title{Demonstracja niezerowego lineskip}
% Wybierz wygodnie mały rozmiar strony
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
\begin{document}

\offinterlineskip % To ustawia \lineskip na 0pt

\setlength{\lineskip}{5pt} % Chcemy niezerowy \lineskip

\\input text.tex % Wygenerowany plik TeX, który definiuje makra
% \mytextA i \mytextB, z których każdy składa akapit

\mytextA % Złóż akapit

% Teraz zmień \lineskip na elastyczną wartość glue i złóż
% kolejny akapit

\setlength{\lineskip}{5pt plus5pt minus5pt}

\\mytextA

\end{document}
```

&#x20;Otwórz ten przykład jako projekt LaTeX w Overleaf

Ten przykład generuje następujący wynik:

![Demonstrowanie makra \offinterlineskip w LaTeX-u](/files/7d8db07001da5520adb4afa9255ed08da5c1f9e6)

Możesz ograniczyć efekt(y) użycia `\offinterlineskip` i `\lineskip` (i innych poleceń odstępów), umieszczając je w grupie:

```latex
\begingroup
\offinterlineskip
\setlength{\lineskip}{5pt}
...tutaj twój(e) akapit(y)

\endgroup
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/pl/formatowanie/04-articles-how-to-change-paragraph-spacing-in-latex.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
