diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2010-10-11 12:32:33 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2010-10-11 12:32:33 +0000 |
| commit | 0ac9411fdf556611215e5ddb1e5054b76609f959 (patch) | |
| tree | e3612c35822eb745c0a8aa27152e13903fab3b74 /docutils/test/functional | |
| parent | f5baaccd9ea50f2cd6e2ac39f2fb8ed3e5975c71 (diff) | |
| download | docutils-0ac9411fdf556611215e5ddb1e5054b76609f959.tar.gz | |
Support language specification for document objects.
Class arguments in the form "language-<language tag>", e.g.
``.. class:: language-el-polyton`` for a quote in polytonic Greek
are handled by the html and latex writers to set the language of the
"classified" object.
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@6443 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'docutils/test/functional')
7 files changed, 289 insertions, 43 deletions
diff --git a/docutils/test/functional/expected/standalone_rst_html4css1.html b/docutils/test/functional/expected/standalone_rst_html4css1.html index 2ab627bca..06138edc5 100644 --- a/docutils/test/functional/expected/standalone_rst_html4css1.html +++ b/docutils/test/functional/expected/standalone_rst_html4css1.html @@ -411,6 +411,26 @@ the left edge of the text above it.</div> <div class="line">Singing...</div> </div> </blockquote> +<p>A poem by Christian Morgenstern:</p> +<div class="align-center line-block" lang="de"> +<div class="line">Das æsthetische Wiesel</div> +<div class="line"><br /></div> +<div class="line">Ein Wiesel</div> +<div class="line">saß auf einem Kiesel</div> +<div class="line">inmitten Bachgeriesel.</div> +<div class="line"><br /></div> +<div class="line">Wißt ihr</div> +<div class="line">weshalb?</div> +<div class="line"><br /></div> +<div class="line">Das Mondkalb</div> +<div class="line">verriet es mir</div> +<div class="line">im Stillen:</div> +<div class="line"><br /></div> +<div class="line">Das raffinier-</div> +<div class="line">te Tier</div> +<div class="line">tat's um des Reimes willen.</div> +<div class="line"><br /></div> +</div> </div> <div class="section" id="block-quotes"> <h2><a class="toc-backref" href="#id46">2.9 Block Quotes</a></h2> @@ -423,6 +443,12 @@ far end. That is my theory, it is mine, and belongs to me and I own it, and what it is too.</p> <p class="attribution">—Anne Elk (Miss)</p> </blockquote> +<p>The language of a quote (like any other object) can be specified by +a class attribute:</p> +<!-- --> +<blockquote lang="fr"> +ReStructuredText est un langage de balisage léger utilisé +notamment dans la documentation du langage Python.</blockquote> </div> <div class="section" id="doctest-blocks"> <h2><a class="toc-backref" href="#id47">2.10 Doctest Blocks</a></h2> @@ -1002,8 +1028,14 @@ crunchy, now would it?</td> <li><p class="first">A role with class attribute.</p> <p><span class="special">interpreted text</span></p> </li> -<li><p class="first">A role with class attribute.</p> -<p><span class="very special">interpreted text</span></p> +<li><p class="first">A language-switching role:</p> +<p>Let's count in German <span lang="de">eins zwei drei</span>.</p> +</li> +<li><p class="first">A role with multiple class attributes, styled with raw directives:</p> +<style type="text/css"><!-- + .green {color: green;} + .sc {font-variant: small-caps;} + --></style><p><span class="green sc" lang="en-gb">British colourful text in small-caps</span>.</p> </li> </ul> </div> @@ -1069,16 +1101,16 @@ section, "Docutils System Messages":</p> <p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 102); <em><a href="#id24">backlink</a></em></p> Undefined substitution referenced: "problematic".</div> <div class="system-message" id="id82"> -<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 361); <em><a href="#id83">backlink</a></em></p> +<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 394); <em><a href="#id83">backlink</a></em></p> Unknown target name: "5".</div> <div class="system-message" id="id84"> -<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 370); <em><a href="#id85">backlink</a></em></p> +<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 403); <em><a href="#id85">backlink</a></em></p> Unknown target name: "nonexistent".</div> <div class="system-message" id="id86"> -<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 397); <em><a href="#id87">backlink</a></em></p> +<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 430); <em><a href="#id87">backlink</a></em></p> Unknown target name: "hyperlink reference without a target".</div> <div class="system-message" id="id88"> -<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 410); <em><a href="#id89">backlink</a></em></p> +<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">functional/input/data/standard.txt</tt>, line 443); <em><a href="#id89">backlink</a></em></p> Duplicate target name, cannot be used as a unique reference: "duplicate target names".</div> </div> </div> diff --git a/docutils/test/functional/expected/standalone_rst_latex.tex b/docutils/test/functional/expected/standalone_rst_latex.tex index e64bae4de..6733652fe 100644 --- a/docutils/test/functional/expected/standalone_rst_latex.tex +++ b/docutils/test/functional/expected/standalone_rst_latex.tex @@ -2,6 +2,7 @@ % generated by Docutils <http://docutils.sourceforge.net/> \usepackage{fixltx2e} % LaTeX patches, \textsubscript \usepackage{cmap} % fix search and cut-and-paste in Acrobat +\usepackage[british,french,ngerman,english]{babel} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{ifthen} @@ -48,6 +49,11 @@ \fi } +\makeatletter +\@namedef{DUrolealign-center}{\centering} +\makeatother + + % dedication topic \providecommand{\DUtopicdedication}[1]{\begin{center}#1\end{center}} @@ -261,7 +267,9 @@ reStructuredText construct. % They are transformed from section titles after parsing. % bibliographic fields (which also require a transform): + \pagebreak[4] % start ToC on new page + \phantomsection\label{table-of-contents} \pdfbookmark[1]{Table of Contents}{table-of-contents} \renewcommand{\contentsname}{Table of Contents} @@ -576,9 +584,9 @@ The field body may contain one or more body elements, indented relative to the field marker. \item[{credits:}] -This paragraph has the \DUroletitlereference{credits} class set. (This is actually not +\DUrole{credits}{This paragraph has the \DUroletitlereference{credits} class set. (This is actually not about credits but just for ensuring that the class attribute -doesn't get stripped away.) +doesn't get stripped away.)} \end{DUfieldlist} @@ -733,6 +741,30 @@ Take it away, Eric the Orchestra Leader! \end{quote} +A poem by Christian Morgenstern: + +\begin{DUlineblock}{0em} +{\selectlanguage{ngerman}\DUrole{align-center}{ +\item[] Das æsthetische Wiesel +\item[] +\item[] Ein Wiesel +\item[] saß auf einem Kiesel +\item[] inmitten Bachgeriesel. +\item[] +\item[] Wißt ihr +\item[] weshalb? +\item[] +\item[] Das Mondkalb +\item[] verriet es mir +\item[] im Stillen: +\item[] +\item[] Das raffinier- +\item[] te Tier +\item[] tat's um des Reimes willen. +\item[] +}} +\end{DUlineblock} + %___________________________________________________________________________ @@ -757,6 +789,18 @@ own it, and what it is too. \end{quote} +The language of a quote (like any other object) can be specified by +a class attribute: + +% +% +\begin{quote} +{\selectlanguage{french} +ReStructuredText est un langage de balisage léger utilisé +notamment dans la documentation du langage Python. +} +\end{quote} + %___________________________________________________________________________ @@ -1362,10 +1406,18 @@ Here's one: This does not necessarily look nice, because there may be missing white space. It's just there to freeze the behavior. -A test.Second test.\DUrole{myclass}{Another test with myclass set.} + +A test. + +Second test. + +\DUrole{myclass}{Another test with myclass set.} + This is the \DUrole{myrawroleclass}{fourth test} with myrawroleclass set. + Fifth test in LaTeX.\\Line two. + %___________________________________________________________________________ \subsection*{2.18~~~Container% @@ -1551,9 +1603,16 @@ body row 3 \DUrole{special}{interpreted text} -\item A role with class attribute. +\item A language-switching role: + +Let's count in German {\selectlanguage{ngerman}eins zwei drei}. -\DUrole{very}{\DUrole{special}{interpreted text}} +\item A role with multiple class attributes, styled with raw directives: + +\newcommand{\DUrolegreen}[1]{\textcolor{green}{#1}} +\newcommand{\DUrolesc}[1]{\textsc{#1}} + +{\selectlanguage{british}\DUrole{green}{\DUrole{sc}{British colourful text in small-caps}}}. \end{itemize} @@ -1592,11 +1651,13 @@ treatment in LaTeX command names. \item With LaTeX, roles can be styled within the document using the \DUroletitlereference{raw} directive. -\newcommand{\docutilsrolelarge}[1]{{\large #1}} + +\newcommand{\DUrolelarge}[1]{{\large #1}} \makeatletter -\@namedef{docutilsrolesmall-caps}{\textsc} -\@namedef{docutilsrolecustom4}{\textbf} +\@namedef{DUrolesmall-caps}{\textsc} +\@namedef{DUrolecustom4}{\textbf} \makeatother + \DUrole{large}{\DUrole{custom4}{\DUrole{small-caps}{\DUrole{custom-role}{\DUrole{custom-role}{Interpreted Text}}}}} in large, bold, small-caps. \item Custom roles can be based on standard roles: @@ -2352,7 +2413,7 @@ Undefined substitution referenced: ``problematic''. \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id40}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~361 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~394 \hyperlink{id41}{ Unknown target name: ``5''. @@ -2362,7 +2423,7 @@ Unknown target name: ``5''. \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id42}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~370 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~403 \hyperlink{id43}{ Unknown target name: ``nonexistent''. @@ -2372,7 +2433,7 @@ Unknown target name: ``nonexistent''. \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id44}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~397 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~430 \hyperlink{id45}{ Unknown target name: ``hyperlink reference without a target''. @@ -2382,7 +2443,7 @@ Unknown target name: ``hyperlink reference without a target''. \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id46}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~410 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~443 \hyperlink{id47}{ Duplicate target name, cannot be used as a unique reference: ``duplicate target names''. diff --git a/docutils/test/functional/expected/standalone_rst_pseudoxml.txt b/docutils/test/functional/expected/standalone_rst_pseudoxml.txt index b55683a37..d8b87bf43 100644 --- a/docutils/test/functional/expected/standalone_rst_pseudoxml.txt +++ b/docutils/test/functional/expected/standalone_rst_pseudoxml.txt @@ -889,6 +889,38 @@ <line> <line> Singing... + <paragraph> + A poem by Christian Morgenstern: + <line_block classes="language-de align-center"> + <line> + Das æsthetische Wiesel + <line> + <line> + Ein Wiesel + <line> + saß auf einem Kiesel + <line> + inmitten Bachgeriesel. + <line> + <line> + Wißt ihr + <line> + weshalb? + <line> + <line> + Das Mondkalb + <line> + verriet es mir + <line> + im Stillen: + <line> + <line> + Das raffinier- + <line> + te Tier + <line> + tat's um des Reimes willen. + <line> <section ids="block-quotes" names="block\ quotes"> <title auto="1" refid="id46"> <generated classes="sectnum"> @@ -905,6 +937,14 @@ own it, and what it is too. <attribution> Anne Elk (Miss) + <paragraph> + The language of a quote (like any other object) can be specified by + a class attribute: + <comment xml:space="preserve"> + <block_quote classes="language-fr"> + <paragraph> + ReStructuredText est un langage de balisage léger utilisé + notamment dans la documentation du langage Python. <section ids="doctest-blocks" names="doctest\ blocks"> <title auto="1" refid="id47"> <generated classes="sectnum"> @@ -1882,15 +1922,15 @@ <system_message backrefs="id24" ids="id23" level="3" line="102" source="functional/input/data/standard.txt" type="ERROR"> <paragraph> Undefined substitution referenced: "problematic". - <system_message backrefs="id80" ids="id79" level="3" line="361" source="functional/input/data/standard.txt" type="ERROR"> + <system_message backrefs="id80" ids="id79" level="3" line="394" source="functional/input/data/standard.txt" type="ERROR"> <paragraph> Unknown target name: "5". - <system_message backrefs="id82" ids="id81" level="3" line="370" source="functional/input/data/standard.txt" type="ERROR"> + <system_message backrefs="id82" ids="id81" level="3" line="403" source="functional/input/data/standard.txt" type="ERROR"> <paragraph> Unknown target name: "nonexistent". - <system_message backrefs="id84" ids="id83" level="3" line="397" source="functional/input/data/standard.txt" type="ERROR"> + <system_message backrefs="id84" ids="id83" level="3" line="430" source="functional/input/data/standard.txt" type="ERROR"> <paragraph> Unknown target name: "hyperlink reference without a target". - <system_message backrefs="id86" ids="id85" level="3" line="410" source="functional/input/data/standard.txt" type="ERROR"> + <system_message backrefs="id86" ids="id85" level="3" line="443" source="functional/input/data/standard.txt" type="ERROR"> <paragraph> Duplicate target name, cannot be used as a unique reference: "duplicate target names". diff --git a/docutils/test/functional/expected/standalone_rst_xetex.tex b/docutils/test/functional/expected/standalone_rst_xetex.tex index 3c46ea5a4..2e048afd7 100644 --- a/docutils/test/functional/expected/standalone_rst_xetex.tex +++ b/docutils/test/functional/expected/standalone_rst_xetex.tex @@ -3,6 +3,9 @@ % rubber: set program xelatex \usepackage[no-sscript]{xltxtra} % loads fixltx2e, metalogo, xunicode, fontspec \defaultfontfeatures{Scale=MatchLowercase} +\usepackage{polyglossia} +\setdefaultlanguage{english} +\setotherlanguages{german,british,french} \usepackage{ifthen} \usepackage{color} \usepackage{float} % float configuration @@ -45,6 +48,11 @@ \fi } +\makeatletter +\@namedef{DUrolealign-center}{\centering} +\makeatother + + % dedication topic \providecommand{\DUtopicdedication}[1]{\begin{center}#1\end{center}} @@ -261,7 +269,9 @@ reStructuredText construct. % They are transformed from section titles after parsing. % bibliographic fields (which also require a transform): + \pagebreak[4] % start ToC on new page + \phantomsection\label{table-of-contents} \pdfbookmark[1]{Table of Contents}{table-of-contents} \renewcommand{\contentsname}{Table of Contents} @@ -576,9 +586,9 @@ The field body may contain one or more body elements, indented relative to the field marker. \item[{credits:}] -This paragraph has the \DUroletitlereference{credits} class set. (This is actually not +\DUrole{credits}{This paragraph has the \DUroletitlereference{credits} class set. (This is actually not about credits but just for ensuring that the class attribute -doesn't get stripped away.) +doesn't get stripped away.)} \end{DUfieldlist} @@ -733,6 +743,30 @@ Take it away, Eric the Orchestra Leader! \end{quote} +A poem by Christian Morgenstern: + +\begin{DUlineblock}{0em} +{\selectlanguage{german}\DUrole{align-center}{ +\item[] Das æsthetische Wiesel +\item[] +\item[] Ein Wiesel +\item[] saß auf einem Kiesel +\item[] inmitten Bachgeriesel. +\item[] +\item[] Wißt ihr +\item[] weshalb? +\item[] +\item[] Das Mondkalb +\item[] verriet es mir +\item[] im Stillen: +\item[] +\item[] Das raffinier- +\item[] te Tier +\item[] tat's um des Reimes willen. +\item[] +}} +\end{DUlineblock} + %___________________________________________________________________________ @@ -757,6 +791,18 @@ own it, and what it is too. \end{quote} +The language of a quote (like any other object) can be specified by +a class attribute: + +% +% +\begin{quote} +{\selectlanguage{french} +ReStructuredText est un langage de balisage léger utilisé +notamment dans la documentation du langage Python. +} +\end{quote} + %___________________________________________________________________________ @@ -1366,10 +1412,18 @@ Here's one: This does not necessarily look nice, because there may be missing white space. It's just there to freeze the behavior. -A test.Second test.\DUrole{myclass}{Another test with myclass set.} + +A test. + +Second test. + +\DUrole{myclass}{Another test with myclass set.} + This is the \DUrole{myrawroleclass}{fourth test} with myrawroleclass set. + Fifth test in LaTeX.\\Line two. + %___________________________________________________________________________ \subsection*{2.18 Container% @@ -1555,9 +1609,16 @@ body row 3 \DUrole{special}{interpreted text} -\item A role with class attribute. +\item A language-switching role: + +Let's count in German {\selectlanguage{german}eins zwei drei}. -\DUrole{very}{\DUrole{special}{interpreted text}} +\item A role with multiple class attributes, styled with raw directives: + +\newcommand{\DUrolegreen}[1]{\textcolor{green}{#1}} +\newcommand{\DUrolesc}[1]{\textsc{#1}} + +{\selectlanguage{british}\DUrole{green}{\DUrole{sc}{British colourful text in small-caps}}}. \end{itemize} @@ -1596,11 +1657,13 @@ treatment in LaTeX command names. \item With LaTeX, roles can be styled within the document using the \DUroletitlereference{raw} directive. -\newcommand{\docutilsrolelarge}[1]{{\large #1}} + +\newcommand{\DUrolelarge}[1]{{\large #1}} \makeatletter -\@namedef{docutilsrolesmall-caps}{\textsc} -\@namedef{docutilsrolecustom4}{\textbf} +\@namedef{DUrolesmall-caps}{\textsc} +\@namedef{DUrolecustom4}{\textbf} \makeatother + \DUrole{large}{\DUrole{custom4}{\DUrole{small-caps}{\DUrole{custom-role}{\DUrole{custom-role}{Interpreted Text}}}}} in large, bold, small-caps. \item Custom roles can be based on standard roles: @@ -2372,7 +2435,7 @@ Undefined substitution referenced: "problematic". \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id42}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~361 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~394 \hyperlink{id43}{ Unknown target name: "5". @@ -2382,7 +2445,7 @@ Unknown target name: "5". \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id44}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~370 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~403 \hyperlink{id45}{ Unknown target name: "nonexistent". @@ -2392,7 +2455,7 @@ Unknown target name: "nonexistent". \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id46}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~397 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~430 \hyperlink{id47}{ Unknown target name: "hyperlink reference without a target". @@ -2402,7 +2465,7 @@ Unknown target name: "hyperlink reference without a target". \DUtitle[system-message]{system-message} \raisebox{1em}{\hypertarget{id48}{}} -{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~410 +{\color{red}ERROR/3} in \texttt{functional/input/data/standard.txt}, line~443 \hyperlink{id49}{ Duplicate target name, cannot be used as a unique reference: "duplicate target names". diff --git a/docutils/test/functional/input/data/custom_roles.txt b/docutils/test/functional/input/data/custom_roles.txt index 872005cbd..916ebcd0b 100644 --- a/docutils/test/functional/input/data/custom_roles.txt +++ b/docutils/test/functional/input/data/custom_roles.txt @@ -19,11 +19,28 @@ Custom Roles :class: special :customclass:`interpreted text` - -* A role with class attribute. + +* A language-switching role: + + .. role:: language-de + + Let's count in German :language-de:`eins zwei drei`. + +* A role with multiple class attributes, styled with raw directives: .. role:: customx - :class: very special + :class: green sc language-en-GB + + .. raw:: latex + + \newcommand{\DUrolegreen}[1]{\textcolor{green}{#1}} + \newcommand{\DUrolesc}[1]{\textsc{#1}} + + .. raw:: html + + <style type="text/css"><!-- + .green {color: green;} + .sc {font-variant: small-caps;} + --></style> - :customx:`interpreted text` - + :customx:`British colourful text in small-caps`. diff --git a/docutils/test/functional/input/data/custom_roles_latex.txt b/docutils/test/functional/input/data/custom_roles_latex.txt index 88c0a370c..44743a8d0 100644 --- a/docutils/test/functional/input/data/custom_roles_latex.txt +++ b/docutils/test/functional/input/data/custom_roles_latex.txt @@ -19,10 +19,10 @@ Custom Roles in LaTeX .. raw:: latex - \newcommand{\docutilsrolelarge}[1]{{\large #1}} + \newcommand{\DUrolelarge}[1]{{\large #1}} \makeatletter - \@namedef{docutilsrolesmall-caps}{\textsc} - \@namedef{docutilsrolecustom4}{\textbf} + \@namedef{DUrolesmall-caps}{\textsc} + \@namedef{DUrolecustom4}{\textbf} \makeatother :custom4:`Interpreted Text` in large, bold, small-caps. diff --git a/docutils/test/functional/input/data/standard.txt b/docutils/test/functional/input/data/standard.txt index 37efd1036..0c7c972a5 100644 --- a/docutils/test/functional/input/data/standard.txt +++ b/docutils/test/functional/input/data/standard.txt @@ -310,6 +310,30 @@ Take it away, Eric the Orchestra Leader! | | Singing... +A poem by Christian Morgenstern: + +.. class:: language-de align-center + + +| Das æsthetische Wiesel +| +| Ein Wiesel +| saß auf einem Kiesel +| inmitten Bachgeriesel. +| +| Wißt ihr +| weshalb? +| +| Das Mondkalb +| verriet es mir +| im Stillen: +| +| Das raffinier- +| te Tier +| tat's um des Reimes willen. +| + + Block Quotes ------------ @@ -323,6 +347,15 @@ Block quotes consist of indented body elements: -- Anne Elk (Miss) +The language of a quote (like any other object) can be specified by +a class attribute: + +.. class:: language-fr +.. + + ReStructuredText est un langage de balisage léger utilisé + notamment dans la documentation du langage Python. + Doctest Blocks -------------- @@ -529,7 +562,7 @@ A left-aligned figure: The legend may consist of several paragraphs. -This paragraph might flow around the figure. +This paragraph might flow around the figure. The specific behavior depends upon the style sheet and the browser or rendering software used. |
