162306a36Sopenharmony_ci.. include:: ../disclaimer-ita.rst
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. note:: Per leggere la documentazione originale in inglese:
462306a36Sopenharmony_ci	  :ref:`Documentation/doc-guide/index.rst <doc_guide>`
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci.. _it_sphinxdoc:
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci=============================================
962306a36Sopenharmony_ciUsare Sphinx per la documentazione del kernel
1062306a36Sopenharmony_ci=============================================
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciIl kernel Linux usa `Sphinx`_ per la generazione della documentazione a partire
1362306a36Sopenharmony_cidai file `reStructuredText`_ che si trovano nella cartella ``Documentation``.
1462306a36Sopenharmony_ciPer generare la documentazione in HTML o PDF, usate comandi ``make htmldocs`` o
1562306a36Sopenharmony_ci``make pdfdocs``. La documentazione così generata sarà disponibile nella
1662306a36Sopenharmony_cicartella ``Documentation/output``.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. _Sphinx: http://www.sphinx-doc.org/
1962306a36Sopenharmony_ci.. _reStructuredText: http://docutils.sourceforge.net/rst.html
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ciI file reStructuredText possono contenere delle direttive che permettono di
2262306a36Sopenharmony_ciincludere i commenti di documentazione, o di tipo kernel-doc, dai file
2362306a36Sopenharmony_cisorgenti.
2462306a36Sopenharmony_ciSolitamente questi commenti sono utilizzati per descrivere le funzioni, i tipi
2562306a36Sopenharmony_cie l'architettura del codice. I commenti di tipo kernel-doc hanno una struttura
2662306a36Sopenharmony_cie formato speciale, ma a parte questo vengono processati come reStructuredText.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciInoltre, ci sono migliaia di altri documenti in formato testo sparsi nella
2962306a36Sopenharmony_cicartella ``Documentation``. Alcuni di questi verranno probabilmente convertiti,
3062306a36Sopenharmony_cinel tempo, in formato reStructuredText, ma la maggior parte di questi rimarranno
3162306a36Sopenharmony_ciin formato testo.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci.. _it_sphinx_install:
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciInstallazione Sphinx
3662306a36Sopenharmony_ci====================
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciI marcatori ReST utilizzati nei file in Documentation/ sono pensati per essere
3962306a36Sopenharmony_ciprocessati da ``Sphinx`` nella versione 1.7 o superiore.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciEsiste uno script che verifica i requisiti Sphinx. Per ulteriori dettagli
4262306a36Sopenharmony_ciconsultate :ref:`it_sphinx-pre-install`.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciLa maggior parte delle distribuzioni Linux forniscono Sphinx, ma l'insieme dei
4562306a36Sopenharmony_ciprogrammi e librerie è fragile e non è raro che dopo un aggiornamento di
4662306a36Sopenharmony_ciSphinx, o qualche altro pacchetto Python, la documentazione non venga più
4762306a36Sopenharmony_cigenerata correttamente.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ciUn modo per evitare questo genere di problemi è quello di utilizzare una
5062306a36Sopenharmony_civersione diversa da quella fornita dalla vostra distribuzione. Per fare questo,
5162306a36Sopenharmony_civi raccomandiamo di installare Sphinx dentro ad un ambiente virtuale usando
5262306a36Sopenharmony_ci``virtualenv-3`` o ``virtualenv`` a seconda di come Python 3 è stato
5362306a36Sopenharmony_cipacchettizzato dalla vostra distribuzione.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci.. note::
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci   #) Viene raccomandato l'uso del tema RTD per la documentazione in HTML.
5862306a36Sopenharmony_ci      A seconda della versione di Sphinx, potrebbe essere necessaria
5962306a36Sopenharmony_ci      l'installazione tramite il comando ``pip install sphinx_rtd_theme``.
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci   #) Alcune pagine ReST contengono delle formule matematiche. A causa del
6262306a36Sopenharmony_ci      modo in cui Sphinx funziona, queste espressioni sono scritte
6362306a36Sopenharmony_ci      utilizzando LaTeX. Per una corretta interpretazione, è necessario aver
6462306a36Sopenharmony_ci      installato texlive con i pacchetti amdfonts e amsmath.
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ciRiassumendo, se volete installare la versione 2.4.4 di Sphinx dovete eseguire::
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci       $ virtualenv sphinx_2.4.4
6962306a36Sopenharmony_ci       $ . sphinx_2.4.4/bin/activate
7062306a36Sopenharmony_ci       (sphinx_2.4.4) $ pip install -r Documentation/sphinx/requirements.txt
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciDopo aver eseguito ``. sphinx_2.4.4/bin/activate``, il prompt cambierà per
7362306a36Sopenharmony_ciindicare che state usando il nuovo ambiente. Se aprite un nuova sessione,
7462306a36Sopenharmony_ciprima di generare la documentazione, dovrete rieseguire questo comando per
7562306a36Sopenharmony_cirientrare nell'ambiente virtuale.
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ciGenerazione d'immagini
7862306a36Sopenharmony_ci----------------------
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciIl meccanismo che genera la documentazione del kernel contiene un'estensione
8162306a36Sopenharmony_cicapace di gestire immagini in formato Graphviz e SVG (per maggior informazioni
8262306a36Sopenharmony_civedere :ref:`it_sphinx_kfigure`).
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciPer far si che questo funzioni, dovete installare entrambe i pacchetti
8562306a36Sopenharmony_ciGraphviz e ImageMagick. Il sistema di generazione della documentazione è in
8662306a36Sopenharmony_cigrado di procedere anche se questi pacchetti non sono installati, ma il
8762306a36Sopenharmony_cirisultato, ovviamente, non includerà le immagini.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciGenerazione in PDF e LaTeX
9062306a36Sopenharmony_ci--------------------------
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciAl momento, la generazione di questi documenti è supportata solo dalle
9362306a36Sopenharmony_civersioni di Sphinx superiori alla 2.4.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciPer la generazione di PDF e LaTeX, avrete bisogno anche del pacchetto
9662306a36Sopenharmony_ci``XeLaTeX`` nella versione 3.14159265
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciPer alcune distribuzioni Linux potrebbe essere necessario installare
9962306a36Sopenharmony_cianche una serie di pacchetti ``texlive`` in modo da fornire il supporto
10062306a36Sopenharmony_ciminimo per il funzionamento di ``XeLaTeX``.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci.. _it_sphinx-pre-install:
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciVerificare le dipendenze Sphinx
10562306a36Sopenharmony_ci-------------------------------
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ciEsiste uno script che permette di verificare automaticamente le dipendenze di
10862306a36Sopenharmony_ciSphinx. Se lo script riesce a riconoscere la vostra distribuzione, allora
10962306a36Sopenharmony_cisarà in grado di darvi dei suggerimenti su come procedere per completare
11062306a36Sopenharmony_cil'installazione::
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci	$ ./scripts/sphinx-pre-install
11362306a36Sopenharmony_ci	Checking if the needed tools for Fedora release 26 (Twenty Six) are available
11462306a36Sopenharmony_ci	Warning: better to also install "texlive-luatex85".
11562306a36Sopenharmony_ci	You should run:
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci		sudo dnf install -y texlive-luatex85
11862306a36Sopenharmony_ci		/usr/bin/virtualenv sphinx_2.4.4
11962306a36Sopenharmony_ci		. sphinx_2.4.4/bin/activate
12062306a36Sopenharmony_ci		pip install -r Documentation/sphinx/requirements.txt
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	Can't build as 1 mandatory dependency is missing at ./scripts/sphinx-pre-install line 468.
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciL'impostazione predefinita prevede il controllo dei requisiti per la generazione
12562306a36Sopenharmony_cidi documenti html e PDF, includendo anche il supporto per le immagini, le
12662306a36Sopenharmony_ciespressioni matematiche e LaTeX; inoltre, presume che venga utilizzato un
12762306a36Sopenharmony_ciambiente virtuale per Python. I requisiti per generare i documenti html
12862306a36Sopenharmony_cisono considerati obbligatori, gli altri sono opzionali.
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ciQuesto script ha i seguenti parametri:
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci``--no-pdf``
13362306a36Sopenharmony_ci	Disabilita i controlli per la generazione di PDF;
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci``--no-virtualenv``
13662306a36Sopenharmony_ci	Utilizza l'ambiente predefinito dal sistema operativo invece che
13762306a36Sopenharmony_ci	l'ambiente virtuale per Python;
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ciGenerazione della documentazione Sphinx
14162306a36Sopenharmony_ci=======================================
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ciPer generare la documentazione in formato HTML o PDF si eseguono i rispettivi
14462306a36Sopenharmony_cicomandi ``make htmldocs`` o ``make pdfdocs``. Esistono anche altri formati
14562306a36Sopenharmony_ciin cui è possibile generare la documentazione; per maggiori informazioni
14662306a36Sopenharmony_cipotere eseguire il comando ``make help``.
14762306a36Sopenharmony_ciLa documentazione così generata sarà disponibile nella sottocartella
14862306a36Sopenharmony_ci``Documentation/output``.
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciOvviamente, per generare la documentazione, Sphinx (``sphinx-build``)
15162306a36Sopenharmony_cidev'essere installato. Se disponibile, il tema *Read the Docs* per Sphinx
15262306a36Sopenharmony_civerrà utilizzato per ottenere una documentazione HTML più gradevole.
15362306a36Sopenharmony_ciPer la documentazione in formato PDF, invece, avrete bisogno di ``XeLaTeX`
15462306a36Sopenharmony_cie di ``convert(1)`` disponibile in ImageMagick
15562306a36Sopenharmony_ci(https://www.imagemagick.org). \ [#ink]_
15662306a36Sopenharmony_ciTipicamente, tutti questi pacchetti sono disponibili e pacchettizzati nelle
15762306a36Sopenharmony_cidistribuzioni Linux.
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ciPer poter passare ulteriori opzioni a Sphinx potete utilizzare la variabile
16062306a36Sopenharmony_cimake ``SPHINXOPTS``. Per esempio, se volete che Sphinx sia più verboso durante
16162306a36Sopenharmony_cila generazione potete usare il seguente comando ``make SPHINXOPTS=-v htmldocs``.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciPotete anche personalizzare l'ouptut html passando un livello aggiuntivo
16462306a36Sopenharmony_ciDOCS_CSS usando la rispettiva variabile d'ambiente ``DOCS_CSS``.
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ciLa variable make ``SPHINXDIRS`` è utile quando si vuole generare solo una parte
16762306a36Sopenharmony_cidella documentazione. Per esempio, si possono generare solo di documenti in
16862306a36Sopenharmony_ci``Documentation/doc-guide`` eseguendo ``make SPHINXDIRS=doc-guide htmldocs``. La
16962306a36Sopenharmony_cisezione dedicata alla documentazione di ``make help`` vi mostrerà quali sotto
17062306a36Sopenharmony_cicartelle potete specificare.
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ciPotete eliminare la documentazione generata tramite il comando
17362306a36Sopenharmony_ci``make cleandocs``.
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci.. [#ink] Avere installato anche ``inkscape(1)`` dal progetto Inkscape ()
17662306a36Sopenharmony_ci          potrebbe aumentare la qualità delle immagini che verranno integrate
17762306a36Sopenharmony_ci          nel documento PDF, specialmente per quando si usando rilasci del
17862306a36Sopenharmony_ci          kernel uguali o superiori a 5.18
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ciScrivere la documentazione
18162306a36Sopenharmony_ci==========================
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ciAggiungere nuova documentazione è semplice:
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci1. aggiungete un file ``.rst`` nella sottocartella ``Documentation``
18662306a36Sopenharmony_ci2. aggiungete un riferimento ad esso nell'indice (`TOC tree`_) in
18762306a36Sopenharmony_ci   ``Documentation/index.rst``.
18862306a36Sopenharmony_ci
18962306a36Sopenharmony_ci.. _TOC tree: http://www.sphinx-doc.org/en/stable/markup/toctree.html
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ciQuesto, di solito, è sufficiente per la documentazione più semplice (come
19262306a36Sopenharmony_ciquella che state leggendo ora), ma per una documentazione più elaborata è
19362306a36Sopenharmony_ciconsigliato creare una sottocartella dedicata (o, quando possibile, utilizzarne
19462306a36Sopenharmony_ciuna già esistente). Per esempio, il sottosistema grafico è documentato nella
19562306a36Sopenharmony_cisottocartella ``Documentation/gpu``; questa documentazione è divisa in
19662306a36Sopenharmony_cidiversi file ``.rst`` ed un indice ``index.rst`` (con un ``toctree``
19762306a36Sopenharmony_cidedicato) a cui si fa riferimento nell'indice principale.
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ciConsultate la documentazione di `Sphinx`_ e `reStructuredText`_ per maggiori
20062306a36Sopenharmony_ciinformazione circa le loro potenzialità. In particolare, il
20162306a36Sopenharmony_ci`manuale introduttivo a reStructuredText`_ di Sphinx è un buon punto da
20262306a36Sopenharmony_cicui cominciare. Esistono, inoltre, anche alcuni
20362306a36Sopenharmony_ci`costruttori specifici per Sphinx`_.
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci.. _`manuale introduttivo a reStructuredText`: http://www.sphinx-doc.org/en/stable/rest.html
20662306a36Sopenharmony_ci.. _`costruttori specifici per Sphinx`: http://www.sphinx-doc.org/en/stable/markup/index.html
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ciGuide linea per la documentazione del kernel
20962306a36Sopenharmony_ci--------------------------------------------
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ciIn questa sezione troverete alcune linee guida specifiche per la documentazione
21262306a36Sopenharmony_cidel kernel:
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci* Non esagerate con i costrutti di reStructuredText. Mantenete la
21562306a36Sopenharmony_ci  documentazione semplice. La maggior parte della documentazione dovrebbe
21662306a36Sopenharmony_ci  essere testo semplice con una strutturazione minima che permetta la
21762306a36Sopenharmony_ci  conversione in diversi formati.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci* Mantenete la strutturazione il più fedele possibile all'originale quando
22062306a36Sopenharmony_ci  convertite un documento in formato reStructuredText.
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci* Aggiornate i contenuti quando convertite della documentazione, non limitatevi
22362306a36Sopenharmony_ci  solo alla formattazione.
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci* Mantenete la decorazione dei livelli di intestazione come segue:
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci  1. ``=`` con una linea superiore per il titolo del documento::
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci       ======
23062306a36Sopenharmony_ci       Titolo
23162306a36Sopenharmony_ci       ======
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci  2. ``=`` per i capitoli::
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci       Capitoli
23662306a36Sopenharmony_ci       ========
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci  3. ``-`` per le sezioni::
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci       Sezioni
24162306a36Sopenharmony_ci       -------
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci  4. ``~`` per le sottosezioni::
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci       Sottosezioni
24662306a36Sopenharmony_ci       ~~~~~~~~~~~~
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci  Sebbene RST non forzi alcun ordine specifico (*Piuttosto che imporre
24962306a36Sopenharmony_ci  un numero ed un ordine fisso di decorazioni, l'ordine utilizzato sarà
25062306a36Sopenharmony_ci  quello incontrato*), avere uniformità dei livelli principali rende più
25162306a36Sopenharmony_ci  semplice la lettura dei documenti.
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ci* Per inserire blocchi di testo con caratteri a dimensione fissa (codici di
25462306a36Sopenharmony_ci  esempio, casi d'uso, eccetera): utilizzate ``::`` quando non è necessario
25562306a36Sopenharmony_ci  evidenziare la sintassi, specialmente per piccoli frammenti; invece,
25662306a36Sopenharmony_ci  utilizzate ``.. code-block:: <language>`` per blocchi più lunghi che
25762306a36Sopenharmony_ci  beneficeranno della sintassi evidenziata. Per un breve pezzo di codice da
25862306a36Sopenharmony_ci  inserire nel testo, usate \`\`.
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ciIl dominio C
26262306a36Sopenharmony_ci------------
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ciIl **Dominio Sphinx C** (denominato c) è adatto alla documentazione delle API C.
26562306a36Sopenharmony_ciPer esempio, un prototipo di una funzione:
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci.. code-block:: rst
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci    .. c:function:: int ioctl( int fd, int request )
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ciIl dominio C per kernel-doc ha delle funzionalità aggiuntive. Per esempio,
27262306a36Sopenharmony_cipotete assegnare un nuovo nome di riferimento ad una funzione con un nome
27362306a36Sopenharmony_cimolto comune come ``open`` o ``ioctl``:
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci.. code-block:: rst
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci     .. c:function:: int ioctl( int fd, int request )
27862306a36Sopenharmony_ci        :name: VIDIOC_LOG_STATUS
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ciIl nome della funzione (per esempio ioctl) rimane nel testo ma il nome del suo
28162306a36Sopenharmony_ciriferimento cambia da ``ioctl`` a ``VIDIOC_LOG_STATUS``. Anche la voce
28262306a36Sopenharmony_cinell'indice cambia in ``VIDIOC_LOG_STATUS``.
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ciNotate che per una funzione non c'è bisogno di usare ``c:func:`` per generarne
28562306a36Sopenharmony_cii riferimenti nella documentazione. Grazie a qualche magica estensione a
28662306a36Sopenharmony_ciSphinx, il sistema di generazione della documentazione trasformerà
28762306a36Sopenharmony_ciautomaticamente un riferimento ad una ``funzione()`` in un riferimento
28862306a36Sopenharmony_ciincrociato quando questa ha una voce nell'indice.  Se trovate degli usi di
28962306a36Sopenharmony_ci``c:func:`` nella documentazione del kernel, sentitevi liberi di rimuoverli.
29062306a36Sopenharmony_ci
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ciTabelle a liste
29362306a36Sopenharmony_ci---------------
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_ciIl formato ``list-table`` può essere utile per tutte quelle tabelle che non
29662306a36Sopenharmony_cipossono essere facilmente scritte usando il formato ASCII-art di Sphinx. Però,
29762306a36Sopenharmony_ciquesto genere di tabelle sono illeggibili per chi legge direttamente i file di
29862306a36Sopenharmony_citesto. Dunque, questo formato dovrebbe essere evitato senza forti argomenti che
29962306a36Sopenharmony_cine giustifichino l'uso.
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ciLa ``flat-table`` è anch'essa una lista di liste simile alle ``list-table``
30262306a36Sopenharmony_cima con delle funzionalità aggiuntive:
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ci* column-span: col ruolo ``cspan`` una cella può essere estesa attraverso
30562306a36Sopenharmony_ci  colonne successive
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci* raw-span: col ruolo ``rspan`` una cella può essere estesa attraverso
30862306a36Sopenharmony_ci  righe successive
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_ci* auto-span: la cella più a destra viene estesa verso destra per compensare
31162306a36Sopenharmony_ci  la mancanza di celle. Con l'opzione ``:fill-cells:`` questo comportamento
31262306a36Sopenharmony_ci  può essere cambiato da *auto-span* ad *auto-fill*, il quale inserisce
31362306a36Sopenharmony_ci  automaticamente celle (vuote) invece che estendere l'ultima.
31462306a36Sopenharmony_ci
31562306a36Sopenharmony_ciopzioni:
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci* ``:header-rows:``   [int] conta le righe di intestazione
31862306a36Sopenharmony_ci* ``:stub-columns:``  [int] conta le colonne di stub
31962306a36Sopenharmony_ci* ``:widths:``        [[int] [int] ... ] larghezza delle colonne
32062306a36Sopenharmony_ci* ``:fill-cells:``    invece di estendere automaticamente una cella su quelle
32162306a36Sopenharmony_ci  mancanti, ne crea di vuote.
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ciruoli:
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci* ``:cspan:`` [int] colonne successive (*morecols*)
32662306a36Sopenharmony_ci* ``:rspan:`` [int] righe successive (*morerows*)
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ciL'esempio successivo mostra come usare questo marcatore. Il primo livello della
32962306a36Sopenharmony_cinostra lista di liste è la *riga*. In una *riga* è possibile inserire solamente
33062306a36Sopenharmony_cila lista di celle che compongono la *riga* stessa. Fanno eccezione i *commenti*
33162306a36Sopenharmony_ci( ``..`` ) ed i *collegamenti* (per esempio, un riferimento a
33262306a36Sopenharmony_ci``:ref:`last row <last row>``` / :ref:`last row <it last row>`)
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci.. code-block:: rst
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_ci   .. flat-table:: table title
33762306a36Sopenharmony_ci      :widths: 2 1 1 3
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci      * - head col 1
34062306a36Sopenharmony_ci        - head col 2
34162306a36Sopenharmony_ci        - head col 3
34262306a36Sopenharmony_ci        - head col 4
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ci      * - row 1
34562306a36Sopenharmony_ci        - field 1.1
34662306a36Sopenharmony_ci        - field 1.2 with autospan
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci      * - row 2
34962306a36Sopenharmony_ci        - field 2.1
35062306a36Sopenharmony_ci        - :rspan:`1` :cspan:`1` field 2.2 - 3.3
35162306a36Sopenharmony_ci
35262306a36Sopenharmony_ci      * .. _`it last row`:
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci        - row 3
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ciChe verrà rappresentata nel seguente modo:
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci   .. flat-table:: table title
35962306a36Sopenharmony_ci      :widths: 2 1 1 3
36062306a36Sopenharmony_ci
36162306a36Sopenharmony_ci      * - head col 1
36262306a36Sopenharmony_ci        - head col 2
36362306a36Sopenharmony_ci        - head col 3
36462306a36Sopenharmony_ci        - head col 4
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ci      * - row 1
36762306a36Sopenharmony_ci        - field 1.1
36862306a36Sopenharmony_ci        - field 1.2 with autospan
36962306a36Sopenharmony_ci
37062306a36Sopenharmony_ci      * - row 2
37162306a36Sopenharmony_ci        - field 2.1
37262306a36Sopenharmony_ci        - :rspan:`1` :cspan:`1` field 2.2 - 3.3
37362306a36Sopenharmony_ci
37462306a36Sopenharmony_ci      * .. _`it last row`:
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci        - row 3
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ciRiferimenti incrociati
37962306a36Sopenharmony_ci----------------------
38062306a36Sopenharmony_ci
38162306a36Sopenharmony_ciAggiungere un riferimento incrociato da una pagina della
38262306a36Sopenharmony_cidocumentazione ad un'altra può essere fatto scrivendo il percorso al
38362306a36Sopenharmony_cifile corrispondende, non serve alcuna sintassi speciale. Si possono
38462306a36Sopenharmony_ciusare sia percorsi assoluti che relativi. Quelli assoluti iniziano con
38562306a36Sopenharmony_ci"documentation/". Per esempio, potete fare riferimento a questo
38662306a36Sopenharmony_cidocumento in uno dei seguenti modi (da notare che l'estensione
38762306a36Sopenharmony_ci``.rst`` è necessaria)::
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci    Vedere Documentation/doc-guide/sphinx.rst. Questo funziona sempre
39062306a36Sopenharmony_ci    Guardate pshinx.rst, che si trova nella stessa cartella.
39162306a36Sopenharmony_ci    Leggete ../sphinx.rst, che si trova nella cartella precedente.
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ciSe volete che il collegamento abbia un testo diverso rispetto al
39462306a36Sopenharmony_cititolo del documento, allora dovrete usare la direttiva Sphinx
39562306a36Sopenharmony_ci``doc``. Per esempio::
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ci    Vedere :doc:`il mio testo per il collegamento <sphinx>`.
39862306a36Sopenharmony_ci
39962306a36Sopenharmony_ciNella maggioranza dei casi si consiglia il primo metodo perché è più
40062306a36Sopenharmony_cipulito ed adatto a chi legge dai sorgenti. Se incontrare un ``:doc:``
40162306a36Sopenharmony_ciche non da alcun valore, sentitevi liberi di convertirlo in un
40262306a36Sopenharmony_cipercorso al documento.
40362306a36Sopenharmony_ci
40462306a36Sopenharmony_ciPer informazioni riguardo ai riferimenti incrociati ai commenti
40562306a36Sopenharmony_cikernel-doc per funzioni o tipi, consultate
40662306a36Sopenharmony_ci
40762306a36Sopenharmony_ci.. _it_sphinx_kfigure:
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ciFigure ed immagini
41062306a36Sopenharmony_ci==================
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ciSe volete aggiungere un'immagine, utilizzate le direttive ``kernel-figure``
41362306a36Sopenharmony_cie ``kernel-image``. Per esempio, per inserire una figura di un'immagine in
41462306a36Sopenharmony_ciformato SVG (:ref:`it_svg_image_example`)::
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ci    .. kernel-figure::  ../../../doc-guide/svg_image.svg
41762306a36Sopenharmony_ci       :alt:    una semplice immagine SVG
41862306a36Sopenharmony_ci
41962306a36Sopenharmony_ci       Una semplice immagine SVG
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci.. _it_svg_image_example:
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_ci.. kernel-figure::  ../../../doc-guide/svg_image.svg
42462306a36Sopenharmony_ci   :alt:    una semplice immagine SVG
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_ci   Una semplice immagine SVG
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ciLe direttive del kernel per figure ed immagini supportano il formato **DOT**,
42962306a36Sopenharmony_ciper maggiori informazioni
43062306a36Sopenharmony_ci
43162306a36Sopenharmony_ci* DOT: http://graphviz.org/pdf/dotguide.pdf
43262306a36Sopenharmony_ci* Graphviz: http://www.graphviz.org/content/dot-language
43362306a36Sopenharmony_ci
43462306a36Sopenharmony_ciUn piccolo esempio (:ref:`it_hello_dot_file`)::
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ci  .. kernel-figure::  ../../../doc-guide/hello.dot
43762306a36Sopenharmony_ci     :alt:    ciao mondo
43862306a36Sopenharmony_ci
43962306a36Sopenharmony_ci     Esempio DOT
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ci.. _it_hello_dot_file:
44262306a36Sopenharmony_ci
44362306a36Sopenharmony_ci.. kernel-figure::  ../../../doc-guide/hello.dot
44462306a36Sopenharmony_ci   :alt:    ciao mondo
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_ci   Esempio DOT
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ciTramite la direttiva ``kernel-render`` è possibile aggiungere codice specifico;
44962306a36Sopenharmony_ciad esempio nel formato **DOT** di Graphviz.::
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_ci  .. kernel-render:: DOT
45262306a36Sopenharmony_ci     :alt: foobar digraph
45362306a36Sopenharmony_ci     :caption: Codice **DOT** (Graphviz) integrato
45462306a36Sopenharmony_ci
45562306a36Sopenharmony_ci     digraph foo {
45662306a36Sopenharmony_ci      "bar" -> "baz";
45762306a36Sopenharmony_ci     }
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ciLa rappresentazione dipenderà dei programmi installati. Se avete Graphviz
46062306a36Sopenharmony_ciinstallato, vedrete un'immagine vettoriale. In caso contrario, il codice grezzo
46162306a36Sopenharmony_civerrà rappresentato come *blocco testuale* (:ref:`it_hello_dot_render`).
46262306a36Sopenharmony_ci
46362306a36Sopenharmony_ci.. _it_hello_dot_render:
46462306a36Sopenharmony_ci
46562306a36Sopenharmony_ci.. kernel-render:: DOT
46662306a36Sopenharmony_ci   :alt: foobar digraph
46762306a36Sopenharmony_ci   :caption: Codice **DOT** (Graphviz) integrato
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_ci   digraph foo {
47062306a36Sopenharmony_ci      "bar" -> "baz";
47162306a36Sopenharmony_ci   }
47262306a36Sopenharmony_ci
47362306a36Sopenharmony_ciLa direttiva *render* ha tutte le opzioni della direttiva *figure*, con
47462306a36Sopenharmony_cil'aggiunta dell'opzione ``caption``. Se ``caption`` ha un valore allora
47562306a36Sopenharmony_ciun nodo *figure* viene aggiunto. Altrimenti verrà aggiunto un nodo *image*.
47662306a36Sopenharmony_ciL'opzione ``caption`` è necessaria in caso si vogliano aggiungere dei
47762306a36Sopenharmony_ciriferimenti (:ref:`it_hello_svg_render`).
47862306a36Sopenharmony_ci
47962306a36Sopenharmony_ciPer la scrittura di codice **SVG**::
48062306a36Sopenharmony_ci
48162306a36Sopenharmony_ci  .. kernel-render:: SVG
48262306a36Sopenharmony_ci     :caption: Integrare codice **SVG**
48362306a36Sopenharmony_ci     :alt: so-nw-arrow
48462306a36Sopenharmony_ci
48562306a36Sopenharmony_ci     <?xml version="1.0" encoding="UTF-8"?>
48662306a36Sopenharmony_ci     <svg xmlns="http://www.w3.org/2000/svg" version="1.1" ...>
48762306a36Sopenharmony_ci        ...
48862306a36Sopenharmony_ci     </svg>
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ci.. _it_hello_svg_render:
49162306a36Sopenharmony_ci
49262306a36Sopenharmony_ci.. kernel-render:: SVG
49362306a36Sopenharmony_ci   :caption: Integrare codice **SVG**
49462306a36Sopenharmony_ci   :alt: so-nw-arrow
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_ci   <?xml version="1.0" encoding="UTF-8"?>
49762306a36Sopenharmony_ci   <svg xmlns="http://www.w3.org/2000/svg"
49862306a36Sopenharmony_ci     version="1.1" baseProfile="full" width="70px" height="40px" viewBox="0 0 700 400">
49962306a36Sopenharmony_ci   <line x1="180" y1="370" x2="500" y2="50" stroke="black" stroke-width="15px"/>
50062306a36Sopenharmony_ci   <polygon points="585 0 525 25 585 50" transform="rotate(135 525 25)"/>
50162306a36Sopenharmony_ci   </svg>
502