Marp精华总结(三)高级篇

news/2024/10/4 7:02:02 标签: marp, MarkDown, 幻灯片

概述

高级篇主要涉及:

  • 使用Marp内置的主题
  • 文档内自定义样式
  • 创建自定义主题

通过使用主题和自定义样式,你可以更好的控制幻灯的最终效果。而通过开发自己的主题,你可以在多个Marp幻灯中复用这些主题。

系列目录

  • Marp精华总结(一)基础篇
  • Marp精华总结(二)进阶篇
  • Marp精华总结(三)高级篇

使用Marp内置主题

Marp内置三个主题defaultgaiauncover

通过theme指令,可以切换主题。

theme: default
theme: gaia
theme: uncover
  • default:默认主题,它基于 GitHub Markdown 风格,但针对幻灯片进行了优化。幻灯片内容将始终垂直居中。
  • gaia:盖亚,一个米黄色主题
  • uncover: 是原始样式,设定了一定的标题和居中样式,很适合基于此开发自己的主题

主题反色

通过以下设定,获取对应主题的反色方案:

class: invert

改变主题的默认文字对齐方式

通过以下设定,可以

theme: gaia
class: lead

-gaia主题默认设置标题与文本都是左上角对齐。但是你可以使用class: lead来设定文本和标题居中

修改Gaia主题的配色

Gaia 主题的配色方案由 CSS 变量定义,你可以在<style>中定义和修改它们:

<style>
:root {
  --color-background: #fff;
  --color-foreground: #333;
  --color-highlight: #f96;
  --color-dimmed: #888;
}
</style>

修改Uncover 主题的配色

和Gaia主题一样,Uncover主题的配色方案也是由CSS变量定义,你可以在<style>中定义和修改它们:

<style>
:root {
  --color-background: #ddd;
  --color-background-code: #ccc;
  --color-background-paginate: rgba(128, 128, 128, 0.05);
  --color-foreground: #345;
  --color-highlight: #99c;
  --color-highlight-hover: #aaf;
  --color-highlight-heading: #99c;
  --color-header: #bbb;
  --color-header-shadow: transparent;
}
</style>

自定义样式

Marp默认支持<style>标签形式来自定义样式,在YAML头之后,所有页面开始之前,可以使用<style>...</style>来编写自己的样式。<font style="color:rgb(31, 35, 40);"><style scoped></font>可以只应用在当页。

但是在设定自定义样式之前,你需要了解Marp最终的HTML结构。

深入了解HTML结构

页面结构

通过实际导出Marp生成的幻灯为.html文件,可以看到实际的页面代码:

<svg data-marpit-svg="" viewBox="0 0 1280 720">
  <foreignObject width="1280" height="720">
    <section id="14" data-paginate="true" 
    data-heading-divider="2" lang="zh-CN" data-marpit-pagination="14"
      style="--paginate:true;--heading-divider:2;" 
      data-marpit-pagination-total="36">
      <h2 id="%E4%BF%AE%E6%94%B9%E8%83%8C%E6%99%AF%E8%89%B2">修改背景色</h2>
      <h3 id="%E5%85%A8%E5%B1%80%E4%BF%AE%E6%94%B9">全局修改</h3>
    </section>
  </foreignObject>
</svg>

其中:生成的页面被包含在一个section标签中,并赋予一个id,对h2h3等标题会创建同名的id。

行内代码

行内代码使用的是<code>标签:

<code>...</code>
代码块

marp的代码块使用的是经典的<pre><code>结构。

<pre is="marp-pre" data-auto-scaling="downscale-only">
  <code>
    //这里是代码...
  </code>
</pre>

创建页面目录

