xref: /OK3568_Linux_fs/kernel/Documentation/translations/it_IT/doc-guide/sphinx.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. include:: ../disclaimer-ita.rst
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun.. note:: Per leggere la documentazione originale in inglese:
4*4882a593Smuzhiyun	  :ref:`Documentation/doc-guide/index.rst <doc_guide>`
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun.. _it_sphinxdoc:
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunIntroduzione
9*4882a593Smuzhiyun============
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunIl kernel Linux usa `Sphinx`_ per la generazione della documentazione a partire
12*4882a593Smuzhiyundai file `reStructuredText`_ che si trovano nella cartella ``Documentation``.
13*4882a593SmuzhiyunPer generare la documentazione in HTML o PDF, usate comandi ``make htmldocs`` o
14*4882a593Smuzhiyun``make pdfdocs``. La documentazione così generata sarà disponibile nella
15*4882a593Smuzhiyuncartella ``Documentation/output``.
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun.. _Sphinx: http://www.sphinx-doc.org/
18*4882a593Smuzhiyun.. _reStructuredText: http://docutils.sourceforge.net/rst.html
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunI file reStructuredText possono contenere delle direttive che permettono di
21*4882a593Smuzhiyunincludere i commenti di documentazione, o di tipo kernel-doc, dai file
22*4882a593Smuzhiyunsorgenti.
23*4882a593SmuzhiyunSolitamente questi commenti sono utilizzati per descrivere le funzioni, i tipi
24*4882a593Smuzhiyune l'architettura del codice. I commenti di tipo kernel-doc hanno una struttura
25*4882a593Smuzhiyune formato speciale, ma a parte questo vengono processati come reStructuredText.
26*4882a593Smuzhiyun
27*4882a593SmuzhiyunInoltre, ci sono migliaia di altri documenti in formato testo sparsi nella
28*4882a593Smuzhiyuncartella ``Documentation``. Alcuni di questi verranno probabilmente convertiti,
29*4882a593Smuzhiyunnel tempo, in formato reStructuredText, ma la maggior parte di questi rimarranno
30*4882a593Smuzhiyunin formato testo.
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun.. _it_sphinx_install:
33*4882a593Smuzhiyun
34*4882a593SmuzhiyunInstallazione Sphinx
35*4882a593Smuzhiyun====================
36*4882a593Smuzhiyun
37*4882a593SmuzhiyunI marcatori ReST utilizzati nei file in Documentation/ sono pensati per essere
38*4882a593Smuzhiyunprocessati da ``Sphinx`` nella versione 1.3 o superiore.
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunEsiste uno script che verifica i requisiti Sphinx. Per ulteriori dettagli
41*4882a593Smuzhiyunconsultate :ref:`it_sphinx-pre-install`.
42*4882a593Smuzhiyun
43*4882a593SmuzhiyunLa maggior parte delle distribuzioni Linux forniscono Sphinx, ma l'insieme dei
44*4882a593Smuzhiyunprogrammi e librerie è fragile e non è raro che dopo un aggiornamento di
45*4882a593SmuzhiyunSphinx, o qualche altro pacchetto Python, la documentazione non venga più
46*4882a593Smuzhiyungenerata correttamente.
47*4882a593Smuzhiyun
48*4882a593SmuzhiyunUn modo per evitare questo genere di problemi è quello di utilizzare una
49*4882a593Smuzhiyunversione diversa da quella fornita dalla vostra distribuzione. Per fare questo,
50*4882a593Smuzhiyunvi raccomandiamo di installare Sphinx dentro ad un ambiente virtuale usando
51*4882a593Smuzhiyun``virtualenv-3`` o ``virtualenv`` a seconda di come Python 3 è stato
52*4882a593Smuzhiyunpacchettizzato dalla vostra distribuzione.
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun.. note::
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun   #) Le versioni di Sphinx inferiori alla 1.5 non funzionano bene
57*4882a593Smuzhiyun      con il pacchetto Python docutils versione 0.13.1 o superiore.
58*4882a593Smuzhiyun      Se volete usare queste versioni, allora dovere eseguire
59*4882a593Smuzhiyun      ``pip install 'docutils==0.12'``.
60*4882a593Smuzhiyun
61*4882a593Smuzhiyun   #) Viene raccomandato l'uso del tema RTD per la documentazione in HTML.
62*4882a593Smuzhiyun      A seconda della versione di Sphinx, potrebbe essere necessaria
63*4882a593Smuzhiyun      l'installazione tramite il comando ``pip install sphinx_rtd_theme``.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun   #) Alcune pagine ReST contengono delle formule matematiche. A causa del
66*4882a593Smuzhiyun      modo in cui Sphinx funziona, queste espressioni sono scritte
67*4882a593Smuzhiyun      utilizzando LaTeX. Per una corretta interpretazione, è necessario aver
68*4882a593Smuzhiyun      installato texlive con i pacchetti amdfonts e amsmath.
69*4882a593Smuzhiyun
70*4882a593SmuzhiyunRiassumendo, se volete installare la versione 1.7.9 di Sphinx dovete eseguire::
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun       $ virtualenv sphinx_1.7.9
73*4882a593Smuzhiyun       $ . sphinx_1.7.9/bin/activate
74*4882a593Smuzhiyun       (sphinx_1.7.9) $ pip install -r Documentation/sphinx/requirements.txt
75*4882a593Smuzhiyun
76*4882a593SmuzhiyunDopo aver eseguito ``. sphinx_1.7.9/bin/activate``, il prompt cambierà per
77*4882a593Smuzhiyunindicare che state usando il nuovo ambiente. Se aprite un nuova sessione,
78*4882a593Smuzhiyunprima di generare la documentazione, dovrete rieseguire questo comando per
79*4882a593Smuzhiyunrientrare nell'ambiente virtuale.
80*4882a593Smuzhiyun
81*4882a593SmuzhiyunGenerazione d'immagini
82*4882a593Smuzhiyun----------------------
83*4882a593Smuzhiyun
84*4882a593SmuzhiyunIl meccanismo che genera la documentazione del kernel contiene un'estensione
85*4882a593Smuzhiyuncapace di gestire immagini in formato Graphviz e SVG (per maggior informazioni
86*4882a593Smuzhiyunvedere :ref:`it_sphinx_kfigure`).
87*4882a593Smuzhiyun
88*4882a593SmuzhiyunPer far si che questo funzioni, dovete installare entrambe i pacchetti
89*4882a593SmuzhiyunGraphviz e ImageMagick. Il sistema di generazione della documentazione è in
90*4882a593Smuzhiyungrado di procedere anche se questi pacchetti non sono installati, ma il
91*4882a593Smuzhiyunrisultato, ovviamente, non includerà le immagini.
92*4882a593Smuzhiyun
93*4882a593SmuzhiyunGenerazione in PDF e LaTeX
94*4882a593Smuzhiyun--------------------------
95*4882a593Smuzhiyun
96*4882a593SmuzhiyunAl momento, la generazione di questi documenti è supportata solo dalle
97*4882a593Smuzhiyunversioni di Sphinx superiori alla 1.4.
98*4882a593Smuzhiyun
99*4882a593SmuzhiyunPer la generazione di PDF e LaTeX, avrete bisogno anche del pacchetto
100*4882a593Smuzhiyun``XeLaTeX`` nella versione 3.14159265
101*4882a593Smuzhiyun
102*4882a593SmuzhiyunPer alcune distribuzioni Linux potrebbe essere necessario installare
103*4882a593Smuzhiyunanche una serie di pacchetti ``texlive`` in modo da fornire il supporto
104*4882a593Smuzhiyunminimo per il funzionamento di ``XeLaTeX``.
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun.. _it_sphinx-pre-install:
107*4882a593Smuzhiyun
108*4882a593SmuzhiyunVerificare le dipendenze Sphinx
109*4882a593Smuzhiyun-------------------------------
110*4882a593Smuzhiyun
111*4882a593SmuzhiyunEsiste uno script che permette di verificare automaticamente le dipendenze di
112*4882a593SmuzhiyunSphinx. Se lo script riesce a riconoscere la vostra distribuzione, allora
113*4882a593Smuzhiyunsarà in grado di darvi dei suggerimenti su come procedere per completare
114*4882a593Smuzhiyunl'installazione::
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun	$ ./scripts/sphinx-pre-install
117*4882a593Smuzhiyun	Checking if the needed tools for Fedora release 26 (Twenty Six) are available
118*4882a593Smuzhiyun	Warning: better to also install "texlive-luatex85".
119*4882a593Smuzhiyun	You should run:
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun		sudo dnf install -y texlive-luatex85
122*4882a593Smuzhiyun		/usr/bin/virtualenv sphinx_1.7.9
123*4882a593Smuzhiyun		. sphinx_1.7.9/bin/activate
124*4882a593Smuzhiyun		pip install -r Documentation/sphinx/requirements.txt
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun	Can't build as 1 mandatory dependency is missing at ./scripts/sphinx-pre-install line 468.
127*4882a593Smuzhiyun
128*4882a593SmuzhiyunL'impostazione predefinita prevede il controllo dei requisiti per la generazione
129*4882a593Smuzhiyundi documenti html e PDF, includendo anche il supporto per le immagini, le
130*4882a593Smuzhiyunespressioni matematiche e LaTeX; inoltre, presume che venga utilizzato un
131*4882a593Smuzhiyunambiente virtuale per Python. I requisiti per generare i documenti html
132*4882a593Smuzhiyunsono considerati obbligatori, gli altri sono opzionali.
133*4882a593Smuzhiyun
134*4882a593SmuzhiyunQuesto script ha i seguenti parametri:
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun``--no-pdf``
137*4882a593Smuzhiyun	Disabilita i controlli per la generazione di PDF;
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun``--no-virtualenv``
140*4882a593Smuzhiyun	Utilizza l'ambiente predefinito dal sistema operativo invece che
141*4882a593Smuzhiyun	l'ambiente virtuale per Python;
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun
144*4882a593SmuzhiyunGenerazione della documentazione Sphinx
145*4882a593Smuzhiyun=======================================
146*4882a593Smuzhiyun
147*4882a593SmuzhiyunPer generare la documentazione in formato HTML o PDF si eseguono i rispettivi
148*4882a593Smuzhiyuncomandi ``make htmldocs`` o ``make pdfdocs``. Esistono anche altri formati
149*4882a593Smuzhiyunin cui è possibile generare la documentazione; per maggiori informazioni
150*4882a593Smuzhiyunpotere eseguire il comando ``make help``.
151*4882a593SmuzhiyunLa documentazione così generata sarà disponibile nella sottocartella
152*4882a593Smuzhiyun``Documentation/output``.
153*4882a593Smuzhiyun
154*4882a593SmuzhiyunOvviamente, per generare la documentazione, Sphinx (``sphinx-build``)
155*4882a593Smuzhiyundev'essere installato. Se disponibile, il tema *Read the Docs* per Sphinx
156*4882a593Smuzhiyunverrà utilizzato per ottenere una documentazione HTML più gradevole.
157*4882a593SmuzhiyunPer la documentazione in formato PDF, invece, avrete bisogno di ``XeLaTeX`
158*4882a593Smuzhiyune di ``convert(1)`` disponibile in ImageMagick (https://www.imagemagick.org).
159*4882a593SmuzhiyunTipicamente, tutti questi pacchetti sono disponibili e pacchettizzati nelle
160*4882a593Smuzhiyundistribuzioni Linux.
161*4882a593Smuzhiyun
162*4882a593SmuzhiyunPer poter passare ulteriori opzioni a Sphinx potete utilizzare la variabile
163*4882a593Smuzhiyunmake ``SPHINXOPTS``. Per esempio, se volete che Sphinx sia più verboso durante
164*4882a593Smuzhiyunla generazione potete usare il seguente comando ``make SPHINXOPTS=-v htmldocs``.
165*4882a593Smuzhiyun
166*4882a593SmuzhiyunPotete eliminare la documentazione generata tramite il comando
167*4882a593Smuzhiyun``make cleandocs``.
168*4882a593Smuzhiyun
169*4882a593SmuzhiyunScrivere la documentazione
170*4882a593Smuzhiyun==========================
171*4882a593Smuzhiyun
172*4882a593SmuzhiyunAggiungere nuova documentazione è semplice:
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun1. aggiungete un file ``.rst`` nella sottocartella ``Documentation``
175*4882a593Smuzhiyun2. aggiungete un riferimento ad esso nell'indice (`TOC tree`_) in
176*4882a593Smuzhiyun   ``Documentation/index.rst``.
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun.. _TOC tree: http://www.sphinx-doc.org/en/stable/markup/toctree.html
179*4882a593Smuzhiyun
180*4882a593SmuzhiyunQuesto, di solito, è sufficiente per la documentazione più semplice (come
181*4882a593Smuzhiyunquella che state leggendo ora), ma per una documentazione più elaborata è
182*4882a593Smuzhiyunconsigliato creare una sottocartella dedicata (o, quando possibile, utilizzarne
183*4882a593Smuzhiyununa già esistente). Per esempio, il sottosistema grafico è documentato nella
184*4882a593Smuzhiyunsottocartella ``Documentation/gpu``; questa documentazione è divisa in
185*4882a593Smuzhiyundiversi file ``.rst`` ed un indice ``index.rst`` (con un ``toctree``
186*4882a593Smuzhiyundedicato) a cui si fa riferimento nell'indice principale.
187*4882a593Smuzhiyun
188*4882a593SmuzhiyunConsultate la documentazione di `Sphinx`_ e `reStructuredText`_ per maggiori
189*4882a593Smuzhiyuninformazione circa le loro potenzialità. In particolare, il
190*4882a593Smuzhiyun`manuale introduttivo a reStructuredText`_ di Sphinx è un buon punto da
191*4882a593Smuzhiyuncui cominciare. Esistono, inoltre, anche alcuni
192*4882a593Smuzhiyun`costruttori specifici per Sphinx`_.
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun.. _`manuale introduttivo a reStructuredText`: http://www.sphinx-doc.org/en/stable/rest.html
195*4882a593Smuzhiyun.. _`costruttori specifici per Sphinx`: http://www.sphinx-doc.org/en/stable/markup/index.html
196*4882a593Smuzhiyun
197*4882a593SmuzhiyunGuide linea per la documentazione del kernel
198*4882a593Smuzhiyun--------------------------------------------
199*4882a593Smuzhiyun
200*4882a593SmuzhiyunIn questa sezione troverete alcune linee guida specifiche per la documentazione
201*4882a593Smuzhiyundel kernel:
202*4882a593Smuzhiyun
203*4882a593Smuzhiyun* Non esagerate con i costrutti di reStructuredText. Mantenete la
204*4882a593Smuzhiyun  documentazione semplice. La maggior parte della documentazione dovrebbe
205*4882a593Smuzhiyun  essere testo semplice con una strutturazione minima che permetta la
206*4882a593Smuzhiyun  conversione in diversi formati.
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun* Mantenete la strutturazione il più fedele possibile all'originale quando
209*4882a593Smuzhiyun  convertite un documento in formato reStructuredText.
210*4882a593Smuzhiyun
211*4882a593Smuzhiyun* Aggiornate i contenuti quando convertite della documentazione, non limitatevi
212*4882a593Smuzhiyun  solo alla formattazione.
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun* Mantenete la decorazione dei livelli di intestazione come segue:
215*4882a593Smuzhiyun
216*4882a593Smuzhiyun  1. ``=`` con una linea superiore per il titolo del documento::
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun       ======
219*4882a593Smuzhiyun       Titolo
220*4882a593Smuzhiyun       ======
221*4882a593Smuzhiyun
222*4882a593Smuzhiyun  2. ``=`` per i capitoli::
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun       Capitoli
225*4882a593Smuzhiyun       ========
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun  3. ``-`` per le sezioni::
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun       Sezioni
230*4882a593Smuzhiyun       -------
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun  4. ``~`` per le sottosezioni::
233*4882a593Smuzhiyun
234*4882a593Smuzhiyun       Sottosezioni
235*4882a593Smuzhiyun       ~~~~~~~~~~~~
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun  Sebbene RST non forzi alcun ordine specifico (*Piuttosto che imporre
238*4882a593Smuzhiyun  un numero ed un ordine fisso di decorazioni, l'ordine utilizzato sarà
239*4882a593Smuzhiyun  quello incontrato*), avere uniformità dei livelli principali rende più
240*4882a593Smuzhiyun  semplice la lettura dei documenti.
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun* Per inserire blocchi di testo con caratteri a dimensione fissa (codici di
243*4882a593Smuzhiyun  esempio, casi d'uso, eccetera): utilizzate ``::`` quando non è necessario
244*4882a593Smuzhiyun  evidenziare la sintassi, specialmente per piccoli frammenti; invece,
245*4882a593Smuzhiyun  utilizzate ``.. code-block:: <language>`` per blocchi più lunghi che
246*4882a593Smuzhiyun  beneficeranno della sintassi evidenziata. Per un breve pezzo di codice da
247*4882a593Smuzhiyun  inserire nel testo, usate \`\`.
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun
250*4882a593SmuzhiyunIl dominio C
251*4882a593Smuzhiyun------------
252*4882a593Smuzhiyun
253*4882a593SmuzhiyunIl **Dominio Sphinx C** (denominato c) è adatto alla documentazione delle API C.
254*4882a593SmuzhiyunPer esempio, un prototipo di una funzione:
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun.. code-block:: rst
257*4882a593Smuzhiyun
258*4882a593Smuzhiyun    .. c:function:: int ioctl( int fd, int request )
259*4882a593Smuzhiyun
260*4882a593SmuzhiyunIl dominio C per kernel-doc ha delle funzionalità aggiuntive. Per esempio,
261*4882a593Smuzhiyunpotete assegnare un nuovo nome di riferimento ad una funzione con un nome
262*4882a593Smuzhiyunmolto comune come ``open`` o ``ioctl``:
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun.. code-block:: rst
265*4882a593Smuzhiyun
266*4882a593Smuzhiyun     .. c:function:: int ioctl( int fd, int request )
267*4882a593Smuzhiyun        :name: VIDIOC_LOG_STATUS
268*4882a593Smuzhiyun
269*4882a593SmuzhiyunIl nome della funzione (per esempio ioctl) rimane nel testo ma il nome del suo
270*4882a593Smuzhiyunriferimento cambia da ``ioctl`` a ``VIDIOC_LOG_STATUS``. Anche la voce
271*4882a593Smuzhiyunnell'indice cambia in ``VIDIOC_LOG_STATUS``.
272*4882a593Smuzhiyun
273*4882a593SmuzhiyunNotate che per una funzione non c'è bisogno di usare ``c:func:`` per generarne
274*4882a593Smuzhiyuni riferimenti nella documentazione. Grazie a qualche magica estensione a
275*4882a593SmuzhiyunSphinx, il sistema di generazione della documentazione trasformerà
276*4882a593Smuzhiyunautomaticamente un riferimento ad una ``funzione()`` in un riferimento
277*4882a593Smuzhiyunincrociato quando questa ha una voce nell'indice.  Se trovate degli usi di
278*4882a593Smuzhiyun``c:func:`` nella documentazione del kernel, sentitevi liberi di rimuoverli.
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun
281*4882a593SmuzhiyunTabelle a liste
282*4882a593Smuzhiyun---------------
283*4882a593Smuzhiyun
284*4882a593SmuzhiyunRaccomandiamo l'uso delle tabelle in formato lista (*list table*). Le tabelle
285*4882a593Smuzhiyunin formato lista sono liste di liste. In confronto all'ASCII-art potrebbero
286*4882a593Smuzhiyunnon apparire di facile lettura nei file in formato testo. Il loro vantaggio è
287*4882a593Smuzhiyunche sono facili da creare o modificare e che la differenza di una modifica è
288*4882a593Smuzhiyunmolto più significativa perché limitata alle modifiche del contenuto.
289*4882a593Smuzhiyun
290*4882a593SmuzhiyunLa ``flat-table`` è anch'essa una lista di liste simile alle ``list-table``
291*4882a593Smuzhiyunma con delle funzionalità aggiuntive:
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun* column-span: col ruolo ``cspan`` una cella può essere estesa attraverso
294*4882a593Smuzhiyun  colonne successive
295*4882a593Smuzhiyun
296*4882a593Smuzhiyun* raw-span: col ruolo ``rspan`` una cella può essere estesa attraverso
297*4882a593Smuzhiyun  righe successive
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun* auto-span: la cella più a destra viene estesa verso destra per compensare
300*4882a593Smuzhiyun  la mancanza di celle. Con l'opzione ``:fill-cells:`` questo comportamento
301*4882a593Smuzhiyun  può essere cambiato da *auto-span* ad *auto-fill*, il quale inserisce
302*4882a593Smuzhiyun  automaticamente celle (vuote) invece che estendere l'ultima.
303*4882a593Smuzhiyun
304*4882a593Smuzhiyunopzioni:
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun* ``:header-rows:``   [int] conta le righe di intestazione
307*4882a593Smuzhiyun* ``:stub-columns:``  [int] conta le colonne di stub
308*4882a593Smuzhiyun* ``:widths:``        [[int] [int] ... ] larghezza delle colonne
309*4882a593Smuzhiyun* ``:fill-cells:``    invece di estendere automaticamente una cella su quelle
310*4882a593Smuzhiyun  mancanti, ne crea di vuote.
311*4882a593Smuzhiyun
312*4882a593Smuzhiyunruoli:
313*4882a593Smuzhiyun
314*4882a593Smuzhiyun* ``:cspan:`` [int] colonne successive (*morecols*)
315*4882a593Smuzhiyun* ``:rspan:`` [int] righe successive (*morerows*)
316*4882a593Smuzhiyun
317*4882a593SmuzhiyunL'esempio successivo mostra come usare questo marcatore. Il primo livello della
318*4882a593Smuzhiyunnostra lista di liste è la *riga*. In una *riga* è possibile inserire solamente
319*4882a593Smuzhiyunla lista di celle che compongono la *riga* stessa. Fanno eccezione i *commenti*
320*4882a593Smuzhiyun( ``..`` ) ed i *collegamenti* (per esempio, un riferimento a
321*4882a593Smuzhiyun``:ref:`last row <last row>``` / :ref:`last row <it last row>`)
322*4882a593Smuzhiyun
323*4882a593Smuzhiyun.. code-block:: rst
324*4882a593Smuzhiyun
325*4882a593Smuzhiyun   .. flat-table:: table title
326*4882a593Smuzhiyun      :widths: 2 1 1 3
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun      * - head col 1
329*4882a593Smuzhiyun        - head col 2
330*4882a593Smuzhiyun        - head col 3
331*4882a593Smuzhiyun        - head col 4
332*4882a593Smuzhiyun
333*4882a593Smuzhiyun      * - column 1
334*4882a593Smuzhiyun        - field 1.1
335*4882a593Smuzhiyun        - field 1.2 with autospan
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun      * - column 2
338*4882a593Smuzhiyun        - field 2.1
339*4882a593Smuzhiyun        - :rspan:`1` :cspan:`1` field 2.2 - 3.3
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun      * .. _`it last row`:
342*4882a593Smuzhiyun
343*4882a593Smuzhiyun        - column 3
344*4882a593Smuzhiyun
345*4882a593SmuzhiyunChe verrà rappresentata nel seguente modo:
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun   .. flat-table:: table title
348*4882a593Smuzhiyun      :widths: 2 1 1 3
349*4882a593Smuzhiyun
350*4882a593Smuzhiyun      * - head col 1
351*4882a593Smuzhiyun        - head col 2
352*4882a593Smuzhiyun        - head col 3
353*4882a593Smuzhiyun        - head col 4
354*4882a593Smuzhiyun
355*4882a593Smuzhiyun      * - column 1
356*4882a593Smuzhiyun        - field 1.1
357*4882a593Smuzhiyun        - field 1.2 with autospan
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun      * - column 2
360*4882a593Smuzhiyun        - field 2.1
361*4882a593Smuzhiyun        - :rspan:`1` :cspan:`1` field 2.2 - 3.3
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun      * .. _`it last row`:
364*4882a593Smuzhiyun
365*4882a593Smuzhiyun        - column 3
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun.. _it_sphinx_kfigure:
368*4882a593Smuzhiyun
369*4882a593SmuzhiyunFigure ed immagini
370*4882a593Smuzhiyun==================
371*4882a593Smuzhiyun
372*4882a593SmuzhiyunSe volete aggiungere un'immagine, utilizzate le direttive ``kernel-figure``
373*4882a593Smuzhiyune ``kernel-image``. Per esempio, per inserire una figura di un'immagine in
374*4882a593Smuzhiyunformato SVG::
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun    .. kernel-figure::  ../../../doc-guide/svg_image.svg
377*4882a593Smuzhiyun       :alt:    una semplice immagine SVG
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun       Una semplice immagine SVG
380*4882a593Smuzhiyun
381*4882a593Smuzhiyun.. _it_svg_image_example:
382*4882a593Smuzhiyun
383*4882a593Smuzhiyun.. kernel-figure::  ../../../doc-guide/svg_image.svg
384*4882a593Smuzhiyun   :alt:    una semplice immagine SVG
385*4882a593Smuzhiyun
386*4882a593Smuzhiyun   Una semplice immagine SVG
387*4882a593Smuzhiyun
388*4882a593SmuzhiyunLe direttive del kernel per figure ed immagini supportano il formato **DOT**,
389*4882a593Smuzhiyunper maggiori informazioni
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun* DOT: http://graphviz.org/pdf/dotguide.pdf
392*4882a593Smuzhiyun* Graphviz: http://www.graphviz.org/content/dot-language
393*4882a593Smuzhiyun
394*4882a593SmuzhiyunUn piccolo esempio (:ref:`it_hello_dot_file`)::
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun  .. kernel-figure::  ../../../doc-guide/hello.dot
397*4882a593Smuzhiyun     :alt:    ciao mondo
398*4882a593Smuzhiyun
399*4882a593Smuzhiyun     Esempio DOT
400*4882a593Smuzhiyun
401*4882a593Smuzhiyun.. _it_hello_dot_file:
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun.. kernel-figure::  ../../../doc-guide/hello.dot
404*4882a593Smuzhiyun   :alt:    ciao mondo
405*4882a593Smuzhiyun
406*4882a593Smuzhiyun   Esempio DOT
407*4882a593Smuzhiyun
408*4882a593SmuzhiyunTramite la direttiva ``kernel-render`` è possibile aggiungere codice specifico;
409*4882a593Smuzhiyunad esempio nel formato **DOT** di Graphviz.::
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun  .. kernel-render:: DOT
412*4882a593Smuzhiyun     :alt: foobar digraph
413*4882a593Smuzhiyun     :caption: Codice **DOT** (Graphviz) integrato
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun     digraph foo {
416*4882a593Smuzhiyun      "bar" -> "baz";
417*4882a593Smuzhiyun     }
418*4882a593Smuzhiyun
419*4882a593SmuzhiyunLa rappresentazione dipenderà dei programmi installati. Se avete Graphviz
420*4882a593Smuzhiyuninstallato, vedrete un'immagine vettoriale. In caso contrario, il codice grezzo
421*4882a593Smuzhiyunverrà rappresentato come *blocco testuale* (:ref:`it_hello_dot_render`).
422*4882a593Smuzhiyun
423*4882a593Smuzhiyun.. _it_hello_dot_render:
424*4882a593Smuzhiyun
425*4882a593Smuzhiyun.. kernel-render:: DOT
426*4882a593Smuzhiyun   :alt: foobar digraph
427*4882a593Smuzhiyun   :caption: Codice **DOT** (Graphviz) integrato
428*4882a593Smuzhiyun
429*4882a593Smuzhiyun   digraph foo {
430*4882a593Smuzhiyun      "bar" -> "baz";
431*4882a593Smuzhiyun   }
432*4882a593Smuzhiyun
433*4882a593SmuzhiyunLa direttiva *render* ha tutte le opzioni della direttiva *figure*, con
434*4882a593Smuzhiyunl'aggiunta dell'opzione ``caption``. Se ``caption`` ha un valore allora
435*4882a593Smuzhiyunun nodo *figure* viene aggiunto. Altrimenti verrà aggiunto un nodo *image*.
436*4882a593SmuzhiyunL'opzione ``caption`` è necessaria in caso si vogliano aggiungere dei
437*4882a593Smuzhiyunriferimenti (:ref:`it_hello_svg_render`).
438*4882a593Smuzhiyun
439*4882a593SmuzhiyunPer la scrittura di codice **SVG**::
440*4882a593Smuzhiyun
441*4882a593Smuzhiyun  .. kernel-render:: SVG
442*4882a593Smuzhiyun     :caption: Integrare codice **SVG**
443*4882a593Smuzhiyun     :alt: so-nw-arrow
444*4882a593Smuzhiyun
445*4882a593Smuzhiyun     <?xml version="1.0" encoding="UTF-8"?>
446*4882a593Smuzhiyun     <svg xmlns="http://www.w3.org/2000/svg" version="1.1" ...>
447*4882a593Smuzhiyun        ...
448*4882a593Smuzhiyun     </svg>
449*4882a593Smuzhiyun
450*4882a593Smuzhiyun.. _it_hello_svg_render:
451*4882a593Smuzhiyun
452*4882a593Smuzhiyun.. kernel-render:: SVG
453*4882a593Smuzhiyun   :caption: Integrare codice **SVG**
454*4882a593Smuzhiyun   :alt: so-nw-arrow
455*4882a593Smuzhiyun
456*4882a593Smuzhiyun   <?xml version="1.0" encoding="UTF-8"?>
457*4882a593Smuzhiyun   <svg xmlns="http://www.w3.org/2000/svg"
458*4882a593Smuzhiyun     version="1.1" baseProfile="full" width="70px" height="40px" viewBox="0 0 700 400">
459*4882a593Smuzhiyun   <line x1="180" y1="370" x2="500" y2="50" stroke="black" stroke-width="15px"/>
460*4882a593Smuzhiyun   <polygon points="585 0 525 25 585 50" transform="rotate(135 525 25)"/>
461*4882a593Smuzhiyun   </svg>
462