1

Disclaimer: I'm a complete newb at LaTeX. I'm a programmer, used to writing documentation in Markdown, so when I decided to make a book for my wife, LaTeX appealed to me because I can focus on the text first, and not use a heavy word processor, etc.

I want to make a "memories" book that will have three very distinct styles in it:

  1. Chapters that look like an email newsletter that we used to send out
  2. Chapters that are basically photo albums
  3. A section containing chapters that look more like a traditional book or novel: a collection of short stories

The first two would be alternating: basically the first half of the book would be "newsletter", "photo album", "newsletter", "photo album", and so on ... mimicking an email newsletter we sent to family in our first few years of marriage. Then the second half of the book would be a collection of short stories - with barely any pictures.

I've written a couple hundred pages of content, using a basic book format from a LaTeX quickstart, and it's making a PDF. But now I want to start actually doing the book design ... but I can't find where to start. Here are some of the questions I have:

  1. How do I start making a custom style for the newsletter-style sections of the book? I've included a screenshot below of a mockup of the style, but here are the basic points:
    • It will probably use different typesetting than the rest of the book to make it "feel" more like an email newsletter than a book
    • It needs to have a two-column layout (as seen in pic) - main column, and then a sidebar with smaller callout boxes of content, but then be followed by a one-column layout again for the remainder of the "email". Where can I find advice on making a custom layout like that?
  2. Would you even produce this as one book in LaTeX? Or should I produce it as separate PDFs that I just join together before sending to the printer? (likely using Lulu if that makes a difference, although open to suggestions there, too)

Thanks!

Example of the "newsletter" style used in parts of the book:

example of the newsletter style I'm going for in pats of the book

  • you can use the paracol package. – touhami Mar 11 '18 at 17:34
  • Where shall your pages break, or is one newsletter always a full page? And are the numbers of boxes constant or do they change? Are the headings supposed to show up in the ToC? What I personally would do (and did) is to define the basic layout with TikZ and then fill the content with self defined macros. – TobiBS Mar 11 '18 at 17:37
  • @TobiBS thanks for all the great questions! The newsletters may be one or more pages, but wherever they end I'll clear a page - in other words, they won't be on the same page as another section. Really, no two "styles" will be on the same page. I think the newsletter headings would be excluded from the TOC - I'm doing that now with \section*{Some Newsletter Heading}. I'll look into TikZ and paracol. – Jeremy Thomerson Mar 11 '18 at 20:56
  • @JeremyThomerson my experience with TikZ for layouting was for a repeating layout on full pages, without page-breaks in between. But it will nevertheless be very useful for the graphical part of your design. At which occasions are page breaks allowed? Only after a box is complete, or also inside a box? I think I will show a basic example in an answer for a single page with TikZ. – TobiBS Mar 11 '18 at 21:33
2

Just to give you an idea, how you can start this layout with TikZ:

Example of your newsletter which is generated by:

\documentclass[a4paper]{report}

\usepackage{tikz,lipsum}
\usetikzlibrary{calc}

\begin{document}

\newlength{\lmargin}
\setlength{\lmargin}{0.5cm}

\newlength{\rmargin}
\setlength{\rmargin}{0.5cm}

\newlength{\firstcol}
\setlength{\firstcol}{4cm}

\newlength{\secondcol}
\setlength{\secondcol}{15cm}

\begin{tikzpicture}[remember picture, overlay]
\coordinate(headspace) at (0cm,-1cm);
\coordinate(linespace) at (0cm,-1cm);
\coordinate(leftmargin) at (\lmargin,0cm);
\coordinate(rightmargin) at (-\rmargin,0cm);
\coordinate(innermargin) at (1cm,0cm);
\coordinate(firstcolumn) at (\firstcol,0cm);
\coordinate(secondcolumn) at (\secondcol,0cm);

\node[anchor=north west](tagline) at ($(current page.north west) + (leftmargin)$) {Tagline for this email update};

