Markdown语法使用总结

  只记录我写博客时用到的语法,至于那些高级的语法可以点这儿Cmd Markdown。本博客支持本文中指出的markdown语法。

常用语法:

  1. 六级标题,以#号的个数代替。
  2. 段落前面加1.(数字、点、空格)表示有序列表,加* + -表示无序列表。列表可嵌套,上一级和下一级之间敲四个空格即可。
  3. 段落前面加一个>(大于号)表示引用,加多个可以嵌套。
  4. 用一个*号包围的文本显示为斜体,两个*号包围的文本显示为粗体,三个*号包围的文本显示为斜体加粗,两个~号包围的文本显示为删除(似乎是模板js不支持,只能用html<del> 删除 </del>代替了)。
  5. 两个`(半角间隔号)包围的文本为行内代码,三个`包围的文本为代码段。
  6. 三个-(减号)或三个*号会替换成一条如下的分隔线:
  7. 图片的引用格式:![图片alt](图片地址 ''图片title''),但这样好像没法设置大小对齐,可以html代替。
    <div align="center">
        <img src="url"  width = "300" height = "120" alt="图片alt" title="图片title" />
    </div>
    
  8. 超链接引用格式:[超链接名](超链接地址 "超链接title"),title可加可不加。但这种方式的超链接默认在本页面打开,想在新页面可用这种格式替换<a href="超链接地址" target="_blank">超链接名</a>
  9. 补充:普通文本需要换行的先按两个空格再回车;
      缩进可用:

【1】&ensp;或&#8194; //半角
【2】&emsp;或&#8195; //全角
【3】&nbsp;或&#160;

测试下效果:

  • 列表嵌套
    1. 嵌套两行有序列表。
    2. 嵌套两行有序列表。
      • 再嵌套两行无序列表。
      • 再嵌套两行无序列表。
  • 引用嵌套

这是直接引用

嵌套引用

  • 字体
    斜体,对比,加粗斜体加粗 删除
  • 分割线


  • 图片
    • markdown引入图片
      图片测试
    • html引入图片
测试图片
* 链接

我是内链 我是外链

写这篇文章时发现一个Bug,markdown渲染时不支持将代码段嵌套,即上面的引入图片的那段html代码,不能嵌在次级列表下,而直接加入肯定就导致8.超链接引用那段重新编号。还有在特殊格式后要打上空行才能另起一行,例如本段与上面的链接中间就要用一个单独的空行。

