Nápověda:Neočekávaná odřádkování a mezery

Z AppleWikipedia
Verze z 7. 1. 2014, 10:40, kterou vytvořil Admin (diskuse | příspěvky) (Založena nová stránka s textem „{{Zkratka názvu stránky|WP:NOM}} '''Neočekávaná odřádkování a mezery''' se na Wikipedii mohou vyskytnout neúmyslně jako nežádoucí výsledek k…“)

(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání
Zkratka:
První přesměrování neexistuje!

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.

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

Předávání hodnot pomocí
pojmenovaného parametru
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
Předávání hodnot pomocí
anonymního parametru
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
přes
více
řádků

text mezera nad
pokračuje
přes
více
řádků

{|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ý
pokračuje
přes
více
řádků

text nízký

pokračuje
přes
více

řádků
{|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ý.