\node[anchor=north east](browserlink) at ($(current page.north east) + (rightmargin)$) {View this email in your browser};

\draw ($(current page.north west) + (headspace) + (leftmargin)$) -- ($(current page.north east) + (headspace) + (rightmargin)$);

\node[inner sep=0pt,anchor=north west](headpic) at ($(current page.north west) + (leftmargin) + (headspace) + (linespace)$) {\includegraphics[width=\firstcol]{bear.jpg}};
\node[anchor=north,inner sep=0cm,text width=\firstcol](headtext) at (headpic.south){This is some caption for the headline picture.};

\node[anchor=north,inner sep=0.5cm,text width=\firstcol-1cm,fill=black!20,draw](boxtext) at (headtext.south){\Large \textbf{Fast Facts}

\normalsize
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras porta, nibh eget maximus faucibus, ex massa dapibus mauris, commodo rhoncus mauris ipsum vel metus.

Nam lacus urna, finibus eu mi a, euismod egestas turpis.};




\node[inner sep=0pt,anchor=north east,text width=\secondcol](headpic) at ($(current page.north east) + (rightmargin) + (headspace) + (linespace)$) {\Large \textbf{Heading}

Donec tempor quis libero mollis euismod. Proin tincidunt justo a odio gravida varius. Mauris aliquam iaculis mauris non venenatis. Cras aliquet ex aliquet quam scelerisque, vel maximus sapien dignissim. Maecenas pretium odio risus, id aliquet sapien egestas eget. Fusce sapien nunc, fringilla congue ante quis, ultrices lacinia velit. Fusce non elit libero. Curabitur imperdiet mauris sed ornare ornare. Sed pharetra scelerisque arcu, non aliquam neque sodales blandit.

\Large \textbf{Heading}

Maecenas mollis ultricies orci at varius. Nunc consectetur, est sed dapibus sollicitudin, justo arcu scelerisque lectus, sit amet interdum ex nulla varius metus. Integer cursus nisl id elit ultrices porta. Aliquam finibus nisl quis convallis rutrum. Pellentesque ullamcorper felis nisl, in tempor quam accumsan in. Mauris non maximus lorem, id ultricies erat. Proin et purus sed orci tempor viverra sed in lacus. Nulla in tempus lacus. Nam lacinia egestas turpis, id condimentum nunc venenatis id. Aenean pharetra quam eu consectetur aliquam. Nulla vestibulum sollicitudin consectetur. Nullam viverra facilisis luctus. Donec sit amet mattis enim, in luctus nibh. Proin erat lorem, elementum eget magna convallis, bibendum ornare dolor. Duis nibh ligula, accumsan a pellentesque et, aliquam at ipsum.};

\draw ($(current page.north west) + (headspace) + (linespace) + (leftmargin) + 0.5*(innermargin) + (firstcolumn)$) -- ++(0cm,-15cm);


\end{tikzpicture}

\end{document}
2

Coming a bit late to the party. This is also a TikZ approach, though I use geometry.sty to do some of the heavy lifting. I resurrected and altered a file for newsletters that I've used in the past. I've commented the code sufficiently (I hope) to help out. At some point I'll automate this a bit more, but this is a start. The font 'STIX Two Text' (free, https://sourceforge.net/projects/stixfonts/) is very nice, so this shows it off a bit...

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = XeLaTeX

\documentclass[10pt]{article}

\usepackage{xcolor}
\usepackage{graphicx}
\usepackage{fontspec}
\usepackage[% Default for pages 2 through the end 
    textwidth=4.5in,
    bottom=1.0in,
    top=0.75in,
    papersize={6.5in,8.5in}
    ]{geometry}
\usepackage{tikz} %% drawing
\usepackage{kantlipsum} %% test text
\usepackage{tikzpagenodes} %% page-specific coordinates
\usepackage{eso-pic} %% Puts things in the background (among other things)
\usepackage{tikzducks} %% Very cute 
\usepackage{xparse} %% More flexible programming
\usepackage{etoolbox} %% for lrbox* 

