From 73794fd43a57fcd33ffb49a938cfa39116d47f7a Mon Sep 17 00:00:00 2001 From: 3w36zj6 <52315048+3w36zj6@users.noreply.github.com> Date: Fri, 12 Jan 2024 20:41:00 +0900 Subject: [PATCH 01/13] =?UTF-8?q?feat:=20Helper=E3=81=AB=E3=83=91=E3=83=83?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B8=E3=83=9E=E3=83=8D=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A3=E3=83=BC=E3=82=92=E6=A4=9C=E5=87=BA=E3=81=99=E3=82=8B?= =?UTF-8?q?=E9=96=A2=E6=95=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/server/__tests__/lib/helper.test.ts | 63 +++++++++++++++++++ packages/zenn-cli/src/server/lib/helper.ts | 20 ++++++ 2 files changed, 83 insertions(+) diff --git a/packages/zenn-cli/src/server/__tests__/lib/helper.test.ts b/packages/zenn-cli/src/server/__tests__/lib/helper.test.ts index a1c2d72e..220a1775 100644 --- a/packages/zenn-cli/src/server/__tests__/lib/helper.test.ts +++ b/packages/zenn-cli/src/server/__tests__/lib/helper.test.ts @@ -2,6 +2,7 @@ import { vi, describe, test, expect, beforeEach, afterEach } from 'vitest'; import path from 'path'; import fs from 'fs-extra'; import * as helper from '../../lib/helper'; +import { getWorkingPath } from '../../lib/helper'; import * as Log from '../../lib/log'; import { validateSlug } from '../../../common/helper'; @@ -187,3 +188,65 @@ describe('completeHtml() のテスト', () => { expect(html).toContain('表示できません'); }); }); + +describe('detectPackageExecutor() のテスト', () => { + beforeEach(async () => { + if (fs.existsSync(getWorkingPath('package-lock.json'))) { + await fs.promises.unlink(getWorkingPath('package-lock.json')); + } + if (fs.existsSync(getWorkingPath('yarn.lock'))) { + await fs.promises.unlink(getWorkingPath('yarn.lock')); + } + if (fs.existsSync(getWorkingPath('pnpm-lock.yaml'))) { + await fs.promises.unlink(getWorkingPath('pnpm-lock.yaml')); + } + if (fs.existsSync(getWorkingPath('bun.lockb'))) { + await fs.promises.unlink(getWorkingPath('bun.lockb')); + } + }); + + test('package-lock.json が存在する場合は `npx` を返す', async () => { + const tempFilePath = getWorkingPath('package-lock.json'); + await fs.promises.writeFile(tempFilePath, ''); + + const result = helper.detectPackageExecutor(); + expect(result).toEqual('npx'); + + await fs.promises.unlink(tempFilePath); + }); + + test('yarn.lock が存在する場合は `yarn` を返す', async () => { + const tempFilePath = getWorkingPath('yarn.lock'); + await fs.promises.writeFile(tempFilePath, ''); + + const result = helper.detectPackageExecutor(); + expect(result).toEqual('yarn'); + + await fs.promises.unlink(tempFilePath); + }); + + test('pnpm-lock.yaml が存在する場合は `pnpm` を返す', async () => { + const tempFilePath = getWorkingPath('pnpm-lock.yaml'); + await fs.promises.writeFile(tempFilePath, ''); + + const result = helper.detectPackageExecutor(); + expect(result).toEqual('pnpm'); + + await fs.promises.unlink(tempFilePath); + }); + + test('bun.lockb が存在する場合は `bun` を返す', async () => { + const tempFilePath = getWorkingPath('bun.lockb'); + await fs.promises.writeFile(tempFilePath, ''); + + const result = helper.detectPackageExecutor(); + expect(result).toEqual('bun'); + + await fs.promises.unlink(tempFilePath); + }); + + test('どのファイルも存在しない場合は `npx` を返す', () => { + const result = helper.detectPackageExecutor(); + expect(result).toEqual('npx'); + }); +}); diff --git a/packages/zenn-cli/src/server/lib/helper.ts b/packages/zenn-cli/src/server/lib/helper.ts index d62259d3..47dd78c9 100644 --- a/packages/zenn-cli/src/server/lib/helper.ts +++ b/packages/zenn-cli/src/server/lib/helper.ts @@ -252,3 +252,23 @@ export const resolveHostname = ( return { name, host }; }; + +type PackageExecutorType = 'npx' | 'yarn' | 'pnpm' | 'bun'; + +export const detectPackageExecutor = (): PackageExecutorType => { + const lockFileNames = [ + ['npx', 'package-lock.json'], + ['yarn', 'yarn.lock'], + ['pnpm', 'pnpm-lock.yaml'], + ['bun', 'bun.lockb'], + ] as const; + let detectedPackageExecutor: PackageExecutorType = 'npx'; + for (const [packageManager, lockFileName] of lockFileNames) { + const lockFilePath = getWorkingPath(`${lockFileName}`); + if (fs.existsSync(lockFilePath)) { + detectedPackageExecutor = packageManager; + break; + } + } + return detectedPackageExecutor; +}; From ad639b708466b454d3aacdd131f4586ab4b290a2 Mon Sep 17 00:00:00 2001 From: 3w36zj6 <52315048+3w36zj6@users.noreply.github.com> Date: Fri, 12 Jan 2024 20:45:45 +0900 Subject: [PATCH 02/13] =?UTF-8?q?feat:=20=E5=88=9D=E6=9C=9F=E5=8C=96?= =?UTF-8?q?=E6=99=82=E3=81=AE=E3=83=98=E3=83=AB=E3=83=97=E3=82=B3=E3=83=9E?= =?UTF-8?q?=E3=83=B3=E3=83=89=E8=A1=A8=E7=A4=BA=E3=81=AB=E3=83=91=E3=83=83?= =?UTF-8?q?=E3=82=B1=E3=83=BC=E3=82=B8=E3=83=9E=E3=83=8D=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A3=E3=83=BC=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/zenn-cli/src/server/commands/init.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/zenn-cli/src/server/commands/init.ts b/packages/zenn-cli/src/server/commands/init.ts index 8fedb899..ca08d2db 100644 --- a/packages/zenn-cli/src/server/commands/init.ts +++ b/packages/zenn-cli/src/server/commands/init.ts @@ -1,6 +1,6 @@ import { CliExecFn } from '../types'; import * as Log from '../lib/log'; -import { getWorkingPath, generateFileIfNotExist } from '../lib/helper'; +import { detectPackageExecutor, getWorkingPath, generateFileIfNotExist } from '../lib/helper'; import { initHelpText, invalidOptionText } from '../lib/messages'; import arg from 'arg'; @@ -71,17 +71,18 @@ export const exec: CliExecFn = (argv) => { console.log(`Generating README.md skipped.`); } + const packageExecutor = detectPackageExecutor(); console.log(` 🎉 Done! 早速コンテンツを作成しましょう 👇 新しい記事を作成する - $ zenn new:article + $ ${packageExecutor} zenn new:article 👇 新しい本を作成する - $ zenn new:book + $ ${packageExecutor} zenn new:book 👇 投稿をプレビューする - $ zenn preview + $ ${packageExecutor} zenn preview `); }; From 570d294f17989ebf602203903550a8d24537f137 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 16 Feb 2024 02:05:45 +0000 Subject: [PATCH 03/13] v0.1.154-alpha.0 --- lerna.json | 2 +- packages/zenn-cli/package.json | 2 +- packages/zenn-content-css/package.json | 2 +- packages/zenn-embed-elements/package.json | 2 +- packages/zenn-markdown-html/package.json | 2 +- packages/zenn-model/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lerna.json b/lerna.json index a1a8385f..26b9efaa 100644 --- a/lerna.json +++ b/lerna.json @@ -2,6 +2,6 @@ "packages": [ "packages/*" ], - "version": "0.1.153", + "version": "0.1.154-alpha.0", "npmClient": "pnpm" } diff --git a/packages/zenn-cli/package.json b/packages/zenn-cli/package.json index ebf32968..8ad03b94 100644 --- a/packages/zenn-cli/package.json +++ b/packages/zenn-cli/package.json @@ -1,6 +1,6 @@ { "name": "zenn-cli", - "version": "0.1.153", + "version": "0.1.154-alpha.0", "description": "Preview Zenn content locally.", "repository": { "type": "git", diff --git a/packages/zenn-content-css/package.json b/packages/zenn-content-css/package.json index e45472b8..bac52460 100644 --- a/packages/zenn-content-css/package.json +++ b/packages/zenn-content-css/package.json @@ -1,6 +1,6 @@ { "name": "zenn-content-css", - "version": "0.1.153", + "version": "0.1.154-alpha.0", "license": "MIT", "description": "Zenn flavor content style.", "repository": { diff --git a/packages/zenn-embed-elements/package.json b/packages/zenn-embed-elements/package.json index c40eda89..2f80469a 100644 --- a/packages/zenn-embed-elements/package.json +++ b/packages/zenn-embed-elements/package.json @@ -1,6 +1,6 @@ { "name": "zenn-embed-elements", - "version": "0.1.153", + "version": "0.1.154-alpha.0", "license": "MIT", "description": "Web components for embedded contents.", "repository": { diff --git a/packages/zenn-markdown-html/package.json b/packages/zenn-markdown-html/package.json index 56219060..380fb391 100644 --- a/packages/zenn-markdown-html/package.json +++ b/packages/zenn-markdown-html/package.json @@ -1,6 +1,6 @@ { "name": "zenn-markdown-html", - "version": "0.1.153", + "version": "0.1.154-alpha.0", "license": "MIT", "description": "Convert markdown to zenn flavor html.", "main": "lib/index.js", diff --git a/packages/zenn-model/package.json b/packages/zenn-model/package.json index 38d5f73d..aad061ad 100644 --- a/packages/zenn-model/package.json +++ b/packages/zenn-model/package.json @@ -1,6 +1,6 @@ { "name": "zenn-model", - "version": "0.1.153", + "version": "0.1.154-alpha.0", "license": "MIT", "description": "Model utils for Zenn contents", "main": "lib/index.js", From a40f08648d7285fa2205d8b12dbefaff21453479 Mon Sep 17 00:00:00 2001 From: Takumi Muraishi Date: Thu, 4 Apr 2024 20:12:11 +0900 Subject: [PATCH 04/13] fix typo Request --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- docs/pull_request_policy.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index b8dff195..91ac99c3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -14,6 +14,6 @@ Resolves # - [ ] 不要なコードが含まれていないか( コメントやログの消し忘れに注意 ) - [ ] XSS になるようなコードが含まれていないか - [ ] モバイル端末での表示が考慮されているか -- [ ] Pull Reuqest の内容は妥当か( 膨らみすぎてないか ) +- [ ] Pull Request の内容は妥当か( 膨らみすぎてないか ) より詳しい内容は [Pull Request Policy](https://github.com/zenn-dev/zenn-editor/tree/canary/docs/pull_request_policy.md) を参照してください。 diff --git a/docs/pull_request_policy.md b/docs/pull_request_policy.md index eb98141c..768261aa 100644 --- a/docs/pull_request_policy.md +++ b/docs/pull_request_policy.md @@ -49,6 +49,6 @@ Pull Request の修正内容にフロントエンドが関わる場合は、モ テストが正しく実装されているか確認してください。特に XSS が発生しそうな処理に対しては、必ずテストを書くようにしてください。 -## Pull Reuqest の内容は妥当か確認する +## Pull Request の内容は妥当か確認する Pull Request の内容が正しく実装されている確認してください。関係が薄い修正が含まれている場合は、別の Pull Request に分けるなどして Pull Request が膨らみすぎないように注意してください。 From 4822cee9753e531ea235a4b57a1f8cf2ef11284b Mon Sep 17 00:00:00 2001 From: Takumi Muraishi Date: Thu, 4 Apr 2024 20:22:03 +0900 Subject: [PATCH 05/13] fix typo License --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 922fe757..71cebc0f 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,6 @@ export default function App(props) { https://zenn-dev.github.io/zenn-docs-for-developers/ -## Licence +## License [MIT](LICENSE) From 63809d0ad519aa881a379a23e3caf470e625065d Mon Sep 17 00:00:00 2001 From: Takumi Muraishi Date: Thu, 4 Apr 2024 20:26:32 +0900 Subject: [PATCH 06/13] fix typo Grammar --- packages/zenn-markdown-html/src/utils/highlight.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/zenn-markdown-html/src/utils/highlight.ts b/packages/zenn-markdown-html/src/utils/highlight.ts index 29f35195..150d4066 100644 --- a/packages/zenn-markdown-html/src/utils/highlight.ts +++ b/packages/zenn-markdown-html/src/utils/highlight.ts @@ -7,20 +7,20 @@ enableDiffHighlight(); function highlightContent({ text, - prismGrammer, + prismGrammar, langName, hasDiff, }: { text: string; - prismGrammer?: Grammar; + prismGrammar?: Grammar; langName?: string; hasDiff: boolean; }): string { - if (prismGrammer && langName) { + if (prismGrammar && langName) { if (hasDiff) return Prism.highlight(text, Prism.languages.diff, `diff-${langName}`); - return Prism.highlight(text, prismGrammer, langName); + return Prism.highlight(text, prismGrammar, langName); } if (hasDiff) return Prism.highlight(text, Prism.languages.diff, 'diff'); @@ -32,6 +32,6 @@ export function highlight( langName: string, hasDiff: boolean ): string { - const prismGrammer = Prism.languages[langName]; - return highlightContent({ text, prismGrammer, langName, hasDiff }); + const prismGrammar = Prism.languages[langName]; + return highlightContent({ text, prismGrammar, langName, hasDiff }); } From e0d0abe0e2617d4b6d704405bf944496493d4ba6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 5 Apr 2024 07:08:18 +0000 Subject: [PATCH 07/13] v0.1.154-alpha.1 --- lerna.json | 2 +- packages/zenn-cli/package.json | 2 +- packages/zenn-content-css/package.json | 2 +- packages/zenn-embed-elements/package.json | 2 +- packages/zenn-markdown-html/package.json | 2 +- packages/zenn-model/package.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lerna.json b/lerna.json index 26b9efaa..3717bbe9 100644 --- a/lerna.json +++ b/lerna.json @@ -2,6 +2,6 @@ "packages": [ "packages/*" ], - "version": "0.1.154-alpha.0", + "version": "0.1.154-alpha.1", "npmClient": "pnpm" } diff --git a/packages/zenn-cli/package.json b/packages/zenn-cli/package.json index 8ad03b94..9576cf9a 100644 --- a/packages/zenn-cli/package.json +++ b/packages/zenn-cli/package.json @@ -1,6 +1,6 @@ { "name": "zenn-cli", - "version": "0.1.154-alpha.0", + "version": "0.1.154-alpha.1", "description": "Preview Zenn content locally.", "repository": { "type": "git", diff --git a/packages/zenn-content-css/package.json b/packages/zenn-content-css/package.json index bac52460..4863f97f 100644 --- a/packages/zenn-content-css/package.json +++ b/packages/zenn-content-css/package.json @@ -1,6 +1,6 @@ { "name": "zenn-content-css", - "version": "0.1.154-alpha.0", + "version": "0.1.154-alpha.1", "license": "MIT", "description": "Zenn flavor content style.", "repository": { diff --git a/packages/zenn-embed-elements/package.json b/packages/zenn-embed-elements/package.json index 2f80469a..b1a9aa0e 100644 --- a/packages/zenn-embed-elements/package.json +++ b/packages/zenn-embed-elements/package.json @@ -1,6 +1,6 @@ { "name": "zenn-embed-elements", - "version": "0.1.154-alpha.0", + "version": "0.1.154-alpha.1", "license": "MIT", "description": "Web components for embedded contents.", "repository": { diff --git a/packages/zenn-markdown-html/package.json b/packages/zenn-markdown-html/package.json index 380fb391..2ba9c7a6 100644 --- a/packages/zenn-markdown-html/package.json +++ b/packages/zenn-markdown-html/package.json @@ -1,6 +1,6 @@ { "name": "zenn-markdown-html", - "version": "0.1.154-alpha.0", + "version": "0.1.154-alpha.1", "license": "MIT", "description": "Convert markdown to zenn flavor html.", "main": "lib/index.js", diff --git a/packages/zenn-model/package.json b/packages/zenn-model/package.json index aad061ad..2dfd0056 100644 --- a/packages/zenn-model/package.json +++ b/packages/zenn-model/package.json @@ -1,6 +1,6 @@ { "name": "zenn-model", - "version": "0.1.154-alpha.0", + "version": "0.1.154-alpha.1", "license": "MIT", "description": "Model utils for Zenn contents", "main": "lib/index.js", From dd543582e6b95b5b3a63e417e786f7fe42ba7456 Mon Sep 17 00:00:00 2001 From: Ryosuke Igarashi Date: Tue, 4 Jun 2024 08:54:31 +0900 Subject: [PATCH 08/13] =?UTF-8?q?fix:=20articles=E3=81=AEexample=E3=82=92?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../articles/100-example-markdown-guide.md | 596 ++++++++++++++++++ ...{toc-check.md => 101-example-toc-check.md} | 4 +- ...xample-images.md => 200-example-images.md} | 4 +- ...ode-fence.md => 201-example-code-fence.md} | 4 +- ...nk-card.md => 300-example-embed-basics.md} | 34 +- .../articles/301-example-embed-github.md | 38 ++ .../zenn-cli/articles/302-example-embed-x.md | 45 ++ ...ermaid.md => 303-example-embed-mermaid.md} | 4 +- .../articles/304-example-embed-katex.md | 267 ++++++++ ...xamples.md => 305-example-embed-others.md} | 48 +- .../{xss.md => 800-example-xss-check.md} | 11 + .../{empty.md => 900-example-empty.md} | 2 +- ...ters.md => 901-example-no-frontmatters.md} | 0 ...rkdown-file.js => 902-no-markdown-file.js} | 0 packages/zenn-cli/articles/README.md | 2 - packages/zenn-cli/articles/example-full.md | 118 ---- packages/zenn-cli/articles/example-tweets.md | 35 - packages/zenn-cli/articles/exampleexample.md | 304 --------- packages/zenn-cli/articles/math.md | 114 ---- .../zenn-cli/articles/zenn-embed-examples.md | 103 --- 20 files changed, 993 insertions(+), 740 deletions(-) create mode 100644 packages/zenn-cli/articles/100-example-markdown-guide.md rename packages/zenn-cli/articles/{toc-check.md => 101-example-toc-check.md} (97%) rename packages/zenn-cli/articles/{example-images.md => 200-example-images.md} (94%) rename packages/zenn-cli/articles/{code-fence.md => 201-example-code-fence.md} (98%) rename packages/zenn-cli/articles/{link-card.md => 300-example-embed-basics.md} (51%) create mode 100644 packages/zenn-cli/articles/301-example-embed-github.md create mode 100644 packages/zenn-cli/articles/302-example-embed-x.md rename packages/zenn-cli/articles/{mermaid.md => 303-example-embed-mermaid.md} (96%) create mode 100644 packages/zenn-cli/articles/304-example-embed-katex.md rename packages/zenn-cli/articles/{embed-examples.md => 305-example-embed-others.md} (56%) rename packages/zenn-cli/articles/{xss.md => 800-example-xss-check.md} (95%) rename packages/zenn-cli/articles/{empty.md => 900-example-empty.md} (73%) rename packages/zenn-cli/articles/{no-frontmatters.md => 901-example-no-frontmatters.md} (100%) rename packages/zenn-cli/articles/{no-markdown-file.js => 902-no-markdown-file.js} (100%) delete mode 100644 packages/zenn-cli/articles/README.md delete mode 100644 packages/zenn-cli/articles/example-full.md delete mode 100644 packages/zenn-cli/articles/example-tweets.md delete mode 100644 packages/zenn-cli/articles/exampleexample.md delete mode 100644 packages/zenn-cli/articles/math.md delete mode 100644 packages/zenn-cli/articles/zenn-embed-examples.md diff --git a/packages/zenn-cli/articles/100-example-markdown-guide.md b/packages/zenn-cli/articles/100-example-markdown-guide.md new file mode 100644 index 00000000..6236eaa5 --- /dev/null +++ b/packages/zenn-cli/articles/100-example-markdown-guide.md @@ -0,0 +1,596 @@ +--- +title: "ZennのMarkdown記法一覧" +emoji: "👩‍💻" +type: "idea" # tech: 技術記事 / idea: アイデア +topics: ["zenn"] +published: true +--- + +このページでは Zenn のmarkdown記法を一覧で紹介します。 + +## 見出し + +``` +# 見出し1 +## 見出し2 +### 見出し3 +#### 見出し4 +``` + +:::message +アクセシビリティの観点から`見出し2`から始めることをおすすめします +::: + + +## リスト + +``` +- Hello! +- Hola! + - Bonjour! + * Hi! +``` + +- Hello! +- Hola! + - Bonjour! + * Hi! + +リストのアイテムには`*`もしくは`-`を使います。 + +### 番号付きリスト + +``` +1. First +2. Second +``` + +1. First +2. Second + +## テキストリンク + +``` +[アンカーテキスト](リンクのURL) +``` + +[アンカーテキスト](https://zenn.dev) + +Markdownエディタでは、テキストを範囲選択した状態でURLをペーストすることで選択範囲がリンクになります。([参照](https://info.zenn.dev/2024-02-08-editor-update)) + +## 画像 + +``` +![](https://画像のURL) +``` + +![](https://storage.googleapis.com/zenn-user-upload/gxnwu3br83nsbqs873uibiy6fd43) + +### 画像の横幅を指定する + +画像の表示が大きすぎる場合は、URL の後に半角スペースを空けて`=○○x`と記述すると、画像の幅を px 単位で指定できます。 + +``` +![](https://画像のURL =250x) +``` + +![](https://storage.googleapis.com/zenn-user-upload/gxnwu3br83nsbqs873uibiy6fd43 =250x) + +### Altテキストを指定する + +``` +![Altテキスト](https://画像のURL) +``` + +![Altテキスト](https://storage.googleapis.com/zenn-user-upload/gxnwu3br83nsbqs873uibiy6fd43 =250x) + +### キャプションをつける + +画像のすぐ下の行に`*`で挟んだテキストを配置すると、キャプションのような見た目で表示されます。 + +``` +![](https://画像のURL) +*キャプション* +``` + +![](https://storage.googleapis.com/zenn-user-upload/gxnwu3br83nsbqs873uibiy6fd43 =250x) +*キャプション* + +### 画像にリンクを貼る + +以下のようにすることで画像に対してリンクを貼ることもできます。 + +``` +[![](画像のURL)](リンクのURL) +``` + +## テーブル + +``` +| Head | Head | Head | +| ---- | ---- | ---- | +| Text | Text | Text | +| Text | Text | Text | +``` + +| Head | Head | Head | +| ---- | ---- | ---- | +| Text | Text | Text | +| Text | Text | Text | + +## コードブロック + +コードは「```」で挟むことでブロックとして挿入できます。以下のように言語を指定するとコードへ装飾(シンタックスハイライト)が適用されます。 + +> \```js +> +> \``` + +```js +const great = () => { + console.log("Awesome"); +}; +``` + +シンタックスハイライトには Prism.js を使用しています。 +[📄 対応言語の一覧 →](https://prismjs.com/#supported-languages) + +### ファイル名を表示する + +`言語:ファイル名`と`:`区切りで記載することで、ファイル名がコードブロックの上部に表示されるようになります。 + +> \```js:ファイル名 +> +> \``` + +```js:fooBar.js +const great = () => { + console.log("Awesome") +} +``` + +### diff のシンタックスハイライト + +`diff`と言語のハイライトを同時に適用するには、以下のように`diff`と`言語名`を半角スペース区切りで指定します。 + +> \```diff js +> +> \``` + +```diff js +@@ -4,6 +4,5 @@ ++ const foo = bar.baz([1, 2, 3]) + 1; +- let foo = bar.baz([1, 2, 3]); +``` + +なお、`diff`の使用時には、先頭に`+`、`-`、`>`、`<`、`半角スペース`のいずれが入っていない行はハイライトされません。 + +同時にファイル名を指定することも可能です。 + +> \```diff js:ファイル名 +> +> \``` + +```diff js:fooBar.js +@@ -4,6 +4,5 @@ ++ const foo = bar.baz([1, 2, 3]) + 1; +- let foo = bar.baz([1, 2, 3]); +``` + +## 数式 + +Zenn では**KaTeX**による数式表示に対応しています。 +KaTeXのバージョンは常に最新バージョンを使用します。 + +[📄 KaTeXがサポートする記法の一覧 →](https://katex.org/docs/support_table.html) + +### 数式のブロックを挿入する + +`$$`で記述を挟むことで、数式のブロックが挿入されます。たとえば + +``` +$$ +e^{i\theta} = \cos\theta + i\sin\theta +$$ +``` + +は以下のように表示されます。 + +$$ +e^{i\theta} = \cos\theta + i\sin\theta +$$ + +:::message +`$$`の前後は空の行でないと正しく埋め込まれないことがあります。 +::: + +### インラインで数式を挿入する + +`$a\ne0$`というように`$`ひとつで挟むことで、インラインで数式を含めることができます。たとえば$a\ne0$のようなイメージです。 + +## 引用 + +``` +> 引用文 +> 引用文 +``` + +> 引用文 +> 引用文 + +## 脚注 + +脚注を指定するとページ下部にその内容が表示されます。 + +``` +脚注の例[^1]です。インライン^[脚注の内容その2]で書くこともできます。 + +[^1]: 脚注の内容その1 +``` + +脚注の例[^1]です。インライン^[脚注の内容その 2]で書くこともできます。 + +[^1]: 脚注の内容その 1 + +## 区切り線 + +``` +----- +``` + +--- + +## インラインスタイル + +``` +*イタリック* +**太字** +~~打ち消し線~~ +インラインで`code`を挿入する +``` + +_イタリック_ +**太字** +~~打ち消し線~~ +インラインで`code`を挿入する + +### インラインのコメント + +自分用のメモをしたいときは HTML のコメント記法を使用できます。 + +```html + +``` + + + +この形式で書いたコメントは公開されたページ上では表示されません。ただし、複数行のコメントには対応していないのでご注意ください。 + +## Zenn 独自の記法 + +### メッセージ + +``` +:::message +メッセージをここに +::: +``` + +:::message +メッセージをここに +::: + +``` +:::message alert +警告メッセージをここに +::: +``` + +:::message alert +警告メッセージをここに +::: + +### アコーディオン(トグル) + +``` +:::details タイトル +表示したい内容 +::: +``` + +:::details タイトル +表示したい内容 +::: + +#### 要素をネストさせるには + +外側の要素の開始/終了に `:` を追加します。 + +``` +::::details タイトル +:::message +ネストされた要素 +::: +:::: +``` + +::::details タイトル +:::message +ネストされた要素 +::: +:::: + +## コンテンツの埋め込み + +### リンクカード + +```bash +# URLだけの行 +https://zenn.dev/zenn/articles/markdown-guide +``` + +URL だけが貼り付けられた行があると、その部分がカードとして表示されます。 + +https://zenn.dev/zenn/articles/markdown-guide + +また`@[card](URL)`という書き方でカード型のリンクを貼ることもできます。 + +:::details アンダースコア _ を含むURLが正しく認識されない場合 +[markdownパーサの仕様](https://zenn.dev/catnose99/scraps/e94c8e789f846a)により、アンダースコア(`_`)を含むURLで、正しくURLが認識されないことがあります。 + +``` +https://zenn.dev/__example__ +``` + +> https://zenn.dev/__example__ + +対処法 + +1. カード型のリンクとして表示したい場合は + `@[card](ここにURL)`という書き方をしてください +2. 単純にリンク化された URL を貼り付けたい場合は``のような形で`<`と`>`で URL を囲むようにしてください +::: + +### X(Twitter)のポスト(ツイート) + +```bash +# ポストのURLだけの行(前後に改行が必要です) +https://twitter.com/jack/status/20 + +# x.comドメインの場合 +https://x.com/jack/status/20 +``` + +以前は`@[tweet](ポストのURL)`の記法を採用していましたが、現在はポストのURLを貼り付けるだけで埋め込みが表示されます。 + +:::details アンダースコア _ を含む URL が正しく認識されない場合 +[markdown パーサの仕様](https://zenn.dev/catnose99/scraps/e94c8e789f846a)により、URL の`/`の区切りの中に 2 つ以上アンダースコア(`_`)を含むと、自動リンクが途中で途切れてしまいます。 + +``` +https://twitter.com/__example__/status/12345678910 +``` + +> https://twitter.com/__example__/status/12345678910 + +対処法 + +このような URL では`@[tweet](ポストのURL)`という書き方をしていただくようお願いします。 +::: + +#### リプライ元のポストを非表示にする + +リプライを埋め込んだ場合、デフォルトでリプライ元のポスト含まれて表示されます。`ポストのURL?conversation=none`のようにクエリパラメータに`conversation=none`を指定すると、リプライ元のポストが含まれなくなります。 + +### YouTube + +```bash +# YouTubeのURLだけの行(前後に改行が必要です) +https://www.youtube.com/watch?v=WRVsOCh907o +``` + +以前は`@[youtube](YouTubeの動画ID)`という記法を採用していましたが、現在は動画URLを貼り付けるだけで動画を埋め込むことができます。 + +### GitHub + +GitHub上のファイルへのURLまたはパーマリンクだけの行を作成すると、その部分にGitHubの埋め込みが表示されます。 + +```bash +# GitHubのファイルURLまたはパーマリンクだけの行(前後に改行が必要です) +https://github.com/octocat/Hello-World/blob/master/README +``` + +上記のリンクは、以下のように表示されます。 + +https://github.com/octocat/Hello-World/blob/master/README + + +#### 行の指定 + +GitHubと同じように、リンクの末尾に`#L00-L00`のような形で表示するファイルの開始行と終了行を指定することができます。 + +```bash +# コードの開始行と終了行を指定 +https://github.com/octocat/Spoon-Knife/blob/main/README.md#L1-L3 +``` + +上記のリンクは以下のように表示されます。 + +https://github.com/octocat/Spoon-Knife/blob/main/README.md#L1-L3 + +また、開始行のみ指定することもできます。 + +```bash +# コードの開始行のみ指定 +https://github.com/octocat/Spoon-Knife/blob/main/README.md#L3 +``` + +上記のリンクは、以下のように開始行のみ埋め込まれて表示されます。 + +https://github.com/octocat/Spoon-Knife/blob/main/README.md#L3 + +#### テキストファイル以外は埋め込めません + +埋め込めるファイルは、ソースコードなどのテキストファイルのみとなっています。 +もし画像などのファイルを指定した場合は、以下のような表示になります。 + +https://github.com/zenn-dev/zenn-editor/blob/canary/packages/zenn-cli/images/example-images/zenn-editor.png + +### GitHub Gist + +```bash +@[gist](GistのページURL) +``` + +GistのページURLを指定します。 + +特定のファイルだけ埋め込みたい場合は`@[gist](https://gist.github.com/foo/bar?file=example.json)`のようにクエリ文字列で`?file=ファイル名`という形で指定します。 + +### CodePen + +``` +@[codepen](ページのURL) +``` + +デフォルトの表示タブは`ページのURL?default-tab=html,css`のようにクエリを指定することで変更できます。 + +### SlideShare + +``` +@[slideshare](スライドのkey) +``` + +SlideShare の埋め込み iframe に含まれる`...embed_code/key/○○...`の`◯◯`の部分を入力します。 + +### SpeakerDeck + +``` +@[speakerdeck](スライドのID) +``` + +SpeakerDeck で取得した埋め込みコードに含まれる`data-id`の値を入力します。 + +### JSFiddle + +``` +@[jsfiddle](ページのURL) +``` + +[埋め込みオプション](https://docs.jsfiddle.net/embedding-fiddles)を指定する場合、iframe用の埋め込みURL( `ページのURL + /embedded/{Tabs}/{Visual}/` )を入力します。 + +### CodeSandbox + +``` +@[codesandbox](embed用のURL) +``` + +CodeSandbox では、各ページから埋め込み用の` diff --git a/packages/zenn-cli/articles/301-example-embed-github.md b/packages/zenn-cli/articles/301-example-embed-github.md new file mode 100644 index 00000000..94274fee --- /dev/null +++ b/packages/zenn-cli/articles/301-example-embed-github.md @@ -0,0 +1,38 @@ +--- +title: '埋め込みのテスト(GitHub)' +type: 'tech' # or "idea" +topics: ['embed', 'test'] +emoji: 🐲 +published: true +--- + +` diff --git a/packages/zenn-cli/articles/xss.md b/packages/zenn-cli/articles/800-example-xss-check.md similarity index 95% rename from packages/zenn-cli/articles/xss.md rename to packages/zenn-cli/articles/800-example-xss-check.md index 903566a8..b675ce50 100644 --- a/packages/zenn-cli/articles/xss.md +++ b/packages/zenn-cli/articles/800-example-xss-check.md @@ -1,3 +1,14 @@ +--- +title: 'XSSのテスト' +type: 'tech' # or "idea" +topics: + - React + - Rust +emoji: 👩‍💻 +published: true +--- + + $$ " e^{i\theta} = i\sin\thetae^{i\theta} diff --git a/packages/zenn-cli/articles/empty.md b/packages/zenn-cli/articles/900-example-empty.md similarity index 73% rename from packages/zenn-cli/articles/empty.md rename to packages/zenn-cli/articles/900-example-empty.md index 95ec1a13..9c316f73 100644 --- a/packages/zenn-cli/articles/empty.md +++ b/packages/zenn-cli/articles/900-example-empty.md @@ -1,5 +1,5 @@ --- -title: 'example empty' +title: 'Empty Articleのテスト' type: 'idea' # or "idea" topics: - React diff --git a/packages/zenn-cli/articles/no-frontmatters.md b/packages/zenn-cli/articles/901-example-no-frontmatters.md similarity index 100% rename from packages/zenn-cli/articles/no-frontmatters.md rename to packages/zenn-cli/articles/901-example-no-frontmatters.md diff --git a/packages/zenn-cli/articles/no-markdown-file.js b/packages/zenn-cli/articles/902-no-markdown-file.js similarity index 100% rename from packages/zenn-cli/articles/no-markdown-file.js rename to packages/zenn-cli/articles/902-no-markdown-file.js diff --git a/packages/zenn-cli/articles/README.md b/packages/zenn-cli/articles/README.md deleted file mode 100644 index 38f24b3a..00000000 --- a/packages/zenn-cli/articles/README.md +++ /dev/null @@ -1,2 +0,0 @@ -- 開発用 example コンテンツ -- プロジェクトルートの`./articles`からマークダウンを読み込んでプレビュー diff --git a/packages/zenn-cli/articles/example-full.md b/packages/zenn-cli/articles/example-full.md deleted file mode 100644 index 8f511f29..00000000 --- a/packages/zenn-cli/articles/example-full.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -title: 'example full' -type: 'idea' # or "idea" -topics: - - React - - Rust -emoji: 👩‍💻 -published: false ---- - -先日、こんな記事を見かけました。 - -**[テックブログは続かない - note.com](https://note.com/makaibito/n/n2d9e84a959c0)** - -採用目的でテックブログを始めたものの、時間の経過とともに古い記事ばかりになる or すでに退職している社員の記事ばかりになる…というのはよく見かける光景です。 - -目の前のタスクが積み上がっている状況で、業務時間内にブログを書く時間を取るのはなかなか難しいと思います。 - -そうは言っても業務時間外に無償で会社のブログに書くのもなかなか気乗りしません。「数年以内に転職するかもしれない」という気持ちがあればなおさらです。記事が転職しても自分のものとして残るのであれば、書くモチベーションは上がるのかもしれません。 - ---- - -その後、こんなツイートを見かけました。 - -企業のテックブログと言えば「会社がひとつブログを作って、みんなでそこに投稿する」という形が当たり前になっていますが、たしかに**個々人の投稿を集約する場所**を用意するだけでも良いのかもしれません。 - -もう少し調べてみると[HERP 社のテックブログ](https://tech-hub.herp.co.jp/)はまさにそのような形になっています。メンバーは個人ブログなど自分の好きな場所に記事を投稿し、会社のテックブログはその記事へのリンクを集約して表示するハブの役割をすると。とても良いですね。 - -# チームメンバーのテックブログを RSS で集約するサイトを作った - -RSS を辿って社内メンバーの個人ブログを集約するというのは、技術的にそこまで難しくありません。最近 Zenn の開発ばかりやっているので、息抜きがてらスターター的なものを作ってみました。 - -![](https://storage.googleapis.com/zenn-user-upload/em417t9y70zleo9003crmu3rkqyn) -_デモサイトはこんな感じ_ - -**[デモサイト →](https://team-blog-hub.vercel.app/)** -**[GitHub リポジトリ →](https://github.com/catnose99/team-blog-hub)** - -デモサイトを見ていただければ分かると思いますが、個々人が投稿した記事へのリンクを集めた入り口のような場所になっています。 - -各メンバーは、Zenn、Qiita、Medium、note、はてなブログなど、自分の好きな場所に、自分の記事として投稿できます。RSS を取得できさえすれば、どこに投稿しても OK というわけです。 - -# 技術的な構成 - -サイトの構築には Next.js(TypeScript)を使いました。以下のような流れで静的なサイトがビルドされるようになっています。 - -1. 各メンバーの RSS の URL から投稿データのフェッチする -2. 1 をまとめて投稿データ一覧の json ファイルを作成する -3. Next.js で静的サイトとしてビルドする - -## メンバーの RSS の登録 - -[ソースコード](https://github.com/catnose99/team-blog-hub)を見ていただくと早いと思いますが、`members.ts`というファイルの中で各メンバーのプロフィールと RSS の URL 一覧を登録する形になっています。 - -```json -[ - { - "name": "メンバーの名前", - "role": "役職名", - "sources": [ - "https://zenn.dev/catnose99/feed", - "https://medium.com/feed/@catnose99" - ] - } -] -``` - -👆`sources`の部分に RSS の URL を指定します。複数の URL を指定することもできます。 - -### 正規表現で一部の記事を除外できるように - -一部の記事は会社のテックブログから除きたい(or 含めたい)こともあると思うので、下記のように正規表現を指定することでフィルターをかけられるようにしました。 - -```json -[{ - ... - sources: [ - "https://zenn.dev/catnose99/feed", - "https://medium.com/feed/@catnose99", - ], - includeUrlRegex: "含めたい記事のURLにマッチする正規表現", - excludeUrlRegex: "除きたい記事のURLにマッチする正規表現" -}] -``` - -`yarn build:posts`が実行されたときに、指定内容をもとに RSS から投稿のメタデータ一覧をフェッチして`posts.json`という記事の情報をまとめたファイルが生成されます。RSS のパースは[rss-parser](https://www.npmjs.com/package/rss-parser)というパッケージを使うと簡単です。 - -## Next.js で静的サイトをビルドする - -Next.js を使えば、静的なサイトも簡単に作れます。今回は上述の通り`posts.json`という投稿データ一覧がディレクトリ内に存在するため、ここから必要なデータを`import`して表示するだけです。 - -Next.js でアプリを作るときに頻繁に使いがちな`getInitialProps`や`getStaticProps`などもほとんど必要ありません。 - -## デプロイ - -デモサイトは[Vercel](https://vercel.com)にデプロイしました。`npm run build`(`yarn build`)さえホスティング前に実行できれば、デプロイ先はどこでも OK です。 - -チームで運営する場合には、CI/CD 環境を整えると管理しやすそうです。新しく社員が入ってきたときに「個人ブログの RSS の URL を追加してプルリク投げておいて」とお願いできるとお互い楽ですね。 - -そういう意味でリポジトリとの連携がしやすい Vercel や[Netlify](https://www.netlify.com/)などがおすすめです。 - -## 定期的に自動ビルドする - -実際の運用では、投稿一覧を更新するために、定期的に(1 日に 1 回など)自動でビルドを行う必要があります。 - -- Vercel の場合、GitHub Actions の「cron」を使えば、定期的な自動デプロイを楽に設定できます。詳しくは[GitHub の Discussion](https://github.com/vercel/next.js/discussions/12486)が参考になると思います。 - -- Netlify の場合は[Auto trigger deploys on Netlify](https://flaviocopes.com/netlify-auto-deploy/)のような方法で自動デプロイできます。 - -# ライセンス - -今回作ったものはオープンソースです。Fork してご自由にお使いください。 - -チームでなくとも個人で使っていただくのも良いかもしれません。たとえば、note と Medium と Zenn に投稿している方は、同じ仕組みを使って一箇所に投稿一覧をまとめることができます。 - -※ 真っ先に変えたいのは配色だと思います。使用する色の数を抑えつつ、カラーコードは CSS 変数で管理しているため、比較的変更しやすいと思います。 - -[github.com/catnose99/team-blog-hub →](https://github.com/catnose99/team-blog-hub) diff --git a/packages/zenn-cli/articles/example-tweets.md b/packages/zenn-cli/articles/example-tweets.md deleted file mode 100644 index 6f3d582a..00000000 --- a/packages/zenn-cli/articles/example-tweets.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: 'example tweet' -type: 'tech' -topics: - - React - - Rust -emoji: 👩‍💻 -published: false ---- - -https://twitter.com/jack/status/1364262123417726976 - -↓ with `?conversation=none` - -https://twitter.com/jack/status/1364262123417726976?conversation=none - -↓ with `&t=hoge` - -https://twitter.com/jack/status/1364262123417726976?conversation=none&t=hoge - ---- - -listed tweets - -https://twitter.com/jack/status/20 -https://twitter.com/jack/status/20 -https://twitter.com/jack/status/20 - -https://twitter.com/jack/status/20 - -https://twitter.com/jack/status/20 - -aa - ---- diff --git a/packages/zenn-cli/articles/exampleexample.md b/packages/zenn-cli/articles/exampleexample.md deleted file mode 100644 index 846f791f..00000000 --- a/packages/zenn-cli/articles/exampleexample.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -title: 'example' -type: 'idea' # or "idea" -topics: - - React - - Rust - - 初心者 -emoji: 👩‍💻 -published: true -published_at: 2023-05-30 09:00 -publication_name: cm_zenn ---- - -refs: -https://markdown-it.github.io/ - -Test -Test - -# h1 Heading - -## h2 Heading - -### h3 Heading - -#### h4 Heading - -##### h5 Heading - -###### h6 Heading - -## accordion - -:::details ショートカットを使用しよう - -マークダウンエディターでは、以下のショートカットを使用できます。 - -- **Ctrl + P(プレビュー)**:マークダウンがどのように表示されるかをチェックできます。もう一度ショートカットを実行すると、エディターに戻ります。 -- **Ctrl + S(内容の保存)**:変更内容を保存します。 -- **Ctrl + I(埋め込み)**:ツイートや YouTube、CodePen、SpeakerDeck などの埋め込みコンテンツを挿入するためのモーダルが表示されます。 - -::: - -checkbox - -- a -- b -- マークダウンがどのように表示されるかをチェックできます。もう一度ショートカットを実行すると、エディターに戻ります - -Task List - -- [ ] a -- [x] b -- [x] マークダウンがどのように表示されるかをチェックできます。もう一度ショートカットを実行すると、エディターに戻ります - -## Horizontal Rules - ---- - ---- - ---- - -## Typographic replacements - -Enable typographer option to see result. - -(c) (C) (r) (R) (tm) (TM) (p) (P) +- - -test.. test... test..... test?..... test!.... - -!!!!!! ???? ,, -- --- - -"Smartypants, double quotes" and 'single quotes' - -## Emphasis - -**This is bold text** - -**This is bold text** - -_This is italic text_ - -_This is italic text_ - -~~Strikethrough~~ - -## Blockquotes - -> Blockquotes can also be nested... -> -> > ...by using additional greater-than signs right next to each other... -> > -> > > ...or with spaces between arrows. - -## Lists - -Unordered - -- Create a list by starting a line with `+`, `-`, or `*` -- Sub-lists are made by indenting 2 spaces: - - Marker character change forces new list start: - - Ac tristique libero volutpat at - * Facilisis in pretium nisl aliquet - - Nulla volutpat aliquam velit -- Very easy! - -Ordered - -1. Lorem ipsum dolor sit amet -2. Consectetur adipiscing elit -3. Integer molestie lorem at massa - -4. You can use sequential numbers... -5. ...or keep all the numbers as `1.` - -Start numbering with offset: - -57. foo -1. bar - -## Code - -Inline `code` - -Indented code - - // Some comments - line 1 of code - line 2 of code - line 3 of code - -Block code "fences" - -``` -Sample text here... -``` - -Syntax highlighting - -```js:fooBar.js -var foo = function (bar) { - return bar++; -}; - -console.log(foo(5)); -// 👇can scroll horizontally -console.log(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa); -``` - -## Tables - -| Option | Description | -| ------ | ------------------------------------------------------------------------------ | -| data | path to
data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | - -Right aligned columns - -| Option | Description | -| -----: | ------------------------------------------------------------------------: | -| data | path to data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | - -| Option | Description | -| ------ | ------------------------------------------------------------------------- | -| data | path to data files to supply the data that will be passed into templates. | -| engine | engine to be used for processing templates. Handlebars is the default. | -| ext | extension to be used for dest files. | - -Right aligned columns - -| Option | Description | -| -----: | ----------: | -| data | path | - -## Links - -[link text](http://dev.nodeca.com) - -[link with title](http://nodeca.github.io/pica/demo/ 'title text!') - -Autoconverted link https://github.com/nodeca/pica (enable linkify to see) - -## Images - -![Minion](https://octodex.github.com/images/minion.png) -![Stormtroopocat](https://octodex.github.com/images/stormtroopocat.jpg 'The Stormtroopocat') - -Like links, Images also have a footnote style syntax - -![](https://octodex.github.com/images/stormtroopocat.jpg) -_captions_ - -![Alt text][id] - -With a reference later in the document defining the URL location: - -[id]: https://octodex.github.com/images/dojocat.jpg 'The Dojocat' - -## Plugins - -The killer feature of `markdown-it` is very effective support of -[syntax plugins](https://www.npmjs.org/browse/keyword/markdown-it-plugin). - -### [Emojies](https://github.com/markdown-it/markdown-it-emoji) - -> Classic markup: :wink: :crush: :cry: :tear: :laughing: :yum: -> -> Shortcuts (emoticons): :-) :-( 8-) ;) - -see [how to change output](https://github.com/markdown-it/markdown-it-emoji#change-output) with twemoji. - -### [Subscript](https://github.com/markdown-it/markdown-it-sub) / [Superscript](https://github.com/markdown-it/markdown-it-sup) - -- 19^th^ -- H~2~O - -### [\](https://github.com/markdown-it/markdown-it-ins) - -++Inserted text++ - -### [\](https://github.com/markdown-it/markdown-it-mark) - -==Marked text== - -### [Footnotes](https://github.com/markdown-it/markdown-it-footnote) - -Footnote 1 link[^first]. - -Footnote 2 link[^second]. - -Inline footnote^[Text of inline footnote] definition. - -Duplicated footnote reference[^second]. - -[^first]: Footnote **can have markup** - - and multiple paragraphs. - -[^second]: Footnote text. - -### [Definition lists](https://github.com/markdown-it/markdown-it-deflist) - -Term 1 - -: Definition 1 -with lazy continuation. - -Term 2 with _inline markup_ - -: Definition 2 - - { some code, part of Definition 2 } - - Third paragraph of definition 2. - -_Compact style:_ - -Term 1 -~ Definition 1 - -Term 2 -~ Definition 2a -~ Definition 2b - -### [Abbreviations](https://github.com/markdown-it/markdown-it-abbr) - -This is HTML abbreviation example. - -It converts "HTML", but keep intact partial entries like "xxxHTMLyyy" and so on. - -\*[HTML]: Hyper Text Markup Language - -### [Custom containers](https://github.com/markdown-it/markdown-it-container) - -::: message -here be dragons -::: - -::: message alert -here be dragons -::: - -:::: message -nested -::: details summary -content -::: -:::: - -:::: message -::: details summary -content -::: -nested -:::: - -:::: message -content -@[card](https://zenn.dev) -:::: diff --git a/packages/zenn-cli/articles/math.md b/packages/zenn-cli/articles/math.md deleted file mode 100644 index 5087e5d7..00000000 --- a/packages/zenn-cli/articles/math.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: 'math' -type: 'tech' # or "idea" -topics: - - Math -emoji: 👩‍💻 -published: false ---- - -&\&& - -$a,b,c$は[hoge](https://hoge.fuga)を参照。 -$a,b,c$は[hoge](http://hoge.fuga)を参照。 -$a,b,c$は[hoge](http://hoge.fuga)$を参照。 -$a,b,c$は[$a](http://hoge.fuga)を参照。 - -[this $ should be escaped](https://docs.angularjs.org/api/ng/service/$http#json-vulnerability-protection) -[this $$ should be escaped](https://docs.angularjs.org/api/ng/service/$$http#json-vulnerability-protection) - -[test on markdown-it-textmath](https://goessner.github.io/markdown-it-texmath/index.html) - -$a$ - -$a\ne0$ - -$\varphi$ - -// 👇can scroll horizontally - -$aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa$ - -$$ -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -$$ - -$1+1=2$ - -$1+1<3$ - -$a \backslash$ - -You get 3$ if you solve $1+2$ - -If you solve $1+2$ you get $3 - -$\frac{1}{2}$ - -$\begin{pmatrix}x\\y\end{pmatrix}$ - -$a^{b}$ - -$a^*b$ with $a^*$ - -$\sum_{i=1}^n$ - ---- - -↓ はみ出たら横スクロール - -$$ -e^{i\theta} = \cos\theta + i\sin\theta e^{i\theta} = \cos\theta + i\sin\theta e^{i\theta} = \cos\theta + i\sin\theta -$$ - -$\sqrt{3x-1}+(1+x)^2$ - -# Triangle - -Let the right triangle hypothenuse be aligned with the coordinate system _x-axis_. -The vector loop closure equation then reads - -$$a{\bold e}_\alpha + b\tilde{\bold e}_\alpha + c{\bold e}_x = \bold 0$$ - -Resolving for the hypothenuse part $c{\bold e}_x$ in the loop closure equation - -$$-c{\bold e}_x = a{\bold e}_\alpha + b\tilde{\bold e}_\alpha$$ - -and squaring - -> finally results in the Pythagorean theorem (2) -> -> $$ c^2 = a^2 + b^2 $$ (2) - -$a\ne0$ - -:::details 詳細 -$a\ne0$ -::: - -## リンク文字列中は数式にならないべき - -[text$text](https://...$text) - -[text$text](https://...$text - -$text](https://...$ - -## ふたつ以上の数式もレンダリングされるべき - -あああ$\omega$いいい『[uuu](https://arxiv.org)』えええ$(7)$おおお -あああ$\frac{1}{2}$いいい[uuu](https://arxiv.org)えええ$(7)$おおお -あああ$abc$いいい[uuu](https://arxiv.org)えええ$(7)$おおお -あああ$\alpha$と$\omega$いいい[uuu](https://arxiv.org)えええ$(7)$おおお - -あああ$a$いいい[uuu](https://arxiv.org)えええ$(7)$おおお -あああ$\omega$いいいえええ$(7)$おおお -あああ$\omega$いいい[uuu](https://arxiv.org)えええおおお -あああ$\omega$いいい[uuu](https://arxiv.org)えええ$7$おおお -あああ$\omega$いいい[uuu](arxiv.org)えええ$(7)$おおお -あああ$\omega$いいい[uuu](//arxiv.org)えええ$(7)$おおお -あああ$\omega$いいい[uuu](ftp://arxiv.org)えええ$(7)$おおお -あああ$\omega$いいい(https://arxiv.org)えええ$(7)$おおお -あああ$\omega$いいい[uuu](https://arxiv.org)えええ$\exp xyz$おおお - -$a=b$という数式はこちらを参照[text$text](https://...$text)$(7)$ diff --git a/packages/zenn-cli/articles/zenn-embed-examples.md b/packages/zenn-cli/articles/zenn-embed-examples.md deleted file mode 100644 index d0902c36..00000000 --- a/packages/zenn-cli/articles/zenn-embed-examples.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: 'zenn-embeddedのテスト' -type: 'tech' # or "idea" -topics: ['embed', 'test'] -emoji: 🐲 -published: false ---- - -`