--=REKLAMA=--
Najlepiej korzystać z tego rozwiązania. Jest ono zalecane, ale w niektórych przypadkach może okazać się wygodniejsze drugie rozwiązanie, podane niżej.
Całkiem niedawno (maj 2007) samo oprogramowanie MediaWiki daje nam możliwość podświetlania składni, więc nie trzeba uciekać do JavaScriptowych trików. W najprostszy sposób wykorzystujemy w tym celu znacznik. <source lang="język"></source> np.
<source lang="python"> silnia = lambda x: x==0 or x*silnia(x-1) print silnia(10) </source>
Otrzymamy:
silnia = lambda x: x==0 or x*silnia(x-1) print silnia(10)
Powyższe rozwiązanie jest zalecane, ale w niektórych przypadkach można wykorzystać sposób podany niżej. Jednakże nie powinno się mieszać obydwu metod w jednym podręczniku.
Więcej na ten temat można poczytać na stronie MediaWiki.
Język | Skrót |
---|---|
C | c |
C++ | cpp |
JavaScript | js |
Pascal | pas |
PHP | php |
Python | py |
Chyba każdy się zgodzi, że odpowiednio podświetlony kod danego języka programowania ułatwia jego czytanie i zrozumienie. Niestety oprogramowanie Wikibooks nie daje nam takiej możliwości. Wcześniej podświetlanie składni można było uzyskać poprzez ręczne kolorowanie kodu, co było oczywiście dosyć niewygodne i uciążliwe. Na przykład wstawiając kod:
<font color=blue>#include</font> <iostream> <font color=blue>using namespace</font> std; <font color=green>int</font> main() { cout << "Hello World\n"; <font color=blue>return</font> 0; }
Otrzymujemy:
#include <iostream> using namespace std; int main() { cout << "Hello World\n"; return 0; }
Niestety takie podejście do kolorowania kodu jest dla większości jednak uciążliwe i Wikipisarz zamiast skupić się na treści za bardzo koncentruje się na wyglądzie, traci mnóstwo czasu na kolory, a jakość i czytelność kodu wiki jest raczej kiepska.
Na szczęście pomimo tego większość przeglądarek obsługuje Jave Script, dlatego też został stworzony skrypt koloryzujący składnię różnych języków programowania (kod można znaleźć w MediaWiki:Ext/Highlighting.js).
Aby skrypt się załadował w danym pliku należy umieścić w pewnym miejscu szablon {{podświetl}} i tylko tyle.
Teraz wystarczy wstawić blok pre lub tt i ustawić klasę, która została przeznaczona dla danego języka, a klasa jest postaci lang-(skrót języka). Na przykład, aby podświetlić kod C++, napiszemy:
<pre class="lang-cpp"> #include <iostream> using namespace std; int main() { cout << "Hello World\n"; return 0; } </pre>
I otrzymamy
#include <iostream> using namespace std; int main() { cout << "Hello World\n"; return 0; }
Natomiast pisząc:
<pre class="lang-py"> def silnia(a): if a == 0: return 1 return a*silnia(a-1) print silnia(30) </pre>
otrzymamy:
def silnia(a): if a == 0: return 1 return a*silnia(a-1) print silnia(30)
Z kolei, gdy napiszemy <tt class="lang-cpp">using namespace std;</tt> otrzymamy using namespace std;.
W tabeli na górze strony została wypisana liczba obsługiwanych języków przez skrypt i jaki posiada dany język skrót. Należy zaznaczyć, że wielkość liter ma znaczenia.
W większości przypadków na jednej stronie opisujemy tylko jeden język programowania. Skrypt także daje nam możliwość zdefiniowania domyślnego języka za pomocą {{podświetl||skrót języka}}. Na przykład, jeśli kod strony będzie wyglądał tak:
{{podświetl|python}} def dodaj(a, b): return a + b Instrukcja <tt>def</tt> służy do definiowania funkcji w Pythonie, podobnie jak <tt class="lang-js">function</tt> w Javie Script.
Otrzymamy:
def dodaj(a, b): return a + b
Instrukcja def służy do definiowania funkcji w Pythonie, podobnie jak function w Javie Script.
Załóżmy, że chcielibyśmy, aby pewna linia została w jakiś sposób została wyróżniona np. kolorem, czy pogrubieniem. W takim przypadku nie możemy skorzystać z bloku pre, ale za to istnieją dwa inne rozwiązania:
W przypadku, gdy zdefiniujemy domyślny język, możemy pisać tak jak zawsze, dodając dodatkowe wcięcia do kodu i formatując go np.
{{podświetl|py}} Kod źródłowy: def test(): print "OK" '''a = 10''' # bardzo ważne
Otrzymamy:
Kod źródłowy:
def test(): print "OK" a = 10 # bardzo ważne
W przypadku, gdy z jakichś powodów nie możemy skorzystać z pierwszego sposobu, korzystamy oczywiście z drugiego. Zamiast korzystać z pre korzystamy z tt tworząc jednocześnie wcięcia np.
<tt class="lang-py">def test(): print "OK" '''a = 10''' # bardzo ważne</tt> </div>
Wynik będzie identyczny z poprzednim.
Załóżmy, że zdefiniowaliśmy domyślny język i tworzymy sobie jakiś tekst preformatowany, który nie chcemy podświetlać. Co możemy zrobić? Wystarczy wszystko umieścić w <span>...</span> i po problemie np.
{{podświetl|cpp}} <span>Słowo void, czy return już dla nas nic nie znaczy.</span>
Otrzymamy:
Słowo void, czy return już dla nas nic nie znaczy.
Jeśli chcesz, aby została dodana obsługa pewnego języka, porozmawiaj o tym w Kawiarence. W przypadku znalezienia jakiś błędów w skrypcie, także powinieneś o tym tam napisać.
Poniżej znajduje się lista języków obsługiwanych przez GeSHi. Nazwa może być zastosowana jako parametr lang:
Kod | Język |
---|---|
abap |
ABAP |
actionscript |
ActionScript |
ada |
Ada |
apache |
Apache Log |
applescript |
AppleScript |
asm |
ASM |
asp |
Active Server Pages (ASP) |
autoit |
AutoIt |
bash |
Bash |
basic4gl |
Basic4GL |
blitzbasic |
Blitz BASIC |
bnf |
Backus-Naur Form |
c |
C |
c_mac |
C (Mac) |
caddcl |
AutoCAD DCL |
cadlisp |
AutoLISP |
cfdg |
CFDG |
cfm |
ColdFusion |
cpp-qt |
C++ (Qt toolkit) |
cpp |
C++ |
csharp |
C# |
css |
Cascading Style Sheets (CSS) |
d |
D |
delphi |
Delphi |
diff |
Diff |
div |
DIV |
dos |
DOS batch file |
dot |
DOT |
eiffel |
Eiffel |
fortran |
Fortran |
freebasic |
FreeBASIC |
genero |
Genero |
gml |
Game Maker Language (GML) |
groovy |
Groovy |
haskell |
Haskell |
html4strict |
HTML |
idl |
Uno IDL |
ini |
INI |
inno |
Inno |
io |
Io |
java |
Java |
java5 |
Java(TM) 2 Platform Standard Edition 5.0 |
javascript |
JavaScript |
latex |
LaTeX |
Code | Language |
---|---|
lisp |
Lisp |
lua |
Lua |
m68k |
Motorola 68000 Assembler |
matlab |
MATLAB M |
mirc |
mIRC scripting language |
mpasm |
Microchip Assembler |
mysql |
MySQL |
nsis |
Nullsoft Scriptable Install System (NSIS) |
objc |
Objective-C |
ocaml-brief |
OCaml |
ocaml |
OCaml |
oobas |
OpenOffice.org Basic |
oracle8 |
Oracle 8 SQL |
pascal |
Pascal |
per |
per |
perl |
Perl |
php-brief |
PHP |
php |
PHP |
plsql |
PL/SQL |
python |
Python |
qbasic |
QBasic/QuickBASIC |
rails |
Rails |
reg |
Windows Registry |
robots |
robots.txt |
ruby |
Ruby |
sas |
SAS |
scheme |
Scheme |
sdlbasic |
SdlBasic |
smalltalk |
Smalltalk |
smarty |
Smarty |
sql |
SQL |
tcl |
Tcl |
text |
Plain text |
thinbasic |
thinBasic |
tsql |
Transact-SQL |
vb |
Visual Basic |
vbnet |
Visual Basic .NET |
vhdl |
VHDL |
visualfoxpro |
Visual FoxPro |
winbatch |
Winbatch |
xml |
XML |
xpp |
X++ |
z80 |
ZiLOG Z80 Assembler |