可以通过[页面标题](#页面id)创建指向指定页面的内链,也就可以基于此创建页面目录。其中页面id就是section标签的i通常为一个整数。

用名称直接定位标题

也可以通过[标题](#标题id)创建指向指定标题的内链,也就可以实现到具体标题的导航目录:

- [设定背景图片](#设定背景图片)

创建自定义页面类

通过在CSS创建section标签的子类,可以创建自定义页面类,搭配class指令,可以创建扩展的页面样式。

/* 目录页 */
section.toc{

}
<!-- _class: toc -->
## 目录
...

实现目录页分栏效果

/* 目录页 */
section.toc ul{
  margin-left:0px;
  padding-left:0px;
  column-count:2; 
}

section.toc ul li{
  list-style-type: none;
  background-color:#eee;
}

section.toc ul li a{
  color:#444;
}

:root 伪类选择器

在Marpit的上下文中,:root伪类表示幻灯片页面的每个<section>元素。

创建自定义主题

在幻灯文档中用<style>直接定义样式虽然很方便,但是如果要在多个幻灯文档中使用相同的样式,就需要手动复制了,而且样式部分占据顶部大量空间,可能会影响书写体验。

为此好的办法是将写好的自定义样式,存储为一个外部的.css文件,然后以自定义主题的形式在各个幻灯中引用。

创建设置文件

创建一个.css文件,在Marp设置中,选择工作区,在最底部Themes选项中点击“添加项”按钮,手动添加作为主题的.css文件名。

设置完成后会在当前工作区,也就是根目录下,自动创建.vscode文件夹,和其中的settings.json文件。

打开settings.json,可以看到配置项和值,后续你可以继续手动更改或通过选项设置。

比较完整的settings.json

{
  "markdown.marp.breaks": "on",               // 渲染换行符
  "markdown.marp.chromePath": "",             // 浏览器路径
  "markdown.marp.enableHtml": true,           // 启用所有HTML标签
  "markdown.marp.exportType": "pdf",          // 默认的导出文件类型
  "markdown.marp.mathTypesetting": "mathjax", // 默认的数学渲染引擎
  "markdown.marp.outlineExtension": true,     // 启用大纲视图
  "markdown.marp.pdf.noteAnnotations": true,  // 将注释作为备注添加到导出的PDF中
  "markdown.marp.pdf.outlines": "headings",   // 在导出的PDF中添加书签
  "markdown.marp.strictPathResolutionDuringExport": false, // 导出禁用严格的路径解析
  "markdown.marp.themes": [                   // 声明主题样式文件
    "theme1.css",
  ],
}

CSS文件

test.css内容如下:

/* @theme test1 */

@import 'uncover';

section{
    color: aqua;
}

其中:

  • /* @theme test1 */用于定义主题的名称
  • @import 'uncover';用于引入uncover主题样式,可以基于此进行样式的修改
  • 剩余部分写自己的样式代码即可

实现自定义幻灯尺寸

/**
* @theme theme1
* @auto-scaling fittingHeader,math
* @size 4:3 960px 720px
* @size 16:9 1280px 720px
* @size 3:4 30cm 40cm
*/

@import "default";

@import url("https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/styles/base16/pico.min.css");

引入代码高亮样式

@import url("https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/styles/base16/pico.min.css");

http://www.niftyadmin.cn/n/5689654.html

相关文章

linux第二课:常用命令

Kali Linux&#xff0c;黑客必备神器。跟着我&#xff0c;带你从入门到入狱&#xff01; 第二课&#xff0c;常用命令。 1.whoami 翻译为中文&#xff1a;我是谁 用途&#xff1a;输出现在自己的用户身份(用户名) 参数&#xff1a;无参数 好吧&#xff0c;这透明度一调都不…

ElasticSearch备考 -- Update by query

一、题目 有个索引task&#xff0c;里面的文档长这样 现在需要添加一个字段all&#xff0c;这个字段的值是以下 a、b、c、d字段的值连在一起 二、思考 需要把四个字段拼接到一起&#xff0c;组成一个新的字段&#xff0c;这个就需要脚本&#xff0c; 这里有两种方案&#xff…

Electron 使⽤ electron-builder 打包应用

electron有几种打包方式&#xff0c;我使用的是electron-builder。虽然下载依赖的时候让我暴躁&#xff0c;使用起来也很繁琐&#xff0c;但是它能进行很多自定义&#xff0c;打包完成后的体积也要小一些。 安装electron-builder&#xff1a; npm install electron-builder -…

InfoGAN:通过信息最大化生成对抗网络进行可解释的表示学习

系列文章目录 一 Conditional Generative Adversarial Nets 二 cGANs with Projection Discriminator 三 Conditional Image Synthesis with Auxiliary Classifier GANs 四 InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial…

《C++音频降噪秘籍:让声音纯净如初》

在音频处理领域&#xff0c;降噪是一项至关重要的任务。无论是录制音乐、语音通话还是音频后期制作&#xff0c;都需要有效地去除背景噪声&#xff0c;以获得清晰、纯净的音频效果。在 C中实现高效的音频降噪处理&#xff0c;可以为音频应用带来更高的质量和更好的用户体验。本…

【MATLAB2024b】安装离线帮助文档(windows)

文章目录 一、在 MATLAB 设置中安装二、从math works 网站下载ISO&#xff1a;给无法联网的电脑安装 版本&#xff1a;matlab 2024b&#xff08;或者大于等于2023a&#xff09; 所需空间&#xff1a;10~15 GB 平台&#xff1a;Windows 需要注册math works账号。 一、在 MATLAB …

Ps:打开与置入

在 Adobe Photoshop 中&#xff0c;理解不同的“打开”和“置入”命令及其用途&#xff0c;可以根据不同的需求选择最佳方式来管理和编辑图像文件。 ◆ ◆ ◆ 打开 1、Ps菜单&#xff1a;文件/打开 File/Open 快捷键&#xff1a;Ctrl O 用于直接打开现有的图像文件。 打开的…

Python酷库之旅-第三方库Pandas(104)

目录 一、用法精讲 451、pandas.DataFrame.pow方法 451-1、语法 451-2、参数 451-3、功能 451-4、返回值 451-5、说明 451-6、用法 451-6-1、数据准备 451-6-2、代码示例 451-6-3、结果输出 452、pandas.DataFrame.dot方法 452-1、语法 452-2、参数 452-3、功能…