Как включить исходники в Doxygen/Markdown

При документировании с помощью Doxygen можно добавить дополнительную документацию через .dox, текстовые файлы или файлы Markdown.

В проекте я использую файлы Markdown для добавления дополнительной документации, и мне это очень нравится. Однако есть один случай, когда я не могу сделать все, что может .dox файл. Если я хочу \включить некоторый фрагмент кода из исходного файла в качестве блока кода. Используя файлы .dox, я бы просто написал:

\include main.cpp

чтобы содержимое main.cpp было включено дословно в качестве блока кода в результирующую документацию.

В Markdown все, что я видел, — это блоки кода, встроенные непосредственно в исходный код Markdown через нотацию ```.

Есть ли способ, используя Doxygen с Markdown, включить в документацию код из исходных файлов?

Я использую doxygen 1.10.0.

Какую версию doxygen вы используете? Ответ от @ Thor-x86_128 правильный, но я бы также рассмотрел возможность добавить \noop перед частью [...], чтобы [...] не отображался в документации (в данном случае команды foodler. Rge \include/\snippet не являются собственными командами уценки). но возможности doxygen, вам также следует взглянуть на <!--!... --> (см. doxygen.nl/manual/htmlcmds.html#htmltagcmds), который добавлен в версию doxygen 1.12.0.

albert 03.09.2024 10:35

@albert, пожалуйста, дополни мой ответ твоим, чтобы мы могли понять, что ты пытаешься объяснить.

Thor-x86_128 04.09.2024 02:26
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Этот пример для меня работа. Допустим, есть «source.c», и его нужно включить в «destination.md».

source.c

//! [Your tag name here]
int foodler(int input) {
    return input - 1;
}
//! [Your tag name here]

Обратите внимание, что есть [Your tag name here]. Любой код, который находится между этими строками комментариев, будет рассматриваться как фрагмент с именем «Здесь ваше имя тега». Затем, чтобы использовать фрагмент:

destination.md

Hello folks! this is my code:

\snippet path/to/source.c Your tag name here

Cool, isn't it?

См. также мой комментарий с вопросом.

albert 03.09.2024 10:37

Я не знал, что мы можем использовать специальные команды Doxygen непосредственно в Markdown.

BobMorane 03.09.2024 13:57

На основе ответа https://stackoverflow.com/a/78942289/1657886 и комментариев с исходным вопросом Как включить источники в Doxygen/Markdown некоторых дополнительных объяснений (все показано с текущей версией 1.12.0 doxygen версия).

Когда в source.c:

//! \brief some brief text
//! [mytag]
int foodler(int input) {
    return input - 1;
}
//! [mytag]

в результате вы получите результирующую документацию функции foodler (при условии, что вы также хотите показать содержимое source.c, что обычно имеет место, поскольку фрагмент часто указывает на какой-то реальный код проекта):

обратите внимание на [mytag].

Эту проблему можно решить, используя \noop (см.: https://www.doxygen.nl/manual/commands.html#cmdnoop):

//! \brief some brief text
//! \noop [mytag]
int foodler(int input) {
    return input - 1;
}
//! \noop [mytag]

что приводит к:

При просмотре файла уценки:

Just a page
===========

Lets include some text
\snippet source.c mytag

который выглядит в doxygen так:

который выглядит, например, на GitHub так:

Обратите внимание на строку \snippet. Это можно преодолеть, используя <!--! ... --> (см. конец абзаца https://www.doxygen.nl/manual/htmlcmds.html#htmltagcmds):

Just a page
===========

Lets include some text
<!--! \snippet source.c mytag -->

что с doxygen не имеет значения, но с GitHub дает:

Другие вопросы по теме