当前,全球经济格局深刻调整,数字化浪潮席卷各行各业,智能物流作为现代物流发展的必然趋势和关键支撑,正迎来前所未有的发展机遇。以人工智能、物联网、大数据、云计算、区块链等前沿信息技术的快速迭代与深度融合为驱动,智能物流不再是传统物流的简单技术叠加,而是正在经历一场从自动化向智能化、从被动响应向主动预测、从信息孤岛向全面互联的深刻变革。展望2025年,智能物流系统将不再局限于提升效率、降低成本的基本目标,而是要构建一个感知更全面、决策更精准、执行更高效、协同更顺畅的智慧运行体系。这要求我们必须超越传统思维定式,以系统化、前瞻性的视角,全面规划和实施智能物流系统的建设。本实施方案正是基于对行业发展趋势的深刻洞察和对未来需求的精准把握而制定。我们的核心目标在于:通过构建一个集成了先进感知技术、大数据分析引擎、智能决策算法和高效协同平台的综合智能物流系统,实现物流全链路的可视化、透明化和智能化管理。这不仅是技术层面的革新,更是管理模式和服务能力的全面提升。本方案旨在明确系统建设的战略方向、关键任务、技术路径和实施步骤,确保通过系统化部署,有效应对日益复杂的供应链环境,提升整体物流韧性,优化资源配置效率,降低运营成本,并最终为客户创造更卓越的价值体验。我们致力于通过本方案的实施,引领智能物流迈向更高水平,为构建现代化经济体系、推动高质量发展提供强有力的物流保障。
<think> 我们之前讨论过在钉钉卡片消息中通过HTML/CSS修改字体大小,但用户现在明确要求使用Markdown语法推送钉钉卡片消息并修改字体大小。然而,需要澄清的是:钉钉的Markdown消息类型本身不支持直接修改字体大小。钉钉的Markdown消息遵循标准的Markdown语法,而标准Markdown并不支持设置字体大小。 但是,我们可以通过一些变通方法来实现类似效果: 1. **使用标题级别**:利用Markdown的标题级别来改变文字大小(从H1到H6,字号递减) 2. **插入HTML标签**:在钉钉的Markdown消息中,实际上可以内嵌HTML标签,但需要谨慎使用,因为钉钉对HTML的支持有限。 根据钉钉官方文档,在Markdown消息类型中,只有部分HTML标签被支持,且样式支持也有限。不过,我们可以尝试在Markdown消息中嵌入HTML标签来设置字体大小。 注意:钉钉的Markdown消息中,只有`<font>`标签的`color`和`size`属性被部分支持(根据历史经验,但官方文档未明确说明,需要测试验证)。 因此,我们可以这样尝试: ```java String markdownText = "## 标题(二级标题,较大)\n" + "普通文本\n" + "<font size=4>自定义大小文本(4号字)</font>\n" + "**加粗文本**\n" + "<font color='red' size=5>红色5号字</font>"; ``` 但请注意,钉钉官方并没有明确保证`<font>`标签的`size`属性一定有效,所以这种方法存在风险。 另外,钉钉还支持另一种方式:使用`actionCard`类型(即之前的卡片消息),并在其中使用Markdown格式的文本,同时结合HTML/CSS。但这里用户要求的是Markdown语法,所以我们先按Markdown消息类型来处理。 下面是一个完整的Java示例,使用Markdown消息类型,并尝试通过内嵌HTML修改字体大小: ```java import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClients; import java.nio.charset.StandardCharsets; public class DingTalkMarkdownSender { private static final String WEBHOOK_URL = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"; public static void sendMarkdownWithFontSize() throws Exception { HttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(WEBHOOK_URL); httpPost.addHeader("Content-Type", "application/json; charset=utf-8"); // 构建Markdown消息,尝试使用<font>标签设置字体大小 String markdownContent = "### 这是一个标题\n" + "普通文本\n\n" + "<font size='4'>这是4号字</font>\n\n" + "<font size='5' color='blue'>这是5号蓝色字</font>\n\n" + "**加粗文本**\n"; String jsonMsg = "{" + "\"msgtype\": \"markdown\"," + "\"markdown\": {" + " \"title\": \"Markdown消息测试\"," + " \"text\": \"" + markdownContent.replace("\"", "\\\"") + "\"" + "}" + "}"; httpPost.setEntity(new StringEntity(jsonMsg, StandardCharsets.UTF_8)); HttpResponse response = httpClient.execute(httpPost); // 处理响应... } } ``` 但是,这种方法并不一定可靠,因为钉钉对HTML的支持有限。如果上述方法无效,那么只能考虑使用其他消息类型(如actionCard)来完全使用HTML控制样式。 因此,作为备选方案,我们可以使用actionCard消息类型,并在其中使用Markdown格式的文本(实际上actionCard的text字段支持HTML,所以我们可以将Markdown文本转换为HTML,然后设置样式): 步骤: 1. 将Markdown文本转换为HTML(可以使用Java库如flexmark) 2. 在HTML中通过CSS控制样式 3. 作为actionCard消息发送 示例: ```java import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import com.vladsch.flexmark.html.HtmlRenderer; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.util.ast.Node; import com.vladsch.flexmark.util.data.MutableDataSet; public class DingTalkActionCardSender { private static final String WEBHOOK_URL = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"; public static void sendMarkdownAsHtmlCard() throws Exception { try (CloseableHttpClient httpClient = HttpClients.createDefault()) { HttpPost httpPost = new HttpPost(WEBHOOK_URL); httpPost.addHeader("Content-Type", "application/json"); // 原始Markdown内容 String markdownContent = "## 标题\n" + "普通文本\n" + "**加粗文本**\n"; // 将Markdown转换为HTML MutableDataSet options = new MutableDataSet(); Parser parser = Parser.builder(options).build(); HtmlRenderer renderer = HtmlRenderer.builder(options).build(); Node document = parser.parse(markdownContent); String htmlContent = renderer.render(document); // 在HTML外面包裹一个div,设置整体样式,并针对特定元素设置字体大小 String styledHtml = "<div style='font-size:14px'>" + htmlContent + "</div>"; // 构建actionCard消息 String jsonMsg = "{" + "\"msgtype\": \"actionCard\"," + "\"actionCard\": {" + " \"title\": \"Markdown转HTML卡片\"," + " \"text\": \"" + styledHtml.replace("\"", "\\\"") + "\"," + " \"btnOrientation\": \"0\"," + " \"btns\": [{\"title\": \"查看\", \"actionURL\": \"https://example.com\"}]" + "}" + "}"; httpPost.setEntity(new StringEntity(jsonMsg, "UTF-8")); httpClient.execute(httpPost); } } } ``` 注意:使用flexmark需要添加Maven依赖: ```xml <dependency> <groupId>com.vladsch.flexmark</groupId> <artifactId>flexmark-all</artifactId> <version>0.64.0</version> </dependency> ``` 总结: 1. 直接使用Markdown消息类型并内嵌HTML标签(如`<font>`)可能部分有效,但不保证。 2. 更可靠的方式是将Markdown转换为HTML,然后通过actionCard消息发送,在HTML中使用CSS样式控制字体大小。 由于钉钉消息格式的限制,建议先测试第一种方法(内嵌`<font>`标签)是否有效。如果无效,则采用第二种方法。 另外,钉钉官方文档建议:Markdown消息类型中,文本内容不超过5000字符,且消息中可带1个跳转链接。 最后,请注意转义JSON字符串中的双引号。 以上就是在Java开发中使用Markdown语法推送钉钉卡片消息并修改字体大小的两种方法。 </think>### Java开发中使用Markdown语法推送钉钉卡片消息并修改字体大小的方法 在钉钉消息推送中,**Markdown消息类型本身不支持直接修改字体大小**,但可以通过以下两种方法实现类似效果: --- ### 方法1:使用Markdown标题层级控制文字大小(推荐) 钉钉的Markdown消息支持6级标题,不同标题级别对应不同字体大小: ```java import com.alibaba.fastjson.JSONObject; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; public class DingTalkSender { private static final String WEBHOOK_URL = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"; public void sendMarkdownWithHeading() throws Exception { JSONObject msg = new JSONObject(); msg.put("msgtype", "markdown"); JSONObject markdown = new JSONObject(); markdown.put("title", "系统通知"); // 使用标题层级控制字体大小 String content = "# 一级标题(最大字体)\n" + "## 二级标题\n" + "### 三级标题\n" + "**加粗文本**\n" + "普通正文文本"; markdown.put("text", content); msg.put("markdown", markdown); // 发送请求 HttpPost post = new HttpPost(WEBHOOK_URL); post.setEntity(new StringEntity(msg.toJSONString(), "UTF-8")); // 执行HTTP请求... } } ``` **标题大小对应关系**: - `# H1` → 最大字体(约24px) - `## H2` → 大号字体(约20px) - `### H3` → 中等字体(约18px) - `#### H4` → 标准正文字体(16px) - `##### H5` → 小号字体(14px) - `###### H6` → 最小字体(12px) --- ### 方法2:结合HTML/CSS实现精细控制 通过ActionCard消息类型嵌入HTML/CSS样式: ```java public void sendStyledActionCard() throws Exception { JSONObject msg = new JSONObject(); msg.put("msgtype", "actionCard"); JSONObject actionCard = new JSONObject(); actionCard.put("title", "带样式的通知"); // 使用HTML/CSS控制字体大小 String htmlContent = "<div style='font-size:20px;font-weight:bold'>主标题</div>" + "<div style='font-size:16px;margin-top:10px'>正文内容</div>" + "<div style='font-size:12px;color:#999999'>辅助说明</div>"; actionCard.put("text", htmlContent); actionCard.put("btnOrientation", "0"); // 添加按钮 JSONArray btns = new JSONArray(); JSONObject btn = new JSONObject(); btn.put("title", "查看详情"); btn.put("actionURL", "https://example.com"); btns.add(btn); actionCard.put("btns", btns); msg.put("actionCard", actionCard); // 发送请求 HttpPost post = new HttpPost(WEBHOOK_URL); post.setEntity(new StringEntity(msg.toJSONString(), "UTF-8")); // 执行HTTP请求... } ``` --- ### 两种方法对比 | 方法 | 优点 | 局限性 | |--------------|------------------------------|---------------------------| | Markdown标题 | ✅ 兼容性好<br>✅ 无需额外依赖 | ❌ 字体大小选择有限 | | HTML/CSS | ✅ 精确控制样式<br>✅ 支持颜色 | ❌ 部分CSS属性不被钉钉支持 | --- ### 最佳实践建议 1. **优先使用标题层级**:在纯Markdown消息中,用`#`到`######`控制文字大小层级 2. **加粗强调**:结合`**加粗文本**`突出关键信息 3. **颜色标注**:使用`<font color='#FF0000'>`标签设置文字颜色 4. **混合使用**:在ActionCard中结合Markdown和HTML: ```java String mixedContent = "### Markdown标题\n" + "<div style='font-size:14px'>HTML样式文本</div>"; ``` > **注意事项**:钉钉对CSS的支持有限,建议提前测试目标样式是否生效。手机端支持度优于PC端[^1]。 --- ### 完整消息发送工具封装 参考企业微信消息SDK的设计理念[^2][^4][^5],可封装钉钉消息工具类: ```java public class DingTalkBot { private final String webhookUrl; public DingTalkBot(String webhookUrl) { this.webhookUrl = webhookUrl; } public void sendMarkdown(String title, String content) { // 实现Markdown消息发送 } public void sendStyledCard(String title, String htmlContent) { // 实现HTML样式卡片发送 } // 使用示例 public static void main(String[] args) { DingTalkBot bot = new DingTalkBot(WEBHOOK_URL); bot.sendMarkdown("状态通知", "### 服务异常\n> 请立即处理"); } } ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值