docusaurus自定义渲染内容

docusaurus自定义渲染内容

使用docusaurus编写文档时,docusaurus仅支持编译成网页,在编译成pdf时需要做一些特殊处理。

这个时候就需要在markdown文件中保留一些rst格式或者rst语法,这些语法格式在编译html时被忽略,在编译pdf才生效。

Docusaurus 使用的是 remark 库,来解析和处理 Markdown 文件,可以通过 remark 自定义插件来忽略 eval-rst 代码块。

下载unist-util-visit

npm install unist-util-visit

编写插件

mkdir remark-plugins
vim  remark-ignore-eval-rst.js

在js文件中添加如下内容:

// remark-plugins/remove-code-blocks.js
import { visit } from 'unist-util-visit';

module.exports = function removeCodeBlocks() {
  return (tree) => {
    visit(tree, 'code', (node) => {
      if (node.lang === 'eval-rst' || node.lang === 'eval-md') {
        node.type = 'text';
        node.value = ''; // Remove the content
      }
    });
  };
};

在docusaurus.config.js中引入该插件:

const remarkIgnoreEvalRst = require('./remark-plugins/remark-ignore-eval-rst');
......
docs: {
          remarkPlugins: [remarkIgnoreEvalRst],  // 添加自定义的 Remark 插件
        },
.....

同时修改一个md文件,使其内容被"eval-rst" 和""包裹:

这里的内容显示在网页。

```eval-rst
这里的内容不显示在网页。
最后执行npm start观察结果。

在Cesium中,您可以使用`CustomDataSource`和`CustomRenderPrimitive`来自定义渲染代码。 `CustomDataSource`是一种特殊类型的`DataSource`,它允许您在场景中添加自定义的实体和几何图形。您可以使用`CustomRenderPrimitive`在场景中添加自定义渲染图元,每个渲染图元都可以实现自己的渲染逻辑。 以下是一个简单的示例,演示如何使用`CustomDataSource`和`CustomRenderPrimitive`来自定义渲染代码: ```javascript // 创建Cesium Viewer var viewer = new Cesium.Viewer('cesiumContainer'); // 创建自定义数据源 var customDataSource = new Cesium.CustomDataSource('custom'); // 添加自定义实体 var entity = customDataSource.entities.add({ position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883), billboard: { image: 'path/to/image.png', scale: 2.0 } }); viewer.dataSources.add(customDataSource); // 创建自定义渲染图元 var customPrimitive = new Cesium.CustomRenderPrimitive({ geometryInstances: new Cesium.GeometryInstance({ geometry: new Cesium.RectangleGeometry({ rectangle: Cesium.Rectangle.fromDegrees(-75.0, 35.0, -125.0, 45.0) }), attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED) } }), fragmentShaderSource: 'void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); }', vertexShaderSource: 'attribute vec3 position3DHigh;\ attribute vec3 position3DLow;\ attribute vec4 color;\ varying vec4 v_color;\ void main() {\ vec4 position = czm_computePosition();\ gl_Position = czm_viewProjection * position;\ v_color = color;\ }', renderState: { blending: Cesium.BlendingState.DISABLED, depthTest: { enabled: true, func: Cesium.DepthFunction.LESS }, depthMask: true, polygonOffset: { enabled: false, factor: 0.0, units: 0.0 } } }); viewer.scene.primitives.add(customPrimitive); ``` 在上面的代码中,我们首先创建了一个Cesium Viewer,并创建了一个自定义数据源。然后,我们向自定义数据源中添加了一个自定义实体,并将其添加到场景中。接下来,我们创建了一个自定义渲染图元,并将其添加到场景中。在自定义渲染图元中,我们使用了自定义的顶点着色器和片段着色器,并设置了渲染状态。 请注意,上面的示例仅用于演示目的。实际应用中,您可能需要更复杂的渲染逻辑和着色器代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

growdu_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值