Wikipédia:SyntaxHighlight

A Wikipédiából, a szabad enciklopédiából

Programkódok, leírókódok áttekinthető formázására használhatjuk a Pygments könyvtárra alapuló SyntaxHighlight kiegészítést. Ez egy rövid leírás, a teljes és naprakész információt a lap alján található linken éred el.

A SyntaxHighlight megtartja a sortöréseket, a behúzásokat, állandó szélességű karaktereket és az adott nyelvre optimalizált színes szintaxiskiemelést alkalmaz. Egyúttal egy <nowiki> címkének is megfelel, tehát a programkódba írt wikikód eredeti alakjában jelenik meg, és nem fejt ki hatást (például egy kategóriát beszúró program kódja nem fogja kategorizálni azt az oldalt, ahol a kód megjelenik, és kattintani is hiába próbálsz a kategóriára, mert nincs linkelve). Ha nem a megfelelő nyelvet választod (például egy HTML-kódhoz a "java" nyelvet adod meg), akkor nem történik hiba, csak éppen nem úgy fog színezni, ahogy az adott nyelvhez a legjobban illik. Ha egyáltalán nem adsz meg nyelvet, vagy egy nem támogatott nyelvet írsz oda, az viszont hibát fog eredményezni, és besorolja a lapodat a Lapok kódkiemelési hibákkal kategóriába.

A kiemeléshez a <syntaxhighlight lang=""> </syntaxhighlight> címkepárost használhatod, amelyet minden szerkesztőablak alatt a karakterbeszúró második sorában is megtalálsz (az „Alap” legördülőben válaszd a „Wikikód és HTML” opciót). A kiterjesztés régebbi verziója a <source lang=""> </source> címkepárost használta, ami elavult. Ha ilyet látsz, bátran cseréld le syntaxhighlight-ra! (A Lapok elavult source címkékkel kategória gyűjti ezeket.)

Egyszerű példa[szerkesztés]

A következő példa a Python (programozási nyelv) szócikkből van, egy természetes szám faktoriálisát számítja ki.

A kód, amit beírsz:
<syntaxhighlight lang="python">
n = int(input('Írj be egy egész számot, és kiírom a faktoriálisát: '))

if n < 0:
    raise ValueError('Nemnegatív egész számot kell megadni.')

factorial = 1
for i in range(2, n + 1):
    factorial *= i

print(factorial)
</syntaxhighlight>
Az eredménye:
n = int(input('Írj be egy egész számot, és kiírom a faktoriálisát: '))

if n < 0:
    raise ValueError('Nemnegatív egész számot kell megadni.')

factorial = 1
for i in range(2, n + 1):
    factorial *= i

print(factorial)

Paraméterek[szerkesztés]

lang
Kötelező. A támogatott nyelveket lásd lent.
line
1-gyel kezdődő sorszámozást ír a kódhoz. Az előző példa <syntaxhighlight lang="python" line> sorral kezdődő változata ezt az eredményt adja:
n = int(input('Írj be egy egész számot, és kiírom a faktoriálisát: '))

if n < 0:
    raise ValueError('Nemnegatív egész számot kell megadni.')

factorial = 1
for i in range(2, n + 1):
    factorial *= i

print(factorial)
start
A line paraméterrel együtt használva a kezdő sorszámot adja meg. Példa: <syntaxhighlight lang="python" line start="55">.
highlight
A vesszővel tagolt felsorolásként vagy kötőjeles intervallumként megadott számú sorokat eltérő háttérszínnel emeli ki. A számok a kód fizikai sorait jelentik, nincsenek tekintettel a start paraméterrel való átszámozásra. Példa: highlight="1,4,8", highlight="5-7".
Tegyük fel, hogy az előző kódot 55-től kezdődő sorszámozással akarod megjeleníteni, és kiemelni a tényleges feladatot végző 6-8. sorokat (vagyis ami nem az adatok be- és kivitele a kódban). A megoldás: <syntaxhighlight lang="python" line start="55" highlight="6-8">.
n = int(input('Írj be egy egész számot, és kiírom a faktoriálisát: '))

if n < 0:
    raise ValueError('Nemnegatív egész számot kell megadni.')

factorial = 1
for i in range(2, n + 1):
    factorial *= i

print(factorial)
inline style="white-space:nowrap"
HTML-szóhasználattal blokkszintűből szövegközivé alakítja a kódunkat. Akkor jó, ha egy rövidebb kódot a mondat közepébe akarunk beleírni. Az inline magában is működik, az utána illesztett stílus a sortörést akadályozza meg. Általában ezzel együtt célszerű használni. A következő példák közül az elsőben nem használtuk a style="white-space:nowrap" kiegészítést, a másodikban pedig igen. A monitor vagy kijelző felbontásától függően a két példa eltérően jelenhet meg; a másodikban biztosan egy sorban maradnak a kódok.
Az objektumorientált programozásban a stringeket nem minden programozási nyelvben hasonlíthatjuk össze olyan egyszerűen, mint a számokat: például a Pythonban tökéletesen működik a name == "Kovács János" módszer, a Javában azonban már a name.equals("Kovács János") kóddal kell vizsgálnunk az egyenlőséget.
Az objektumorientált programozásban a stringeket nem minden programozási nyelvben hasonlíthatjuk össze olyan egyszerűen, mint a számokat: például a Pythonban tökéletesen működik a name == "Kovács János" módszer, a Javában azonban már a name.equals("Kovács János") kóddal kell vizsgálnunk az egyenlőséget.
style
CSS-hez értők tetszőleges blokkszintű formázást adhatnak hozzá vele, például szegélyezést. (Vagyis a syntaxhighlight egy <div> elembe zárja a kódot.) A tabulátorméret ilyen módon nem állítható.

Néhány bonyolultabb és keveseket érdeklő lehetőségről a mw:Extension:SyntaxHighlight#Advanced szakaszban olvashatsz.

Támogatott nyelvek[szerkesztés]

A legtöbb esetben a lang paraméter értéke a használandó nyelv kisbetűsített neve. Néhánynak azonban van aliasa, rövid neve. Például a lang="python" helyett a lang="py" kódot is felismeri a szoftver.

Wikikód megjelenítéséhez a lang="wikitext" ajánlott.

A mw:Extension:SyntaxHighlight#Supported languages szakaszban funkció szerint csoportosítva találod a használható nyelveket (programnyelvek, sablonnyelvek, leíró nyelvek).

A https://pygments.org/languages/ oldalon ábécében sorolták fel a támogatott nyelveket. A harmadik oszlopban találod a használható nyelvkódokat.

Részletes és aktuális leírás[szerkesztés]