2012-11-30 5 views
17

Zauważam dziwny problem z doxygen 1.8.2. Włączenie etykiety nagłówka powoduje zniknięcie tytułu nagłówka z wyjściowego html.etykieta nagłówka na stronie doxygen markdown powoduje, że tytuł nagłówka znika

z poniższym pliku wyprzedaży:

Title   {#title} 
===== 

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

mam wyjścia jak:

tytule

Text dla sekcji 1

Ale gdybym usuń {#section1} etykieta z pliku wyprzedaży, otrzymuję poprawny wynik jako:

tytule

Sekcja 1

Tekst dla sekcji 1

Co jest błędem I robię tutaj?

Edit zaobserwowałem następujące ostrzeżenie kiedy etykieta sekcję:

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

Nie mogłem odtworzyć tego zachowania w prostym przypadku testowym z domyślnym wygenerowanym plikiem konfiguracyjnym dla Doxygen 1.8.2. Czy widzisz to zachowanie w samodzielnym teście lub jako część większego zestawu dokumentów? Może być konieczne opublikowanie dokładnej zawartości plików, z którymi pracujesz, w tym pliku konfiguracyjnego. – DRH

+0

Ten sam "problem" z 1.8.8. Miałem plik README.md, który zrobił dokładnie to samo, ale bez etykiety dla najwyższego nagłówka. –

Odpowiedz

19

po pewnym dochodzenia, postanowiłem to pojawia być błąd, ale tylko dlatego, że jest nieco sprzeczne z intuicją .

Rozważmy następujący:

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

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

Something highly interesting... 

Dokument rozpoczyna się od poziomu 1 nagłówka (jak opisano here) i tak Doxygen analizuje „głównej sekcji” jako nazwisko i tytuł strony. Nagłówek i etykieta {#the_main_section} wydają się być zignorowane po przekonwertowaniu nagłówka na nazwę strony.

Przetwarzanie następnie przechodzi do reszty dokumentu i Kiedy dotrze do "Podsekcji pierwszej", uważa, że ​​nie ma rodzica "Sekcja" dla "podsekcji" (jak "Przekrój" został przekonwertowany na stronę imię i nazwisko) i tu się dławi.

Dokładniej, odrzuca podsekcji (nagłówek), ponieważ uważa, że ​​nie ma rodzica "sekcji". Cały pozostały tekst pozostaje, ale jest traktowany jako część "strony" (bez rodzica sekcji).

"Poprawka" polega na dodaniu innego "nagłówka poziomu 1" po początkowym nagłówku "pierwszego poziomu", np.

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

Należy dodać, że to nadal nie wyjaśnia (ani nie jest dla mnie jasne), dlaczego usunięcie etykiet sprawia, że ​​Markdown działa poprawnie. Mówię "daje wygląd", ponieważ jeśli usuniesz etykiety i spróbujesz dodać "[TOC]" do dokumentu, nie powstanie TOC! Jeśli zastosujesz "obejście" opisane powyżej, przeanalizowany dokument będzie wyglądał poprawnie ** i ** zawiera spis treści z linkami do nagłówków sekcji/podsekcji. –

+0

Oto strona, która omawia te problemy (w tym jedną z Twojego komentarza): http://svenax.net/site/2013/07/creating-user-documentation-with-doxygen/. Jedyną rzeczą, o której nie wspomniano, jest to, że brak etykietowania WSZYSTKICH sekcji, w tym najwyższego nagłówka (z wyjątkiem nazwy strony), powoduje, że żaden z nich nie pojawia się w ogóle, nie tylko w spisie treści, ale także na samej stronie. –

+1

** Uwaga dla pracowników Google: ** Jest rok 2015, a doxygen 1.8.9.1 nadal ma ten błąd! Dzięki Lester za rozwiązanie :) – MickyD

1

Ten sam problem w wersji 1.8.9.1. Możesz tego uniknąć, używając znaczników # zamiast ---.

Na przykład:

[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 

zadziała.Możesz nawet umieścić znacznik [TOC] pod definicją tytułu strony, aby usunąć go z tabeli treści.