\usetikzlibrary{positioning,calc}

\newsavebox{\margbox}

%% Necessary because the minipage in \margbox does not survive outside the environment.
%% Requires resetting the box to empty if necessary.

\cslet{lrbox*}\lrbox
\expandafter\patchcmd\csname lrbox*\endcsname{\setbox}{\global\setbox}{}{}
\cslet{endlrbox*}\endlrbox

\setmainfont{STIX Two Text}

% Puts text (or anything else) in boxes for the first page.
\newcommand{\margintext}[2][]{%
    \tikz \node[text width=1.25in,
        draw,
        fill=gray!20] {%
            \if###1##
            \else
                \begingroup
                    \bfseries
                    \large
                    \strut#1\strut%
                    \par
                \endgroup
            \fi
            \strut
            #2%
            \strut};%
}

%% Sets up the margin material, and the rules for the page.
\NewDocumentEnvironment{firstpagemargin}{O{The Irreflective Gazette}}{% The optional argument changes the title
    \AddToShipoutPicture*{\tikz[remember picture,overlay] {%
        \draw[thick,purple] ($(current page text area.north west) +(-1.6in,0.25in)$)coordinate (X1) -- 
            (X1 -| current page text area.north east);
        \draw[thick] ($(current page text area.north west) + (-7pt,5pt)$) coordinate (X2) --
            (X2 |- current page text area.south west);
        }%
    }%
    \begin{lrbox*}{\margbox}
        \begin{minipage}{1.4in}
        \small
        \raggedright
}{%
        \end{minipage}%
    \end{lrbox*}%
    \AddToShipoutPicture*{%
        \tikz[remember picture,overlay]
            \node[%
                yshift=4pt,
                text width=1.4in,
                inner sep=0pt, 
                left=12pt of current page text area.north west,
                anchor=north east] {\usebox{\margbox}};%
    }%
}

%% This sets up the geometry of the first page
%% Optional argument is for title. Use empty optional argument [] for no title
%% Replace "The Inky-Dinky Ducky Times" for a different default.
\newcommand{\startfirstpage}[1][The Inky-Dinky Ducky Times]{%
    \newgeometry{textwidth=4in,right=0.45in,top=0.75in,bottom=0.75in}%
    \thispagestyle{empty}%
    \if###1##
    \else
        \begingroup
            \LARGE
            \bfseries
            \scshape
            \noindent#1
            \par
        \endgroup
    \fi
}


%% This sets up pages after the first page
\newcommand{\startmorepages}{%
    \newpage
    \restoregeometry
    \AddToShipoutPicture{\tikz[remember picture,overlay] 
    \draw[fill=black!20,fill=gray!20] 
        ($(current page text area.south west)+(-0.5in,-10pt)$) rectangle 
        ($(current page text area.north east)+(0.5in,3pt)$);}
}

\frenchspacing

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\startfirstpage %% This sets up the geometry of the page and does away with the page number

% Put anything here that is to appear in the 'margin':
\begin{firstpagemargin} 
    \margintext{%
        \begingroup
            \centering%
            \begin{tikzpicture}
                \duck
            \end{tikzpicture}
            \par
        \endgroup
        And a caption for the duck.
    }

    \medskip

    \margintext[Heading One]{This is some text that will go here.
    This is a bunch of bla bla bla that could go on and on and on forever, seemingly.}

    \medskip

    \margintext[Heading Two]{This is some more text that will go here. bla bla bla.}
\end{firstpagemargin}

\section*{This is the begining} %% Use \section* for no section numbers
\noindent\kant[1]

\section*{This is the next thing}
\noindent\kant[11]

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\startmorepages %% sets up pages 2 thru the end

\section*{Kant you see?}
\kant[2-3]

\section*{And furthermore\dots}
\kant[4]

\section*{Yet more bla bla bla}
\kant[5]

\newpage

\section*{And finally\dots}
\kant[6]

\end{document}

Page 1

Pages 2-3

Page 4

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.