2012-06-25 13 views
10

En doxygen escribo:Doxygen: etiqueta de código de mata muesca

/*! Sample: 

\code{.cpp} 
void main(int argc, char** argv) 
{ 
    if (argc < 2) 
    { 
     cout << "no way!" << endl; 
    } 
    else 
    { 
     foobar(argv[1]); 
    } 
} 
\endcode 
*/ 

Ahora Doxygen generará un ejemplo de código perfectamente sintaxis resaltada por mi documentación, pero por desgracia, también mata la sangría:

Muestra :

void main(int argc, char** argv) 
{ 
if (argc < 2) 
{ 
cout << "no way!" << endl; 
} 
else 
{ 
foobar(argv[1]); 
} 
} 

Qué puedo hacer para hacer que doxygen respete mi sangría. Sé que hay \ textualmente, pero no resalta la sintaxis.


EDIT: Aquí está la configuración Doxygen, tal vez hay algo mal ahí:

#--------------------------------------------------------------------------- 
# Project related configuration options 
#--------------------------------------------------------------------------- 
DOXYFILE_ENCODING  = UTF-8 
PROJECT_NAME   = demo 
PROJECT_NUMBER   = 
PROJECT_BRIEF   = 
PROJECT_LOGO   = 
OUTPUT_DIRECTORY  = ../../../../../Desktop/dox 
CREATE_SUBDIRS   = NO 
OUTPUT_LANGUAGE  = English 
BRIEF_MEMBER_DESC  = YES 
REPEAT_BRIEF   = YES 
ABBREVIATE_BRIEF  = "The $name class" \ 
         "The $name widget" \ 
         "The $name file" \ 
         is \ 
         provides \ 
         specifies \ 
         contains \ 
         represents \ 
         a \ 
         an \ 
         the 
ALWAYS_DETAILED_SEC = NO 
INLINE_INHERITED_MEMB = NO 
FULL_PATH_NAMES  = NO 
STRIP_FROM_PATH  = 
STRIP_FROM_INC_PATH = 
SHORT_NAMES   = NO 
JAVADOC_AUTOBRIEF  = YES 
QT_AUTOBRIEF   = NO 
MULTILINE_CPP_IS_BRIEF = YES 
INHERIT_DOCS   = YES 
SEPARATE_MEMBER_PAGES = NO 
TAB_SIZE    = 8 
ALIASES    = 
TCL_SUBST    = 
OPTIMIZE_OUTPUT_FOR_C = NO 
OPTIMIZE_OUTPUT_JAVA = NO 
OPTIMIZE_FOR_FORTRAN = NO 
OPTIMIZE_OUTPUT_VHDL = NO 
EXTENSION_MAPPING  = 
MARKDOWN_SUPPORT  = YES 
BUILTIN_STL_SUPPORT = NO 
CPP_CLI_SUPPORT  = NO 
SIP_SUPPORT   = NO 
IDL_PROPERTY_SUPPORT = YES 
DISTRIBUTE_GROUP_DOC = NO 
SUBGROUPING   = YES 
INLINE_GROUPED_CLASSES = NO 
INLINE_SIMPLE_STRUCTS = NO 
TYPEDEF_HIDES_STRUCT = NO 
SYMBOL_CACHE_SIZE  = 0 
LOOKUP_CACHE_SIZE  = 0 

#--------------------------------------------------------------------------- 
# Build related configuration options 
#--------------------------------------------------------------------------- 
EXTRACT_ALL   = YES 
EXTRACT_PRIVATE  = YES 
EXTRACT_PACKAGE  = NO 
EXTRACT_STATIC   = YES 
EXTRACT_LOCAL_CLASSES = YES 
EXTRACT_LOCAL_METHODS = YES 
EXTRACT_ANON_NSPACES = YES 
HIDE_UNDOC_MEMBERS  = NO 
HIDE_UNDOC_CLASSES  = NO 
HIDE_FRIEND_COMPOUNDS = NO 
HIDE_IN_BODY_DOCS  = NO 
INTERNAL_DOCS   = NO 
CASE_SENSE_NAMES  = NO 
HIDE_SCOPE_NAMES  = NO 
SHOW_INCLUDE_FILES  = YES 
FORCE_LOCAL_INCLUDES = NO 
INLINE_INFO   = YES 
SORT_MEMBER_DOCS  = YES 
SORT_BRIEF_DOCS  = NO 
SORT_MEMBERS_CTORS_1ST = NO 
SORT_GROUP_NAMES  = NO 
SORT_BY_SCOPE_NAME  = NO 
STRICT_PROTO_MATCHING = NO 
GENERATE_TODOLIST  = YES 
GENERATE_TESTLIST  = YES 
GENERATE_BUGLIST  = YES 
GENERATE_DEPRECATEDLIST= YES 
ENABLED_SECTIONS  = 
MAX_INITIALIZER_LINES = 30 
SHOW_USED_FILES  = YES 
SHOW_FILES    = YES 
SHOW_NAMESPACES  = YES 
FILE_VERSION_FILTER = 
LAYOUT_FILE   = 
CITE_BIB_FILES   = 

