-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmarkdown_cpprefjp.html
512 lines (447 loc) · 28.5 KB
/
markdown_cpprefjp.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
<!doctype html>
<html class="cpprefjp" lang="ja" itemscope="" itemtype="http://schema.org/WebPage">
<head>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NXNBNVBTJS"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-NXNBNVBTJS');
</script>
<meta charset="UTF-8">
<title>cpprefjpでのMarkdown記法の制限と拡張 - cpprefjp C++日本語リファレンス</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="keywords" content="
C++,標準ライブラリ,リファレンス,ドキュメント,STL,std,
">
<meta name="title" content="cpprefjpでのMarkdown記法の制限と拡張 - cpprefjp C++日本語リファレンス" />
<meta itemprop="name" content="cpprefjpでのMarkdown記法の制限と拡張 - cpprefjp C++日本語リファレンス" />
<meta property="og:title" content="cpprefjpでのMarkdown記法の制限と拡張 - cpprefjp C++日本語リファレンス" />
<meta property="og:url" content="https://cpprefjp.github.io/start_editing/markdown_cpprefjp.html" />
<meta property="og:site_name" content="cpprefjp - C++日本語リファレンス" />
<meta property="og:type" content="article" />
<meta property="og:description" content="cpprefjpでは、ドキュメントの記述にMarkdown記法を採用していますが、いくつかの制限があり、表現力が足りない部分は拡張記法を用意しています。" />
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="cpprefjpでのMarkdown記法の制限と拡張 - cpprefjp C++日本語リファレンス" />
<meta name="twitter:url" content="https://cpprefjp.github.io/start_editing/markdown_cpprefjp.html" />
<meta name="twitter:description" content="cpprefjpでは、ドキュメントの記述にMarkdown記法を採用していますが、いくつかの制限があり、表現力が足りない部分は拡張記法を用意しています。" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="https://cpprefjp.github.io/rss.xml" />
<link rel="apple-touch-icon" sizes="180x180" href="../static/favicons/apple-touch-icon.png?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e">
<link rel="icon" type="image/png" sizes="32x32" href="../static/favicons/favicon-32x32.png?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e">
<link rel="icon" type="image/png" sizes="16x16" href="../static/favicons/favicon-16x16.png?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e">
<link rel="manifest" href="../manifest.json?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e">
<meta name="theme-color" content="#f5f8fc">
<link rel="stylesheet" href="../static/pygments/default.css?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e">
<!-- <link rel="stylesheet" href="../static/css/root.css"> -->
<script>
window.MathJax = {
tex: {
inlineMath: [ ['$','$'] ],
displayMath: [ ['$$','$$'] ],
processEscapes: true
},
chtml: {
displayAlign: 'left',
displayIndent: '2.0em',
},
};
</script>
<!-- IEはサポートしないので https://polyfill.io/v3/polyfill.min.js?features=es6 は読み込まない -->
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<link href="../static/kunai/css/kunai-stage-0.css?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e" rel="stylesheet">
<link href="../static/kunai/css/kunai-stage-1.css?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e" rel="stylesheet">
<link href="../static/kunai/css/kunai-stage-2.css?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e" rel="stylesheet">
<link href="../static/kunai/css/kunai-stage-3.css?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e" rel="stylesheet">
<script type="text/javascript" src="../static/kunai/js/kunai-vendor.js?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e"></script>
<script type="text/javascript" src="../static/kunai/js/kunai.js?cachebust=2a7ddc62f9c987d65760cb7e6115f210c1266a7e"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
var kn = new Kunai;
kn.cpprefjp();
});
</script>
</head>
<body>
<header data-kunai-mdinfo="{"meta": {}, "sources": [{"id": "6169d0df9c5b65c14a282d3adf0d5ad773c346f8", "source": "#include <iostream>\n\nint x = 10;\nint main() {\n std::cout << x << std::endl;\n}\n"}, {"id": "02e2602db2a92e060129bba3fd046760c0cceafa", "source": "#include <iostream>\n\nint x = 10;\nint main() {\n std::cout << x << std::endl;\n}\n"}, {"id": "d012ccbde68b2aef0f9af9fd4c0045514bc05ba2", "source": "#include <vector>\n#include <iostream>\n#include <algorithm>\n#include <iterator>\n\nint main() {\n std::vector<int> v = { 1, 2, 3 };\n std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, \", \"));\n}\n"}], "page_id": ["start_editing", "markdown_cpprefjp"]}">
<nav class="navbar navbar-default" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<div class="title-wrapper clearfix">
<div class="title">cpprefjp - C++日本語リファレンス</div>
</div>
</a>
</div>
<div class="collapse navbar-collapse" id="navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li>
<div class="google-search">
<script>
(function() {
var cx = '013316413321391058734:ji_u66hl7hq';
var gcse = document.createElement('script');
gcse.type = 'text/javascript';
gcse.async = true;
gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
'//www.google.com/cse/cse.js?cx=' + cx;
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(gcse, s);
})();
</script>
<div class="gcse-search"></div>
</div>
</li>
<li>
<a href="https://github.com/cpprefjp/site">GitHub Project</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<main id="main" role="main">
<div class="container-fluid">
<div class="row">
<div class="col-sm-9 col-sm-push-3" itemscope itemtype="http://schema.org/Article">
<div class="row">
<div class="col-sm-12 google-search-result">
<gcse:searchresults></gcse:searchresults>
</div>
</div>
<div class="row">
<div class="col-sm-12 content-header">
<ol class="breadcrumb">
<li itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span>
<a href="../index.html" itemprop="url">
<i class="fa fa-fw fa-home"></i>
</a>
</span>
</li>
<li itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span>
<a href="../start_editing.html" itemprop="url">
<span itemprop="name">はじめてのコントリビュート</span>
</a>
</span>
</li>
<li class="active" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span>
<span itemprop="name">cpprefjpでのMarkdown記法の制限と拡張</span>
</span>
</li>
</ol>
<div class="crsearch"></div>
</div>
</div>
<div class="row">
<div class="col-sm-12 edit-button">
<p class="text-right"><small>
最終更新日時(UTC):
<span itemprop="datePublished" content="2024-12-16T01:47:58">
2024年12月16日 01時47分58秒
</span>
<br/>
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<span itemprop="name">Akira Takahashi</span>
</span>
が更新
</small></p>
<p class="text-right">
<a class="history" target="_blank" href="https://github.com/cpprefjp/site/commits/master/start_editing/markdown_cpprefjp.md">
<span class="fa fa-fw fa-clock-o fa-flip-horizontal"></span>履歴
</a>
<a class="edit" target="_blank" href="https://github.com/cpprefjp/site/edit/master/start_editing/markdown_cpprefjp.md">
<span class="fa fa-fw fa-pencil"></span>編集
</a>
</p>
</div>
</div>
<div class="row">
<div class="col-sm-12 content-body">
<h1 itemprop="name"><span class="token">cpprefjpでのMarkdown記法の制限と拡張</span></h1>
<div itemprop="articleBody"><h2>概要</h2>
<p>cpprefjpでは、ドキュメントの記述にMarkdown記法を採用していますが、いくつかの制限があり、表現力が足りない部分は拡張記法を用意しています。</p>
<h2>Markdown記法の制限</h2>
<h3>HTMLタグの制限</h3>
<p>cpprefjpでは、許可されたHTMLタグしか使用できません。</p>
<ul>
<li>アンカーを貼るために、<code><a id="アンカー名">対象文字列</a></code>のようなHTML5に基づく記法を許可</li>
<li>表内での改行のために、<code><br/></code>タグを許可</li>
<li>値の大きさを表現するために、上付き文字を表す<code><sup></code>タグを許可</li>
<li>添字を表現するために、下付き文字を表す<code><sub></code>タグを許可</li>
</ul>
<h3>ブロックコメントの制限</h3>
<p>実装に使用しているMarkdownパーサーによる制限で、以下のようなブロックコメントは使用できません。</p>
<p><pre><code><!--
comment out text...
-->
</code></pre></p>
<h3>表内での縦線の制限</h3>
<p>表内で <code>|</code> (縦線、vertical line) を使用するために、文字参照 <code>&#x7C;</code> を使用しています。</p>
<h3>箇条書きのインデントとして4スペースのみを許可する制限</h3>
<p>実装に使用しているMarkdownパーサーによる制限で、箇条書きのインデントとして4スペースのみを許可しています (2スペースでは正しくインデントされません)。</p>
<p><pre><code>* てすと
* てすと2
</code></pre></p>
<p>これはcpprefjpではフラットなリストだと解釈されます。</p>
<p><pre><code>* てすと
* てすと2
</code></pre></p>
<p>これなら正しく表示されます。</p>
<h3>HTMLエンティティを使用できない制限</h3>
<p><pre><code>&reg;
</code></pre></p>
<p>上記のような書き方をすると、cpprefjpではエラーになります。HTML エンティティを使わず、以下のように書いてください。</p>
<p><pre><code>®
</code></pre></p>
<h2>Markdown記法の拡張</h2>
<p>Markdownだけだと表現力が足りないため、cpprefjpでは構文を拡張しています。</p>
<h3>文章中のコードに関する拡張</h3>
<p>バッククォートによる文章中のコード指定では、バッククォート内の両端にスペースは使用できません。以下のようにスペースはバッククォートの外で使用すれば、コードとして連結されます。</p>
<p><div class="codehilite"><pre><span></span><code><span class="err">式`f(a,` [`std::make_shared`](/reference/memory/make_shared.md)`<X>(x));`が有効である場合、それを呼び出す。</span>
</code></pre></div>
</p>
<p>結果:</p>
<p>式<code>f(a, <a href="../reference/memory/make_shared.html">std::make_shared</a><X>(x));</code>が有効である場合、それを呼び出す。</p>
<h3>コードブロックに関する拡張</h3>
<p>``` と ``` で挟むことで、複数行に渡るコードを書けます。</p>
<p>Markdown:</p>
<p><pre><code>```
#include <a href="../reference/iostream.html"><iostream></a>
int x = 10;
int main() {
<a href="../reference/iostream/cout.html">std::cout</a> << x << <a href="../reference/ostream/endl.html">std::endl</a>;
}
```
</code></pre></p>
<p>結果:</p>
<p><pre><code>#include <a href="../reference/iostream.html"><iostream></a>
int x = 10;
int main() {
<a href="../reference/iostream/cout.html">std::cout</a> << x << <a href="../reference/ostream/endl.html">std::endl</a>;
}
</code></pre></p>
<h3>シンタックスハイライトの拡張</h3>
<p>コードブロック開始側の ``` の後ろに言語名を書くことで、その言語に対応したハイライトが行われます。</p>
<p>Markdown:</p>
<p><pre><code>```cpp example
#include <a href="../reference/iostream.html"><iostream></a>
int x = 10;
int main() {
<a href="../reference/iostream/cout.html">std::cout</a> << x << <a href="../reference/ostream/endl.html">std::endl</a>;
}
```
</code></pre></p>
<p>結果:</p>
<p><div class="yata" id="6169d0df9c5b65c14a282d3adf0d5ad773c346f8"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../reference/iostream.html"><iostream></a></span><span class="cp"></span>
<span class="kt">int</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n"><a href="../reference/iostream/cout.html">std::cout</a></span> <span class="o"><<</span> <span class="n">x</span> <span class="o"><<</span> <span class="n"><a href="../reference/ostream/endl.html">std::endl</a></span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
</div></p>
<h3>exampleタグの拡張</h3>
<p>includeとmain関数を含む<strong>原則すべてのC/C++言語のコードブロック</strong>には<code>example</code>タグをつけてください。<br />
<code>example</code>タグが付いたコードブロックはその場で実際にコンパイル・実行することができるようになります。<br />
たとえコンパイルエラーになる場合でも、利用者がその場でコードを書き換えて試行することを容易にするために原則つけてください。</p>
<p><pre><code>```cpp example
#include <a href="../reference/iostream.html"><iostream></a>
int main()
{
<a href="../reference/iostream/cout.html">std::cout</a> << "arikitari_na_world" << <a href="../reference/ostream/endl.html">std::endl</a>;
}
```
</code></pre></p>
<p>つけない例としては次のような宣言が書いてあるのみのものが挙げられます。</p>
<p><div class="codehilite"><pre><span></span><code><span class="k">namespace</span> <span class="n">std</span> <span class="p">{</span>
<span class="k">template</span> <span class="o"><</span><span class="k">class</span> <span class="nc">T</span><span class="p">,</span> <span class="k">class</span> <span class="nc">Allocator</span> <span class="o">=</span> <span class="n">allocator</span><span class="o"><</span><span class="n">T</span><span class="o">>></span>
<span class="k">class</span> <span class="nc">vector</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
</p>
<h3>プログラムの修飾に関する拡張</h3>
<p>コードブロックの直後に特定の構文で記述することで、コードブロックの一部を修飾できます。</p>
<p>Markdown:</p>
<p><pre><code>```cpp example
#include <a href="../reference/iostream.html"><iostream></a>
int x = 10;
int main() {
<a href="../reference/iostream/cout.html">std::cout</a> << x << <a href="../reference/ostream/endl.html">std::endl</a>;
}
```
* <a href="../reference/iostream.html"><iostream></a>[link /reference/iostream.md]
* std[color ff0000]
</code></pre></p>
<p>結果:</p>
<p><div class="yata" id="02e2602db2a92e060129bba3fd046760c0cceafa"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../reference/iostream.html"><iostream></a></span><span class="cp"></span>
<span class="kt">int</span> <span class="n">x</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n"><span style="color:#ff0000">std</span></span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="n">x</span> <span class="o"><<</span> <span class="n"><span style="color:#ff0000">std</span></span><span class="o">::</span><span class="n">endl</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
</div></p>
<p>修飾の範囲は、コードブロックの直後から空行が続くまで、です。
空行があるとコードブロックに対する修飾を終わります。
構文は、<code>* <対象文字列>[<命令> <引数>]</code> です。
現在用意されている命令は3つです。</p>
<ul>
<li><code>link</code><ul>
<li><code><対象文字列></code>にリンクを張ります。</li>
<li><code><引数></code>にはリンク先のURLを指定します。</li>
<li>指定可能なURLの形式は以下の3種類です。<ul>
<li>絶対リンク: <code>http://example.com/foo/bar</code> のような形式</li>
<li>サイト内絶対リンク: <code>/reference/iostream.md</code> のような形式</li>
<li>サイト内相対リンク: <code>../reference/vector.md</code> のような形式</li>
</ul>
</li>
<li>サイト内へのリンクの場合、リンク先の存在チェックも行います。下記セクション参照。</li>
</ul>
</li>
<li><code>color</code><ul>
<li><code><対象文字列></code>に色を付けます。</li>
<li><code><引数></code>には色を<code>RRGGBB</code>(16進数)の形式で指定します。</li>
</ul>
</li>
<li><code>italic</code><ul>
<li><code><対象文字列></code>をイタリック体にします。</li>
<li><code><引数></code>はありません。</li>
</ul>
</li>
</ul>
<h4>グローバル修飾</h4>
<p>全てのコードブロックでは、デフォルトの修飾が実行されます。
これを <strong>グローバル修飾</strong> と呼びます。</p>
<p>例えば <code><vector></code>, <code><iostream></code>, <code><algorithm></code>, <code><iterator></code>, <code>std::vector</code>, <code>v.begin()</code>, <code>v.end()</code>, <code>std::copy</code>, <code>std::ostream_iterator</code> 等はグローバル修飾されるため、特に修飾を書かなくてもリンクになります。</p>
<p><div class="yata" id="d012ccbde68b2aef0f9af9fd4c0045514bc05ba2"><div class="codehilite"><pre><span></span><code><span class="cp">#include</span> <span class="cpf"><a href="../reference/vector.html"><vector></a></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><a href="../reference/iostream.html"><iostream></a></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><a href="../reference/algorithm.html"><algorithm></a></span><span class="cp"></span>
<span class="cp">#include</span> <span class="cpf"><a href="../reference/iterator.html"><iterator></a></span><span class="cp"></span>
<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
<span class="n"><a href="../reference/vector/vector.html">std::vector</a></span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">v</span> <span class="o">=</span> <span class="p">{</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span> <span class="p">};</span>
<span class="n"><a href="../reference/algorithm/copy.html">std::copy</a></span><span class="p">(</span><span class="n"><a href="../reference/vector/vector/begin.html">v.begin()</a></span><span class="p">,</span> <span class="n"><a href="../reference/vector/vector/end.html">v.end()</a></span><span class="p">,</span> <span class="n"><a href="../reference/iterator/ostream_iterator.html">std::ostream_iterator</a></span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n"><a href="../reference/iostream/cout.html">std::cout</a></span><span class="p">,</span> <span class="s">", "</span><span class="p">));</span>
<span class="p">}</span>
</code></pre></div>
</div></p>
<p>グローバル修飾の一覧は <a href="https://github.com/cpprefjp/site/blob/master/GLOBAL_QUALIFY_LIST.txt" target="_blank">GLOBAL_QUALIFY_LIST.txt</a> にあります。</p>
<h3>定義語に関する拡張</h3>
<p><code>GLOBAL_DEFINED_WORDS.json</code> に定義語を登録することができます。形式は <code>GLOBAL_DEFINED_WORDS.json</code> を参照して下さい。</p>
<p><code>link</code> にはその定義語の解説ページへのURLを指定します。<code>link</code> が指定されている場合、任意の記事中の (コード、リンク、見出しなどを除く) 地の文にその定義語が現れた時に、自動的に <code>link</code> へのハイパーリンクが貼られます。</p>
<p>特に解説ページの定義箇所で <code><dfn id="識別子">定義語</dfn></code> として <code>id</code> 属性を設定して、その箇所への直接リンクすることもできます。</p>
<p><code>desc</code> に簡単な説明が指定されている場合、地の文にあるその定義語にマウスカーソルを合わせると説明がツールチップとして表示されます。</p>
<p><code>yomi</code> には平仮名およびアルファベットでその定義語の読みを指定します。現在は使用されていませんが将来的に定義語が増えてきた時に、用語集または索引ページを自動生成する時の並び替えに使われる予定です。</p>
<h3>リンクの存在チェックに関する拡張</h3>
<p>CommonMark形式のリンクや独自拡張のプログラムの修飾<code>link</code>などで生成されるHTMLにリンクが埋め込まれるとき、リンク先がサイト内へのリンクだった場合、リンク先の存在チェックも行います。</p>
<p>リンク先が存在しなかった場合、変換時に以下の様なメッセージが <strong>標準エラーに</strong> 出力されます。</p>
<p><pre><code>Warning: [editors_doc/specialized.md] href "/reference/foobar.md (/reference/foobar.html)" not found.
</code></pre></p>
<p>このメッセージが出た場合、リンクが切れているため、編集して修正して下さい。</p>
<p>ただ「今後そのリンク先を作る予定なので、このリンクは残しておきたい」ということもあります。
そのような場合には <code>.nolink</code> が使えます。</p>
<p><pre><code>```cpp
#include <std_header>
```
* <std_header>[link /reference/std_header.md.nolink]
</code></pre></p>
<p>このように<code>link</code>のURLの最後に <code>.nolink</code> を指定すると、リンク先が存在しなかった場合には、以下の様なメッセージが <strong>標準出力に</strong> 出力されます。</p>
<p><pre><code>Note: You can create /reference/foobar.md for editors_doc/specialized.md.
</code></pre></p>
<p>このようにNoteが表示されるため、このページを作る予定があるというのを思い出させてくれます。</p>
<p>もし <code>/reference/foobar.md</code> を作り、<code>.nolink</code> を消し忘れていたとしても大丈夫です。
以下の様なメッセージが <strong>標準エラーに</strong> 出力されます。</p>
<p><pre><code>Warning: [nolinked editors_doc/specialized.md] href "/reference/foobar.md.nolink (/reference/foobar.md.nolink)" found.
</code></pre></p>
<h3>メタ情報を付加する拡張</h3>
<p>ページのどこか(通常はページタイトルの下)に <code>* <メタ情報>[meta <メタ情報タイプ>]</code> という構文で書くことで、メタ情報を記述できます。
記述可能なメタ情報は以下の通りです。</p>
<ul>
<li><code>[meta header]</code>: 所属ヘッダを表すメタ情報<ul>
<li>例: <code>* chrono[meta header]</code></li>
</ul>
</li>
<li><code>[meta category]</code>: 説明用の機能群を表すメタ情報</li>
<li><code>[meta id-type]</code>: 識別子の種別を表すメタ情報。class, class template, function, function template, enum, variable, type-alias, macro, namespace, concept, named requirement</li>
<li><code>[meta namespace]</code>: 所属する名前空間を表すメタ情報。マクロを考慮して省略可。名前空間の区切りは<code>::</code><ul>
<li>例: <code>* std[meta namespace]</code></li>
<li>例: <code>* std::chrono[meta namespace]</code></li>
</ul>
</li>
<li><code>[meta class]</code>: 所属するクラスを表すメタ情報。クラスページでは省略する。structとは書けない</li>
<li><code>[meta cpp]</code>: 機能が追加・非推奨・削除されたバージョンを表すメタ情報。改行して複数指定ができる。<ul>
<li><code>* cpp11[meta cpp]</code> : C++11で追加された機能</li>
<li><code>* cpp14[meta cpp]</code> : C++14で追加された機能</li>
<li><code>* cpp17[meta cpp]</code> : C++17で追加された機能</li>
<li><code>* cpp20[meta cpp]</code> : C++20で追加された機能</li>
<li><code>* cpp23[meta cpp]</code> : C++23で追加された機能</li>
<li><code>* cpp11deprecated[meta cpp]</code> : C++11で非推奨になった機能</li>
<li><code>* cpp14deprecated[meta cpp]</code> : C++14で非推奨になった機能</li>
<li><code>* cpp14removed[meta cpp]</code> : C++14で削除された機能</li>
<li><code>* cpp17deprecated[meta cpp]</code> : C++17で非推奨になった機能</li>
<li><code>* cpp17removed[meta cpp]</code> : C++17で削除された機能</li>
<li><code>* cpp20deprecated[meta cpp]</code> : C++20で非推奨になった機能</li>
<li><code>* cpp20removed[meta cpp]</code> : C++20で削除された機能</li>
<li><code>* cpp23deprecated[meta cpp]</code> : C++23で非推奨になった機能</li>
<li><code>* cpp23removed[meta cpp]</code> : C++23で削除された機能</li>
</ul>
</li>
</ul>
<h3>数式を記述する拡張</h3>
<p>cpprefjpでは、数式をLaTeX形式で記述できます。
内部的には<a href="https://www.mathjax.org/" target="_blank">MathJax</a>を利用しています。</p>
<p>MathJaxを使うためにはまず、ページのどこか(通常はページタイトルの下)に、以下のように記述してMathJaxを有効にする必要があります。</p>
<ul>
<li><code>* [mathjax enable]</code></li>
</ul>
<p>こうすることで、LaTeX形式で数式を記述できるようになります。</p>
<p>インライン用は以下のように書きます。</p>
<p>Markdown:</p>
<p><pre><code>$x = \frac{ -b \pm \sqrt{ b^{2} - 4 a c } }{2 a}$
</code></pre></p>
<p>結果:</p>
<p>$x = \frac{ -b \pm \sqrt{ b^{2} - 4 a c } }{2 a}$</p>
<p>ブロック用は以下のように書きます。</p>
<p>Markdown:</p>
<p><pre><code>$$
\left\{
\begin{array}{ll}
p \log_{10}b&\text{もし $b$ が $10$ の累乗の場合}\\
\lfloor (p - 1) \log_{10} b\rfloor&\text{上記以外の場合}\\
\end{array}
\right.
$$
</code></pre></p>
<p>結果:
$$
\left\{
\begin{array}{ll}
p \log_{10}b&\text{もし $b$ が $10$ の累乗の場合}\\
\lfloor (p - 1) \log_{10} b\rfloor&\text{上記以外の場合}\\
\end{array}
\right.
$$</p></div>
</div>
</div>
</div>
<div id="sidebar" class="col-sm-3 col-sm-pull-9">
</div>
</div>
</div>
</main>
<footer class="footer navbar navbar-default">
<div class="container-fluid">
<p><small>
本サイトの情報は、
<a href="https://creativecommons.org/licenses/by/3.0/deed.ja" rel="nofollow">クリエイティブ・コモンズ 表示 3.0 非移植 ライセンス(CC BY)</a>
の下に提供されています。
</small></p>
</div>
</footer>
</body>
</html>