|
|
<!doctype html>
|
|
|
<html>
|
|
|
<head>
|
|
|
<title>CodeMirror: sTeX mode</title>
|
|
|
<link rel="stylesheet" href="../../lib/codemirror.css">
|
|
|
<script src="../../lib/codemirror.js"></script>
|
|
|
<script src="stex.js"></script>
|
|
|
<link rel="stylesheet" href="../../test/mode_test.css">
|
|
|
<script src="../../test/mode_test.js"></script>
|
|
|
<link rel="stylesheet" href="../../doc/docs.css">
|
|
|
</head>
|
|
|
<body>
|
|
|
<h1>Tests for the sTeX Mode</h1>
|
|
|
<h2>Basics</h2>
|
|
|
<script language="javascript">
|
|
|
MT = ModeTest;
|
|
|
|
|
|
MT.test('foo',
|
|
|
null, 'foo');
|
|
|
|
|
|
MT.test('foo bar',
|
|
|
null, 'foo',
|
|
|
null, ' bar');
|
|
|
</script>
|
|
|
|
|
|
<h2>Tags</h2>
|
|
|
<script language="javascript">
|
|
|
MT.test('\\begin{document}\n\\end{document}',
|
|
|
'tag', '\\begin',
|
|
|
'bracket', '{',
|
|
|
'atom', 'document',
|
|
|
'bracket', '}',
|
|
|
'tag', '\\end',
|
|
|
'bracket', '{',
|
|
|
'atom', 'document',
|
|
|
'bracket', '}');
|
|
|
|
|
|
MT.test('\\begin{equation}\n E=mc^2\n\\end{equation}',
|
|
|
'tag', '\\begin',
|
|
|
'bracket', '{',
|
|
|
'atom', 'equation',
|
|
|
'bracket', '}',
|
|
|
null, ' ',
|
|
|
null, ' ',
|
|
|
null, 'E',
|
|
|
null, '=mc',
|
|
|
null, '^2',
|
|
|
'tag', '\\end',
|
|
|
'bracket', '{',
|
|
|
'atom', 'equation',
|
|
|
'bracket', '}');
|
|
|
|
|
|
MT.test('\\begin{module}[]',
|
|
|
'tag', '\\begin',
|
|
|
'bracket', '{',
|
|
|
'atom', 'module',
|
|
|
'bracket', '}',
|
|
|
'bracket', '[',
|
|
|
'bracket', ']');
|
|
|
|
|
|
MT.test('\\begin{module}[id=bbt-size]',
|
|
|
'tag', '\\begin',
|
|
|
'bracket', '{',
|
|
|
'atom', 'module',
|
|
|
'bracket', '}',
|
|
|
'bracket', '[',
|
|
|
null, 'id',
|
|
|
null, '=bbt-size',
|
|
|
'bracket', ']');
|
|
|
|
|
|
MT.test('\\importmodule[b-b-t]{b-b-t}',
|
|
|
'tag', '\\importmodule',
|
|
|
'bracket', '[',
|
|
|
'string', 'b-b-t',
|
|
|
'bracket', ']',
|
|
|
'bracket', '{',
|
|
|
'builtin', 'b-b-t',
|
|
|
'bracket', '}');
|
|
|
|
|
|
MT.test('\\importmodule[\\KWARCslides{dmath/en/cardinality}]{card}',
|
|
|
'tag', '\\importmodule',
|
|
|
'bracket', '[',
|
|
|
'tag', '\\KWARCslides',
|
|
|
'bracket', '{',
|
|
|
'string', 'dmath',
|
|
|
'string', '/en',
|
|
|
'string', '/cardinality',
|
|
|
'bracket', '}',
|
|
|
'bracket', ']',
|
|
|
'bracket', '{',
|
|
|
'builtin', 'card',
|
|
|
'bracket', '}');
|
|
|
|
|
|
MT.test('\\PSforPDF[1]{#1}', // could treat #1 specially
|
|
|
'tag', '\\PSforPDF',
|
|
|
'bracket', '[',
|
|
|
'atom', '1',
|
|
|
'bracket', ']',
|
|
|
'bracket', '{',
|
|
|
null, '#1',
|
|
|
'bracket', '}');
|
|
|
</script>
|
|
|
|
|
|
<h2>Comments</h2>
|
|
|
<script language="javascript">
|
|
|
MT.test('% foo',
|
|
|
'comment', '%',
|
|
|
'comment', ' foo');
|
|
|
|
|
|
MT.test('\\item% bar',
|
|
|
'tag', '\\item',
|
|
|
'comment', '%',
|
|
|
'comment', ' bar');
|
|
|
|
|
|
MT.test(' % \\item',
|
|
|
null, ' ',
|
|
|
'comment', '%',
|
|
|
'comment', ' \\item');
|
|
|
|
|
|
MT.test('%\nfoo',
|
|
|
'comment', '%',
|
|
|
null, 'foo');
|
|
|
</script>
|
|
|
|
|
|
<h2>Errors</h2>
|
|
|
<script language="javascript">
|
|
|
MT.test('\\begin}{',
|
|
|
'tag', '\\begin',
|
|
|
'error', '}',
|
|
|
'bracket', '{');
|
|
|
|
|
|
MT.test('\\item]{',
|
|
|
'tag', '\\item',
|
|
|
'error', ']',
|
|
|
'bracket', '{');
|
|
|
|
|
|
MT.test('% }',
|
|
|
'comment', '%',
|
|
|
'comment', ' }');
|
|
|
</script>
|
|
|
|
|
|
<h2>Character Escapes</h2>
|
|
|
<script language="javascript">
|
|
|
MT.test('the \\# key',
|
|
|
null, 'the',
|
|
|
null, ' ',
|
|
|
'tag', '\\#',
|
|
|
null, ' key');
|
|
|
|
|
|
MT.test('a \\$5 stetson',
|
|
|
null, 'a',
|
|
|
null, ' ',
|
|
|
'tag', '\\$',
|
|
|
'atom', 5,
|
|
|
null, ' stetson');
|
|
|
|
|
|
MT.test('100\\% beef',
|
|
|
'atom', '100',
|
|
|
'tag', '\\%',
|
|
|
null, ' beef');
|
|
|
|
|
|
MT.test('L \\& N',
|
|
|
null, 'L',
|
|
|
null, ' ',
|
|
|
'tag', '\\&',
|
|
|
null, ' N');
|
|
|
|
|
|
MT.test('foo\\_bar',
|
|
|
null, 'foo',
|
|
|
'tag', '\\_',
|
|
|
null, 'bar');
|
|
|
|
|
|
MT.test('\\emph{\\{}',
|
|
|
'tag', '\\emph',
|
|
|
'bracket','{',
|
|
|
'tag', '\\{',
|
|
|
'bracket','}');
|
|
|
|
|
|
MT.test('\\emph{\\}}',
|
|
|
'tag', '\\emph',
|
|
|
'bracket','{',
|
|
|
'tag', '\\}',
|
|
|
'bracket','}');
|
|
|
|
|
|
MT.test('section \\S1',
|
|
|
null, 'section',
|
|
|
null, ' ',
|
|
|
'tag', '\\S',
|
|
|
'atom', '1');
|
|
|
|
|
|
MT.test('para \\P2',
|
|
|
null, 'para',
|
|
|
null, ' ',
|
|
|
'tag', '\\P',
|
|
|
'atom', '2');
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<h2>Spacing control</h2>
|
|
|
|
|
|
<script language="javascript">
|
|
|
MT.test('x\\,y', // thinspace
|
|
|
null, 'x',
|
|
|
'tag', '\\,',
|
|
|
null, 'y');
|
|
|
|
|
|
MT.test('x\\;y', // thickspace
|
|
|
null, 'x',
|
|
|
'tag', '\\;',
|
|
|
null, 'y');
|
|
|
|
|
|
MT.test('x\\!y', // negative thinspace
|
|
|
null, 'x',
|
|
|
'tag', '\\!',
|
|
|
null, 'y');
|
|
|
|
|
|
MT.test('J.\\ L.\\ is', // period not ending a sentence
|
|
|
null, 'J',
|
|
|
null, '.',
|
|
|
null, '\\',
|
|
|
null, ' L',
|
|
|
null, '.',
|
|
|
null, '\\',
|
|
|
null, ' is'); // maybe could be better
|
|
|
|
|
|
MT.test('X\\@. The', // period ending a sentence
|
|
|
null, 'X',
|
|
|
'tag', '\\@',
|
|
|
null, '.',
|
|
|
null, ' The');
|
|
|
|
|
|
MT.test('{\\em If\\/} I', // italic correction
|
|
|
'bracket', '{',
|
|
|
'tag', '\\em',
|
|
|
null, ' ',
|
|
|
null, 'If',
|
|
|
'tag', '\\/',
|
|
|
'bracket', '}',
|
|
|
null, ' ',
|
|
|
null, 'I');
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<h2>New Commands</h2>
|
|
|
|
|
|
Should be able to define a new command that happens to be a method on Array
|
|
|
(e.g. <tt>pop</tt>):
|
|
|
<script language="javascript">
|
|
|
MT.test('\\newcommand{\\pop}',
|
|
|
'tag', '\\newcommand',
|
|
|
'bracket', '{',
|
|
|
'tag', '\\pop',
|
|
|
'bracket', '}');
|
|
|
</script>
|
|
|
|
|
|
<h2>Summary</h2>
|
|
|
<script language="javascript">
|
|
|
MT.printSummary();
|
|
|
</script>
|
|
|
|
|
|
</body>
|
|
|
</html>
|
|
|
|
|
|
|