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