Wikipédia:SyntaxHighlight
Ezen az oldalon egy technikai leírást olvashatsz a Wikipédia szerkesztéséről. Tartsd szem előtt, hogy nem minden ajánlott, ami technikailag megvalósítható! |
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 astyle="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 aname.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 aname.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.