More pagination cleanups using \needspace and \needlines.
authorRon Brender <ron.brender@gmail.com>
Sun, 3 Feb 2013 15:06:13 +0000 (10:06 -0500)
committerRon Brender <ron.brender@gmail.com>
Sun, 3 Feb 2013 15:06:13 +0000 (10:06 -0500)
Signed-off-by: Ron Brender <ron.brender@gmail.com>
dwarf5/latexdoc/compression.tex
dwarf5/latexdoc/datarepresentation.tex
dwarf5/latexdoc/dwarf5.tex
dwarf5/latexdoc/examples.tex
dwarf5/latexdoc/otherdebugginginformation.tex
dwarf5/latexdoc/programscope.tex
dwarf5/latexdoc/typeentries.tex

index 229d774..8bc8996 100644 (file)
@@ -94,6 +94,7 @@ section groups:
 where each \addtoindex{section group} might or might not contain executable
 code (\textit{.text} sections) or data (\textit{.data} sections).
 
 where each \addtoindex{section group} might or might not contain executable
 code (\textit{.text} sections) or data (\textit{.data} sections).
 
+\needlines{6}
 A \textit{\addtoindex{section group}} is a named set 
 of section contributions
 within an object file with the property that the entire set
 A \textit{\addtoindex{section group}} is a named set 
 of section contributions
 within an object file with the property that the entire set
@@ -550,7 +551,7 @@ example, consider
 Figure \refersec{fig:duplicateeliminationexample2fortransource}.
 
 \begin{figure}
 Figure \refersec{fig:duplicateeliminationexample2fortransource}.
 
 \begin{figure}
-\textbf{File CommonStuff.fh}
+\textit{File CommonStuff.fh}
 \addtoindexx{Fortran}
 \begin{lstlisting}[numbers=none]
 IMPLICIT INTEGER(A-Z)
 \addtoindexx{Fortran}
 \begin{lstlisting}[numbers=none]
 IMPLICIT INTEGER(A-Z)
@@ -558,7 +559,7 @@ COMMON /Common1/ C(100)
 PARAMETER(SEVEN = 7)
 \end{lstlisting}
 
 PARAMETER(SEVEN = 7)
 \end{lstlisting}
 
-\textbf{File Func.f}
+\textit{File Func.f}
 \begin{lstlisting}[numbers=none]
 FUNCTION FOO (N)
 INCLUDE 'CommonStuff.fh'
 \begin{lstlisting}[numbers=none]
 FUNCTION FOO (N)
 INCLUDE 'CommonStuff.fh'
@@ -659,7 +660,7 @@ A companion main program is shown in
 Figure \refersec{fig:duplicateeliminationexample2companionsource}
 
 \begin{figure}
 Figure \refersec{fig:duplicateeliminationexample2companionsource}
 
 \begin{figure}
