Changeset e55ca05 for doc/user/user.tex


Ignore:
Timestamp:
Apr 9, 2016, 10:04:50 AM (8 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
37218fc, df2be83
Parents:
9827c7ba
Message:

fix bibliography for manuals, refactor common LaTeX macros

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/user/user.tex

    r9827c7ba re55ca05  
    1111%% Created On       : Wed Apr  6 14:53:29 2016
    1212%% Last Modified By : Peter A. Buhr
    13 %% Last Modified On : Wed Apr  6 17:37:39 2016
    14 %% Update Count     : 34
     13%% Last Modified On : Fri Apr  8 11:40:53 2016
     14%% Update Count     : 42
    1515%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    1616
     
    4343% Names used in the document.
    4444
    45 \newcommand{\CFA}{C$\mathbf\forall$\xspace}     % set language symbolic name
    46 \newcommand{\CFL}{Cforall\xspace}               % set language text name
    47 \newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
    48 \def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
    4945\newcommand{\CS}{C\raisebox{-0.9ex}{\large$^\sharp$}\xspace}
    5046
     
    5248
    5349% Bespoke macros used in the document.
    54 
    55 \makeatletter
    56 % allow escape sequence in lstinline
    57 %\usepackage{etoolbox}
    58 %\patchcmd{\lsthk@TextStyle}{\let\lst@DefEsc\@empty}{}{}{\errmessage{failed to patch}}
    59 
    60 \renewcommand\small{%
    61    \@setfontsize\small{8.5}{11}%
    62    \abovedisplayskip 8.5pt \@plus 3pt \@minus 4pt
    63    \abovedisplayshortskip \z@ \@plus 2pt
    64    \belowdisplayshortskip 4pt \@plus 2pt \@minus 2pt
    65    \def\@listi{\leftmargin\leftmargini
    66                \topsep 4pt \@plus 2pt \@minus 2pt
    67                \parsep 2pt \@pluspt \@minuspt
    68                \itemsep \parsep}%
    69    \belowdisplayskip \abovedisplayskip
    70 }
    71 \usepackage{relsize}            % must be after change to small
    72 
    73 \renewcommand{\labelitemi}{{\raisebox{0.25ex}{\footnotesize$\bullet$}}}
    74 \renewenvironment{itemize}{\begin{list}{\labelitemi}{\topsep=5pt\itemsep=5pt\parsep=0pt}}{\end{list}}
    75 
    76 %  Reduce size of section titles
    77 \renewcommand\section{\@startsection{section}{1}{\z@}{-3.0ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\large\bfseries}}
    78 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}}
    79 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.5ex \@plus -1ex \@minus -.2ex}{1.0ex \@plus .2ex}{\normalfont\normalsize\bfseries}}
    80 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}{-2.0ex \@plus -1ex \@minus -.2ex}{-1em}{\normalfont\normalsize\bfseries}}
    81 
    82 % index macros
    83 \newcommand{\italic}[1]{\emph{\hyperpage{#1}}}
    84 \newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
    85 \newcommand{\see}[1]{\emph{see} #1}
    86 
    87 % Define some commands that produce formatted index entries suitable for cross-references.
    88 % ``\spec'' produces entries for specifications of entities.  ``\impl'' produces entries for their
    89 % implementations, and ``\use'' for their uses.
    90 
    91 %  \newcommand{\bold}[1]{{\bf #1}}
    92 %  \def\spec{\@bsphack\begingroup
    93 %             \def\protect##1{\string##1\space}\@sanitize
    94 %             \@wrxref{|bold}}
    95 \def\impl{\@bsphack\begingroup
    96           \def\protect##1{\string##1\space}\@sanitize
    97           \@wrxref{|definition}}
    98 \newcommand{\indexcode}[1]{{\lstinline$#1$}}
    99 \def\use{\@bsphack\begingroup
    100          \def\protect##1{\string##1\space}\@sanitize
    101          \@wrxref{|hyperpage}}
    102 \def\@wrxref#1#2{\let\thepage\relax
    103     \xdef\@gtempa{\write\@indexfile{\string
    104     \indexentry{#2@{\lstinline$#2$}#1}{\thepage}}}\endgroup\@gtempa
    105     \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
    106 %\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}}
    107 %\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}}
    108 
    109 % inline text and lowercase index: \Index{inline and lowercase index text}
    110 % inline text and as-in index: \Index[as-is index text]{inline text}
    111 % inline text but index with different as-is text: \Index[index text]{inline text}
    112 \newcommand{\Index}{\@ifstar\@sIndex\@Index}
    113 \newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
    114 \newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    115 
    116 \newcommand{\newtermFontInline}{\emph}
    117 \newcommand{\newterm}{\@ifstar\@snewterm\@newterm}
    118 \newcommand{\@newterm}[2][\@empty]{\lowercase{\def\temp{#2}}{\newtermFontInline{#2}}\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
    119 \newcommand{\@snewterm}[2][\@empty]{{\newtermFontInline{#2}}\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
    120 \makeatother
    121 
    122 % blocks and titles
    123 \newenvironment{quote2}{%
    124         \list{}{\lstset{resetmargins=true}\leftmargin=\parindent\rightmargin\leftmargin}%
    125         \item\relax
    126 }{%
    127         \endlist
    128 }% quote2
    129 \newenvironment{rationale}{%
    130   \begin{quotation}\noindent$\Box$\enspace
    131 }{%
    132   \hfill\enspace$\Box$\end{quotation}
    133 }%
    134 \newcommand{\define}[1]{\emph{#1\/}\index{#1}}
    135 \newcommand{\rewrite}{\(\Rightarrow\)}
    136 \newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent}
    137 \newcommand{\examples}{\paragraph{Examples}~\par\noindent}
    138 \newcommand{\semantics}{\paragraph{Semantics}~\par\noindent}
    139 \newcommand{\constraints}{\paragraph{Constraints}~\par\noindent}
    140 \newcommand{\predefined}{\paragraph{Predefined Identifiers}~\par\noindent}
    141 
    142 % BNF macros
    143 \def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
    144 \let\endsyntax=\endtrivlist
    145 \newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}
    146 \newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}
    147 \newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}}
    148 \newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}
    149 \newcommand{\opt}{$_{opt}$\ }
    150 
    151 % adjust varioref package with default "section" and "page" titles, and optional title with faraway page numbers
    152 % \VRef{label} => Section 2.7, \VPageref{label} => page 17
    153 % \VRef[Figure]{label} => Figure 3.4, \VPageref{label} => page 17
    154 \renewcommand{\reftextfaceafter}{\unskip}
    155 \renewcommand{\reftextfacebefore}{\unskip}
    156 \renewcommand{\reftextafter}{\unskip}
    157 \renewcommand{\reftextbefore}{\unskip}
    158 \renewcommand{\reftextfaraway}[1]{\unskip, p.~\pageref{#1}}
    159 \renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}}
    160 \newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}}
    161 \newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}
    162 
    163 % Go programming language
    164 \lstdefinelanguage{Golang}%
    165   {morekeywords=[1]{package,import,func,type,struct,return,defer,panic, recover,select,var,const,iota,},%
    166    morekeywords=[2]{string,uint,uint8,uint16,uint32,uint64,int,int8,int16, int32,int64,
    167                 bool,float32,float64,complex64,complex128,byte,rune,uintptr, error,interface},%
    168    morekeywords=[3]{map,slice,make,new,nil,len,cap,copy,close,true,false, delete,append,real,imag,complex,chan,},%
    169    morekeywords=[4]{for,break,continue,range,goto,switch,case,fallthrough,if, else,default,},%
    170    morekeywords=[5]{Println,Printf,Error,},%
    171    sensitive=true,%
    172    morecomment=[l]{//},%
    173    morecomment=[s]{/*}{*/},%
    174    morestring=[b]',%
    175    morestring=[b]",%
    176    morestring=[s]{`}{`},%
    177 }
    178 
    179 % CFA based on ANSI C
    180 \lstdefinelanguage{CFA}[ANSI]{C}%
    181 {morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto,
    182     _Bool,catch,catchResume,choose,_Complex,__complex,__complex__,__const,__const__,disable,dtype,enable,__extension__,
    183         fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,otype,restrict,_Static_assert,
    184         _Thread_local,throw,throwResume,trait,try,typeof,__typeof,__typeof__,},
    185   moredelim=**[is][\color{red}]{`}{`},
    186 }%
    187 
    188 \lstset{
    189 language=CFA,
    190 columns=flexible,
    191 basicstyle=\sf\relsize{-1},
    192 tabsize=4,
    193 xleftmargin=\parindent,
    194 escapechar=@,
    195 mathescape=true,
    196 keepspaces=true,
    197 showstringspaces=false,
    198 showlines=true,
    199 aboveskip=6pt,
    200 belowskip=4pt,
    201 literate={\\`}{\raisebox{0.3ex}{\ttfamily\upshape \hspace*{-2pt}`}}1, % escape \`, otherwise used to highlight in red
    202 %extendedchars=true,
    203 }%
    204 
    205 \makeatletter
    206 % replace/adjust listings characters that look bad in sanserif
    207 \lst@CCPutMacro
    208 \lst@ProcessOther{"22}{\lst@ttfamily{"}{\raisebox{0.3ex}{\ttfamily\upshape "}}} % replace double quote
    209 \lst@ProcessOther{"27}{\lst@ttfamily{'}{\raisebox{0.3ex}{\ttfamily\upshape '\hspace*{-2pt}}}} % replace single quote
    210 \lst@ProcessOther{"2D}{\lst@ttfamily{-}{\ttfamily\upshape -}} % replace minus
    211 \lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than
    212 \lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than
    213 \lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex
    214 \lst@ProcessOther{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore
    215 \lst@ProcessOther{"60}{\lst@ttfamily{`}{\raisebox{0.3ex}{\ttfamily\upshape \hspace*{-2pt}`}}} % replace backquote
    216 \lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde
    217 %\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
    218 \@empty\z@\@empty
    219 \makeatother
     50\input{common}
    22051
    22152\setcounter{secnumdepth}{3}     % number subsubsections
     
    45734404
    45744405
     4406\section{Rational Numbers}
     4407\label{s:RationalNumbers}
     4408
     4409Rational numbers are numbers written as a ratio, i.e., as a fraction, where the numerator (top number) and the denominator (bottom number) are whole numbers.
     4410When creating and computing with rational numbers, results are constantly reduced to keep the numerator and denominator as small as possible.
     4411
     4412\begin{lstlisting}
     4413// implementation
     4414struct Rational {
     4415        long int numerator, denominator;                                        // invariant: denominator > 0
     4416}; // Rational
     4417
     4418// constants
     4419extern struct Rational 0;
     4420extern struct Rational 1;
     4421
     4422// constructors
     4423Rational rational();
     4424Rational rational( long int n );
     4425Rational rational( long int n, long int d );
     4426
     4427// getter/setter for numerator/denominator
     4428long int numerator( Rational r );
     4429long int numerator( Rational r, long int n );
     4430long int denominator( Rational r );
     4431long int denominator( Rational r, long int d );
     4432
     4433// comparison
     4434int ?==?( Rational l, Rational r );
     4435int ?!=?( Rational l, Rational r );
     4436int ?<?( Rational l, Rational r );
     4437int ?<=?( Rational l, Rational r );
     4438int ?>?( Rational l, Rational r );
     4439int ?>=?( Rational l, Rational r );
     4440
     4441// arithmetic
     4442Rational -?( Rational r );
     4443Rational ?+?( Rational l, Rational r );
     4444Rational ?-?( Rational l, Rational r );
     4445Rational ?*?( Rational l, Rational r );
     4446Rational ?/?( Rational l, Rational r );
     4447
     4448// conversion
     4449double widen( Rational r );
     4450Rational narrow( double f, long int md );
     4451
     4452// I/O
     4453forall( dtype istype | istream( istype ) ) istype * ?|?( istype *, Rational * );
     4454forall( dtype ostype | ostream( ostype ) ) ostype * ?|?( ostype *, Rational );
     4455\end{lstlisting}
     4456
     4457
    45754458\bibliographystyle{plain}
    4576 \bibliography{/usr/local/bibliographies/pl.bib}
     4459\bibliography{cfa}
    45774460
    45784461
Note: See TracChangeset for help on using the changeset viewer.