Skip to content

Commit

Permalink
Fix math equations (#489)
Browse files Browse the repository at this point in the history
* Add math plugins

* Handle module plugins

* Load katex style
  • Loading branch information
timothymcmackin authored Dec 12, 2024
1 parent 3e38f3b commit 419fed6
Show file tree
Hide file tree
Showing 3 changed files with 370 additions and 126 deletions.
263 changes: 137 additions & 126 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,155 +5,166 @@
// But unsafe-eval should NOT be in production builds
// Also, put GTM first because sometimes the ';' in the escaped single quotes causes the browser to think it's the end
const scriptSrc = process.env.NODE_ENV === 'development' ?
`https://*.googletagmanager.com 'self' 'unsafe-inline' 'unsafe-eval'`
: `https://*.googletagmanager.com 'self' 'unsafe-inline'`;
`https://*.googletagmanager.com https://cdn.jsdelivr.net 'self' 'unsafe-inline' 'unsafe-eval'`
: `https://*.googletagmanager.com https://cdn.jsdelivr.net 'self' 'unsafe-inline'`;

const contentSecurityPolicy = `
default-src 'none';
base-uri 'self';
manifest-src 'self';
script-src ${scriptSrc};
style-src 'self' 'unsafe-inline';
font-src 'self';
style-src https://cdn.jsdelivr.net 'self' 'unsafe-inline';
font-src https://cdn.jsdelivr.net 'self';
img-src 'self' https://*.googletagmanager.com https://*.google-analytics.com data:;
media-src 'self';
form-action 'self';
connect-src 'self' https://*.algolia.net https://*.algolianet.com https://*.googletagmanager.com https://*.google-analytics.com https://*.analytics.google.com;
frame-src https://tezosbot.vercel.app;`;

/** @type {import('@docusaurus/types').Config} */
const config = {
title: 'Tezos Developer Documentation',
tagline: 'Get started developing on Tezos by learning about its features, going through application development tutorials, and exploring the tools that are available to Tezos developers.',
favicon: 'img/favicon.ico',
url: 'https://docs.tezos.com',
baseUrl: '/',
organizationName: 'trilitech',
projectName: 'tezos-developer-docs',
onBrokenLinks: 'warn',
onBrokenMarkdownLinks: 'warn',
onBrokenAnchors: 'warn',
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
markdown: {
mermaid: true,
},
noIndex: process.env.BUILD_ENV == 'staging' ? true : false,
module.exports = async function createConfigAsync() {
return {
title: 'Tezos Developer Documentation',
tagline: 'Get started developing on Tezos by learning about its features, going through application development tutorials, and exploring the tools that are available to Tezos developers.',
favicon: 'img/favicon.ico',
url: 'https://docs.tezos.com',
baseUrl: '/',
organizationName: 'trilitech',
projectName: 'tezos-developer-docs',
onBrokenLinks: 'warn',
onBrokenMarkdownLinks: 'warn',
onBrokenAnchors: 'warn',
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
markdown: {
mermaid: true,
},
noIndex: process.env.BUILD_ENV == 'staging' ? true : false,

headTags: [
{
tagName: 'meta',
attributes: {
'http-equiv': 'Content-Security-Policy',
content: contentSecurityPolicy,
headTags: [
{
tagName: 'meta',
attributes: {
'http-equiv': 'Content-Security-Policy',
content: contentSecurityPolicy,
},
},
},
],
],

themes: ['@docusaurus/theme-mermaid'],
themes: ['@docusaurus/theme-mermaid'],

presets: [
[
'classic',
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
sidebarPath: require.resolve('./sidebars.js'),
routeBasePath: '/', // Serve the docs at the site's root
showLastUpdateTime: true,
},
blog: false,
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
googleTagManager: {
containerId: 'GTM-56M3FZ8',
},
}),
presets: [
[
'classic',
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
sidebarPath: require.resolve('./sidebars.js'),
routeBasePath: '/', // Serve the docs at the site's root
remarkPlugins: [(await import('remark-math')).default],
rehypePlugins: [(await import('rehype-katex')).default],
showLastUpdateTime: true,
},
blog: false,
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
googleTagManager: {
containerId: 'GTM-56M3FZ8',
},
}),
],
],
],

plugins: [
'plugin-image-zoom',
],
plugins: [
'plugin-image-zoom',
],

themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
colorMode: {
defaultMode: 'light',
disableSwitch: true,
respectPrefersColorScheme: false,
},
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
navbar: {
style: 'primary',
title: 'Tezos Docs',
logo: {
alt: 'Developer Docs for Tezos',
src: 'img/logo-tezos.svg',
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
colorMode: {
defaultMode: 'light',
disableSwitch: true,
respectPrefersColorScheme: false,
},
items: [
{
type: 'docSidebar',
sidebarId: 'documentationSidebar',
position: 'left',
label: 'Documentation'
},
{
type: 'docSidebar',
sidebarId: 'tutorialsSidebar',
position: 'left',
label: 'Tutorials',
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
navbar: {
style: 'primary',
title: 'Tezos Docs',
logo: {
alt: 'Developer Docs for Tezos',
src: 'img/logo-tezos.svg',
},
{
href: 'https://github.com/trilitech/tezos-developer-docs',
label: 'GitHub',
position: 'right',
items: [
{
type: 'docSidebar',
sidebarId: 'documentationSidebar',
position: 'left',
label: 'Documentation'
},
{
type: 'docSidebar',
sidebarId: 'tutorialsSidebar',
position: 'left',
label: 'Tutorials',
},
{
href: 'https://github.com/trilitech/tezos-developer-docs',
label: 'GitHub',
position: 'right',
},
],
},
prism: {
theme: require('prism-react-renderer/themes/github'),
additionalLanguages: ['csharp', 'toml', 'ocaml'],
},
// https://github.com/flexanalytics/plugin-image-zoom
// Enable click to zoom in to large images
imageZoom: {
// CSS selector to apply the plugin to, defaults to '.markdown img'
selector: '.markdown img',
// Optional medium-zoom options
// see: https://www.npmjs.com/package/medium-zoom#options
options: {
margin: 24,
scrollOffset: 0,
},
],
},
prism: {
theme: require('prism-react-renderer/themes/github'),
additionalLanguages: ['csharp', 'toml', 'ocaml'],
},
// https://github.com/flexanalytics/plugin-image-zoom
// Enable click to zoom in to large images
imageZoom: {
// CSS selector to apply the plugin to, defaults to '.markdown img'
selector: '.markdown img',
// Optional medium-zoom options
// see: https://www.npmjs.com/package/medium-zoom#options
options: {
margin: 24,
scrollOffset: 0,
},
algolia: {
// The application ID provided by Algolia
appId: process.env.NEXT_PUBLIC_DOCSEARCH_APP_ID || "QRIAHGML9Q",
// Public API key: it is safe to commit it
apiKey: process.env.NEXT_PUBLIC_DOCSEARCH_API_KEY || "57d6a376a3528866784a143809cc7427",
indexName: process.env.NEXT_PUBLIC_DOCSEARCH_INDEX_NAME || "tezosdocs",
// Optional: see doc section below
contextualSearch: true,
// Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them.
// externalUrlRegex: 'external\\.com|domain\\.com',
// Optional: Replace parts of the item URLs from Algolia. Useful when using the same search index for multiple deployments using a different baseUrl. You can use regexp or string in the `from` param. For example: localhost:3000 vs myCompany.com/docs
// replaceSearchResultPathname: {
// from: '/docs/', // or as RegExp: /\/docs\//
// to: '/',
// },
// Optional: Algolia search parameters
// searchParameters: {},
// Optional: path for search page that enabled by default (`false` to disable it)
searchPagePath: false,
//... other Algolia params
},
}),
stylesheets: [
{
href: 'https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css',
type: 'text/css',
integrity:
'sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM',
crossorigin: 'anonymous',
},
algolia: {
// The application ID provided by Algolia
appId: process.env.NEXT_PUBLIC_DOCSEARCH_APP_ID || "QRIAHGML9Q",
// Public API key: it is safe to commit it
apiKey: process.env.NEXT_PUBLIC_DOCSEARCH_API_KEY || "57d6a376a3528866784a143809cc7427",
indexName: process.env.NEXT_PUBLIC_DOCSEARCH_INDEX_NAME || "tezosdocs",
// Optional: see doc section below
contextualSearch: true,
// Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them.
// externalUrlRegex: 'external\\.com|domain\\.com',
// Optional: Replace parts of the item URLs from Algolia. Useful when using the same search index for multiple deployments using a different baseUrl. You can use regexp or string in the `from` param. For example: localhost:3000 vs myCompany.com/docs
// replaceSearchResultPathname: {
// from: '/docs/', // or as RegExp: /\/docs\//
// to: '/',
// },
// Optional: Algolia search parameters
// searchParameters: {},
// Optional: path for search page that enabled by default (`false` to disable it)
searchPagePath: false,
//... other Algolia params
},
}),
],
};
};

module.exports = config;
Loading

0 comments on commit 419fed6

Please sign in to comment.