-\textbf{File Main.f:
+\textit{File Main.f
 \begin{lstlisting}[numbers=none]
 INCLUDE 'CommonStuff.fh'
 C(50) = 8
 \begin{lstlisting}[numbers=none]
 INCLUDE 'CommonStuff.fh'
 C(50) = 8
@@ -670,6 +671,7 @@ END
 \label{fig:duplicateeliminationexample2companionsource}
 \end{figure}
 
 \label{fig:duplicateeliminationexample2companionsource}
 \end{figure}
 
+\needlines{3}
 That main program results in an object file that
 contained a duplicate of the \addtoindex{section group} named
 my.f90.company.f90.CommonStuff.fh.654321 
 That main program results in an object file that
 contained a duplicate of the \addtoindex{section group} named
 my.f90.company.f90.CommonStuff.fh.654321 
@@ -712,6 +714,7 @@ because the included declarations are not independently
 visible as global entities.
 
 
 visible as global entities.
 
 
+\needlines{6}
 \subsubsection{C Example}
 
 The \addtoindex{C} example 
 \subsubsection{C Example}
 
 The \addtoindex{C} example 
@@ -855,6 +858,7 @@ L2:
 \label{fig:typesignaturecomputation1dwarfrepresentation}
 \end{figure}
 
 \label{fig:typesignaturecomputation1dwarfrepresentation}
 \end{figure}
 
+\needlines{3}
 In computing a signature for the type N::C, flatten the type
 \addtoindexx{type signature}
 description into a byte stream according to the procedure
 In computing a signature for the type N::C, flatten the type
 \addtoindexx{type signature}
 description into a byte stream according to the procedure
index 24e3b59..df34b70 100644 (file)
@@ -308,6 +308,7 @@ interpretation of the information contained directly in the
 \addtoindex{.debug\_info} or 
 \addtoindex{.debug\_types} section.
 
 \addtoindex{.debug\_info} or 
 \addtoindex{.debug\_types} section.
 
+\needlines{4}
 Multiple debugging information entries may share the same
 abbreviation table entry. Each compilation unit is associated
 with a particular abbreviation table, but multiple compilation
 Multiple debugging information entries may share the same
 abbreviation table entry. Each compilation unit is associated
 with a particular abbreviation table, but multiple compilation
@@ -763,7 +764,7 @@ encouraged to use \livelink{chap:DWFORMsdata}{DW\-\_FORM\-\_sdata} or
 unsigned integers respectively, rather than 
 \livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data}\textless n\textgreater.}
 
 unsigned integers respectively, rather than 
 \livelink{chap:DWFORMdata}{DW\-\_FORM\-\_data}\textless n\textgreater.}
 
-
+\needlines{4}
 \item \livelink{chap:exprloc}{exprloc} \\
 This is an unsigned LEB128 length followed by the
 number of information bytes specified by the length
 \item \livelink{chap:exprloc}{exprloc} \\
 This is an unsigned LEB128 length followed by the
 number of information bytes specified by the length
@@ -842,6 +843,7 @@ DWARF format, this offset is a 4\dash byte unsigned value;
 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
 in the 64\dash bit DWARF format, it is an 8\dash byte unsigned value
 (see Section \refersec{datarep:32bitand64bitdwarfformats}).
 
+\needlines{4}
 \item \livelink{chap:rangelistptr}{rangelistptr} \\
 This is an 
 \addtoindexx{section offset!in class rangelistptr value}
 \item \livelink{chap:rangelistptr}{rangelistptr} \\
 This is an 
 \addtoindexx{section offset!in class rangelistptr value}
@@ -1250,6 +1252,8 @@ Table \refersec{tab:attributeformencodings}.
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
 
+
+\needlines{6}
 \section{Variable Length Data}
 \label{datarep:variablelengthdata}
 \addtoindexx{variable length data|see {LEB128}}
 \section{Variable Length Data}
 \label{datarep:variablelengthdata}
 \addtoindexx{variable length data|see {LEB128}}
@@ -1312,7 +1316,7 @@ numbers.
 \addtoindexx{LEB128!examples}
 gives algorithms for encoding and decoding these forms.}
 
 \addtoindexx{LEB128!examples}
 gives algorithms for encoding and decoding these forms.}
 
-
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|l|l}
@@ -1851,6 +1855,7 @@ the
 \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in 
 Table \refersec{tab:inlineencodings}.
 
 \livelink{chap:DWATinline}{DW\-\_AT\-\_inline} attribute are given in 
 Table \refersec{tab:inlineencodings}.
 
+\needlines{8}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 \begin{longtable}{l|c}
@@ -1874,7 +1879,7 @@ Table \refersec{tab:inlineencodings}.
 
 % this clearpage is ugly, but the following table came
 % out oddly without it.
 
 % this clearpage is ugly, but the following table came
 % out oddly without it.
-\clearpage
+
 \section{Array Ordering}
 \label{datarep:arrayordering}
 
 \section{Array Ordering}
 \label{datarep:arrayordering}
 
@@ -1933,6 +1938,7 @@ Table \refersec{tab:discriminantdescriptorencodings}.
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
 