#--------------------------------------------------------------------------- 
# configuration options related to warning and progress messages 
#--------------------------------------------------------------------------- 
QUIET     = NO 
WARNINGS    = NO 
WARN_IF_UNDOCUMENTED = NO 
WARN_IF_DOC_ERROR  = YES 
WARN_NO_PARAMDOC  = NO 
WARN_FORMAT   = "$file:$line: $text" 
WARN_LOGFILE   = C:\Users\foobar\Desktop\dox\demo.log 

#--------------------------------------------------------------------------- 
# configuration options related to the input files 
#--------------------------------------------------------------------------- 
INPUT     = ../demo/src/export 
INPUT_ENCODING   = UTF-8 
FILE_PATTERNS   = *.c \ 
         *.cc \ 
         *.cxx \ 
         *.cpp \ 
         *.c++ \ 
         *.d \ 
         *.java \ 
         *.ii \ 
         *.ixx \ 
         *.ipp \ 
         *.i++ \ 
         *.inl \ 
         *.h \ 
         *.hh \ 
         *.hxx \ 
         *.hpp \ 
         *.h++ \ 
         *.idl \ 
         *.odl \ 
         *.cs \ 
         *.php \ 
         *.php3 \ 
         *.inc \ 
         *.m \ 
         *.mm \ 
         *.dox \ 
         *.py \ 
         *.f90 \ 
         *.f \ 
         *.vhd \ 
         *.vhdl 
RECURSIVE    = YES 
EXCLUDE    = 
EXCLUDE_SYMLINKS  = NO 
EXCLUDE_PATTERNS  = 
EXCLUDE_SYMBOLS  = 
EXAMPLE_PATH   = 
EXAMPLE_PATTERNS  = * 
EXAMPLE_RECURSIVE  = NO 
IMAGE_PATH    = 
INPUT_FILTER   = 
FILTER_PATTERNS  = 
FILTER_SOURCE_FILES = NO 
FILTER_SOURCE_PATTERNS = 

#--------------------------------------------------------------------------- 
# configuration options related to source browsing 
#--------------------------------------------------------------------------- 
SOURCE_BROWSER   = YES 
INLINE_SOURCES   = NO 
STRIP_CODE_COMMENTS = YES 
REFERENCED_BY_RELATION = YES 
REFERENCES_RELATION = YES 
REFERENCES_LINK_SOURCE = YES 
USE_HTAGS    = NO 
VERBATIM_HEADERS  = YES 

#--------------------------------------------------------------------------- 
# configuration options related to the alphabetical class index 
#--------------------------------------------------------------------------- 
ALPHABETICAL_INDEX  = YES 
COLS_IN_ALPHA_INDEX = 5 
IGNORE_PREFIX   = 

