Copyright © 2014-2025
Mahlon R. Smith, The Software Samurai
This document describes version 0.0.16 of ’infodoc-styles.css’.
The infodoc-styles.css CSS style definitions are released under
the GNU General Public License (GPL 3+), and
the user documentation (this document) is released under
the GNU Free Documentation License (FDL 1.3+):
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is available from the
Free Software Foundation: ‘http://www.gnu.org/licenses/’
This is a minimalist document created to exercise the post-processing
of @enumerate (<ol>) and @itemize (<ul>) lists and miscellaneous constructs.
We use this document during the development process primarily because it builds
in less than one second, making the write/test/modify sequence much more efficient.
The bulk of the test data contained in this document may also be found
in the project document: “Infodoc.html”.
Each of these bullet types is supported by a CSS style class in
'infodoc-styles.css'.
Note that the ’@minus’ argument generates U+2212 (Unicode minus)
but this looks very small and too close to the text in the HTML output.
This is corrected during post-processing. (see CSS class 'mark-minus')
Infodoc CSS ClassesAdditional lists types may be specified by constructing the list using one of the Texinfo macros listed in the table below.
Example: @itemize @SSQUARE @item first item @item second item @item third item @end itemize
These macros are found in the file: 'texi_macros.texi'.
SDISCMDISCLDISCSCIRCLEMCIRCLELCIRCLESSQUAREMSQUARELSQUARESPOINTERMPOINTERLPOINTERSDIAMONDMDIAMONDLDIAMOND|
=ps=
The following list uses the greater-than |
- First greater-than item
- Second greater-than item
Use the @SmallItemize macro to create an itemized list using a smaller font size.
The @SmallItemize macro takes two arguments:
1) the bullet type, and
2) the text for the first line item of the list.
Note that if the text of the item includes commas, they must be escaped.
The macro is invoked using the format:
@SmallItemize{bullet_type,text of first line item}
Example:
@SmallItemize{@bullet,Shopping List: tomatoes\, cabbage\, celery}
@item ginger ale, pizza, chips and salsa
@end itemize
The macro arguments are enclosed in braces. Note the comma separating the bullet type from the item text, AND note the escaped commas in the item-text argument. (Commas in other line items are not escaped.)
The @SmallItemize macro includes the embedded token =s= (in the HTML
output only), which instructs the 'idpp' post-processor to render the list
referencing the CSS "ul.font-small" class in 'infodoc-styles.css'.
This styling class applies a font size of 0.85em which is approximately
15% smaller than the text of the parent environment.
@macro SmallItemize{BULL,ITEM}
@itemize \BULL\
@item
@ifhtml
=s=
@end ifhtml
\ITEM\
@end macro
Here is an example itemized list created using the @SmallItemize macro.
Use the @LargeItemize macro to create an itemized list using a larger font size.
The @LargeItemize macro is the same as the @SmallItemize macro
described above, except that the embedded token is =l=
and the 'idpp' post-processor renders the list to reference the CSS
"ul.font-large" class in 'infodoc-styles.css'.
This styling class applies a font size of 1.15em which is approximately
15% larger than the text of the parent environment.
SMALL
------------------------------------
Unicode Class Macro
------- -------------- ---------
'•' U+2022 disc-small @SDISC
'◦' U+25E6 circle-small @SCIRCLE
'▫' U+25AB square-small @SSQUARE
'‣' U+2023 pointer-small @SPOINTER
'♦' U+2666 diamond-small @SDIAMOND
MEDIUM
------------------------------------
Unicode Class Macro
------- -------------- ---------
'●' U+25CF disc-medium @MDISC
'⚬' U+26AC circle-medium @MCIRCLE
'▪' U+25AA square-medium @MSQUARE
'▸' U+25B8 pointer-medium @MPOINTER
'◆' U+25C6 diamond-medium @MDIAMOND
LARGE
------------------------------------
Unicode Class Macro
------- -------------- ---------
'⏺' U+23FA disc-large @LDISC
'◯' U+25EF circle-large @LCIRCLE
'◻' U+25FB square-large @LSQUARE
'▷' U+25B7 pointer-large @LPOINTER
'◇' U+25C7 diamond-large @LDIAMOND
If the specified class is not defined, the browser will generate the
default ’disc’ bullet list, or in a nested list, an appropriate down-level
bullet. Beginning with makeinfo version 7.x, all generated itemized lists
are defined; therefore, the browser has no control over selection of the
bullet type.
For this reason 'idpp' provides a Texinfo macro specifically to
allow the browser to control nested bullet lists.
@CIRCLESLASH '⊘' (U+2298) ⊘
Post-processing replaces either of the makeinfo constructs:
<ul class="itemize" style="list-style-type: '⊘'"> OR
<ul class="itemize" style="list-style-type: '⊘'">
with the plain <ul> list tag for each level of the nested construct,
which allows the browser to apply its internal rules for nested lists.
Example:
@itemize @CIRCLESLASH
@item top-level item
@itemize @CIRCLESLASH
@item second-level item
@itemize @CIRCLESLASH
@item third-level item
@itemize @CIRCLESLASH
@item additional-level item
@item additional-level item
@end itemize
@item third-level item
@end itemize
@item second-level item
@end itemize
@item top-level item
@end itemize
Output:
Compliance:
Output to ’info’ document: as specified
Output to ’HTML’ document: as specified EXCEPT as noted below
The generated HTML for this command is:
<ol class="enumerate" ...>
<li> ... </li>
<li> ... </li>
</ol>
PLEASE NOTE:
The texi-to-HTML converter uses three(3) HTML sequences for enumerated lists ('@enumerate'):
— Numeric:1-nnn
— Alphabetic (lower-case):a-zzz
— Alphabetic (upper-case):A-ZZZ
Other enumeration types, such as Greek, Roman numerals, Arabic, Hebrew and other types supported by HTML are not directly available during the texi-to-HTML conversion.
Note also that the number or character used to specify the enumeration type also specifies the start value for the sequence. Some examples would be:@enumerate 1 yields: 1 some text 2 some text 3 some text @enumerate 6 yields: 6 some text 7 some text 8 some text @enumerate a yields: a some text b some text c some text @enumerate F yields: F some text G some text H some textWhile this is a perfectly acceptable interpretation of a list structure, it does not allow for constructs such as:
@enumerate α α some text β some text γ some text δ some text ε some text —OR— @enumerate I I some text II some text III some text IV some text V some textAlternate enumeration types are ignored by the texi-to-HTML converter and are rendered as simple numeric lists. While this is annoying and technically incorrect, we can’t really classify it as a bug because the converter would have to be enhanced to support all the enumeration types tested here. So, let’s call it an urgent enhancement request. Until that happens, we can use some post-processing to assign CSS definitions for each of the unsupported enumeration types.
Here is some verbatim stuff at the end of an enumerated list...
NOTE: In this document, the sequence will be displayed in descending
order due to the inclusion of an embedded formatting token.
Please see the “Interface Logic” chapter of the documentation
and the section on interactive processing for additional information.
The specified enumeration-type arguments are interpreted by the postprocessor
as special-case constructs, and the lists are adjusted accordingly.
Specify lower-alpha (@enumerate a) with default start index:
Specify upper-alpha (@enumerate A) with default start index:
Specify decimal-with-leading zero (@enumerate D) (’info’ and HTML will not be symmetrical).
Specify lower-case Roman Numerals (@enumerate i), (’info’ and HTML will not be symmetrical).
Specify upper-case Roman Numerals (@enumerate I), (’info’ and HTML will not be symmetrical).
Specify lower-case Greek characters (@enumerate g), (’info’ and HTML will not be symmetrical).
Specify upper-case Greek characters (@enumerate G),
(’info’ and HTML will not be symmetrical).
Specify CJK (Han) (informal) numeric (@enumerate j), (’info’ and HTML will not be symmetrical).
Targeted Katakana alpha (Gojūon) (@enumerate k),
’info’ and HTML will not be symmetrical.
Specify Hebrew alphabetic (@enumerate h),
The 'info' and HTML will not be symmetrical; Hebrew is an RTL language.
...
Targeted Arabic-Indic numeric (@enumerate e),
The 'info' and HTML will not be symmetrical; Arabic is an RTL language.
Use the @SmallEnumerate macro to create an enumerated list using a
smaller font size.
The @SmallEnumerate macro takes two arguments:
1) the enumeration type, and
2) the text for the first line item of the list.
Note that if the text of the item includes commas, they must be escaped.
The macro is invoked using the format:
@SmallEnumerate{enumeration_type,text of first line item}
Example:
@SmallEnumerate{A,Shopping List: tomatoes\, cabbage\, celery}
@item ginger ale, pizza, chips and salsa
@end enumerate
The macro arguments are enclosed in braces. Note the comma separating the enumeration type from the item text, AND note the escaped commas in the item-text argument. (Commas in other line items are not escaped.)
The @SmallEnumerate macro includes the embedded token =...s.=
(in the HTML output only), which instructs the 'idpp' post-processor to render the list
referencing the CSS "ol.font-small" class in 'infodoc-styles.css'.
This styling class applies a font size of 0.85em which is approximately
15% smaller than the text of the parent environment.
@macro SmallEnumerate{ETYPE,ITEM}
@enumerate \ETYPE\
@item
@ifhtml
=...s.=
@end ifhtml
\ITEM\
@end macro
Here is an example itemized list created using the @SmallEnumerate macro.
Use the @LargeEnumerate macro to create an enumerated list using a
larger font size.
The @LargeEnumerate macro is the same as the @SmallEnumerate macro
described above, except that the embedded token is =...l.=
and the 'idpp' post-processor renders the list to reference the CSS
"ol.font-large" class in 'infodoc-styles.css'.
This styling class applies a font size of 1.15em which is approximately
15% larger than the text of the parent environment.
This list is created using the @LargeEnumerate macro.
Name the film in which each of these quotations appears...
The following examples are enclosed within a non-converted sequence:
’@html ... @end html’
The examples reference the style definitions within the
’infodoc-styles.css’ file. If this file is not referenced within the
HTML output, then the examples will be style-less and therefore not
representative of the referenced classes.
This code will not be visible within the ’info’ output, but should be passed through the texi-to-HTML converter as unprocessed HTML markup.
Some unprocessed HTML code examples for <ol> lists.
Requires linking in the 'infodoc-styles.css' file.
The following are lists nested inside other lists which exercises the
'idpp' list-recursion algorithm.
It is possible to place a pre-formatted data block inside a list; however, both enumerated and itemized lists are inherently flowing text and interrupting that flow is generally unwise, unattractive and unnecessary. For test purposes, examples of both “@format” and “@display” formatted blocks are embedded in the following list. However, it is recommended that if you need a formatted block inside a list, you should break the list before the block and continue it after the block.
The HTML for the following list should not need post-processing, but the browser sees that it is nested and automagically converts the ’disc’ bullets to (level-down) ’circle’ bullets. (See note above and simulated disc-bullet list below.)
"Your Love" from: "The One Where Monica Gets a New Roommate"
Although there are at least seven children born during the series, this one occurred during the birth of Ross’ son Ben. Indentation adjusted during post-processing.
"Babies" from "The One With the Birth"
"Crazy Underwear" from: "The One With Ross’s Thing"
...
"Smelly Cat" from "The One With the Baby On the Bus, et al"
The items in this group of lists are specified in the Texinfo source as ’@enumerate i’, ’@enumerate I’ and ’@enumerate g’, respectively. After post-processing, the HTML and ’info’ documents will not be symmetrical. This is necessary for this test document, but use care when creating production documents, so that the ’info’ and post-processed HTML documents remain synchronized.
"Blackout" from "The One With the Blackout"
"Shower Song" from "The One With the Baby On the Bus"
...
...
Enumerated Below Itemized (decimal leading-zero)
Lyrics in this section copyright (c) NBC / Warner Bros. Television. (but the limericks are our fault :-)
Correct is better than fast. Simple is better than complex.
Clear is better than cute. Safe is better than insecure.
Correct is better than fast. Simple is better than complex.
Clear is better than cute. Safe is better than insecure.
Important Note: In previous versions of the texi-2-HTML converter, (prior to v:6.6_2019_02_10), six of the seven block types supported the “small...” versions of the block type. For example “@smallquotation”. The small versions of these block types had all the same characteristics of the standard versions except that the font size was smaller. The “small...” option was still available for Tex and other output formats. Beginning with version 7.0 of the texi-2-HTML converter, support for these commands has been restored.
The HTML specification says that lists are allowed within any construct
where text “flows”. It is important to note that within texinfo
formatted blocks, @format, @display, @example, @lisp text
DOES NOT “flow”.
Of course lists are not possible inside a @verbatim block.
With that said, the following blocks look surprisingly good in the ‘info’ document; however, the texi-to-HTML converter does some nasty (and in our opinion, completely unnecessary) stuff inside blocks that are defined as “preformatted” i.e. non-flowing text.
By default, the worst of this unfortunate formatting of embedded lists
is removed during post-processing. If you are curious about what these
lists look like without post-processing, rebuild this HTML file and perform
post-processing using the '--no_special' option.
In conclusion, it is STRONGLY recommended that lists not be placed inside pre-formatted blocks.
In contrast, text inside an @indentedblock DOES flow, so those lists require no special processing.
Here we are inside an @indentedblock block.
- Bathe.
- Brush your teeth.
- Shave unwanted hair.
- Eat a healthful breakfast.
- Pack your bag.
- Kiss all family members.
- Go to work.
- Bathe.
- Brush your teeth.
- Shave unwanted hair.
- Eat a healthful breakfast.
- Pack your bag.
- Kiss all family members.
- Go to work.
Leaving the @indentedblock block.
This is a preformatted block containing an itemized list and an enumerated list. Without post-processing, it looks awful (see note above). Even with post-processing, you can see that the spacing above and below the lists is too much.
Here we are inside a @display block.
Bathe.
Brush your teeth.
Shave unwanted hair.
Eat a healthful breakfast.
Pack your bag.
Kiss all family members.
Go to work.
Bathe.
Brush your teeth.
Shave unwanted hair.
Eat a healthful breakfast.
Pack your bag.
Kiss all family members.
Go to work.
Leaving the @display block.
<div class="display"> <pre class="display-preformatted">Here we are inside a @display block. </pre><ul class="itemize mark-bullet"> <li><pre class="display-preformatted">Bathe. </pre></li><li><pre class="display-preformatted">Brush your teeth. . . . </pre></li><li><pre class="display-preformatted">Go to work. </pre></li></ul> <pre class="display-preformatted"> </pre><ol class="enumerate"> <li> <pre class="display-preformatted">Bathe. </pre></li><li> <pre class="display-preformatted">Brush your teeth. . . . </pre></li><li> <pre class="display-preformatted">Go to work. </pre></li></ol> <pre class="display-preformatted">Leaving the @display block. </pre></div>
<div class="display">Here we are inside a @display block. <ul class="itemize mark-bullet"> <li>Bathe. </li><li>Brush your teeth. . . . </li><li>Go to work. </li></ul> <ol class="enumerate"> <li> Bathe. </li><li> Brush your teeth. . . . </li><li> Go to work. </li></ol> Leaving the @display block. </div>
Here is another fine mess! This is a preformatted block containing an itemized list and an enumerated list. See note above.
Here we are inside an @example block.
Bathe.
Brush your teeth.
Shave unwanted hair.
Eat a healthful breakfast.
Pack your bag.
Kiss all family members.
Go to work.
Bathe.
Brush your teeth.
Shave unwanted hair.
Eat a healthful breakfast.
Pack your bag.
Kiss all family members.
Go to work.
Leaving the @example block.
Except for @indentedblock blocks it is strongly recommended
that block environments NOT be nested within other block environments,
but we run a few tests here, just to see what happens.
(Note that 'idpp' handles these tests smoothly :)
(Remember that the contents of PRE-FORMATTED blocks are not processed) ( by idpp, but are merely copied, unchanged from source to target. )
This text is part of the outer indented block. It should be indented by a few spaces as specified by the document’s @exampleindent command (5 spaces by default in info output).
This is a doubly-indented paragraph, i.e. it lives within a nested @indentedblock. This is a bit unlikely is a production document, but we want to see how makeinfo handles it for info-format and HTML-format output.
This text is part of the outer indented block. It should be indented by a few spaces as specified by the document’s @exampleindent command (5 spaces by default in info output).
This text is part of the outer indented block. It should be indented by a few spaces as specified by the document’s @exampleindent command (5 spaces by default in info output).
This text is within an @example block (monospaced text). It can often be useful to change font families for emphasis.This text is part of the outer indented block. It should be indented by a few spaces as specified by the document’s @exampleindent command (5 spaces by default in info output).
"Give a man a fish, and he’ll eat fish."
This text is within the indented block. It should be indented by a few spaces as specified by the document’s @exampleindent command if present (5 spaces by default in info output).
"Give a man a fish, and he’ll think something is rotten in Denmark, but teach a man to fish, and he’ll think you want to have sex with him."
— Samwise ShakespeareThis text is within the indented block. It should be indented by a few spaces as specified by the document’s @exampleindent command if present (5 spaces by default in info output).
"Why is the rum gone?"
"One, Because it is a vile drink that turns even the most respectable men into complete scoundrels
..."This text is within an indented block within a @quotation command. Note that we cannot follow an @author sub-command with an indented block because makeinfo always places the @author just inside the end of the @quotation block.
"But why is the rum gone?"
"
...and two, because that signal is over a thousand feet high. The entire royal navy is out looking for me; do you think there is even the slightest chance they won’t see it?"This text is within an indented block within a @quotation command. We don’t name the author of this exchange because everyone on the planet already knows who the speakers are–but it is after all copyrighted material–so give credit where credit is due.
"There’ll be no living with her after this."
|
A “cartouche” is a bordered paragraph. The border is not visible
within the ‘info’ document, and may as well have beeen ignored.
However, the border is rendered correctly for the HTML document.
CSS style for margins and interior padding is added to beautify the output.
By default, text within an HTML cartouche block is pre-formatted during
post-processing, but may be allowed to flow using the |
The character codes used by HTML for unordered lists. Note that the characters shown in the ’info’ document only approximate the characters in the HTML document which are browser-specific.
| HTML NAME | NESTING LEVEL | EXAMPLE |
|---|---|---|
| ’disc’ | top | ( ⏺ ) |
| ’circle’ | second | ( ⚬ ) |
| ’square’ | third and lower | ( ▪ ) |
HTML-only output follows: default unordered lists nested to
demonstrate the bullets used by default for each level.
Texinfo character @bullet ( • ) texi-to-HTML converter outputs ’•’ U+2022 Texinfo character @textdegree ( ° ) texi-to-HTML converter outputs ’°’ U+00B0 Texinfo character @minus ( − ) texi-to-HTML converter outputs U+2212 i.e. Unicode minus texi-to-info outputs U+2212 i.e. Unicode minus
| =bi= UNICODE | EXAMPLE | HTML(hex) | DESCRIPTION |
|---|---|---|---|
| U+25CF | ( ● ) | ● | black-circle |
| U+26AB | ( ⚫ ) | ⚫ | medium-black-circle |
| U+2022 | ( • ) | • | medium-small-black-circle |
| U+2219 | ( ∙ ) | ∙ | bullet-operator (math)
|
| U+25CB | ( ○ ) | ○ | white-circle |
| U+26AA | ( ⚪ ) | ⚪ | medium-white-circle |
| U+26AC | ( ⚬ ) | ⚬ | medium-small-white-circle |
| U+25E6 | ( ◦ ) | ◦ | white-bullet
|
| U+25A0 | ( ■ ) | ■ | black-square |
| U+25FC | ( ◼ ) | ◼ | black-medium-square |
| U+25FE | ( ◾ ) | ◾ | black-medium-small-square |
| U+25AA | ( ▪ ) | ▪ | black-small-square |
| Jump to: | C D E F I M N Q V |
|---|
| Jump to: | C D E F I M N Q V |
|---|