+\needlines{6}
 \section{Name Lookup Tables}
 \label{datarep:namelookuptables}
 
 \section{Name Lookup Tables}
 \label{datarep:namelookuptables}
 
@@ -2002,6 +2008,7 @@ Each set is terminated by an
 offset containing the value 0.
 
 
 offset containing the value 0.
 
 
+\needlines{6}
 \section{Address Range Table}
 \label{datarep:addrssrangetable}
 
 \section{Address Range Table}
 \label{datarep:addrssrangetable}
 
@@ -2122,6 +2129,7 @@ Table \refersec{tab:linenumberstandardopcodeencodings}.
 \end{centering}
 
 
 \end{centering}
 
 
+\needspace{10cm}
 The encodings for the extended opcodes are given in 
 \addtoindexx{line number opcodes!extended opcode encoding}
 Table \refersec{tab:linenumberextendedopcodeencodings}.
 The encodings for the extended opcodes are given in 
 \addtoindexx{line number opcodes!extended opcode encoding}
 Table \refersec{tab:linenumberextendedopcodeencodings}.
@@ -2164,7 +2172,6 @@ The encodings
 are given in 
 Table \refersec{tab:macinfotypeencodings}.
 
 are given in 
 Table \refersec{tab:macinfotypeencodings}.
 
-\clearpage
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
 
 \begin{centering}
 \setlength{\extrarowheight}{0.1cm}
@@ -2188,6 +2195,7 @@ Table \refersec{tab:macinfotypeencodings}.
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
 
+\needlines{7}
 \section{Call Frame Information}
 \label{datarep:callframeinformation}
 
 \section{Call Frame Information}
 \label{datarep:callframeinformation}
 
@@ -2377,6 +2385,7 @@ Table 41 \refersec{tab:integerrepresentationnames}.
 \end{longtable}
 \end{centering}
 
 \end{longtable}
 \end{centering}
 
+\needlines{6}
 \section{Type Signature Computation}
 \label{datarep:typesignaturecomputation}
 
 \section{Type Signature Computation}
 \label{datarep:typesignaturecomputation}
 
@@ -2414,10 +2423,17 @@ or namespace (including its trailing null byte).
 \item  Append to S the letter 'D', followed by the DWARF tag of
 the debugging information entry.
 
 \item  Append to S the letter 'D', followed by the DWARF tag of
 the debugging information entry.
 
-\item For each of the following attributes that are present in
-the debugging information entry, in the order listed below,
+\item For each of the attributes in
+Table \refersec{tab:attributesusedintypesignaturecomputation}
+that are present in
+the debugging information entry, in the order listed,
 append to S a marker letter (see below), the DWARF attribute
 code, and the attribute value.
 append to S a marker letter (see below), the DWARF attribute
 code, and the attribute value.
+
+\begin{table}[ht]
+\caption{Attributes used in type signature computation}
+\label{tab:attributesusedintypesignaturecomputation}
+\simplerule[\textwidth]
 \begin{center}
 \autocols[0pt]{c}{2}{l}{
 \livelink{chap:DWATname}{DW\-\_AT\-\_name},
 \begin{center}
 \autocols[0pt]{c}{2}{l}{
 \livelink{chap:DWATname}{DW\-\_AT\-\_name},
@@ -2470,6 +2486,8 @@ code, and the attribute value.
 \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
 }
 \end{center}
 \livelink{chap:DWATvtableelemlocation}{DW\-\_AT\-\_vtable\-\_elem\-\_location}
 }
 \end{center}
+\simplerule[\textwidth]
+\end{table}
 
 Note that except for the initial 
 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
 
 Note that except for the initial 
 \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute,
@@ -2616,6 +2634,7 @@ a type.}
 \end{itemize}
 
 
 \end{itemize}
 
 
+\needlines{4}
 \textit{Certain attributes are not included in the type signature:}
 
 \begin{itemize}
 \textit{Certain attributes are not included in the type signature:}
 
 \begin{itemize}