#--------------------------------------------------------------------------- 
# configuration options related to the HTML output 
#--------------------------------------------------------------------------- 
GENERATE_HTML   = YES 
HTML_OUTPUT   = html 
HTML_FILE_EXTENSION = .html 
HTML_HEADER   = header.html 
HTML_FOOTER   = 
HTML_STYLESHEET  = 
HTML_EXTRA_FILES  = 
HTML_COLORSTYLE_HUE = 220 
HTML_COLORSTYLE_SAT = 100 
HTML_COLORSTYLE_GAMMA = 80 
HTML_TIMESTAMP   = NO 
HTML_DYNAMIC_SECTIONS = NO 
HTML_INDEX_NUM_ENTRIES = 100 
GENERATE_DOCSET  = NO 
DOCSET_FEEDNAME  = "Doxygen generated docs" 
DOCSET_BUNDLE_ID  = org.doxygen.Project 
DOCSET_PUBLISHER_ID = org.doxygen.Publisher 
DOCSET_PUBLISHER_NAME = Publisher 
GENERATE_HTMLHELP  = NO 
CHM_FILE    = 
HHC_LOCATION   = 
GENERATE_CHI   = NO 
CHM_INDEX_ENCODING  = 
BINARY_TOC    = NO 
TOC_EXPAND    = NO 
GENERATE_QHP   = NO 
QCH_FILE    = 
QHP_NAMESPACE   = org.doxygen.Project 
QHP_VIRTUAL_FOLDER  = doc 
QHP_CUST_FILTER_NAME = 
QHP_CUST_FILTER_ATTRS = 
QHP_SECT_FILTER_ATTRS = 
QHG_LOCATION   = 
GENERATE_ECLIPSEHELP = NO 
ECLIPSE_DOC_ID   = org.doxygen.Project 
DISABLE_INDEX   = NO 
GENERATE_TREEVIEW  = YES 
ENUM_VALUES_PER_LINE = 4 
TREEVIEW_WIDTH   = 250 
EXT_LINKS_IN_WINDOW = NO 
FORMULA_FONTSIZE  = 10 
FORMULA_TRANSPARENT = YES 
USE_MATHJAX   = NO 
MATHJAX_RELPATH  = http://www.mathjax.org/mathjax 
MATHJAX_EXTENSIONS  = 
SEARCHENGINE   = NO 
SERVER_BASED_SEARCH = NO 

#--------------------------------------------------------------------------- 
# configuration options related to the LaTeX output 
#--------------------------------------------------------------------------- 
GENERATE_LATEX   = NO 
LATEX_OUTPUT   = latex 
LATEX_CMD_NAME   = latex 
MAKEINDEX_CMD_NAME  = makeindex 
COMPACT_LATEX   = NO 
PAPER_TYPE    = a4wide 
EXTRA_PACKAGES   = 
LATEX_HEADER   = 
LATEX_FOOTER   = 
PDF_HYPERLINKS   = YES 
USE_PDFLATEX   = YES 
LATEX_BATCHMODE  = NO 
LATEX_HIDE_INDICES  = NO 
LATEX_SOURCE_CODE  = NO 
LATEX_BIB_STYLE  = plain 

#--------------------------------------------------------------------------- 
# configuration options related to the RTF output 
#--------------------------------------------------------------------------- 
GENERATE_RTF   = NO 
RTF_OUTPUT    = rtf 
COMPACT_RTF   = NO 
RTF_HYPERLINKS   = NO 
RTF_STYLESHEET_FILE = 
RTF_EXTENSIONS_FILE = 

#--------------------------------------------------------------------------- 
# configuration options related to the man page output 
#--------------------------------------------------------------------------- 
GENERATE_MAN   = NO 
MAN_OUTPUT    = man 
MAN_EXTENSION   = .3 
MAN_LINKS    = NO 

#--------------------------------------------------------------------------- 
# configuration options related to the XML output 
#--------------------------------------------------------------------------- 
GENERATE_XML   = NO 
XML_OUTPUT    = xml 
XML_SCHEMA    = 
XML_DTD    = 
XML_PROGRAMLISTING  = YES 

#--------------------------------------------------------------------------- 
# configuration options for the AutoGen Definitions output 
#--------------------------------------------------------------------------- 
GENERATE_AUTOGEN_DEF = NO 

#--------------------------------------------------------------------------- 
# configuration options related to the Perl module output 
#--------------------------------------------------------------------------- 
GENERATE_PERLMOD  = NO 
PERLMOD_LATEX   = NO 
PERLMOD_PRETTY   = YES 
PERLMOD_MAKEVAR_PREFIX = 

#--------------------------------------------------------------------------- 
# Configuration options related to the preprocessor 
#--------------------------------------------------------------------------- 
ENABLE_PREPROCESSING = YES 
MACRO_EXPANSION  = NO 
EXPAND_ONLY_PREDEF  = NO 
SEARCH_INCLUDES  = YES 
INCLUDE_PATH   = 
INCLUDE_FILE_PATTERNS = 
PREDEFINED    = 
EXPAND_AS_DEFINED  = 
SKIP_FUNCTION_MACROS = YES 

#--------------------------------------------------------------------------- 
# Configuration::additions related to external references 
#--------------------------------------------------------------------------- 
TAGFILES    = 
GENERATE_TAGFILE  = 
ALLEXTERNALS   = NO 
EXTERNAL_GROUPS  = YES 
PERL_PATH    = /usr/bin/perl 

