热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

doxygen教程9使用Markdown

文章目录

文章目录

    • Markdown 简介
    • 在注释中使用 Markdown
    • 利用 Markdown 编写网页
      • 标题及首页
      • 用 special commands 编写网页

Markdown 简介

Markdown 是一种广泛使用的, 用于编写文档的语法. 相比于常用的 Word, 利用 Markdown 可以非常方便地控制格式, 从而专注于写作. 当然, 论功能, Word 是完胜的, 但是在程序开发的语境下, Markdown 是更舒适的选择(即使表格和图片是硬伤 T.T );

在 github, gitee 等代码托管网站, 仓库目录下的 README.md 会被自动渲染并显示出来. CSDN, 知乎等文章发布平台也都支持用 Markdown 写文章. doxygen 则在 1.8.0 版本引入了 Markdown 的支持.

不太了解 Markdown 的同学可以自行网上搜索教程, doxygen_manual-1.9.2.pdf -> Chapter 5 -> Markdown support 也完整地介绍了 Markdown 的语法. 比较好用的 Markdown 编辑器是 Typora.

在注释中使用 Markdown

我们可以在注释中使用 Markdown, 例如

/** @brief 一个名为 fun 的函数;
* @detais
* ## 这是一个标题:
* 这个函数可以干这些事:
* - 事情 1
* - 事情 2
* 看看这个[超链接](cn.bing.com)
*/

void fun();

上面的注释, 输出成文档后是这样的

在这里插入图片描述

可以看到, 文档中出现了标题, 列表, 超链接等结构.

利用 Markdown 编写网页

有时我们文档的内容不完全来自于代码的注释, 例如安装说明, 使用说明, 或者教程这类内容, 我们希望放到单独的文件里, 而不是放到源文件里和代码混在一起. 有些人可能习惯用 Word 来编写这类文档, 不过在 doxygen 的配合下, Markdown 是个更好的选择.

Markdown 文件的扩展名是 .md.markdown. doxygen 会将每一个 Markdown 文件视为一个页面(page), 在 html 输出中, 也就是一个网页.

下面我们新建一个目录 hello_doxygen3, 然后在该目录下新建一个纯文本文件 page1.md, 然后用 Typora 打开(用记事本, Notepad ++ 等工具也可以), 输入以下内容:

# 软件使用手册
## 软件简介
本软件具有如下功能点:
- 功能 1;
- 功能 2;
- 功能 3;
## 下载
- [官网下载链接](xxxx/.com/download)
- 找[度娘](www.baidu.com)下载
## 安装
安装过程非常简单,按如下步骤操作即可:
1. 点击 "下一步";
2. 点击 "下一步";
3. 点击 "下一步";

然后, doxygen -g 生成配置文件, doxygen Doxfile 输出文档, 可以看到, 导航栏多了 “Related Pages” 一项

在这里插入图片描述

点进去, 页面是这样的

在这里插入图片描述

标题及首页

标题(title), 就是 “Related Pages” 的链接列表中, 链接的名字, 也是链接点进去之后, 那个页面的标题.

如果 Markdown 文件以一个 header 开头, 也就是本例中的 ## 软件使用手册, 则标题就是这个 header, 否则(以其他类型的文本开头), 就以文件名作为标题.

此外, 如果第一行的 header 的 label id 是 mainpageindex, 也就是写成下面这样:

## 软件使用手册 {#mainpage}

## 软件使用手册 {#index}

则这个文件将在首页(index.html)显示.

label id 是 Markdown 的扩展语法.

用 special commands 编写网页

实际上 doxygen 在输出文档时, 对 Markdown 文本的处理方式是, 首先利用 Markdown 预处理器转化成包含 special commands 和 HTML 标签的文本, 然后再将这个中间结果转化成各种格式的文档. 所以, 利用 doxygen 自身的命令也可以写出上述的页面. 以下是涉及到的部分指令:

@mainpage
@page
@section
@subsection
@ref

下面这段注释生成的页面和上述用 Markdown 生成的页面效果是一样的, 并在首页显示. 通常将这类 C 注释专门放到 .dox 文件中. 如果不需要作为首页, 则将 @mainpage 替换成 @page.

/**
@mainpage
@section 软件简介
本软件具有如下功能点:
- 功能 1;
- 功能 2;
- 功能 3;
@section 下载
- 官网下载链接
- 找度娘下载
@section 安装
安装过程非常简单,按如下步骤操作即可:
1. 点击 "下一步";
2. 点击 "下一步";
3. 点击 "下一步";
*/

鉴于二者功能一致, 但 Markdown 的使用更加广泛, 所以学习 Markdown 的收益更高些. 因此仅作一例, 以增进了解, 不再深入介绍相关命令(其实是我不想再深入研究了).


版权声明:本文为qq_28867779原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_28867779/article/details/121071408
推荐阅读
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
author-avatar
哲亚Zoe
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有