index 98aca2f..0b612a9 100644 (file)
@@ -51,7 +51,7 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 
 \renewcommand{\familydefault}{phv}  % font family helvetica
 
 
 \renewcommand{\familydefault}{phv}  % font family helvetica
 
-\newcommand{\docdate}{31 January 2013}
+\newcommand{\docdate}{3 February 2013}
 
 \newcommand{\dwf}{DWARF Debugging Information Format}
 
 
 \newcommand{\dwf}{DWARF Debugging Information Format}
 
@@ -254,15 +254,15 @@ escapeinside={\%*}{*)}     % if you want to add a comment within your code
 \include{programscope}                  \emptypage
 \include{dataobject}                    \emptypage
 \include{typeentries}                   \emptypage
 \include{programscope}                  \emptypage
 \include{dataobject}                    \emptypage
 \include{typeentries}                   \emptypage
-\include{otherdebugginginformation}
-\include{datarepresentation}            \emptypage
+\include{otherdebugginginformation} \emptypage
+\include{datarepresentation}            %\emptypage
 %  The \appendix toggles us into appendix chapters
 \appendix
 \include{attributesbytag}
 \include{debugsectionrelationships}     \emptypage
 \include{encodingdecoding}              \emptypage
 %  The \appendix toggles us into appendix chapters
 \appendix
 \include{attributesbytag}
 \include{debugsectionrelationships}     \emptypage
 \include{encodingdecoding}              \emptypage
-\include{examples}                      \emptypage
-\include{compression}                   \emptypage
+\include{examples}                      %\emptypage
+\include{compression}                   %\emptypage
 \include{sectionversionnumbers}
 \include{gnulicense}
 \printindex
 \include{sectionversionnumbers}
 \include{gnulicense}
 \printindex
index f094355..f6307cf 100644 (file)
@@ -1851,7 +1851,8 @@ float arr[square(9)]; // square() called and inlined
 \caption{Constant expressions: C++ source} \label{fig:constantexpressionscsource}
 \end{figure}
 
 \caption{Constant expressions: C++ source} \label{fig:constantexpressionscsource}
 \end{figure}
 
-\begin{figure}[h]
+
+\begin{figure}[!h]
 \begin{dwflisting}
 \begin{alltt}
         ! For variable mass
 \begin{dwflisting}
 \begin{alltt}
         ! For variable mass
@@ -1908,7 +1909,7 @@ Figure \refersec{fig:unicodecharacterexamplesource}
 can be described in DWARF as illustrated in 
 Figure \refersec{fig:unicodecharacterexampledwarfdescription}.
 
 can be described in DWARF as illustrated in 
 Figure \refersec{fig:unicodecharacterexampledwarfdescription}.
 
-\begin{figure}[h]
+\begin{figure}[!h]
 \begin{lstlisting}[numbers=none]
 // C++ source
 //
 \begin{lstlisting}[numbers=none]
 // C++ source
 //
@@ -1992,6 +1993,7 @@ E e1;
 \end{figure}
 
 
 \end{figure}
 
 
+\clearpage
 \section{Template Examples}
 \label{app:templateexample}
 
 \section{Template Examples}
 \label{app:templateexample}
 
@@ -2045,12 +2047,13 @@ with int in the instance. There exist situations where it is
 not possible for the DWARF to imply anything about the nature
 of the original template. 
 
 not possible for the DWARF to imply anything about the nature
 of the original template. 
 
+\needlines{10}
 Consider the C++ template source in
 Figure \refersec{fig:ctemplateexample2source}
 and the DWARF that can describe it in
 Figure \refersec{fig:ctemplateexample2dwarf}.
 
 Consider the C++ template source in
 Figure \refersec{fig:ctemplateexample2source}
 and the DWARF that can describe it in
 Figure \refersec{fig:ctemplateexample2dwarf}.
 
-\begin{figure}[h]
+\begin{figure}[!h]
 \begin{lstlisting}
 // C++ source
 //
 \begin{lstlisting}
 // C++ source
 //
