2012-11-30 12 views
17

Ho notato uno strano problema con doxygen 1.8.2. Includendo un'etichetta di intestazione, il titolo dell'intestazione scompare dall'output HTML.nella pagina markdown doxygen fa scomparire il titolo dell'intestazione

Con il seguente file Markdown:

Title   {#title} 
===== 

Section 1  {#section1} 
--------- 
Text for section 1 

ho l'output come:

Titolo

testo per la sezione 1

Ma, se io rimuovere lo {#section1} etichetta dal file Markdown, ottengo l'output corretto come:

Titolo

Sezione 1

testo per la sezione 1

Qual è l'errore che ho sto facendo qui?

Edit ho osservato il seguente avviso quando etichettare una sezione:

warning: found subsection command outside of section context! 
+0

non sono riuscito a riprodurre questo comportamento in un semplice caso di test con un file di configurazione di default generato per Doxygen 1.8.2. Vedi questo comportamento in un caso di test indipendente o come parte di un set di documenti più grande? Potrebbe essere necessario pubblicare il contenuto esatto dei file con cui si sta lavorando, incluso il file di configurazione. – DRH

+0

Lo stesso "problema" con 1.8.8. Ho avuto un README.md che ha fatto la stessa identica cosa, ma senza l'etichetta per l'intestazione più in alto. –

risposta

19

Dopo alcune indagini, ho deciso questa sembra tratta di un problema, ma solo perché è un po 'contro-intuitivo .

Si consideri il seguente:

The Main Section {#the_main_section} 
================ 

Subsection One {#first} 
-------------- 

Something highly interesting... 

Il documento inizia con un colpo di testa di livello 1 (come descritto here) e così Doxygen analizza "La sezione principale", come il nome e il titolo della pagina. L'intestazione e l'etichetta {#the_main_section} sembrano non essere rispettate una volta che l'intestazione è stata convertita in un nome di pagina.

L'elaborazione passa quindi al resto del documento e quando raggiunge "Sottosezione 1", ritiene che non vi sia alcuna "sezione" genitore per la "sottosezione" (poiché la "Sezione" è stata convertita in una pagina nome) e questo è dove soffoca.

In particolare, ignora la sottosezione (intestazione) poiché ritiene che non vi sia alcuna "sezione" genitore. Tutto il resto del testo rimane, ma viene trattato come parte della "pagina" (senza parentela di sezione).

La "correzione" consiste nell'aggiungere un'altra "intestazione di livello 1" dopo l'iniziale "intestazione di livello 1", ad es.

My Great Documentation (Which Becomes the Page Name) 
==================================================== 

The First Section 
================= 

Q. What? I already created a level 1 heading? 
A. Yup, but that was converted to a page name/title and discarded, so now 
    we have to create another level 1 heading for my first section. Don't 
    be fooled into thinking that the opening heading in this document is 
    still treated as an opening heading by Doxygen - it's not! 
+2

Dovrei aggiungere che questo ancora non spiega (né è chiaro per me) il motivo per cui la rimozione delle etichette dà l'apparenza del Markdown funziona correttamente. Dico "dà l'aspetto", perché se rimuovi le etichette e provi ad aggiungere un '[TOC]' al documento, non viene prodotto alcun TOC! Se si implementa la "soluzione alternativa" sopra descritta, il documento analizzato appare corretto ** e ** include il sommario con collegamenti alle intestazioni sezione/sottosezione. –

+0

Ecco una pagina che discute questi problemi (tra cui quello da tuo commento): http://svenax.net/site/2013/07/creating-user-documentation-with-doxygen/. L'unica cosa che non è menzionato è che non etichettare tutte le sezioni, tra cui l'intestazione più in alto (tranne il nome della pagina) fa sì che nessuno di loro di presentarsi a tutti, non solo nel sommario, ma nella pagina stessa. –

+1

** Nota per i googler: ** È il 2015 e doxygen 1.8.9.1 ha ancora questo bug! Grazie Lester per la soluzione :) – MickyD

1

Stesso problema nella versione 1.8.9.1. Puoi evitarlo usando # tag invece di ---.

Ad esempio:

[TOC] 

Page Title {#pageTitle} 
========== 
Lorem ipsum dolor sit amet 

# section 1 {#section1} 
Lorem ipsum dolor sit amet 

## Section 1.1 {#section1-1} 
Lorem ipsum dolor sit amet 

# section 2 {#section2} 
Lorem ipsum dolor sit amet 

# section 3 {#section3} 
Lorem ipsum dolor sit amet 

## section 3.1 {#section3-1} 
Lorem ipsum dolor sit amet 

# section 4 {#section4} 
Lorem ipsum dolor sit amet 

funzionerà.Puoi persino inserire il tag [TOC] sotto la definizione del titolo della pagina per rimuoverlo dal sommario.

Problemi correlati