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 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356
|
Ada formatting tool.
Copyright 2000, 2002, 2004, 2005, 2006, 2007, 2009, 2011, 2012 AXE Consultants.
P.O. Box 1512, Madison WI 53701
E-Mail: randy@rrsoftware.com
ARM_Form is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License version 3
as published by the Free Software Foundation.
AXE CONSULTANTS MAKES THIS TOOL AND SOURCE CODE AVAILABLE ON AN "AS IS"
BASIS AND MAKES NO WARRANTY, EXPRESS OR IMPLIED, AS TO THE ACCURACY,
CAPABILITY, EFFICIENCY, MERCHANTABILITY, OR FUNCTIONING OF THIS TOOL.
IN NO EVENT WILL AXE CONSULTANTS BE LIABLE FOR ANY GENERAL,
CONSEQUENTIAL, INDIRECT, INCIDENTAL, EXEMPLARY, OR SPECIAL DAMAGES,
EVEN IF AXE CONSULTANTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
A copy of the GNU General Public License is available in the file
gpl-3-0.txt in the standard distribution of the ARM_Form tool.
Otherwise, see <http://www.gnu.org/licenses/>.
If the GPLv3 license is not satisfactory for your needs, a commercial
use license is available for this tool. Contact Randy at AXE Consultants
for more information.
The formatting tool is written in Ada 2005, but mainly uses Ada 95 constructs.
Thus, it should be possible to compile it with an Ada 95 compiler with only
small modifications.
Running the formating tool:
The formating tool reads the source text input files (.MSS files) in a
Scribe-like format. The files to read, and general formatting parameters,
are controlled by a master input file (.MSM file). The tool allows determining
the output document, format, and other properties.
The output of the tool is written into a subdirectory
"Output" of the directory where Arm_Form is run. The tool is self-contained; it
does not require any pre or post processing except to have Word create the real
table of contents for the .RTF outout.
Usage: Arm_Form <Master_File> [<Format>[ <Changes>[ <Version>[ <Output_Path>]]]]
The <Master_File> specifies the layout of the document to generate (see below).
If <Master_File> has no extension, ".MSM" is assumed.
The formats are:
Text: Pure text files. These are missing a lot of formatting; we recommend
using the HTML versions instead.
HTML: (Default) HTML files. The HTML is designed for HTML version 4.0. Old
browsers may display the documents with little formatting.
RTF: RTF files. The RTF files are designed for Word 97 and later. PDF
versions should be created from these file using Word and Adobe tools.
Corr: Text files with !corrigendum like markup.
Info: File in the open source Info format (not supported by AXE).
<Changes> are:
No-Changes: The original text (same as specifying version 0).
New-Only: Text with changes applied through the specified version.
Show-Changes: The text with changes up through the specified version
applied, and changes marked. For HTML, deleted text is shown
as struck-through and inserted text as underlined. Changes for
different versions are in different colors.
For RTF, this uses Word's "changes" mechanisms, which can
shows changes in different colors.
Changes-Only: The text with changes up through the specified version
applied, and changes for the specified version only marked
as described above.
New-Changes: The text with changes up through the specified version
applied, and insertions marked. Deletions are marked by just a
single blank space. (See above for how these are marked). This
form is intended to be used with revision bars in Word 97/2000
(Older versions of Word do not reformat the document when
deletions are hidden, leaving unsightly blank spaces. This is
not a problem with current versions of Word)
<Version> = a value in 0 .. 9 representing the change version desired.
<Output_Path> = the path to which to write the result files. This must end
with a path separator.
Summary of commands used in the ARM text input files (.MSM and .MSS files):
Syntax summary:
Commands are represented by @<command_name>[<args>]. The command name can be an
identifier, or certain special characters. The command name is not
case-sensitive: @newpage; @NewPage; @NEWPAGE; all represent the same command.
The argument list (if any) is surrounded by one of the bracket pairs
(), {}, [], <>, `', "", or %%. These pairs are equivalent, however the matching
end character must be used to close an argument list. The arguments can be anything.
It can be another sequence of text, keywords, or other items (described below).
In this list below, arguments are always signified by {}, but any of the other
characters can be used. (Note that there is no escape character for the
brackets, so if one of the bracket characters appears in the text, a different
pair of bracket characters should be used. Also note that there is no sane way
to tell the end of a quoted parameter from the end of a nested quoted command,
so parameters nested in a "" pair should never used "" as their brackets. A
similar restriction applies to the %% pair.)
-----------------
Master file (.MSM) command summary:
The master file determines the source files that make up a document and their
collating order, along with general properties of the output as a whole.
Note that regular source commands are not allowed in the master file, unless
otherwise noted.
Source commands (the order of these determines the collating order):
@Source{Name=<File Name>,SectionName=<Name>,SectionNumber=<AlphaNum>,NewSection=[T|F]} -
Specifies a source file for the document. The <File Name> indicates where
the source file is found, and may include a path if desired. If <File Name>
does not include an extension, ".MSS" is assumed. <Name> gives
a short name for the section; it will be used to name the output files,
if appropriate for the specified kind of output. <AlphaNum> specifies the
section number; it is either a number in the range 0 to 20, or a letter
from A .. Z. If NewSection is true (T), this is the first file for the
indicated section; otherwise, this is a continuation file for the
section. (If this setting is wrong, there will be extra or missing headers
for the section.)
@TOC
Specifies where the table of contents will appear in the collating order;
if this is omitted, there will be no table of contents.
Global properties:
@ShowIndexEntries
If given in the master file, index and glossary entries are visibly
displayed in the document. If this command is not given, these items are
not displayed (although they may create links if the
output format supports links).
@HideIndexEntries
If given in the master file, or ShowIndexEntries is not given, Index and
glossary entries are not displayed in the document (although they may
create links if the output format supports links).
@ShowAnnotations
If given in the master file, annotations will be included in the output.
"Annotations" are often described as belonging to the "AARM" below.
"RMOnly" text is not included in the output. If this command is not given,
the annotations are not included in any form, and "RMOnly" text is
included.
@HideAnnotations
If given in the master file, or ShowAnnotations is not given,
annotations are not included in the output in any form, and "RMOnly"
text is included in the output.
@ShowISO
If given in the master file, text marked "ISOOnly" will be included in the
output. "NotISO" text is not included in the output. If this command is
not given, "ISOOnly" text is not included in any form, and "NotISO" text
is included.
@HideISO
If given in the master file, or ShowISO is not given,
"ISOOnly" text is not included in the output in any form, and "NotISO"
text is included in the output.
@LinkNonTerminals
If given in the master file, non-terminals are linked to their original
definition (as given in @Syn and similar commands). Otherwise,
non-terminals are not linked.
@NumberParagraphs
If given in the master file, paragraphs are numbered per subclause
(as in the Ada Reference Manual). Otherwise, paragraphs are not numbered.
@Title{Version=[<version>],Text=[<title_text>]}
The document title for version, this is used in headers and footers.
If no title is given for the current version, the title of the previous
version is used; to use the same title for all versions, give the title
for Version=[0].
@FilePrefix{<Prefix>}
This specifies the prefix of the output file(s). All of the output files
will start with this prefix. Keep this short!
@ExampleFont{Swiss|Fixed|Roman}
This specifies which font is used to display examples.
This changes the @Exam{<text>} and @begin{Example} formats.
By default, the Fixed font is used.
@BodyFont{Swiss|Roman}
This specifies which font is used to display the body of the document.
This changes all styles that are not defined to use a specific font.
By default, the Roman font is used.
@NoteFormat{Ada95|ISO2004}
This specifies the format of notes sections.
If Ada95, the word "NOTES" is on a separate line, and each note is
numbered, with the numbers starting at 1 for each section.
If ISO2004, each note starts with the word "NOTE", and a number,
with the numbers starting from 1 for each subclause.
If there is only one note in a subclause, the number should be omitted.
@ContentsFormat{Ada95|ISO2004}
This specifies the format of contents sections.
If Ada95, the title is "Table of Contents".
If ISO2004, the title is "Contents".
@ListFormat{Ada95|ISO2004}
This specifies the format of numbered lists ("enumerate").
If Ada95, they're numbered "1.";
If ISO2004, they're lettered "a)"; inner lists are numbered "1)".
@SubdivisionNames{Chapter|Section|Clause}
This specifies the names of subdivisions and the format of section headers.
Note: In this document, top-level subdivisions are called sections,
and lower-level subdivisions are called clauses, subclauses,
and subsubclauses. The names in the final output may be different.
If Chapter, top-level subdivisions are called "chapters" and this appears
in the titles. Lower-level subdivisions are called "sections". If Section,
top-level subdivisions are called "sections" and this appears in the
titles. Lower-level subdivisions are called "clauses". If Clause,
top-level subdivisions are called "clauses" and this does not appear in
the title of top-level subdivisions (Annex still appears). Lower-level
subdivisions are called "subclauses". If this is not given, "Section"
is used.
HTML Output properties:
@SingleHTMLOutputFile
If given in the master file, generate a single large file for
the output, rather than one file per clause. If this is not given,
smaller files are generated.
@UseMSDOSFilenames
If given in the master file, use 8.3 MS-DOS style filenames.
In this case, the @FilePrefix must be less than 4 characters in size,
and no clause or subclause number should exceed 35
if @SingleHTMLOutputFile isn't given.
@HTMLKind{Version=[3|4Comp|4],Unicode=[T|F]}
Specifies the kind of HTML that will be output.
If Version=3, HTML compatible with (virtually) all browsers will be
generated, but it will have limited formatting. The Unicode setting is
ignored; special characters will be output using ASCII equivalents,
and explicit output with the @Unicode command is prohibited and will
cause an error.
If Version=4Comp, the HTML will have more extensive formatting, but older
browsers will have more limited formatting. If Unicode is true (T),
Unicode characters will be used where appropriate (presuming the
characters are available on the US version of Windows 2000); otherwise
ASCII equivalents will be used. In either case, explicit Unicode
characters (@Unicode) are generated.
If Version=4, the HTML will have the best formatting on modern
browsers (IE 5.0, Firefox 1.0, Netscape 6.2, and later versions of these)
but older browsers will have almost no formatting. If Unicode is true (T),
Unicode characters will be used where appropriate (presuming the
characters are available on the US version of Windows 2000); otherwise
ASCII equivalents will be used. In either case, explicit Unicode
characters (@Unicode) are generated.
The default is a version of 4Comp with Unicode = T.
@HTMLTabs{[SingleSpace|QuadSpace|EmulateFixedOnly|EmulateFixedOnlyQuad|EmulateAll]}
Specifies how tabs are emulated for text.
(HTML does not have tabs, they have to be faked.)
For SingleSpace, the tabs are replaced by a single space (always).
For QuadSpace, the tabs are replaced by a four hard spaces (always).
For EmulateFixedOnly, the tabs are replaced by an appropriate number of
hard spaces for styles using fixed fonts (or if the tab is the first
character on a line); for other styles, a single space is used.
For EmulateFixedOnlyQuad, the tabs are replaced by an appropriate number
of hard spaces for styles using fixed fonts; for other styles, four hard
spaces are used.
For EmulateAll, the tabs are replaced by an appropriate number of
hard spaces for all styles. Note that the number of spaces is a guess
for non-fixed fonts, and it is unlikely that the tabbed text will line up
perfectly.
EmulateFixedOnly is the default (as the result will look correct in a
fixed font).
@HTMLNavBar{RefName=[<URL>],SrchName=[<URL>],IndexName=[<URL>],
UseButtons=[T|F],OnTop=[T|F],OnBottom=[T|F]}
Specifies the properties of the Navigation Bar in the files.
RefName gives the URL of the references page. This can be part of the
current document (in which case the URL can be relative), or an external
page. It will be the URL assigned to the "References" button/label; if set
to null, the "References" button/label will link to the section named
"References" if one exists, or the button/label will be omitted otherwise.
SrchName gives the URL of the search page. This can be a relative or
absolute URL. It will be the URL assigned to the "Search" button/label; if
set to null, the "Search" button/label will link to the section named
"Search" if one exists, or the button/label will be omitted otherwise.
IndexName gives the URL of the search page. This can be a relative or
absolute URL. It will be the URL assigned to the "Index" button/label;
if set to null, the "Index" button/label will link to the section named
"Index" if one exists, or the button/label will be omitted otherwise.
If UseButtons is true (T), the navigation bar will use graphic buttons;
otherwise, text labels will be generated.
If OnTop is true (T), the navigation bar will be on the top of the
document page(s) in the header; otherwise it will not appear on top.
If OnBottom is true (T), the navigation bar will be on the bottom of the
document page(s) in the footer; otherwise it will not appear on the bottom.
One of OnTop or OnBottom should be true, or navigation will be difficult!
By default, the "References" and "Search" buttons are omitted, buttons
are used, and navigation bars are shown on the top and bottom of every
page.
@HTMLScript{<Script>}
Specifies Script code (including the <SCRIPT> </SCRIPT> tags) that should
go directly before the </HEAD> on each page. By default, this is empty.
This command was designed to allow placing Google Analytics code on
each page for web sites that use that for tracking.
@HTMLHeader{<HTML_for_Header>}
Specifies HTML markup for the header of the the document. This will be
repeated on every page, and needs to be a self-contained HTML fragment.
By default, this is empty.
@HTMLFooter{<HTML_for_Footer>}
Specifies HTML markup for the footer of the the document. This will be
repeated on every page, and needs to be a self-contained HTML fragment.
By default, this is empty.
@HTMLColor{Text=[<Color]>,Background=[<Color>],Link=[<Color>],VLink=[<Color>],
ALink=[<Color>]}
Specifies the default text, background and link colors for the document.
<Color> is a color in standard HTML format ("#rrggbb", with each letter
replaced by a hex digit).
VLink is the color for visited links; ALink is the color for links
being clicked. The default is:
@HTMLColor{Text=[#000000],Background=[#FFFFF0],Link=[#0000FF],
VLink=[#800080],ALink=[#FF0000]}
That is, black text, cream background, blue links, purple visited links,
and red active links.
RTF Output properties:
@SingleRTFOutputFile
If given in the master file, generate a single large file for
the output, rather than one file per section. If this is not given,
smaller files are generated.
@RTFHeaderPrefix{Version=[<version>],Text=[<title_text>]}
The text given in the header before the title; this is *RTF* text; no
embedded commands can be given here. If no header prefix is given for the
current version, the prefix of the previous version is used; to use the
same prefix for all versions, give the prefix for Version=[0]. If this is
empty, only the title will be used.
@RTFFooterText{Version=[<version>],Text=[<title_text>]}
The fixed text given in the footer; this is *RTF* text; no embedded
commands can be given here. If no footer text is given for the current
version, the text of the previous version is used; to use the same text for
all versions, give the prefix for Version=[0]. This text will not be used
if UseClauseName is True.
@RTFFooter{UseDate=[T|F],UseClauseName=[T|F],UseISOFormat=[T|F]}
Specifies the format of the footer. The date will be included if
UseDate is true (T), otherwise it will be omitted; by default it is
included. The footer text will be the name of the clause that starts the
page (other clauses may start on the page) if UseClauseName is true (T),
otherwise it will be the FooterText. The defailt is to use clause names.
The text font and size will match the ISO requirements if UseISOFormat
is true (T) - this means the footer will be in a Swiss font with multiple
sizes; otherwise (and this is the default) the footer will be in the body
font with a single size.
@RTFPageSize{Letter|A4|HalfLetter|Ada95}
Specifies the size of the RTF output; Letter is used if this is not
specified. Letter is 8.5"x11"; A4 is European standard size; HalfLetter
is 5.5"x8.5"; Ada95 is 7"x9".
@RTFFonts{Serif=[Times|Souvenir],SansSerif=[Arial|Helvetica]}
Specifies the specific fonts used for the Serif and Sans Serif fonts.
If not specified, Times ("Times New Roman") and Arial are used.
@RTFVersionName{Version=[<version>],Text=[<title_text>]}
The specified text names the version as the "author" of any revisions.
For instance, for the Ada Standard, @RTFVersionName{Version=[2],Text=[Amendment 1]}
gives the author name "Amendment 1" to all version 2 revisions.
Other commands:
@comment{<text>} - The text is a comment to the master file, and is ignored
on output.
---------------------
Source file (.MSS) command summary:
Meta-commands:
@; - Signifies nothing. Used to break a parameterless command from following
text: "@LegalityName@;s" (otherwise the command "LegalityNames" would be
looked for).
@: - After a period, signifies an sentence ending period, rather than a
initial period. Not used currently, but remains in text in case someone
cares eventually. (Only matters if the amount of space after sentences
is different than the amount between words within a sentence.)
@| - Marks a potential line break point, without inserting a hyphen. (Scribe
says that it is a "zero-length word".) Not used currently, as the RTF
command (\zwbo) prints a square box in both Word 97 and Word 2000 -- and
no break. Similarly, zero-width space in HTML 4.0 doesn't work on Internet
Exploder 4.1 - it also prints a square box and no break.
@! - Marks a potential line break point, inserting a hyphen if the break is
used. (A so-called "soft-hyphen"). Unlike the above, this actually
works in Word 97 and HTML. ­.
Text commands:
@@ - the literal character '@'.
@\ - A tab, or end of centered text. Also used to mark the separation between
hanging text and the rest of the paragraph.
@^ - Sets a tab stop at the current text location. (*Can't implement in RTF and
HTML does not have tabs at all; has been removed from the text *)
@ - [@<space>] - A hard space; cannot be used to insert a line break.
@* - Line break inside a paragraph.
@+{<text>} - Superscript text (text size will be smaller).
@-{<text>} - Subscript text (text size will be smaller).
@b{<text>} - Bold text.
@i{<text>} - Italic text.
@r{<text>} - Roman font text.
@ri{<text>} -Roman italic text (use for comments in examples).
@s{<text>} - Swiss font text.
@f{<text>} - Fixed-width font text.
@shrink{<text>} - Text is one size smaller. (Typically 1 point smaller).
@grow{<text>} - Text is one size larger. (Typically 1 point larger).
@black{<text>} - Text is in a black color.
@red{<text>} - Text is in a red color.
@green{<text>} - Text is in a green color.
@blue{<text>} - Text is in a blue color.
@comment{<text>} - The text is a comment to the input files, and is ignored
on output.
@newpage - Insert a page break. Ends a paragraph.
@rmnewpage - Insert a page break in the RM (that is, when HideAnnotations is
used), ignored otherwise. Ends a paragraph. Use to insert page
breaks to make the printed RM look better.
@newcolumn - Insert a column break. Only allowed in a multi-column formats.
Ends a paragraph.
@newpagever{Version=[<version>} - Insert a page break if we are generating
<version> (and ends a paragraph). Otherwise, does nothing.
@rmnewpagever{Version=[<version>} - Insert a page break in the RM (that is,
when HideAnnotations is used) and we are generating <version>,
ignored otherwise. Ends a paragraph. Use to insert page
breaks to make the printed RM look better.
@isoonlyrmnewpagever{Version=[<version>} - Insert a page break in the RM (that
is, when HideAnnotations is used), @ShowISO was given in
the master file, and we are generating <version>,
ignored otherwise. Ends a paragraph. Use to insert page
breaks to make the printed RM look better.
@notisormnewpagever{Version=[<version>} - Insert a page break in the RM (that
is, when HideAnnotations is used), @ShowISO was not given in
the master file, and we are generating <version>,
ignored otherwise. Ends a paragraph. Use to insert page
breaks to make the printed RM look better.
@newcolumnver{Version=[<version>} - - Insert a column break if we are generating
<version>, otherwise does nothing. Only allowed in a multi-column
formats. Ends a paragraph.
@softpage - Insert a soft page break in a format that does not generally
allow one. A page is allowed (but not required) at this point.
[Note: This doesn't seem to work in Word 97, but we've kept it
anyway.]
@noprefix - The following paragraph does not have a prefix (that is, hanging
text, numbers, or bullets). For example, if the paragraph is in
a bulleted list, it will not have a bullet. This command must be
given before any text for the paragraph (including index entries
and even spaces in example formats).
@keepnext - Keep this paragraph with the next one (usually used on leadins,
like "The following example shows...:"). This command must be
given before any text for the paragraph.
@leading - This paragraph leads in an example or list. Cut the space
following the paragraph (usually by 30%). This command must be
given before any text for the paragraph.
@trailing - This paragraph ends an item of some sort. Increase the space
following the paragraph (usually by 50%). This command must be
given before any text for the paragraph.
@noparanum - This paragraph has no number. This command must be
given before any text for the paragraph.
@thinline - Draw a thin separator line across the page. Ends any paragraph.
@thickline - Draw a thick separator line across the page. Ends any paragraph.
-- Section/Clause commands:
@LabeledSection{<text>} - Start a labeled section (chapter). The title will be
"text". The formatter assigns section numbers.
@LabeledSectionNoBreak{<text>} - Start a labeled section (chapter). The
title will be "text". The formatter assigns section numbers. No page
break before it.
@LabeledAnnex{<text>} - Start a labeled (unqualified) annex. The title
will be "text". The formatter assigns annex letters.
@LabeledInformativeAnnex{<text>} - Start a labeled informative annex. The title
will be "text". The formatter assigns annex letters.
@LabeledNormativeAnnex{<text>} - Start a labeled normative annex. The title
will be "text". The formatter assigns annex letters.
@LabeledClause{<text>} - Start a labeled clause. The title will be "text".
The formatter assigns clause numbers.
@LabeledSubClause{<text>} - Start a labeled subclause. The title will be "text".
The formatter assigns subclause numbers.
@LabeledSubSubClause{<text>} - Start a labeled subsubclause. The title will be "text".
The formatter assigns subsubclause numbers.
@LabeledRevisedAnnex{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled (unqualified) annex. The title will be "new_text". If
we are generating an old version of the document, the title is "old_text"
instead. (Note that annex references in commands always use the
new_text name.) The formatter assigns annex letters. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledRevisedNormativeAnnex{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled normative annex. The title will be "new_text". If we
are generating an old version of the document, the title is "old_text"
instead. (Note that annex references in commands always use the
new_text name.) The formatter assigns annex letters. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledRevisedInformativeAnnex{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled informative annex. The title will be "new_text". If we
are generating an old version of the document, the title is "old_text"
instead. (Note that annex references in commands always use the
new_text name.) The formatter assigns annex letters. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledRevisedSection{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled section (chapter). The title will be "new_text". If we are
generating an old version of the document, the title is "old_text" instead.
(Note that clause references in commands always use the new_text name.)
The formatter assigns clause numbers. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledRevisedClause{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled clause. The title will be "new_text". If we are
generating an old version of the document, the title is "old_text" instead.
(Note that clause references in commands always use the new_text name.)
The formatter assigns clause numbers. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledRevisedSubClause{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled subclause. The title will be "new_text". If we are
generating an old version of the document, the title is "old_text" instead.
(Note that clause references in commands always use the new_text name.)
The formatter assigns subclause numbers. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledRevisedSubSubClause{Version=[<version>],
[InitialVersion=[<version>],]New=[<new_text>],Old=[<old_text>]} -
Start a labeled subsubclause. The title will be "new_text". If we are
generating an old version of the document, the title is "old_text" instead.
(Note that clause references in commands always use the new_text name.)
The formatter assigns subsubclause numbers. Version is the
version number of the change (see @ChgRef for details); InitialVersion
is the original insertion version of the Old text (this defaults to 0
if not given).
@LabeledAddedSection{Version=[<version>],Name=[<new_text>]} - Start a labeled
section (chapter). The title will be "new_text". If we are generating an old
version of the document, this clause does not exist. (Any clause references
ought to be in new text.) The formatter assigns clause numbers. Version
is the version number of the change (see @ChgRef for details).
@LabeledAddedClause{Version=[<version>],Name=[<new_text>]} - Start a labeled
clause. The title will be "new_text". If we are generating an old
version of the document, this clause does not exist. (Any clause references
ought to be in new text.) The formatter assigns clause numbers. Version
is the version number of the change (see @ChgRef for details).
@LabeledAddedSubClause{Version=[<version>],Name=[<new_text>]} - Start a labeled
subclause. The title will be "new_text". If we are generating an old
version of the document, this subclause does not exist. (Any subclause
references ought to be in new text.) The formatter assigns subclause
numbers. Version is the version number of the change (see @ChgRef for
details).
@LabeledAddedSubSubClause{Version=[<version>],Name=[<new_text>]} - Start a labeled
subsubclause. The title will be "new_text". If we are generating an old
version of the document, this subsubclause does not exist. (Any subsubclause
references ought to be in new text.) The formatter assigns subsubclause
numbers. Version is the version number of the change (see @ChgRef for
details).
@LabeledAddedAnnex{Version=[<version>],Name=[<new_text>]]} -
Start a labeled (unqualified) annex. The title will be "new_text". If we
are generating an old version of the document, this annex does not appear.
(Any annex references in commands ought to be "new text".) The
formatter assigns annex letters. Version is the
version number of the change (see @ChgRef for details).
@LabeledAddedNormativeAnnex{Version=[<version>],Name=[<new_text>]]} -
Start a labeled normative annex. The title will be "new_text". If we
are generating an old version of the document, this annex does not appear.
(Any annex references in commands ought to be "new text".) The
formatter assigns annex letters. Version is the
version number of the change (see @ChgRef for details).
@LabeledAddedInformativeAnnex{Version=[<version>],Name=[<new_text>]} -
Start a labeled informative annex. The title will be "new_text". If we
are generating an old version of the document, this annex does not appear.
(Any annex references in commands ought to be "new text".) The
formatter assigns annex letters. Version is the
version number of the change (see @ChgRef for details).
@LabeledDeletedClause{Version=[<version>],Name=[<old_text>]} - Start a labeled
clause. The title will be "old_text". If we are generating a new
version of the document, this clause does not exist. (Any clause references
ought to be in old deleted text.) The formatter assigns clause numbers. Version
is the version number of the change (see @ChgRef for details).
[Note: We do not support deleting sections or annexes.]
@LabeledDeletedSubClause{Version=[<version>],Name=[<old_text>]} - Start a labeled
subclause. The title will be "old_text". If we are generating a new
version of the document, this subclause does not exist. (Any subclause
references ought to be in old deleted text.) The formatter assigns subclause
numbers. Version is the version number of the change (see @ChgRef for
details).
@LabeledDeletedSubSubClause{Version=[<version>],Name=[<old_text>]} - Start a labeled
subsubclause. The title will be "old_text". If we are generating a new
version of the document, this subsubclause does not exist. (Any subsubclause
references ought to be in old deleted text.) The formatter assigns subsubclause
numbers. Version is the version number of the change (see @ChgRef for
details).
@UnnumberedSection{<text>} - Start an unnumbered section. (These are the
Forward and Introduction). This *can* be referenced by a reference,
and will appear in the table of contents.
@Subheading{<text>} - Start an unnumbered subclause (a subclause of an
unnumbered section). These are formatting only, they cannot be
referenced, nor do they appear in the table of contents.
@Heading{<text>} - Start an unnumbered clause (a clause of an unnumbered
section). These are formatting only, they cannot be referenced, nor do
they appear in the table of contents.
@Center{<text>} - Center the otherwise normal text. Note that this is a
paragraph style and is treated like a header.
@Right{<text>} - Right justify the otherwise normal text. Note that this is a
paragraph style and is treated like a header.
@PrefaceClause{} - Start a new clause without numbering or title - just a
page break to an odd page.
@RefSec{<title>} - Generates a reference to the clause "title". (This must
match exactly except for case). The reference is of the form
"<clause number>, ``<title>''". (The ARG has directed that this be
changed to '<clause number>, "<title>"').
@RefSecNum{<title>} - Generates a reference to the clause "title". (This must
match exactly except for case). The reference is of the form
"<clause number>".
@RefSecbyNum{<num>} - Generates a reference to the clause with <num> as a
clause number. This is intended to be used internally to the tool,
not in document source (the tool assigns the clause numbers).
@LocalTarget{Target=[<target-text>],Text=[<text>]} - Generates a target for
future @LocalLink commands at the current location. <target-text>
should be short, using alphanumeric characters. <text> will be
generated normally, using the current formatting (no formatting
is allowed in <text>).
@LocalLink{Target=[<target-text>],Sec=[<title>],Text=[<text>]} - Generates a
link to the target specifed in the section given by "title" (this
should have been defined by a @LocalTarget command). <text> will be
generated as the body of the link, using the current formatting (no
formatting in <text>).
@URLLink{URL=[<URL>],Text=[<text>]} - Generates a link to the URL specified;
<text> will be the body of the link, using the current formatting (no
formatting in <text>). The URL should be a complete URL, including
"http://".
@AILink{AI=[<AI>],Text=[<text>]} - Generates a link to the AI specified;
<text> will be the body of the link, using the current formatting (no
formatting in <text>). The AI should be an AI number in the full
format (AI95-0yyyy-zz, AI05-yyyy-z, or SI99-yyyy-z).
-- Ada specific commands:
@nt{<text>} - A non-terminal in normal text. This will be set in a Swiss
(sans-serif) font. Also, for HTML, this will linked to the
definition text; use @ntf instead if this is not a real
non-terminal.
@ntf{<text>} - Format as a non-terminal in normal text. This will be set
in a Swiss (sans-serif) font.
@key{<text>} - A keyword in normal text. This will be set in boldface.
@exam{<text>} - Example text occurring in normal text. This will be set
in the example font (which is selected in the master file).
@examcom{<text>} - The body of an example comment; this is shown in the
roman font in italics. (This is the same as the @RI command, but
by using a separate name, we can change the format in the future.)
@redundant{<text>} - Marks text thought to be unnecessary in the RM. That is,
the rules are explained elsewhere. The text is formatted normally.
When annotations are shown, this text is surrounded in brackets.
When annotations are not shown, no special formatting is used.
@syn{[Tabs=<Tabset>, ]LHS=<Non-terminal>, RHS=<Production>}
- Marks a syntax production.
<Production> contains @syn2 (and @synf) commands for RHS non-terminals.
<Tabset> defines any tabs needed by the <Production>.
The <Non-terminal> is indexed. The <Non-Terminal> and <Production>
(and the clause number) are sent to the syntax manager. Also, saves
<Non-terminal> for any following @Syn2 to use. The command also writes
@nt<Non-Terminal> ::= <Production>
to the output.
Note: <Non-Terminal> and <Production> allow @Chg commands.
@syni{<prefix>} - Generates <prefix> in the italics of a non-terminal prefix.
@syn2{<name>} - Marks a non-terminal name in the production of a syntax rule.
If the current non-terminal is not null, generates a cross reference
entry: <Name> in <Non-Terminal> at <ClauseNum>. Also, generate an index
entry for the item: @Defn2(Term=<Name>,Sec=@i{used}). (For the purposes
of the index, all of Annex P is a single paragraph). Otherwise, is the
same as @nt.
@synf{<name>} - Marks a non-terminal name in the production of a syntax rule,
for which there is no formal definition in the document. (Character
set names in Ada fall into this category).
If the current non-terminal is not null, generates a cross reference
entry: <Name> in <Non-Terminal> at <ClauseNum>. Also, generate an index
entry for the item: @Defn2(Term=<Name>,Sec=@i{used}). (For the purposes
of the index, all of Annex P is a single paragraph). Otherwise, is the
same as @ntf.
@syntaxsummary -- Generate the syntax summary at this point. *No paragraph
numbers*!
@syntaxxref -- Generate the syntax cross-reference at this point. *No paragraph
numbers*!
@AddedSyn{Version=[<Version>],[Tabs=<Tabset>, ]LHS=<Non-terminal>, RHS=<Production>}
Add a syntax production for Version. Otherwise, the meaning is the
same as for @Syn, above. Note: <Non-terminal> and <Production> need
@Chg commands; this command only adds processing for "::=" and overall
inclusion or skipping when necessary.
@DeletedSyn{Version=[<Version>],[Tabs=<Tabset>, ]LHS=<Non-terminal>, RHS=<Production>}
Delete a syntax production for version. Otherwise, the meaning is the
same as for @Syn, above. Note: <Non-terminal> and <Production> need
@Chg commands; this command only adds processing for "::=" and overall
inclusion or skipping when necessary.
@Attribute{Prefix=<Prefix>,AttrName=<Name>,Text=<Text>}
Defines an attribute. Creates a hanging text item <Prefix>'<Name>,
with the specified text. The text can contain arbitrary commands;
it will be run through the full evaluation code.
The attribute and text is also sent to a database used to later create
Annex K. (This uses the current value of PrefixType.) Finally, the
attribute <Name> is indexed as by calling @Defn2{Term=[Attribute],
Sec=<Name>}, and as by calling @Defn{<Name> attribute}. See also
ChgAttribute.
@AttributeLeading{Prefix=<Prefix>,AttrName=<Name>,Text=<Text>}
Same as attribute, except that the first paragraph is a "Leading"
paragraph. (Use when the second paragraph is a DescExample, such
as when a function specification is given.)
@AttributeList
Dumps the summary list of all attributes from the attribute database
to the output file.
@PrefixType{text}
Save the indicated text to use as part of any following attribute
definitions. The text is also written to the output. The text should
fit in the phrase: "For {text}:". For instance, the text could be
"every scalar subtype S". See also ChgPrefixType.
@EndPrefixType{}
(The parameter list must exist and be empty) Set the saved attribute
text to "@b{NONE!}". This exists to ensure that the prefixes are set
properly, and aren't just set by accident.
@PragmaSyn{<Text>}
Defines a pragma. The text is displayed in the current format.
The text should contain an @prag command (which specifies and indexes
the name - see below.) The text can contain arbitrary commands;
it will be run through the full evaluation code.
The text is also sent to a database used to later create Annex L.
@AddedPragmaSyn{Version=[<Version>],<Text>}
Defines a pragma added by <Version>. Otherwise, the text is as
described for PragmaSyntax. Text includes an appropriate @Chg;
the purpose of the Version number here is
to determine whether (and how) this is entered into Annex L,
along with the cross-reference text.
@DeletedPragmaSyn{Version=[<Version>],InitialVersion=[<InitialVersion>],<Text>}
Defines a pragma deleted by <Version>, originally added by
<InitialVersion>. Otherwise, the text is as
described for PragmaSyntax. Text includes an appropriate @Chg;
the purpose of the Version number here is to determine whether
(and how) this is entered into Annex L, along with the cross-reference
text.
@PragmaList
Dumps the summary list of all pragmas from the pragma database
to the output file.
-- Indexing:
If Show-Index-Entries is not used on the command line, indexing entries
are transparent (this is usually the case for the RM).
If Show-Index-Entries is used on the command line, indexing entries show as
italized in curly brackets. RootDefn adds "[distributed]", PDefn adds
"[partial]", IndexSee adds ": see <OtherTerm>", and IndexSeeAlso adds
": see also <OtherTerm>" to the reference.
@IndexList - Generates the index at this point.
@defn{<text>} - Defines a term, where the entire definition is given in the
referenced paragraph.
@rootdefn{<text>} - Defines a term, where the definition is given in several
paragraphs. This is the primary definition.
@pdefn{<text>} - Defines a term, where the definition is given in several
paragraphs. This is one of the secondary definitions.
@defn2{Term=[<term>],Sec=(<subterm>)} - Same as Defn, except a subterm is
allowed. The subterm will be indexed under the primary term.
@rootdefn2{Term=[<term>],Sec=(<subterm>)} - Same as RootDefn, except a
subterm is allowed.
@pdefn2{Term=[<term>],Sec=(<subterm>)} - Same as PDefn, except a subterm is
allowed.
@seeother{Primary=[<term>],Other=(<other_term>)} - Generates a See
reference to <other_term> in the index. No page/clause reference is
generated.
@seealso{Primary=[<term>],Other=(<other_term>)} - Generates a See also
reference to <other_term> in the index. No page/clause reference is
generated.
@indexsee{Term=[<term>],See=(<other_term>)} - Generates a See
reference to <other_term> in the index. A page/clause reference is
generated.
@indexseealso{Term=[<term>],See=(<other_term>)} - Generates a See also
reference to <other_term> in the index. A page/clause reference is
generated.
@ChildUnit{Parent=[<parent>],Child=[<child>]}
Generates three index entries: An index entry for <child>, with a secondary
of "@i{child of} <parent>", an index entry for "Language-Defined
Library Units" with a secondary entry of <parent>.<child>, and an index
entry for <parent>.<child>. The Unit is set to <parent>.<child>.
(For version 2 or later, the Language-Defined entry is not generated.)
The first entry is added to the package list as well.
@SubChildUnit{Parent=[<parent>],Child=[<child>]}
Same as @ChildUnit, except that the first entry is added to the
subprogram list, rather than the package list.
@RootLibUnit{<unit>} - Generates two index entries: An index entry for
"Language-Defined Library Units" with a secondary entry of <unit>,
and an index entry for <unit>. The Unit is set to <parent>.<child>.
(For version 2 or later, the Language-Defined entry is not generated.)
The first entry is added to the package list as well.
@AdaDefn{<defn>} - Generates an index entry for <defn> with a secondary entry
of "@i{in} <Unit>" (where Unit is the unit saved by a previous
RootLibUnit or ChildUnit.) Also outputs the <defn> to the output file.
@AdaSubDefn{<defn>} - Generates two index entries: one for <defn> with a
secondary entry of "@i{in} <Unit>" (where Unit is the unit saved by
a previous RootLibUnit or ChildUnit.), and second for "Language-Defined
Subprogram" with a secondary entry of "<defn> @i{in} <Unit>".
(For version 2 or later, the Language-Defined entry is not generated.)
The first entry is added to the subprogram list as well.
Also outputs the <defn> to the output file.
@AdaTypeDefn{<defn>} - Generates two index entries: one for <defn> with a
secondary entry of "@i{in} <Unit>" (where Unit is the unit saved by
a previous RootLibUnit or ChildUnit.), and second for "Language-Defined
Type" with a secondary entry of "<defn> @i{in} <Unit>".
(For version 2 or later, the Language-Defined entry is not generated.)
The first entry is added to the type list as well.
Also outputs the <defn> to the output file.
@AdaSubTypeDefn{Name=<defn>,Of=<type>} - Generates an index entry of
"<defn> @i{subtype of} <type>" with a secondary entry of
"@i{in} <Unit>" (where Unit is the unit saved by a previous
RootLibUnit or ChildUnit.) The entry is added to the type list as well.
Also outputs the <defn> to the output file.
@AdaExcDefn{<defn>} - Generates an index entry for <defn> with a
secondary entry of "@i{in} <Unit>" (where Unit is the unit saved by
a previous RootLibUnit or ChildUnit.)
The entry is added to the exception list as well.
Also outputs the <defn> to the output file.
@AdaObjDefn{<defn>} - Generates an index entry for <defn> with a
secondary entry of "@i{in} <Unit>" (where Unit is the unit saved by
a previous RootLibUnit or ChildUnit.)
The entry is added to the object list as well.
Also outputs the <defn> to the output file.
@AdaPackDefn{<defn>} - Generates an index entry for <defn> with a
secondary entry of "@i{in} <Unit>" (where Unit is the unit saved by
a previous RootLibUnit or ChildUnit.)
The entry is added to the package list as well.
Also outputs the <defn> to the output file.
Use this for *nested* packages.
@IndexCheck{<check>} - Generates an index entry for "check, language defined"
with a secondary entry of <check>. (Essentially a Defn2). Also,
indexes <check> as a partial definition. (PDefn).
@Attr{<name>} -- Generates an index entry for "attributes"
with a secondary entry of <name>. (Essentially a Defn2). Also
with a secondary entry of <name> (a Defn2), and also an index entry
of "<name> attribute" (a Defn). Also puts <name> to the output.
@Prag{<name>} -- Generates an index entry for "pragmas"
with a secondary entry of <name> (a Defn2), and also an index entry
of "<name> pragma" (a Defn). Also puts <name> to the output.
@AspectDefn{<name>} -- Generates an index entry for "aspects"
with a secondary entry of <name> (a Defn2), and also an index entry
of "<name> aspect" (a Defn).
@PackageList -- Generates the list of language-defined packages.
@TypeList -- Generates the list of language-defined types and subtypes.
@SubprogramList -- Generates the list of language-defined subprograms.
@ExceptionList -- Generates the list of language-defined exceptions.
@ObjectList -- Generates the list of language-defined objects.
-- Glossary:
@ToGlossary(Term=[<term>], Text=[<text>])
Creates a glossary entry for <term> with the value <text>.
The item is shown as a annotation in the AARM. The term is also
indexed (and displayed as such if appropriate) with @Defn immediately
after the annotation header.
@ToGlossaryAlso(Term=[<term>], Text=[<text>])
Creates a glossary entry for <term> with the value <text>.
The text is part of the current paragraph. If Show-Index-Entries is
used on the command line, a "[Glossary Entry]" marker is shown;
otherwise nothing is. The term is also indexed (and displayed as
such if appropriate) with @Defn immediately after the marker.
@GlossaryList
Generates the glossary.
-- Implementation-defined annex:
@ImplDef{<text>}
Creates an implementation-defined entry for <text>. The clause and
paragraph references are saved to create part of Annex M. For the AARM,
<text> is an annotation; otherwise, it is discarded. See also
ChgImplDef.
@ImplDefList
Generates the implementation-defined list.
-- Changes:
@chgref{Version=[<version>],Kind=(<kind>){,Ref=(<DR_Number>)}{,ARef=(<AI_Number>)}}
- Marks a paragraph changed in a corrigendu or amendment. This command
precedes any text of the paragraph. The version number of the change is
<version>. [This is "1" for technical corrigenum 1; "2" for amendment 1].
Kind is either "Revised" (an ordinary change), "Added" (for a paragraph
added by the change), "AddedNormal" (for a paragraph added by the
change which gets a normal paragraph number - used for insertions at
the end of clauses and added to new clauses), "Deleted" (for a
paragraph deleted by the change), "DeletedAdded" (for an
added paragraph which is later deleted), "DeletedNoDelMsg" (for a
paragraph deleted by the change; the "This paragraph was deleted"
message is suppressed), "DeletedAddedNoDelMsg" (combines the last
two kinds), or "RevisedAdded" (for an
added paragraph which is later revised). [These control the paragraph
numbering of the following paragraph.] The <DR_Number>(s) and/or
<AI_Number>(s) that triggered the change are given. As many references
as necessary can be given. (Zero is allowed). The format of the AI
numbers is as described for @AILink.
Note: If there are changes to the same paragraph in multiple versions,
each version should have their own chgref.
The ChgRefs should be in the order of the versions (first version 1,
then version 2, etc.) The Kind should be consistent for all chgrefs -
the numbering is the same no matter when the paragraph was added or
deleted. That means "RevisedAdded" after "Added", etc.
@chgnote{<text>} Notes on particular change. This is treated as a comment; it
has a separate command solely so that stripped easily in the future.
@chg{[Version=[<Version>],]New=[<new text>],Old=[<old text>]}
Marks a particular change. The new text and the old text are given.
(We have both sets of text so we can generate useful differences).
@chg commands can be nested; it recommended that they be nested with
the newest changes inside of older changes. The text may not contain
any command that ends the paragraph. The Version is assumed to be '1'
if that parameter is not given. Version is interpreted as for ChgRef.
@ChgAdded{Version=[<Version>],[NoPrefix=[T|F],][NoParamnum=[T|F],]
[Type=[Leading|Trailing|Normal],][Keepnext=[T|F],]Text=[text]}
Marks an insertion of a complete paragraph consisting of 'text'. This
cannot be nested in other commands. The AARM prefix (if any) also is
marked as an insertion. The optional parameters (conditionally) set the
paragraph properties; NoPrefix, Noparanum, and KeepNext work the same
as the @NoPrefix, @NoParanum, and @KeepNext commands if set to T,
except that they're conditional on the paragraph text being inserted.
Similarly, Type works the same as @Leading and @Trailing if set to
those values, except that they are conditional. If omitted, NoPrefix
is set to F, NoParanum is set to F, KeepNext is set to F, and
Type is set to Normal.
@ChgDeleted{Version=[<Version>],[NoPrefix=[T|F],][NoParamnum=[T|F],]
[Type=[Leading|Trailing|Normal],][Keepnext=[T|F],]Text=[text]}
Marks a deletion of a complete paragraph consisting of 'text'. This
cannot be nested in other commands. The AARM prefix (if any) also is
marked as a deletion. The optional parameters (conditionally) set the
paragraph properties; they work as described in ChgAdded. Note that
they're conditional on the paragraph text being included in the
document (even if it is marked as deleted).
@ChgImplDef{Version=[<version>],Kind=(<kind>),
[InitialVersion=[<version>],]Text=<text>}
Marks a changed implementation-defined entry. (Essentially a
combination of ChgRef and Impldef.) <text> is the
implementation-defined entry. See ChgRef and Impldef for details
on the handling of the arguments. The optional InitialVersion parameter
specifies the version number for the originally inserted text; if
not specified, the Version number is used. (This is appropriate for
added items, others should explicitly give an initial version.)
@ChgImplAdvice{Version=[<version>],Kind=(<kind>),
[InitialVersion=[<version>],]Text=<text>}
Marks a new or changed implementation advice entry. All IA entries
are new with version 2. The clause and paragraph references (along
with <text>) are saved to create part of Annex M. For the AARM,
<text> is an annotation; otherwise, it is discarded.
See ChgRef for details on the handling of Version and Kind arguments.
The optional InitialVersion parameter specifies the version number for
the originally inserted text; if not specified, the Version number is
used.
@AddedImplAdviceList{Version=[2]}
Generates the implementation advice list; it is inserted with the
given version number.
@ChgDocReq{Version=[<version>],Kind=(<kind>),
[InitialVersion=[<version>],]Text=<text>}
Marks a new or changed documentation requirements entry. All DocReq
entries are new with version 2. The clause and paragraph references
(along with <text>) are saved to create part of Annex M. For the AARM,
<text> is an annotation; otherwise, it is discarded.
See ChgRef for details on the handling of Version and Kind arguments.
The optional InitialVersion parameter specifies the version number for
the originally inserted text; if not specified, the Version number is
used.
@AddedDocReqList{Version=[2]}
Generates the documentation requirements list; it is inserted with the
given version number.
@ChgAspectDesc{Version=[<version>],Kind=(<kind>),Aspect=[<name>],
[InitialVersion=[<version>],]Text=<text>}
Marks a new or changed aspect description entry. All aspect
descriptions are new with version 3. The clause and paragraph
references (along with <name> and <text>) are saved to create part of
Annex K. For the AARM, <text> is an annotation; otherwise, it is
discarded. See ChgRef for details on the handling of Version and Kind
arguments. The optional InitialVersion parameter specifies the version
number for the originally inserted text; if not specified, the Version
number is used.
@AddedDocReqList{Version=[3]}
Generates the aspect description list; it is inserted with the
given version number.
@ChgAttribute{Version=[<version>],Kind=(<kind>),ChginAnnex=[T|F],
Leading=[T|F],Prefix=<Prefix>,AttrName=<Name>,
{[Ref={<DR_Number>}|ARef={<AI_Number>}]},Text=<Text>}
Marks a changed attribute entry. (Essentially a combination of
ChgRef and Attribute.) ChginAnnex controls whether the change
is reflected in the Annex. (Set this to F when the change is in
text "glued" onto the annex paragraph.) Leading controls whether the
first paragraph is leading or not. See ChgRef and Attribute
for the meaning of the other parameters.
@ChgPrefixType{Version=[<version>],Kind=(<kind>),Text=[<text>]}
Marks a changed prefix type text. Also, saves the indicated text to
use as part of any following attribute definitions. The text is also
written to the output. See ChgRef and PrefixType for more information.
@AddedSubheading{Version=[<version>],<text>}
Same as Subheading, except that this heading is present only in
new versions of the document.
@ChgToGlossary{Version=[<version>],Kind=(<kind>),Term=[<term>],Text=[<text>]}
Marks a changed glossary entry. (Essentially a
combination of ChgRef and ToGlossary.) <term> and <text> are the
glossary entry; they can contain @Chg commands. See ChgRef and
ToGlossary for details on the handling of the arguments.
@ChgToGlossaryAlso{Version=[<version>],Kind=(<kind>),Term=[<term>],Text=[<text>]}
Marks a changed glossary entry. (Essentially a
combination of ChgRef and ToGlossaryAlso.) <term> and <text> are the
glossary entry; they can contain @Chg commands. See ChgRef and
ToGlossaryAlso for details on the handling of the arguments.
-- Tabs:
@tabclear() - Clears all tab settings. Tabs are also cleared by leaving the
@begin region that contains the tabstop command. Also ends any
paragraphs.
@tabset(<list>) - Sets tab stops at the indicated values, in picas. The list
is increasing (each value is larger than the one to its right), and
separated by commas. Each value can be preceeded by a modifier:
L - fixed left tab;
P - proporational left tab.
(Other modifiers are possible, but are hard to implement in text mode.)
Proportional tab values are based on the font size; the values
given are for 12 point fonts (in picas); the value is then adjusted
for the actual (default) font size of the paragraph.
Tab stops can only be set in formats that preserve
breaks (i.e. Display). Also ends any paragraphs.
@\ - Move to the next tab stop.
-- Paragraphs:
@begin{<kind>}
Marks the beginning of a group of paragraphs of a particular kind.
See the definition of the kinds below. Most groupings have a
subheading.
@end{<kind>}
Marks the ending of a group of paragraphs of a particular kind.
-- Paragraph kinds (nesting is allowed; characteristics are not preserved
-- unless specifically marked below):
Pure formatting:
Comment - The text is never output into the document.
WideAbove- The paragraph has wider than usual space above, but is
otherwise normal.
DescribeCode -
The text is indented 2 units.
Example - The text is formatted in the example font (which is selected
in the master file) with an indent of 1 unit; spaces and
breaks are preserved. This format preserves size
characteristics of its parent (if any), except that if the
parent is "DescribeCode", the normal characteristics are
used. No page breaks are allowed within a paragraph.
Do not confuse this with "Examples", which is a text
grouping.
ChildExample - The text is formatted in the example font (which is
selected in the master file); spaces and breaks are
preserved. This format preserves size and
indenting characteristics of its parent (if any);
with the exception that the text here is indented one
additional unit.
Itemize - The text is indented and bulleted (with solid circle bullets).
The text preserves the size and indenting of its parent (if
any).
InnerItemize - The text is indented to fit inside an Itemize or
Enumerate paragraph, and bulleted (with [smaller] solid
circle bullets).
InnerInnerItemize - The text is indented to fit inside an InnerItemize
paragraph, and bulleted (with [smaller] solid circle bullets).
Enumerate - The text is indented and numbered (that is, each paragraph
has a prefix number). The text preserves the size and
indenting of its parent (if any). The format of the number
depends on the ListFormat master setting: for RM,
a number followed by a period is used ["1."], for
ISO2004 a letter followed by a paren is used for the main
list ["a)"]; nested lists use a number ["1)"].
InnerEnumerate - The text is indented to fit inside an Itemize or
Enumerate paragraph, and numbered as for Enumerate.
(These should only be used inside of regular Enumerate
blocks if ISO 2004 formatting is desired.)
Display - A normal paragraph indented one level from its parent, except
that spaces and breaks are preserved. The text preserves the
size of its parent (if any). No page breaks are allowed
within a paragraph.
Indent - A normal paragraph indented one level from its parent.
The text preserves the size of its parent (if any).
SyntaxDisplay - The text is in a smaller font, is indented one level,
and spaces and breaks are preserved. No page breaks are
allowed within a paragraph.
Description - A paragraph with text indented 3 units; but the item
is a hanging undent to the normal paragraph level. Usually
used for attributes, but sometimes used for other items.
Same as Hang3List.
DescExample - The text is formatted in a fixed-width example font with
an indent of 4 units; spaces and breaks are preserved. No page breaks
are allowed within a paragraph.
SyntaxText -
The text is indented 1 unit. This is intended to match the
indentation of syntax and is usually used in the syntax
grouping; however syntax is usually in the swiss font.
Hang1List -
A paragraph with text indented 1 unit; but the item
is a hanging undent to the normal paragraph level.
Hang2List -
A paragraph with text indented 2 units; but the item
is a hanging undent to the normal paragraph level.
Hang3List -
A paragraph with text indented 3 units; but the item
is a hanging undent to the normal paragraph level.
Hang4List -
A paragraph with text indented 4 units; but the item
is a hanging undent to the normal paragraph level.
Small - The text has the size of an AARM note, but doesn't
have any headers or extra indentation.
Title - The text is 5 size units (usually 5 points) larger than
normal.
Bundle - The text in the 'bundle' should never be page-breaked.
The format is unchanged.
TwoCol - Sets the text to a two-column format. The text format
is unchanged.
FourCol - Sets the text to a four-column format. The text format
is unchanged.
RM groupings:
Intro - Introductory text. No heading.
Syntax - Syntax.
Resolution- Name resolution rules.
Legality - Legality rules.
StaticSem - Static Semantics.
LinkTime - Post-Compilation Rules.
RunTime - Dynamic Semantics.
Bounded - Bounded (Run-Time) errors.
Erron - Erroneous Execution.
ImplReq - Implementation Requirements.
DocReq - Documentation Requirements.
Metrics - Metrics.
ImplPerm - Implementation Permissions.
ImplAdvice- Implementation Advice.
Notes - Notes. (Each of these is numbered and indented 1 unit.
The format is controlled by the @NoteFormat command
in the master file.)
SingleNote - A single note (it is indented 1 unit, but not numbered.
The format is controlled by the @NoteFormat command
in the master file.)
Examples - Examples. (Do not confuse this with the text format
"Example". This is a grouping with a subhead. It is in
the normal font by default; often an "Example" is found
inside of "Examples".)
NotIso - Text that is not included in ISO documents. No format is implied.
IsoOnly - Text that is included only in ISO documents. No format is implied.
RMOnly - Text that is not included in the AARM (that is, it is only
included in the output if HideAnnotations is used). No
format is implied.
AARM-only groupings: (not shown if HideAnnotations is used)
MetaRules - Language Design Principles.
Inconsistent83 - Inconsistencies with Ada 83.
Incompatible83 - Incompatibilities with Ada 83.
Extend83 - Extensions to Ada 83.
DiffWord83- Wording Changes from Ada 83.
Inconsistent95 - Inconsistencies with Ada 95.
Incompatible95 - Incompatibilities with Ada 95.
Extend95 - Extensions to Ada 95.
DiffWord95- Wording Changes from Ada 95.
Inconsistent2005 - Inconsistencies with Ada 2005.
Incompatible2005 - Incompatibilities with Ada 2005.
Extend2005 - Extensions to Ada 2005.
DiffWord2005- Wording Changes from Ada 2005.
Inconsistent2012 - Inconsistencies with Ada 2012.
Incompatible2012 - Incompatibilities with Ada 2012.
Extend2012 - Extensions to Ada 2012.
DiffWord2012- Wording Changes from Ada 2012.
AARMOnly - Text that is not included in the RM. No format is implied.
AARM annotations: (not shown if HideAnnotations is used)
Reason - Why a rule is necessary.
Ramification- Consequences of rules. (Important ones should be Notes).
Discussion - General annotations.
TheProof - Informal proof as to why Notes or Redundant text follows
from the language.
ImplNote - A note on implementation.
Honest - To be Honest: Only pedants need apply.
GlossaryMarker - Looks like a glossary entry in the AARM (but isn't
really one). (Also internally used by the formatter for
real glossary entries.)
ElementRef - (For ASIS) Marks an Element Reference.
ChildRef - (For ASIS) Marks child references for the preceding
Element Reference.
UsageNote - (For ASIS) Marks a Usage Note.
-- Text Macros:
<Grouping>Name - The name of a kind of rule (as in "This is a
@ResolutionName.").
<Grouping>Title - The title of a kind of rule (as in "This belongs under
"@ResolutionTitle".").
where <Grouping> is any of the paragraph grouping kinds listed above.
-- Character Macros:
These represent characters not available in the lower 128 of Latin-1, including
various mathematical symbols.
@em - EM dash (a very long dash)
@en - EN dash (a long dash)
@thin - A thin space (quarter em if possible)
@geq - Greater than or equal symbol
@gt - Greater than symbol
@leq - Less than or equal symbol
@lt - Less than symbol
@neq - Not equal symbol
@pi - Pi
@smldotlessi -- Small Dotless I (for examples). Use @Unicode(305) if we ever implement that.
@capdottedi -- Capital Dotted I (for examples). Use @Unicode(304) if we ever implement that.
@singlequote - Single quote ('''). Used to avoid confusion in syntax rules.
@latin1{<number>} - Generate the Latin-1 character with the decimal code
"number".
@unicode{<number>} - Generate the Unicode character with the decimal code
"number". Careful: this is unchecked; usually, the characters used
should be limited to the 615 generally supported by Windows.
@times - The middle dot multiply symbol.
@porm - The plus or minus symbol.
@ceiling{<text>} - The ceiling operator, surrounding <text>.
@floor{<text>} - The floor operator, surrounding <text>.
@abs{<text>} - The mathematical absolute value operation, surrounding <text>.
@log{<text>} - The log operation, surrounding <text>. (In practice, this is
always translated "log(<text>)").
@lquote - Left (directed) single quote.
@rquote - Right (directed) single quote.
@ldquote - Left (directed) double quote.
@rdquote - Right (directed) double quote.
@lquotes - Pair of left (directed) single quotes. (Note: The ARG has directed
that these be changed to a left double quote, so this is now the
same as ldquote.)
@rquotes - Pair of right (directed) single quotes. (Note: The ARG has directed
that these be changed to a right double quote, so this is now the
same as rdquote.)
-- Tables:
@table(Columns=<number>,
Alignment=<AllLeft|AllCenter|CenterExceptFirst>,
FirstColWidth=<number>,
LastColWidth=<number>,
NoBreak=<T|F>,
Border=<T|F>,
SmallSize=<T|F>,
Caption=<text>,
Headers=<text>,
Body=<row_text>)
Defines a table.
- Columns must be a single digit (2-9).
- Alignment defines the column text alignment (centered or left edge).
- FirstColWidth defines the width of the first column compared to
the rest - it's in multiples of the standard column width.
Note that some target formats with self-sizing columns (i.e. HTML)
ignore this value. It must be a single digit from 1 to 9.
- LastColWidth defines the width of the last column compared to
the rest - it's in multiples of the standard column width.
Note that some target formats with self-sizing columns (i.e. HTML)
ignore this value. It must be a single digit from 1 to 9.
- If NoBreak is T, the table will be formatted on a single page.
Otherwise, it will be allowed to be split across pages. This
must be F if the table is larger than a single page!
- If Border is T, then a border will be drawn around the table;
otherwise, not border will be used.
- If SmallSize is T, then the text size will be small (AARM-sized);
else the text size will be normal.
- Caption defines the table caption. This spans the entire table.
- Headers defines the table headers. Each header is separated by
a tab stop (@\). This should be a single line.
- Body defines the table body. Each row should be a single line,
with each item separated by a tab stop.
The text may contain character and text formatting commands, but
no paragraph commands. But no text command may extend across the
tab marking the end of an item.
@Last - Marks the end of the second last row of the table. (If left out,
the bottom line of the table may be missing).
-- Pictures: (Graphics, Images)
@PictureInline(Alignment=<Inline|FloatLeft|FloatRight>,
Border=<None|Thin|Thick>,
Height=<nnn>,
Width=<nnn>,
Name=<name>,
Descr=<descr>)
@PictureAlone(Alignment=<Left|Right|Center>,
Border=<None|Thin|Thick>,
Height=<nnn>,
Width=<nnn>,
Name=<name>,
Descr=<descr>)
Includes a picture in the output. PictureAlone is a stand-alone
picture with the appropriate alignment; it must appear outside
of a paragraph. PictureInline occurs in the flow of text (Inline),
or floats to the appropriate margin; it must appear inside of a
paragraph. Otherwise, these are the same.
The picture file's simple name is
"name"; the file is assumed to be a .PNG or .JPG, found in the output
directory. (It needs to be included with the HTML output.)
"descr" is a description of the picture; it's used for the popups
in HTML. Height and Width are the picture size in pixels.
Border specifies the border of the picture.
[Note: Inline alignment is not recommended; the picture location
cannot be controlled, especially on RTF, it can appear in margins
and other bad locations.]
-------------------
Use to create Ada standard documents.
The master file AARM.MSM specifies the Annotated Ada Reference Manual. This
is mainly intended for implementors and language lawyers. It includes
annotations. (In the past, it also included visible index entries, but that
has been turned off by popular demand).
The master file RM.MSM specifies the Ada Reference Manual. This is the
version used by most users.
The master file ISO-RM.MSM specifies Ada Reference Manual in ISO format.
This version lacks some sections, paragraph numbers, and is formatted for A4
paper.
Versions:
0-Original Ada 95 (equivalent to No-Changes)
1-Technical Corrigendum 1
2-Amendment 1 [Ada 2005 (standard published 2007, so could be considered Ada 2007)]
3-3rd Edition (Ada 2012)
4-4th Edition (Ada 202x) - Not official yet.
Please note that there some changes to earlier versions (mostly typographical,
but there are some that are significant) that are not preserved in the Ada 2012
source code (.MSM and .MSS files), so to get an exact match to one of the
previous versions, you must use the source code appropriate for that version.
One specific change; the MSM files for Ada 2012 have @SubdivisionNames{Clause}
(as this is required by ITTF) while the MSM files for Ada 95 and Ada 2005 have
@SubdivisionNames{Section} (as this was required when those standards were
current).
In addition, several clauses were moved to different numbers within the
Standard (for both Ada 2012 and Ada 2005); usually, these were done by
by just renaming the clause (and changing the @Label command) and the
original location is not preserved.
|