@@ -2067,7 +2070,7 @@ Figure \refersec{fig:ctemplateexample2dwarf}.
     consume(obj);
 \end{lstlisting}
 \caption{C++ template example \#2: source}
     consume(obj);
 \end{lstlisting}
 \caption{C++ template example \#2: source}
-\label{ctemplateexample2source}
+\label{fig:ctemplateexample2source}
 \end{figure}
 
 \begin{figure}[h]
 \end{figure}
 
 \begin{figure}[h]
index 364847c..265546a 100644 (file)
@@ -591,6 +591,7 @@ do not know about these new opcodes to be able to skip them.
 Codes for vendor specific extensions, if any, are described
 just like standard opcodes.
 
 Codes for vendor specific extensions, if any, are described
 just like standard opcodes.
 
+\needlines{3}
 \item include\_directories (sequence of path names) \\
 Entries 
 \addtoindexx{include\_directories}
 \item include\_directories (sequence of path names) \\
 Entries 
 \addtoindexx{include\_directories}
@@ -879,6 +880,7 @@ opcode takes a single signed LEB128\addtoindexx{LEB128!signed}
 operand and adds that value to the line register of the
 state machine.
 
 operand and adds that value to the line register of the
 state machine.
 
+\needlines{4}
 \item \textbf{DW\-\_LNS\-\_set\-\_file} \\ 
 The \livetarg{chap:DWLNSsetfile}{DW\-\_LNS\-\_set\-\_file} opcode takes a single
 unsigned LEB128\addtoindexx{LEB128!unsigned} 
 \item \textbf{DW\-\_LNS\-\_set\-\_file} \\ 
 The \livetarg{chap:DWLNSsetfile}{DW\-\_LNS\-\_set\-\_file} opcode takes a single
 unsigned LEB128\addtoindexx{LEB128!unsigned} 
@@ -1025,7 +1027,7 @@ sets the op\_index register to 0.
 affect the address register add a delta to it. This instruction
 stores a relocatable value into it instead.}
 
 affect the address register add a delta to it. This instruction
 stores a relocatable value into it instead.}
 
-
+\needlines{4}
 \item \textbf{DW\-\_LNE\-\_define\-\_file} \\
 
 The \livetarg{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file} opcode takes four operands:
 \item \textbf{DW\-\_LNE\-\_define\-\_file} \\
 
 The \livetarg{chap:DWLNEdefinefile}{DW\-\_LNE\-\_define\-\_file} opcode takes four operands:
@@ -1403,7 +1405,7 @@ contain rules that describe whether a given register has been
 saved and the rule to find the value for the register in the
 previous frame.
 
 saved and the rule to find the value for the register in the
 previous frame.
 
-\clearpage
+\needlines{4}
 The register rules are:
 
 \begin{tabular}{lp{8cm}}
 The register rules are:
 
 \begin{tabular}{lp{8cm}}
@@ -1849,6 +1851,7 @@ the DWARF expression.
 regarding restrictions on the DWARF
 expression operators that can be used.}
 
 regarding restrictions on the DWARF
 expression operators that can be used.}
 
+\needlines{7}
 \item \textbf{DW\-\_CFA\-\_val\-\_expression} \\
 The \livetarg{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression} instruction takes two operands:
 an unsigned LEB128\addtoindexx{LEB128!unsigned} 
 \item \textbf{DW\-\_CFA\-\_val\-\_expression} \\
 The \livetarg{chap:DWCFAvalexpression}{DW\-\_CFA\-\_val\-\_expression} instruction takes two operands:
 an unsigned LEB128\addtoindexx{LEB128!unsigned} 
index 90ed30c..cff986a 100644 (file)
@@ -214,7 +214,7 @@ begin with the name of the compiler vendor or some other
 identifying character sequence that should avoid confusion
 with other producer values.
 
 identifying character sequence that should avoid confusion
 with other producer values.
 
