Agregar columna multicols en la tabla de contenido

Agregar columna multicols en la tabla de contenido

¿Es posible agregar la columna de una sección/subsección en un entorno multicol a la tabla de contenido?

La tabla de contenido se ve así en este momento.

1. Headline 1 ......... 1 % Shows only the page
2. Headline 2 ......... 1
3. Headline 3 ......... 1

Pero quiero que se vea así

1. Headline 1 ......... 1.1 % <page>.<column>
2. Headline 2 ......... 1.3
3. Headline 3 ......... 1.5

Aquí hay un ejemplo mínimo, que debe ampliarse:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper, landscape, margin=3cm]{geometry}
\usepackage{lipsum} 
\usepackage{multicol}

\begin{document}
\begin{multicols*}{5}

\tableofcontents
\section{Headline 1}
\lipsum[1-3]

\section{Headline 2}
\lipsum[4-6]

\section{Headline 3}
\end{multicols*}

\end{document}

Respuesta1

Lo siguiente hace lo que quieres. Necesita algunas ejecuciones (3) para mostrar todo correcto. La opción colactiones necesaria para que el comando \docolactiony el parche funcionen.

Nueva respuesta para un número arbitrario de columnas.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lipsum} 
\usepackage[colaction]{multicol}
\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}
\usepackage{etoolbox}

\makeatletter
\newcounter{brnk@col@count}
\renewcommand*\addcontentsline[3]
  {%
    \addtocontents{#1}
      {%
        \protect\contentsline{#2}{#3}
          {\thepage\ifnum\doublecol@number>0\relax.\string\brnk@cur@col\fi}%
      }%
  }
\def\brnk@patch@last
  {%
    \stepcounter{brnk@col@count}%
    \protected@write\@auxout{}%
      {%
        \string\@writefile{toc}%
          {\string\def\string\brnk@cur@col{\arabic{brnk@col@count}}}%
      }%
  }
\def\brnk@patch@else
  {%
    \ifmc@firstcol
      \setcounter{brnk@col@count}{0}%
    \fi
    \brnk@patch@last
  }
\def\brnk@patch@error
  {%
    \GenericError{}
      {Patching of \string\mc@col@status@write\space failed}
      {%
        Make sure `colaction` was set as an option for `multicol`.%
        \MessageBreak
        Else you're screwed, don't use the code provided here.\MessageBreak%
      }
      {No further help available.}%
  }
\pretocmd\mc@lastcol@status@write{\brnk@patch@last}{}{\brnk@patch@error}
\pretocmd\mc@col@status@write{\brnk@patch@else}{}{\brnk@patch@error}
\makeatother

\begin{document}
\begin{multicols*}{5}

\tableofcontents
\section{Headline 1}
\lipsum[1-2]

\section{Headline 2}
\lipsum[3]

\section{Headline 3}
\lipsum[4-7]

\subsection{Subsection 1}
\lipsum[8]
\subsection{Subsection 2}
\lipsum[9]
\end{multicols*}
\section{Headline 4}
\lipsum[5]
\begin{multicols*}{2}
\section{Headline 5}
\lipsum[6]
\end{multicols*}

\end{document}

ingrese la descripción de la imagen aquí


Respuesta original para solo 3 columnas.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{lipsum} 
\usepackage[colaction]{multicol}

\makeatletter
\renewcommand*\addcontentsline[3]{%
  \def\brnk@column{}%
  \ifnum\doublecol@number>0
    \docolaction
      [5]
      {\def\brnk@column{.1}}
      {\def\brnk@column{.2}}
      {\def\brnk@column{.3}}%
  \fi
  \addtocontents{#1}{\protect\contentsline{#2}{#3}
    {\thepage\brnk@column}}}
\makeatother

\begin{document}
\begin{multicols*}{3}

\tableofcontents
\section{Headline 1}
\lipsum[1-2]

\section{Headline 2}
\lipsum[3]

\section{Headline 3}
\lipsum[4]
\end{multicols*}
\section{Headline 4}
\lipsum[5]
\begin{multicols*}{2}
\section{Headline 5}
\lipsum[6]
\end{multicols*}

\end{document}

TdC resultante:

ingrese la descripción de la imagen aquí

información relacionada