1

我是 Gatsby 的新手(以及一般的前端)。我正在尝试根据博客主题https://www.gatsbyjs.org/packages/gatsby-theme-blog/将 katex 插件https://www.gatsbyjs.org/packages/gatsby-remark-katex/添加到我的项目中但它不起作用。

我所做的如下:从gatsby-theme-blog

$ gatsby new my-themed-blog https://github.com/gatsbyjs/gatsby-starter-blog-theme
$ cd my-themed-blog

在项目的顶部,安装gatsby-remark-katex插件,

$ npm install --save gatsby-transformer-remark gatsby-remark-katex katex

在顶层添加配置gatsby-config.js

module.exports = {
  plugins: [
    {
      resolve: `gatsby-theme-blog`,
      options: {},
    },
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [
          {
            resolve: `gatsby-remark-katex`,
            options: {
              // Add any KaTeX options from https://github.com/KaTeX/KaTeX/blob/master/docs/options.md here
              strict: `ignore`
            }
          }
        ],
      },
    },
  ],
  // Customize your site metadata:
  siteMetadata: {
    // ... cutting the following
  },
}

并将顶层的css导入gatsby-browser.js

import "katex/dist/katex.min.css"

content/posts如果我把一些降价文档放在下面

---
title: Hello World (example)
date: 2019-12-18
---

math $x + y = \epsilon$.

网页显示就像

Hello World (example)
December 18, 2019

math $x + y = \epsilon$.

我是为普通的 gatsby 项目以及博客启动器https://www.gatsbyjs.org/starters/gatsbyjs/gatsby-starter-blog/做的, 比如从

$ gatsby new gatsby-starter-blog https://github.com/gatsbyjs/gatsby-starter-blog

编辑gatsby-config.js喜欢

    {
      resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [
          {
            resolve: `gatsby-remark-images`,
            options: {
              maxWidth: 590,
            },
          },
          {
            resolve: `gatsby-remark-responsive-iframe`,
            options: {
              wrapperStyle: `margin-bottom: 1.0725rem`,
            },
          },
          `gatsby-remark-prismjs`,
          `gatsby-remark-copy-linked-files`,
          `gatsby-remark-smartypants`,
          {
            resolve: `gatsby-remark-katex`,
            options: {
              // Add any KaTeX options from https://github.com/KaTeX/KaTeX/blob/master/docs/options.md here
              strict: `ignore`
            }
          }
        ],
      },
    },

gatsby-browser.js

// custom typefaces
import "typeface-montserrat"
import "typeface-merriweather"

import "katex/dist/katex.min.css"

它正在工作。

如何使用 blog-theme 之类的主题将 katex 插件添加到项目中?node_modules我应该以某种方式将它添加到主题目录中吗?

谢谢!

4

2 回答 2

0

这里明显的问题是:gatsby-starter-blog配置为呈现位于content/blog/<subdir>文件夹中的博客。

为了呈现 Markdown 博客文章,您需要有一个博客文章模板,即src/templates/blog-post.js.

从 markdown 生成 HTML 页面发生在gatsby-node.js文件中。

这些配置都不存在于 中gatsby-starter-blog-theme,因此输出 id 与您期望的不同。

gatsby-starter-blog您可以通过使用或通过gatsby-starter-blog-theme从以下 repo复制丢失的文件来使其工作: https ://github.com/gatsbyjs/gatsby-starter-blog 。

这不是 KaTeX 的问题。我认为现在需要渲染的文件不存在,或者它们是空的。

我还建议您观看 Taylor Bell 的“使用 Gatsby 使用 React 和 Markdown 构建博客”。您可以在这里找到它:https ://egghead.io/lessons/gatsby-install-the-latest-version-of-gatsby ,这是一个非常简短的教程系列,可以帮助您从头到尾了解所有内容。

于 2020-01-18T21:10:34.773 回答
0

我和你在同一条船上(gatsby,react 和前端开发的新手),并且遇到了 katex 不适合我的类似问题。我发现我的问题是我有 2 个部分

resolve: `gatsby-transformer-remark`,

在我的gatsby-config.js档案中。我看到您已经粘贴了gatsby-config.js文件的一部分,所以我只能推测该文件的其余部分包含什么。

不管怎样,我的旧gatsby-config.js版本看起来像这样:

    {
      resolve: "gatsby-transformer-remark",    //----->FIRST ENTRY
      options: {
        plugins: [
          {
            resolve: "gatsby-remark-katex",
            options: {
              // Add any KaTeX options from https://github.com/KaTeX/KaTeX/blob/master/docs/options.md here
              strict: "ignore"
            }
          }
        ],
      },

<****** OTHER PLUGINS IN BETWEEN ********>

    {
      resolve: "gatsby-transformer-remark",   //------>SECOND ENTRY
      options: {
        excerpt_separator: `<!-- end -->`,
        plugins: [
          {
            resolve: "gatsby-remark-images",
            options: {
              maxWidth: 690
            }
          },
          {
            resolve: "gatsby-remark-responsive-iframe"
          },
          "gatsby-remark-prismjs",
          "gatsby-remark-copy-linked-files",
          "gatsby-remark-autolink-headers"
        ]
      }
    },

我认为这可能是导致问题的唯一原因,因此我将这两个合并为一个gatsby-transformer-remark部分:

{
      resolve: "gatsby-transformer-remark",
      options: {
        excerpt_separator: `<!-- end -->`,
        plugins: [
          {
            resolve: "gatsby-remark-katex",
            options: {
              strict: "ignore"
            }
          },
          {
            resolve: "gatsby-remark-images",
            options: {
              maxWidth: 690
            }
          },
          {
            resolve: "gatsby-remark-responsive-iframe"
          },
          {
            resolve: "gatsby-remark-prismjs",
            options: {
              classPrefix: "language-",
              inlineCodeMarker: null,
              aliases: {},
              showLineNumbers: false,
              noInlineHighlight: false,
            },
          },
          "gatsby-remark-copy-linked-files",
          "gatsby-remark-autolink-headers"
        ]
      }
},

希望这可以帮助。

于 2019-12-26T16:30:12.213 回答