\chapter{A chapter} \label{cha:a_chapter} This is the first paragraph of the Softcover template. It shows how to write a document in \PolyTeX, a subset of the \LaTeX\ typesetting language optimized for ebooks. For more information, see \href{http://manual.softcover.org/book}{\emph{The Softcover Book}} and the \href{http://example.com}{\PolyTeX\ source of the book} (\textbf{links not live yet}). To learn how to easily publish (and optionally sell) documents produced with Softcover, visit \href{http://softcover.io/}{Softcover.io}. Softcover is currently in private beta; go to \href{http://softcover.io/}{Softcover.io} to get an invitation. This is the \emph{second} paragraph, showing how to emphasize text.\footnote{This is a footnote. It is numbered automatically.} You can also make text \textbf{bold} or \textit{italicized} (which looks the same as emphasized text). \section{A section} \label{sec:a_section} This is a section. Because it has a label, we can refer to it as Section~\ref{sec:a_section}. The cross-reference will be automatically numbered and linked. There's another reference to this section in Section~\ref{sec:floats}, as well as one in Chapter~\ref{cha:another_chapter}. \subsection{Source code} \label{sec:source_code} This is a subsection. As usual, it can be referenced by label (Section~\ref{sec:source_code}). Note that the label starts with \kode{sec:}, not \kode{ssec:} or \kode{subsec:}. Any of these would work, but I find that sections often become subsections (and vice versa) when figuring out the structure of a book, and using \kode{sec:} to prefix them both saves having to change labels. Softcover comes with full support for syntax-highlighted source code: %= lang:ruby \begin{code} def hello puts "hello, world!" end \end{code} \noindent Softcover can highlight any language supported by \href{http://pygments.org/languages/}{Pygments} (which means most of them). You can also define \emph{code listings}, as seen in Listing~\ref{code:hello_world}. Such code listings are automatically numbered and linked. \begin{codelisting} \label{code:hello_world} \codecaption{``Hello, world!'' in Ruby.} %= lang:ruby \begin{code} def hello puts "hello, world!" end \end{code} \end{codelisting} You can indicate inline code with the \verb+\kode+ command, as in \kode{current\_\-user}. If you prefer a plainer version of the same thing, you can use ``typewriter text'', as in \texttt{current\_\-user}. For words whose hypenation isn't built in, you can indicate an optional hyphen using \verb+\-+ (Listing~\ref{code:hyphenation}), which will only be used if necessary to make a clean line break (and even then only when producing PDFs). You can also define global hyphenation rules in \texttt{custom.sty}, which includes a rule for hyphenating ``JavaScript'' (Listing~\ref{code:custom}). \begin{codelisting} \label{code:hyphenation} \codecaption{Adding an optional hyphen to \kode{current\_user}.} %= lang:latex \begin{code} current\_\-user \end{code} \end{codelisting} \begin{codelisting} \label{code:custom} \codecaption{Defining custom commands. \\ \filepath{custom.sty}} %= <<(custom.sty, lang: tex) \end{codelisting} Listing~\ref{code:hyphenation} also shows how to escape the underscore character using a backslash. This is necessary because plain underscores are reserved for math environments (Section~\ref{sec:mathematics}). \subsection{Mathematics} \label{sec:mathematics} Softcover supports full mathematical typesetting, including inline math, such as $\phi^2 - \phi - 1 = 0$, and centered math, such as \[ \phi = \frac{1+\sqrt{5}}{2}. \] It also supports cross-referenced equations, as in Eq.~\eqref{eq:golden_ratio} and Eq.~\eqref{eq:stokes_theorem}. \begin{equation} \label{eq:golden_ratio} \phi = \frac{1+\sqrt{5}}{2} \approx 1.618 \qquad{\text{The Golden Ratio}} \end{equation} \begin{equation} \label{eq:stokes_theorem} \int_\Omega d\omega = \int_{\partial\Omega} \omega \qquad{\text{Generalized Stokes's Theorem}} \end{equation} \section{Floats} \label{sec:floats} This is the second section. As we saw above above, the first section is Section~\ref{sec:a_section}. Softcover supports \href{http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions}{\emph{floats}} such as figures and tables, including numbered captions and linked cross-references. The defining quality of a float is that its placement isn't guaranteed (i.e., it ``floats'' in the document), so you shouldn't generally assume it will be placed immediately after the text that precedes it. (Such placement \emph{will} be the case with HTML-based output, but \emph{not} in PDFs, where \TeX's state-of-the-art float placement algorithm is in charge.) \subsection{Graphics and figures} \label{sec:graphics_and_figures} You can include raw graphics like this: \includegraphics{images/2011_michael_hartl.png} \noindent You can also include centered images: \image{images/2011_michael_hartl.png} \noindent Or include one with a box, like so: \imagebox{images/2011_michael_hartl.png} To turn an image into a figure, use the \kode{figure} environment (Figure~\ref{fig:the_dude}). \begin{figure} \imagebox{images/2011_michael_hartl.png} \caption{Some \href{http://michaelhartl.com/}{dude}.\label{fig:the_dude}} \end{figure} \subsection{Tables and tabular environments} \label{tables_and_tabular} Softcover supports raw tables via the \kode{tabular} environment. To make a tabular environment into a full-blown table, with a number and a caption, use the \kode{table} environment (Table~\ref{table:rails_actions}), which includes some special magic to make the font size nicer in PDFs. \bigskip \begin{tabular}{llll} \textbf{HTTP request} & \textbf{URL} & \textbf{Action} & \textbf{Purpose} \\ \hline \texttt{GET} & /users & \texttt{index} & page to list all users \\ \texttt{GET} & /users/1 & \texttt{show} & page to show user with id \texttt{1}\\ \texttt{GET} & /users/new & \texttt{new} & page to make a new user \\ \texttt{POST} & /users & \texttt{create} & create a new user \\ \texttt{GET} & /users/1/edit & \texttt{edit} & page to edit user with id \texttt{1} \\ \texttt{PATCH} & /users/1 & \texttt{update} & update user with id \texttt{1} \\ \texttt{DELETE} & /users/1 & \texttt{destroy} & delete user with id \texttt{1} \end{tabular} \begin{table} \begin{tabular}{llll} \textbf{HTTP request} & \textbf{URL} & \textbf{Action} & \textbf{Purpose} \\ \hline \texttt{GET} & /users & \texttt{index} & page to list all users \\ \texttt{GET} & /users/1 & \texttt{show} & page to show user with id \texttt{1}\\ \texttt{GET} & /users/new & \texttt{new} & page to make a new user \\ \texttt{POST} & /users & \texttt{create} & create a new user \\ \texttt{GET} & /users/1/edit & \texttt{edit} & page to edit user with id \texttt{1} \\ \texttt{PATCH} & /users/1 & \texttt{update} & update user with id \texttt{1} \\ \texttt{DELETE} & /users/1 & \texttt{destroy} & delete user with id \texttt{1} \end{tabular} \caption{The default \href{http://rubyonrails.org/}{Rails} actions.\label{table:rails_actions}} \end{table} \section{Command-line interface} Softcover comes with a command-line interface called \kode{poly}. To get more information, just run \kode{softcoverhelp}: %= lang:console \begin{code} $ softcoverhelp Commands: softcover build, build:all # Build all formats softcover build:epub # Build EPUB softcover build:html # Build HTML softcover build:mobi # Build MOBI softcover build:pdf # Build PDF softcover build:preview # Build book preview in all formats softcover config # View local config softcover config:add key=value # Add to your local config vars softcover epub:validate, epub:check # Validate EPUB with epubcheck softcover help [COMMAND] # Describe available commands... softcover login # Log into Softcover account softcover logout # Log out of Softcover account softcover new # Generate new book directory structure. softcover open # Open book on Softcover website (OS X) softcover publish # Publish your book on Softcover softcover publish:screencasts # Publish screencasts softcover server # Run local server \end{code} For additional help on a given command, run \kode{softcoverhelp }: %= lang:console \begin{code} $ softcoverhelp build Usage: softcoverbuild, build:all Options: -q, [--quiet] # Quiet output -s, [--silent] # Silent output Build all formats \end{code} \section{Miscellanea} This is the end of the template---apart from two mostly empty chapters (Chapter~\ref{cha:another_chapter} and Chapter~\ref{cha:yet_another_chapter}). In fact, let's include Chapter~\ref{cha:yet_another_chapter} in its entirety, just to see how mostly empty it is: %= <<(chapters/yet_another_chapter.tex) See \href{http://manual.softcover.org/book}{\emph{The Softcover Book}} to learn more about what Softcover can do.