Just for (new) fun...
In questa carrellata troverai frammenti di codice assieme al corrispondente risultato scaricabile in formato PDF facendo click sull'immagine a fianco al codice. La collezione tenterà di darti una visione d'insieme su come funzionano i sistemi basati su TeX...
...ma non tentare di interpretare nel dettaglio il codice. Potresti incorrere in un'idea non corretta sulla sintassi. Durante la navigazione tra gli esempi, è molto meglio lavorare di intuizione e di curiosità e lasciare ad una buona guida --- tra quelle consigliate nella sezione Documentazione del sito per esempio --- il compito di presentarti il sistema nel modo corretto.
Strutture di base
L'elenco puntato
si costruisce in LaTeX con l'ambiente itemize in cui, comandi \item determinano i singoli paragrafi dell'elenco; è possibile anche annidare elenchi puntati annidando ambienti itemize. Alcuni pacchetti LaTeX come paralist, consentono di personalizzare queste importanti strutture
% nel preambolo
\usepackage{guit}
% nel documento
\begin{itemize}
\item studiare la Guida \GuIT;
\item iscriversi al gruppo perché;
\begin{itemize}
\item posso ricambiare l'aiuto ricevuto;
\item aiuterò la diffusione di \TeX{} \& C.
\end{itemize}
\item inoltre pacchetti \LaTeX{} come
\textsf{paralist};
\item consentono di personalizzare gli elenchi.
\end{itemize}
|
|
Tabelle
Una piccola grande tabella numerica (in LaTeX)
Formattazione automatica dei valori numerici ed uso dei filetti orizzontali corretti tipograficamente, ecco i punti di forza di questo esempio di tabella:
% nel preambolo
\usepackage[output-decimal-marker={,}]{siunitx}
\usepackage{booktabs}
% nel documento
\begin{tabular}{SSS[table-format=3]}
\toprule
{Profondità base} & {Spessore} & $V_\mathrm{s}$\\
\si{m} & \si{m} & \si{m/s}\\
\midrule
0.40 & 0.40 & 330\\
2.00 & 1.60 & 185\\
3.00 & 1.00 & 280\\
36.00 & 33.00 & 480\\
$\infty$ & $\infty$ & 920\\
\bottomrule
\end{tabular}
|
|
Matematica
Qualche formula in display (in LaTeX)
Le sofisticate capacità di composizione tipografica della matematica sono evidenziate in questo piccolo campionario di espressioni:
% nel preambolo
\usepackage{amsmath}
% nel documento
\[f(x) = \frac{1}{\sigma\sqrt{2\pi}}
\quad
e^{-\cfrac{(x-\mu)^2}{2\sigma^2}}
\]
\[
P(X)=\frac{n!}{X!(n-X)!}\pi^X(1-\pi)^{n-X},
\qquad
X=0,1,2,\dots,n
\]
\[
\Bigl\{
\Phi, \quad
\Psi, \quad
\Omega, \quad
\Xi, \quad
\models, \quad
\asymp, \quad
\approx, \quad
\neq, \quad
\geq, \quad
\bowtie, \quad
\gg
\Bigr\}
\]
\[
\rho(\nu, T) = \frac{8\pi h\nu^3}{c^3}\,
\frac{1}{e^{h\nu/kT}-1}
\]
|
|
Grafica
Figura con TikZ (di @Marchetto)
Un primo esempio con il pacchetto TikZ che consente di produrre ottimi risultati con un codice elegante e sofisticato.
% contributo di Marchetto
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw [ultra thick] (-8,0) -- (8,0);
\draw [ultra thick] (0,0) circle (8);
\foreach \i in {0,1,2,3}
\draw [ultra thick, red] (90*\i:8) arc (270+90*\i:180+90*\i:8);
\foreach \i in {0,1,...,7}
\draw [very thick, green] (45*\i:8) arc (270+45*\i:135+45*\i:3.3);
\foreach \i in {0,1,...,15}
\draw [thick, blue] (22.5*\i:8) arc (270+22.5*\i:112.5+22.5*\i:1.6);
\foreach \i in {0,1,...,31}
\draw [thin, red] (11.25*\i:8) arc (270+11.25*\i:101.25+11.25*\i:0.8);
\foreach \i in {0,1,...,63}
\draw [ultra thin, blue] (5.625*\i:8) arc (270+5.625*\i:95.625+5.625*\i:0.4);
\end{tikzpicture}
\end{document}
|
|
Figura con TikZ (di @Elrond)
Ancora TikZ all'opera con un esempio tratto da un lavoro illustrativo.
% contributo di Elrond
\documentclass[tikz]{standalone}
\usepackage[light]{kpfonts}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}
\coordinate (O1) at (0,0); % centro stella
\coordinate (O2) at (2.5,0); % centro pianeta
\draw[name path=S,thick] (O1) circle (2); % disco stella (r=2)
\draw[name path=P,thick] (O2) circle (1); % disco pianeta (r=1)
% individuo punti di intersezione fra dischi di pianeta e stella
\path[name intersections={of=S and P,by={A,B}}];
\draw[dashed] (O1) -- (A) -- (O2) -- node[below,sloped] {$r_2$} (B) --
node[above,sloped] {$r_1$} (O1);
\draw (A) -- (B);
\draw[->] ($(B) - (0,0.5)$) node[left,fill=white,inner sep=0.4] {$S_1$} to
[out=45,in=-80] (1.9,-0.1);
\draw[->] ($(A) + (0,0.5)$) node[right] {$S_2$}
to[out=180] (1.7,0.1);
\draw[red,thick] let \n1 = {acos((1-4+2.5*2.5)/(2*1*2.5))} in
($(O2) - cos(\n1)*(0.2,0) + sin(\n1)*(0,0.2)$) arc
(180-\n1:180+\n1:0.2);
\draw[->] ($(O2) + (-0.2,0.5)$) node[red,right] {$\theta_2$}
to[out=180,in=180] (2.3,0);
\draw[blue,thick] let \n2 = {acos((4-1+2.5*2.5)/(2*2*2.5))} in
($(O1) + cos(\n2)*(0.3,0) - sin(\n2)*(0,0.3)$) arc (-\n2:\n2:0.3);
\draw[->] ($(O1) + (0.5,-0.5)$) node[blue,below] {$\theta_1$} to[in=0] (0.3,0);
\end{tikzpicture}
\end{document}
|
|
Un albero frattale (in METAPOST con ConTeXt mkiv)
Disegnare programmando in METAPOST è immediato utilizzando il nuovo formato ConTeXt mkiv. Questo esempio di albero frattale è composto da 1023 rami. Potete divertirvi a cambiare i parametri geometrici per ottenere il vostro albero personale.
\startMPpage[offset=5pt]
% instanziamo le costanti
numeric f, alpha, lw;
% fattore di riduzione
f := 0.75;
% angolo tra i rami
alpha := 40;
% spessore iniziale
lw := 12;
% funzione ricorsiva
vardef dotree(expr A, B, s, level)=
save C, sx, dx, lw;
pair C, sx, dx;
numeric lw;
if level > 0:
draw A -- B
withpen pencircle scaled s
withcolor (1/level)*green;
C := f*(B-A) + B;
sx := C rotatedabout(B,-alpha/2);
dx := C rotatedabout(B, alpha/2);
lw := s*f;
dotree(B,sx, lw, level-1);
dotree(B,dx, lw, level-1);
fi;
enddef;
dotree((5,5), (12,80), lw, 10);
\stopMPpage
|
|
Programmazione
Ripetere n volte lo stesso testo (in TeX, in LaTeX, in LuaTeX ed in LaTeX3)
La programmazione in TeX è assai peculiare. In questo linguaggio sono stati costruiti LaTeX e ConTeXt, ma utilizzarlo richiede grande competenza. In questo esempio un testo viene ripetuto n volte utilizzando un contatore ed un ciclo. Il codice TeX è completo ed è sufficiente compilarlo con pdftex.
Per confronto, accanto alla versione TeX del codice, compare quella in LaTeX e quella in LuaTeX, che potrebbe far girare anche la versione TeX, e quella in LaTeX3 che non è solamente la prossima versione di LaTeX ma è una nuova piattaforma di sviluppo completamente riprogettata.
%%% versione TeX
\newcount\i
\def\ripeti#1#2{%
\i=0
\loop\ifnum\i<#2
\advance\i by 1
\the\i\ --- #1\endgraf
\repeat
}
\ripeti{Viva \TeX}{100}
\bye
%%% versione LaTeX
% nel preambolo
\newcounter{icount}
\makeatletter
\newcommand\ripeti[2]{%
\setcounter{icount}{0}%
\@whilenum{\value{icount}<#2}\do{%
\stepcounter{icount} \theicount\ --- #1\par}}
\makeatother
% nel corpo del documento
\ripeti{Viva \LaTeX}{100}
%%% versione LuaTeX
\def\ripeti#1#2{%
\def\tmp{#1}
\directlua{
local s = " --- \string\\tmp\string\\par"
for i=1,#2 do
tex.sprint(i..s)
end
}}
\ripeti{Viva Lua\TeX}{100}
\bye
%%% versione LaTeX3
\ExplSyntaxOn \NewDocumentCommand{\vivaLatexTre}{} { \vl_repeat: }
\cs_new_protected:Nn \vl_repeat: { \int_step_inline:nnnn { 1 }{ 1 }{ 100 } { ##1~--~Viva~\LaTeX3\par } } \ExplSyntaxOff
% all'interno del documento \vivaLatexTre
|
|
Ciao!