#--------------------------------------------------------------------------- 
# Configuration options related to the dot tool 
#--------------------------------------------------------------------------- 
CLASS_DIAGRAMS   = NO 
MSCGEN_PATH   = 
HIDE_UNDOC_RELATIONS = NO 
HAVE_DOT    = NO 
DOT_NUM_THREADS  = 0 
DOT_FONTNAME   = FreeSans 
DOT_FONTSIZE   = 10 
DOT_FONTPATH   = 
CLASS_GRAPH   = YES 
COLLABORATION_GRAPH = YES 
GROUP_GRAPHS   = YES 
UML_LOOK    = NO 
UML_LIMIT_NUM_FIELDS = 10 
TEMPLATE_RELATIONS  = NO 
INCLUDE_GRAPH   = YES 
INCLUDED_BY_GRAPH  = YES 
CALL_GRAPH    = YES 
CALLER_GRAPH   = NO 
GRAPHICAL_HIERARCHY = YES 
DIRECTORY_GRAPH  = YES 
DOT_IMAGE_FORMAT  = png 
INTERACTIVE_SVG  = NO 
DOT_PATH    = \\somewhere\over\the\rainbow 
DOTFILE_DIRS   = 
MSCFILE_DIRS   = 
DOT_GRAPH_MAX_NODES = 50 
MAX_DOT_GRAPH_DEPTH = 1000 
DOT_TRANSPARENT  = YES 
DOT_MULTI_TARGETS  = NO 
GENERATE_LEGEND  = YES 

DOT_CLEANUP   = YES 

Respuesta

9

Si está utilizando Doxygen 1.8.1.1 o una versión anterior, se respetará la sangría. Doxygen Release 1.8.1.2 elimina la indentación principal compartida por las líneas de @code. Compruebe el Change log released on 12-07-2012.

+0

Esta característica errónea se corrigió en la versión 1.8.7 (o quizás antes), sin embargo, los bloques de código estilo Markdown aún no conservan la sangría. '@code ... @ endcode' funciona bien, pero' ~~~~~ ... ~~~~~ 'no. –

1

Usando Doxygen 1.8.1 consigo una sintaxis resaltada bloque de código con sangría respetada con el ejemplo en la pregunta . ¿Qué versión de Doxygen estás usando? Tal vez este sea solo un caso de actualización de su versión de Doxgen. Si esta no es la solución, tendrá que proporcionar un poco más de contexto, es decir, ¿es la documentación de ejemplo que proporciona en su código fuente en un archivo .txt o .markdown?

Tuve que cambiar tu carácter de comentario de apertura de \ a /, supongo que esto es solo un error tipográfico. Además, si su archivo contiene una fuente de C++, entonces el {.cpp} se puede dejar fuera de \code{.cpp} (es decir, \code por sí solo está bien).

+0

También uso doxygen 1.8.1. Hay dos diferencias entre la muestra aquí y la real: 1. Comienzo cada línea del comentario con otro asterisco (*) que está alineado con el de la primera línea. Esto no causa el problema, porque ya lo intenté sin. 2. Mi código real es solo un poco más detallado y parte de una descripción de clase. Y acabo de utilizar el código de muestra publicado anteriormente, pero el comportamiento es el mismo. –

+0

He intentado poner sus ejemplos de comentarios como la documentación de un método de clase y todavía tengo un bloque de código sangrado. No puedo ver nada en su archivo de configuración que pueda causar su problema.(aunque hay mucho que pasar, tal vez podría simplemente incluir los campos que difieren del archivo de configuración predeterminado). ¿Puede proporcionar algo más de contexto, es decir, un pequeño ejemplo de código que reproduce su problema? – Chris

2

Actualice su hoja de estilo doxygen html (.css) a la última versión. Eso solucionó el problema para mí.

8

que tenían el mismo problema y resultó debido a la utilización de una costumbre HTML_STYLESHEET: nuestro archivo CSS define sus propios estilos de div.fragment utilizado por Doxygen para envolver los fragmentos de código que no incluían white-space: pre. Agregarlo solucionó el problema.

0

Tuve este problema al documentar el mismo código con el mismo Doxygen 1.8.11 en otra computadora (significativamente más antigua). Toda la producción generada se volvió a crear, incluido el CSS.

La sangría era visible en la fuente HTML pero el navegador predeterminado del sistema se negó a mostrarla correctamente, y un archivo CHM correspondiente se comportó de la misma manera (lo cual no es sorprendente ya que el visor CHM de Microsoft usa el mismo navegador).

Bueno, era el navegador que obviamente es demasiado viejo para esto. Incluso Firefox 14, que también es bastante viejo, muestra el HTML generado con sangría.

Cuestiones relacionadas