Nápověda:Neočekávaná odřádkování a mezery
Neočekávaná odřádkování a mezery se na Wikipedii mohou vyskytnout neúmyslně jako nežádoucí výsledek kombinace například šablon, kdy do textu článku jsou navíc vložena i odřádkování. Ta sice jednotlivě nemají vliv, ale při souběhu dvou takových výskytů už je Wiki systém zinterpretuje a vygeneruje odřádkování nového odstavce.
Obsah
Začlenění do šablony
Při jakémkoli rozšiřování šablon existuje nebezpečí nechtěného přidání odřádkování. Zkušenosti wikipedistů říkají, že se mezi produkty dvou následných šablon v článcích objevují neočekávaná odřádkování, ačkoli by se měly výsledky těsně dotýkat a navazovat.
- Způsob vzniku nechtěného odřádkování, ukázka chybného příkladu:
<includeonly> [[Kategorie:Dummy]] </includeonly> <noinclude>
Je vidět, že se do stránek vkládá veškerý výsledek, tedy i odřádkování v kódu šablony: ta tedy mohou vznikat před jí vygenerovaným obsahem, v něm i za ním.
- Ukázka správného příkladu, bez vzniku nechtěného odřádkování:
<includeonly>[[Kategorie:Dummy]]</includeonly><noinclude>
Otestování nechtěných odřádkování
Zákeřnost nechtěných odřádkování spočívá ve dvou důvodech: Wiki jediné odřádkování ignoruje, to může vznikat třeba právě v šabloně, a interpretuje ho jen jako mezeru. Ovšem sejdou-li se dvě taková odřádkování za sebou, vzniká neočekávané odřádkování i v samotném článku. Takový souběh však zdaleka nemusí nastat vždy, ani ne často, a v článku se pak těžko dohledává příčina.
Druhá komplikace pro wikipedistu spočívá v nutnosti svou editaci v šabloně řádně otestovat: Například tím, že si jí zkusí použít. V úvahu připadají dva případy testů, kdy se šablona použije obklopena pokusným textem:
- na jediném řádku, pro triviální otestování případu, kdy by šablona vkládala hned dvě odřádkování najednou
- a i přísněji ověření případného vkládání byť i jediného přebytečného odřádkování, na hned po sobě následujících řádcích, kam už tedy jedno ze dvou odřádkování bylo vloženo úmyslně. Výsledky se sice mohou objevit nad sebou (například kvůli použití HTML prvku div uvnitř), ovšem mají se těsně dotýkat: Ani zde z použití šablony nesmí vzniknout nechtěné odřádkování.
V jednom řádku
pokusný text{{šablona-změněná}}pokusný text
s očekávaným výsledkem
pokusný textVýsledek z šablonYpokusný text
Naopak chybně by bylo obojí, jak s odřádkováním před
pokusný text
Výsledek z šablonYpokusný text
tak i za výsledkem.
pokusný textVýsledek z šablonY
pokusný text
Přes více řádků
pokusný text {{šablona-změněná}} pokusný text
s očekávaným výsledkem
pokusný text
Výsledek z šablonY
pokusný text
Naopak chybně by bylo obojí, jak s odřádkováním před
pokusný text
Výsledek z šablonY
pokusný text
tak i za výsledkem.
pokusný text
Výsledek z šablonY
pokusný text
Nechtěné mezery
V textu se mohou chybně objevovat i neočekávané mezery, například pokusný text Výsledek z šablonY pokusný text
. A ačkoli ty zpravidla neznamenají takový problém, jako dohledávání nechtěných odřádkování, i ony jsou chybou k opravení, nešlo-li o úmyslné chování šablony.
Předávání hodnot přes parametry
Už samotný způsob předání hodnoty do šablony je určující, zda se předaná hodnota otrimuje, či ne: Záleží na použití pojmenovaných nebo i číslovaných parametrů místo anonymních.
- Mezi těmito voláními šablony
"{{příkladová|1= text }}"
a"{{příkladová|1=text}}"
není ve výsledku žádný rozdíl: Oba případy dají stejný výsledek"text"
. Použitím jmenovaných parametrů se tedy předávaná hodnota textově trimuje, odstraňují se počáteční a koncové mezery. - Naproti tomu jiné dva případy
"{{příkladová| text }}"
a"{{příkladová|text}}"
už budou každý dávat jiný výsledek:" text "
proti"text"
, tedy věrnou kopii předané hodnoty! „If the parameter should not be trimmed it has to be unnamed...“ — (anglicky)meta:Help:Template#Empty vs. undefined
Je na rozhodnutí wikipedisty, jak má jeho šablona tyto mezery zpracovávat.
Ukázky předávání mezer
Kód | Výsledek |
---|---|
abc{{Seznam/link|link= X1 }}xyz
|
abcX1xyz |
abc{{Seznam/link|link=X1}}xyz
|
abcX1xyz |
abc{{Seznam/link|1= X1 }}xyz
|
abcX1xyz |
abc{{Seznam/link|1=X1}}xyz
|
abcX1xyz |
Kód | Výsledek |
---|---|
abc{{Seznam/link| X1 }}xyz
|
abc X1 xyz |
abc{{Seznam/link|X1}}xyz
|
abcX1xyz |
Text ve wikitabulce zalomený na více řádků
Bohužel, je hloupým chováním wikitabulek, tabulek vytvořených wikisyntaxí, že první řádek textu zalomeného v buňce na více řádků je ve wikitabulce odsazen vertikální mezerou. Tento jev se běžně projevuje například v infoboxech, při zadávání jedné delší hodnoty zalomeně přes vícero řádků.
Dodaná vertikální mezera vlastně není celý řádek, jde jen o nějaké zvětšené okraje, asi CSS vlastností margin.
Wikitabulka s vertikální mezerou u prvního řádku
text mezera pod pokračuje |
text mezera nad |
{|class="wikitable" align="right" width="120px" |text mezera pod<br /> pokračuje<br /> přes<br /> více<br /> řádků |}
{|class="wikitable" align="right" width="120px" | text mezera nad<br /> pokračuje<br /> přes<br /> více<br /> řádků |- |}
Wikitabulka, obejití
text pokračuje přes více řádků |
Jediný způsob, jak potíž obejít, je odebrat odřádkování ze zdrojového kódu a ponechat jen HTML lámání do výsledku:
{|class="wikitable" align="right" width="120px" |text<br />pokračuje<br />přes<br />více<br />řádků |}
Tím sice vyloučíme vznik vertikálních mezer u řádků textu, ale zase přijdeme o přehlednost zdrojového kódu.
Wikitabulka s vertikální mezerou u prvního i posledního řádku
Potíž nepomůže obejít ani obalení celého bloku textu do jediné hodnoty pomocí značky <div>
:
text vysoký |
text nízký
pokračuje |
{|class="wikitable" align="right" width="120px" |<div> text vysoký<br /> pokračuje<br /> přes<br /> více<br /> řádků </div> |}
{|class="wikitable" align="right" width="120px" |<div>text nízký<br /> pokračuje<br /> přes<br /> více<br /> řádků</div> |}
Obalením sice přehlednost zdrojového kódu zachováme, avšak neodstraníme vertikální mezery. Obalování do bloku navíc může selhat a způsobit dokonce dvě vertikální mezery... Je totiž třeba ve zdrojovém kódu odřádkovat na začátku i na konci. Obalení tedy nakonec nic nepřináší.
Wikitabulka s vertikální mezerou, závěr
Je-li záměrem mít vzhled tabulek pod kontrolou, mít je kompaktní a minimalizovat jejich výšku, nelze než zapisovat všechny jejich vstupy do jediného řádku. To se týká především Navboxů na spodcích článků, kde je vertikální rozměr podstatný.