Hilfe:syntaxhighlight
Vorlage:Hinweisbaustein{{#ifeq: 12 | 0 | Vorlage:Standardbaustein}}{{#ifeq:beschäftigt sich mit der Darstellung von Quellcodes in der Seite. Zur Bearbeitung von Wikitext siehe Hilfe:Wikisyntax/Hervorhebung.|-|}}
{{#ifeq:12|12|{{#invoke:PageTree|subpages|Hilfe:!|subpager=Subpage}}}}
Syntaxhighlight („Syntaxhervorhebung“) ist eine Erweiterung der MediaWiki-Software zur Darstellung von Programm-Quelltexten auf Wiki-Seiten. Die Quelltexte werden ihrer Syntax entsprechend farblich dargestellt.<ref name="vorschau" /> Im Dunkelmodus werden stark abweichende Farben angezeigt (Beispiel: diese Hilfeseite).
Syntax
Basis-Syntax zur Erstellung von Quelltexten: <syntaxhighlight lang="wikitext" style="margin-left:2em">Vorlage:Zeichen*syntaxhighlight lang="php"> <?php
echo "Hallo Welt!";
?> Vorlage:Zeichen*/syntaxhighlight> </syntaxhighlight>
Ausgabe: <syntaxhighlight lang="php" style="overflow:auto"> <?php
echo "Hallo Welt!";
?> </syntaxhighlight>
Hinzu kommt die Angabe optionaler Parameter.
Kopiervorlage
<syntaxhighlight lang="wikitext" style="margin-left:2em" copy="1">Vorlage:Zeichen*syntaxhighlight lang=""> Vorlage:Zeichen*/syntaxhighlight> </syntaxhighlight>
{{#invoke:Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}} <source>
Zunächst hatte das Element <source> geheißen; bis 2009 war dies das bevorzugte Tag. Nachdem in HTML5 ein Multimedia-Element gleichen Namens eingeführt worden war, wurde die Präferenz getauscht. Weil <source> im dargestellten HTML-Beispiel vorkommen könnte, sollte nur noch das kollisionsfreie <syntaxhighlight> verwendet werden. Die deutschsprachige Wikipedia hat <source> seit Jahren eliminiert. Inzwischen ist dieses Element vollständig weggefallen, eine fälschliche Verwendung wird in eine Wartungskategorie eingetragen.
Parameter
Die Schreibrichtung des Codes ist immer explizit von links nach rechts, auch wenn eingebunden in einen Textbereich, der von rechts nach links (englisch: right to left, RTL) schreibt.
Die Angabe von lang ist Pflichtparameter. Optional gibt es außerdem:
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
inline <syntaxhighlight lang="css" inline>- Damit kann formatierter Computercode innerhalb eines Absatzes erzeugt werden. Beispiel: „Dies ist ein Test um zu zeigen, dass beispielsweise CSS-Code <syntaxhighlight inline lang="css">table {display:none;}</syntaxhighlight> inline dargestellt werden kann.“
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
highlight <syntaxhighlight lang="php" highlight="1,3-5,8" line>- Die Zeilen 1, 3 bis 5 und 8 werden hellgelb unterlegt.
<syntaxhighlight line highlight="1,3-5,8" lang="php" style="overflow:auto"> <?php
echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!";
?> </syntaxhighlight>
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
line <syntaxhighlight lang="php" line>- Die Zeilen werden durchnummeriert.
<syntaxhighlight line lang="php"> <?php
echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!"; echo "Hallo Welt!";
?> </syntaxhighlight> Die GeSHi-Funktionalität, jede fünfte Zeilennummer hervorzuheben, war 2016 noch nicht wiederhergestellt worden.
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
start <syntaxhighlight lang="php" start="10" line highlight="2">- Die Zeilen werden durchnummeriert, die Zeilenzählung beginnt bei 10.
<syntaxhighlight line start="10" lang="php" highlight="2"> <?php
echo "Hallo Welt!";
?>
</syntaxhighlight>
Kann gemeinsam mit highlight verwendet werden, jedoch wird die erste sichtbare Zeile als highlight=1 gezählt unabhängig von der start-Nummerierung.
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
copy <syntaxhighlight lang="php" copy>- Am rechten Rand wird ein Button zum Kopieren des Codes in die Zwischenablage angezeigt.
<syntaxhighlight lang="php" copy> <?php
echo "Hallo Welt!";
?> </syntaxhighlight>
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
style <syntaxhighlight style="margin-left: 6em;" lang="html">- Standard-Attribut in HTML.
- Beispiel: Hier, um einen ganzen Block entsprechend dem Kontext um
6emeinzurücken:
- Beispiel: Hier, um einen ganzen Block entsprechend dem Kontext um
<syntaxhighlight style="margin-left: 6em;" lang="html">
- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
enclose <syntaxhighlight enclose="none" lang="css">- Veralteter Parameter, der als
enclose="none"gerade deminlineentsprach. enclose=konnte früher noch weitere Werte annehmen (etwa"div"), die heute keine Bedeutung mehr haben.- {{#invoke
- Vorlage:Anker|f |errCat=Wikipedia:Vorlagenfehler/Vorlage:Anker |errHide=1}}
strict - Mit der Zuweisung
strict="1"konnte die zugrundeliegende Software angewiesen werden, die Programmiersprache standardgemäß auszulegen, falls dafür eine gesonderte Definition verfügbar ist. Unter Pygments ist dies aber vermutlich nicht mehr wirksam.
Sprachen
Unterstützte Sprachen
Die folgenden Sprachen werden von dieser Erweiterung unterstützt (Auszug):<ref>Die aktuelle Liste ist immer bei der Originaldokumentation</ref><ref>Bei Dialekten und Varianten wird der gleiche optische Effekt meist auch mit der Stamm-Sprache erreicht.</ref>
Unter Pygments zurzeit nicht mehr unterstützt
Die nachstehenden Codes gab es mit GeSHi, nicht mehr mit Pygments:
| Kürzel | Sprache |
|---|---|
4cs |
4CS |
algol68 |
Algol 68 |
arm |
Arm-Architektur |
apt_sources |
Apt sources |
asp |
ASP |
autoconf |
Autoconf |
avisynth |
AviSynth |
caddcl |
AutoCAD DCL (en) |
cil |
CIL |
cuesheet |
Cuesheet |
dcl |
Dialog Control Language (en) |
dcs |
Data Conversion System |
dos |
Stapelverarbeitungsdatei |
ecmascript |
JavaScript |
epc |
Enerscript |
f1 |
Formula One |
falcon |
Falcon (en) |
fo |
FO |
freebasic |
FreeBASIC |
freeswitch |
FreeSWITCH en |
gambas |
Gambas |
gdb |
GDB |
genie |
Genie (en) |
gettext |
GNU gettext |
gml |
GML |
gwbasic |
GW-BASIC |
| Kürzel | Sprache |
|---|---|
hicest |
HicEst |
hq9plus |
HQ9+ |
html4strict html5 |
HTML |
inno |
Inno Setup |
intercal |
INTERCAL |
kixtart |
KiXtart |
klonec |
Klone C |
klonecpp |
Klone C++ |
java5 |
Java |
jquery |
JavaScript |
lb |
Liberty Basic |
locobasic |
Locomotive BASIC |
ldif |
LDAP DIF |
lolcode |
LOLCODE (en) |
lotusformulas |
Formula language (en) |
lotusscript |
LotusScript |
lscript |
LScript |
lsl2 |
LSL |
magiksf |
magiks (en) |
mirc |
mIRC |
mmix |
MMIX |
modula3 |
Modula-3 |
nagios |
Nagios |
oberon2 |
Oberon |
objeck |
Objeck |
oracle8 oracle11 |
Oracle 8 Oracle 11 |
| Kürzel | Sprache |
|---|---|
oxygene |
Oxygene |
parigp |
PARI/GP (en) |
pcre |
Perl CRE |
per |
per |
pf |
PF |
pixelbender |
Adobe Pixel Bender |
pli |
PL/I |
plsql |
PL/SQL |
powerbuilder |
PowerBuilder |
proftpd |
ProFTPD |
providex |
ProvideX |
purebasic |
PureBasic |
q |
Q (en) |
reg |
RegDB |
robots |
Robots Exclusion Standard |
rsplus rspluse |
S mit R |
stonescript |
StoneScript, Skriptsprache für ShiVa |
thinbasic |
ThinBasic |
tls |
Transport Layer Security |
uscript |
UnrealScript |
visualfoxpro |
Microsoft Visual FoxPro |
vedit |
VEDIT |
whitespace |
Whitespace |
whois |
Whois-Protokoll |
z80 |
Zilog Z80 |
Anpassungen
Einzelne Verwendung
Es kann über den Parameter style= die aktuelle Einbindung angepasst werden, etwa Rahmen oder Einrückung.
- Seit Mitte 2012<ref name="pre" /> werden die Blöcke nicht mehr als
<div>eingefügt, sondern (wenn nicht mitinlinemarkiert) als<pre>mit dem hier standardmäßig vorgesehenen Rahmen.- Das ist bei einem mehrzeiligen Block sinnvoll; bei nur ein oder zwei Zeilen kann dies aber störend wirken.
style="border: none; padding: 0;"
reduziert die Dekoration weitestmöglich.
- Seit 2015 ist beim
inline-Style (und ganz allgemein) der Zeilenumbruch erlaubt; das umrahmte Feld eignet sich aber nicht dazu, auf mehrere Zeilen verteilt zu werden, und insbesondere bei Assembler-Sprachen kann das Einpassen längerer Zeilen in die momentane Bildschirmbreite sehr störend sein.style="white-space:nowrap"verhindert das.
Seit Mitte 2015 werden nur noch die Elemente <pre> und <code> ausgeliefert.
Benutzer
Zu benutzerspezifischen Anpassungen siehe Skin/CSS.
- Ein interessantes Feature unter pygments; kann aber sehr anstrengend werden – die nachfolgende CSS-Sequenz macht auf Syntaxfehler aufmerksam:
<syntaxhighlight lang="css" style="margin-left:2em"> .mw-highlight .err {
border: #FF0000 1px solid;
} </syntaxhighlight>
Mediawiki
Weltweit einheitlich wird angepasst:
- Vorlage:Phab – Dekoration der einzelnen Syntaxkonstrukte (Kommentar, Operator, Zeichenkette etc.)
- Vorlage:Phab – Darstellung des Codes im Kontext der Wiki-Seite (Einrückung, Hervorhebungen)
Benutzer können nach diesem Vorbild ihre eigenen Gewohnheiten wirken lassen.
Vorlagenprogrammierung
Bei der Vorlagenprogrammierung mittels #tag: ist auf die Reihenfolge der Parameter zu achten. Es muss zwingend als erster Parameter der Content übergeben werden. Anschließend können die Angaben zur Sprache und dem umschließenden HTML-Tag erfolgen. Zudem dürfen keine Zeilenumbrüche zwischen den einzelnen Parametern enthalten sein.
<syntaxhighlight lang="wikitext" style="margin-left:2em">
<syntaxhighlight lang="{{#if:|{{{language}}}|diff}}">{{{code}}}</syntaxhighlight>
</syntaxhighlight>
Anschließend kann eine so entworfene Vorlage mit den Parametern <syntaxhighlight lang="wikitext" style="margin-left:2em"> Vorlage:Vorlagenname </syntaxhighlight> eingebunden werden. Ein Beispiel für eine solche Verwendung ist die Vorlage „Patch“.
- Des Weiteren ist zu beachten, dass der Parameter
codeselbst direkt kein Pipezeichen enthalten darf (wie immer in der Vorlagenprogrammierung), dieses muss dann ggf. durch ein{{!}}ersetzt werden (Beispiel).
Der Code kann auch aus einer vollständigen Seite eingebunden werden: <syntaxhighlight lang="wikitext" style="margin-left:2em"> <syntaxhighlight lang="lua"> Vorlage:Modul:Hello </syntaxhighlight> </syntaxhighlight> liefert <syntaxhighlight lang="lua"> Vorlage:Modul:Hello </syntaxhighlight>
Wartung
Seiten mit nicht erkanntem Sprachcode oder anderen ungültigen Werten werden in der Kategorie:Wikipedia:Seite mit Syntaxhervorhebungsfehlern aufgelistet.
Sie werden über MediaWiki:Syntaxhighlight-error-category, MediaWiki:Syntaxhighlight-source-category und MediaWiki:Syntaxhighlight-enclose-category definiert.
GeSHi
Bis zum 25. Juni 2015 wurde das Paket GeSHi benutzt, seitdem pygments.
Um nicht alle Pfade und Definitionen und Bezeichner umstellen zu müssen, nennt sich die Erweiterung aber weiterhin „GeSHi“, und Identifikatoren behalten diesen Namensbestandteil.
Die Umstellung wurde erforderlich, weil es keine Upstream-Wartung und Pflege bei GeSHi mehr gab.
Vorlage:Hilfe/Weitere Informationen
Anmerkungen
<references> <ref name="pre"> Vorlage:Phab, rev:113190 </ref> <ref name="vorschau"> Falls du in deinen Einstellungen die Option Vorschau ohne Neuladen der Seite anzeigen ausgewählt hast, wird Syntaxhighlight in der Vorschau einer Seite nicht angezeigt. Sie muss dann gespeichert werden, um sichtbar zu sein. </ref> </references>