-
+\needlines{4}
 \item  A \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} 
 attribute 
 \addtoindexx{identifier case attribute}
 \item  A \livelink{chap:DWATidentifiercase}{DW\-\_AT\-\_identifier\-\_case} 
 attribute 
 \addtoindexx{identifier case attribute}
@@ -496,6 +496,7 @@ a \livelink{chap:DWATname}{DW\-\_AT\-\_name} attribute
 need only be attached directly to the original
 \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry.)
 
 need only be attached directly to the original
 \livelink{chap:DWTAGnamespace}{DW\-\_TAG\-\_namespace} entry.)
 
+\needlines{4}
 Namespace and namespace extension entries may own 
 \addtoindexx{namespace extension entry}
 other
 Namespace and namespace extension entries may own 
 \addtoindexx{namespace extension entry}
 other
@@ -1072,6 +1073,7 @@ context is equivalent to using
 but more
 compact. However, these are not equivalent in general.}
 
 but more
 compact. However, these are not equivalent in general.}
 
+\needlines{5}
 \textit{The frame base for a procedure is typically an address fixed
 relative to the first unit of storage allocated for the
 procedure\textquoteright s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
 \textit{The frame base for a procedure is typically an address fixed
 relative to the first unit of storage allocated for the
 procedure\textquoteright s stack frame. The \livelink{chap:DWATframebase}{DW\-\_AT\-\_frame\-\_base} attribute
index 1cec42c..9f45b6e 100644 (file)
@@ -148,6 +148,7 @@ high order bit of a value of the given type from the high
 order bit of the storage unit used to contain that value.}
 \end{myindentpara}
 
 order bit of the storage unit used to contain that value.}
 \end{myindentpara}
 
+\needlines{5}
 \textit{In comparing 
 DWARF Versions 3 
 \addtoindexx{DWARF Version 3}
 \textit{In comparing 
 DWARF Versions 3 
 \addtoindexx{DWARF Version 3}
@@ -559,6 +560,7 @@ character. This is encoded in DWARF as:}
 \end{alltt}
 \end{dwflisting}
 
 \end{alltt}
 \end{dwflisting}
 
+\needlines{3}
 \textit{On the other hand}
 \begin{lstlisting}[numbers=none]                        
    volatile unsigned char * const restrict p;
 \textit{On the other hand}
 \begin{lstlisting}[numbers=none]                        
    volatile unsigned char * const restrict p;
@@ -1123,12 +1125,11 @@ attribute. If the beginning of the data member is the same as
 the beginning of the containing entity then neither attribute
 is required.
 
 the beginning of the containing entity then neither attribute
 is required.
 
+\needlines{4}
 For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute
 \addtoindexx{data member location attribute}
 there are two cases:
 For a \livelink{chap:DWATdatamemberlocation}{DW\-\_AT\-\_data\-\_member\-\_location} attribute
 \addtoindexx{data member location attribute}
 there are two cases:
-
 \begin{enumerate}[1.]
 \begin{enumerate}[1.]
-
 \item If the value is an integer constant, it is the offset
 in bytes from the beginning of the containing entity. If
 the beginning of the containing entity has a non-zero bit
 \item If the value is an integer constant, it is the offset
 in bytes from the beginning of the containing entity. If
 the beginning of the containing entity has a non-zero bit
@@ -2370,9 +2371,10 @@ the source program. The template alias entry also contains
 a
 \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute 
 whose value is a reference to the type
 a
 \livelink{chap:DWATtype}{DW\-\_AT\-\_type} attribute 
 whose value is a reference to the type
-named by the template alias. The template alias entry has
-the following child entries:
+named by the template alias. 
 
 
+\needlines{4}
+The template alias entry has the following child entries:
 \begin{enumerate}[1.]
 \item Each formal parameterized type declaration appearing
 in the template alias declaration is represented
 \begin{enumerate}[1.]
 \item Each formal parameterized type declaration appearing
 in the template alias declaration is represented