2

I'm using the cv4tw package to produce a CV. This package provides a \story command for typesetting individual CV entries; one of its arguments is a label which appears on the left, and most of the other arguments get typeset to the right of that label. Both the left- and right-hand parts are set inside minipage environments.

I need to include several long publication lists in the CV, for which I use biblatex's \printbibliography inside a \story command (or my own simplified adaptation of it shown below). The problem is that the minipage environment in which the bibliography appears doesn't allow page breaks. If a publication list is too long for the page, the whole thing gets pushed to the next page, and even then the whole list may not fit on the page.

How can I typeset bibliographies in a cv4tw document such that they match the default \story style, but allow bibliographies to be automatically broken across pages? I am thinking that the best way to do it would be to define a list-like environment which emulates the look of \story, though everything I've tried (such as adapting the cvlist environment from the currvita package) results in strange spacing.

Here is a minimal working example showing the problem. (The \publist command is an adaptation of the default \story command.)

\RequirePackage[bibstyle=authoryear,sorting=ydnt]{biblatex}
\documentclass[a4paper,11pt]{cv4tw}
\setlength\bibitemsep{1.5\itemsep}
\usetheme[minuit]{sharp}\firstname{John}\lastname{Doe}
\addbibresource{biblatex-examples.bib}

% Publication list, modelled after cv4tw's \story command
\newcommand*{\publist}[2]{
  \begin{flushleft}
    \begin{minipage}[t]{\cvleftwidth}
      {\mystyle[cvstorydatelocation] #1}
    \end{minipage}
    \begin{minipage}[t]{\cvrightwidth}
      \vspace*{-0.7em}
      \begin{refsection}%
        \nocite{#2}%
        \begin{sloppypar}%
          \mystyle[cvstoryshort]%
          \renewcommand{\bibfont}{\mystyle[cvstoryshort]}%
          \printbibliography[heading=none]%
        \end{sloppypar}%
      \end{refsection}%
    \end{minipage}
  \end{flushleft}
}

\begin{document}
\section{Publications}
\publist{Refereed journal articles}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\publist{Articles in refereed conference proceedings}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\publist{Articles I wrote just for the heck of it}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\end{document}
Psychonaut
  • 3,142
  • I have no direct answer but the following links might be helpful perhaps: https://tex.stackexchange.com/questions/271410/how-to-make-minipage-spanning-multiple-pages https://tex.stackexchange.com/questions/245937/minipage-with-page-break – HATEthePLOT Feb 01 '16 at 22:39

1 Answers1

1

I suppose one hackish way might be along these lines:

\newlength\cvleftbibindent
\setlength{\cvleftbibindent}{\dimexpr \cvleftwidth + \bibindent\relax}

\newcommand{\xpublist}[2]{%
  \begin{sloppypar}% as in original
      \begin{refsection}
        \nocite{#2}
        \renewcommand{\bibfont}{\mystyle[cvstoryshort]}%
        \defbibenvironment{bibliography}
        {\list
          {}
          {\setlength{\leftmargin}{\cvleftbibindent}%
            \setlength{\itemindent}{-15pt}% <-- change as needed
            \setlength{\itemsep}{\bibitemsep}%
            \setlength{\parsep}{\bibparsep}}}
        {\endlist}%
        {\item}%
        \raisebox{-1.65\baselineskip}[0pt][0pt]{%
          \parbox[t][0pt]{\cvleftwidth}{%
            \raggedright\mystyle[cvstorydatelocation] #1}}%
        \nobreak
        \printbibliography[heading=none]%
      \end{refsection}
  \end{sloppypar}
}

I say hackish because of how the 'headings' are set (viz, in an ad hoc manner). However, it works as far as I can tell.

Complete example:

\RequirePackage[bibstyle=authoryear,sorting=ydnt]{biblatex}
\documentclass[a4paper,11pt]{cv4tw}
\setlength\bibitemsep{1.5\itemsep}
\usetheme[minuit]{sharp}\firstname{John}\lastname{Doe}
\addbibresource{biblatex-examples.bib}

% Publication list, modelled after cv4tw's \story command
\newcommand*{\publist}[2]{
  \begin{flushleft}
    \begin{minipage}[t]{\cvleftwidth}
      {\mystyle[cvstorydatelocation] #1}
    \end{minipage}
    \begin{minipage}[t]{\cvrightwidth}
      \vspace*{-0.7em}
      \begin{refsection}%
        \nocite{#2}%
        \begin{sloppypar}%
          \mystyle[cvstoryshort]%
          \renewcommand{\bibfont}{\mystyle[cvstoryshort]}%
          \printbibliography[heading=none]%
        \end{sloppypar}%
      \end{refsection}%
    \end{minipage}
  \end{flushleft}
}

\newlength\cvleftbibindent
\setlength{\cvleftbibindent}{\dimexpr \cvleftwidth + \bibindent\relax}

\newcommand{\xpublist}[2]{%
  \begin{sloppypar}% as in original
      \begin{refsection}
        \nocite{#2}
        \renewcommand{\bibfont}{\mystyle[cvstoryshort]}%
        \defbibenvironment{bibliography}
        {\list
          {}
          {\setlength{\leftmargin}{\cvleftbibindent}%
            \setlength{\itemindent}{-15pt}% <-- change as needed
            \setlength{\itemsep}{\bibitemsep}%
            \setlength{\parsep}{\bibparsep}}}
        {\endlist}%
        {\item}%
        \raisebox{-1.65\baselineskip}[0pt][0pt]{%
          \parbox[t][0pt]{\cvleftwidth}{%
            \raggedright\mystyle[cvstorydatelocation] #1}}%
        \nobreak
        \printbibliography[heading=none]%
      \end{refsection}
  \end{sloppypar}
}


\begin{document}
\section{Publications}
\publist{Refereed journal articles}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\publist{Articles in refereed conference proceedings}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\publist{Articles I wrote just for the heck of it}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}


\xpublist{Refereed journal articles}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\xpublist{Articles in refereed conference proceedings}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}
\xpublist{Articles I wrote just for the heck of it}{markey,cotton,cicero,brandt,wilde,shore,salam,reese,pines,moore,massa,maron,jaffe,iliad,hyman,doody,aksin,yoon,geer}


\end{document}
jon
  • 22,325
  • Your \xpublist leads with too much vertical space as compared to \story and my \publist, but that's easily fixed by adding something like \vspace*{-4ex} to the beginning of the command definition. – Psychonaut Feb 03 '16 at 08:21