Diseño de documentos, combinando paneles de texto y figuras.

Diseño de documentos, combinando paneles de texto y figuras.

Esta es una pregunta tan general que no pude encontrar fácilmente una publicación archivada que la abordara directamente.

Estoy interesado en utilizar LaTeX para diseñar una hoja de una cara que contenga figuras y pequeñas cantidades de texto. Tengo un diseño específico en mente que se muestra a continuación. Quiero poder dibujar estas regiones, recortar gráficos (en gráficos/logotipos) para que se ajusten a ellos y colocar texto que nunca sobrepase las regiones límite dibujadas.

maqueta de salida

¿Cómo se puede hacer eso? Estoy recurriendo al látex porque estoy generando archivos PDF y espero recorrer información y generar cientos de dichos documentos.

Respuesta1

Puedes usar elpaquete de textopara posicionar objetos (texto y figuras) en una página.

Respuesta2

A modo de experimento, y tomando como base la respuesta deFrank Mittelbachmencionado enScott H.comentario, decidí usar por primera vez elxcoffinspaquete, y aquí está el resultado (obviamente hay muchas mejoras que se pueden hacer, pero podría usarse como punto de partida):

\documentclass{article}
\usepackage[landscape,paperwidth=19cm]{geometry} 
\usepackage{xcolor} 
\usepackage{xcoffins}
\usepackage{lipsum}

\newlength\GraphWd
\setlength\GraphWd{2.5cm}

\pagestyle{empty}
\definecolor{mycolor}{RGB}{134,34,0}

\begin{document}

% upper coffins
\NewCoffin \result
\NewCoffin \Title
\NewCoffin \Date
\NewCoffin \Logo

% lateral info coffin
\NewCoffin \Info

% 10 small graph coffins
\NewCoffin \Graph
\NewCoffin \Graphi
\NewCoffin \Graphii
\NewCoffin \Graphiii
\NewCoffin \Graphiv
\NewCoffin \Graphv
\NewCoffin \Graphvi
\NewCoffin \Graphvii
\NewCoffin \Graphviii
\NewCoffin \Graphix
\NewCoffin \Graphx

% 1 wider graph coffin
\NewCoffin \LGraph

% filling the coffins
\SetHorizontalCoffin \result {}
\SetHorizontalCoffin \Graph {}

\SetHorizontalCoffin \Title {\Large\bfseries Document title}
\SetHorizontalCoffin \Date {\Large\bfseries Document date}
\SetHorizontalCoffin \Logo {\color{mycolor}\rule{4cm}{2cm}}
\SetVerticalCoffin\Info {4cm} {\noindent\raggedright\lipsum[6]}

\SetHorizontalCoffin \LGraph {\Large\color{mycolor}\rule{\dimexpr5\GraphWd+12pt\relax}{2cm}}

\SetHorizontalCoffin \Graphi {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphii {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphiii {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphiv {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphv {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphvi {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphvii {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphviii {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphix {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}
\SetHorizontalCoffin \Graphx {\Large\color{mycolor}\rule{\GraphWd}{\GraphWd}}

% put the smaller graph coffins in a 2x5 array inside \Graph
\JoinCoffins \Graph \Graphi
\JoinCoffins \Graph [\Graphi-vc,\Graphi-r] \Graphii[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphii-vc,\Graphii-r] \Graphiii[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphiii-vc,\Graphiii-r] \Graphiv[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphiv-vc,\Graphiv-r] \Graphv[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphi-hc,\Graphi-b] \Graphvi[hc,t](0pt,-3pt)
\JoinCoffins \Graph [\Graphvi-vc,\Graphvi-r] \Graphvii[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphvii-vc,\Graphvii-r] \Graphviii[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphviii-vc,\Graphviii-r] \Graphix[vc,l](3pt,0pt)
\JoinCoffins \Graph [\Graphix-vc,\Graphix-r] \Graphx[vc,l](3pt,0pt)

% put the wider graph below \Graph
\JoinCoffins \Graph[hc,b]  \LGraph[hc,t](0pt,-15pt)

%  put the upper coffins into \result
\JoinCoffins \result \Title
\JoinCoffins \result[\Title-b,\Title-l]  \Date [t,l](0pt,-8pt)
\JoinCoffins \result [vc,l]  \Logo [vc,r](\textwidth,0pt)
% add the \info coffin to \result
\JoinCoffins \result [b,l] \Info [t,l](10pt,-\baselineskip)

% add the \Graph coffin to \result
\JoinCoffins \result [\Info-t,\Info-r] \Graph [t,l](40pt,-1.5\baselineskip)

\noindent\TypesetCoffin \result

\end{document}

ingrese la descripción de la imagen aquí

xcoffinsEs realmente un buen paquete.

Respuesta3

En contexto,CapasSe utilizan con frecuencia para colocar material en una ubicación específica de la página. Por ejemplo, el diseño que busca se puede lograr de la siguiente manera.

\setuppapersize[A5,landscape]
\setuppagenumbering[location=] % No page numbering

\useMPlibrary[dum] % For placeholder pictures

\definelayer
  [header]
  [
    x=2mm,
    y=2mm,
  ]

\definelayer
  [info]
  [
    x=5mm,
    y=\the\dimexpr0.2\paperheight+15mm,
  ]

\definelayer
  [graph]
  [
    x=\the\dimexpr0.3\paperwidth-10mm,
    y=\the\dimexpr0.85\paperheight-5mm,
  ]

\definelayer
  [grid]
  [
    x=\the\dimexpr0.3\paperwidth-10mm,
    y=\the\dimexpr0.2\paperheight+15mm,
  ]

\setupbackgrounds[page][background={header, info, graph, grid}]

\setlayerframed
  [header]
  [
    width=\the\dimexpr\paperwidth-4mm,
    height=0.2\paperheight,
  ]
  {Document header}

\setlayerframed
  [info]
  [
    width=0.2\paperwidth,
    height=\the\dimexpr0.6\paperheight-5mm,
    align={flushleft, hyphenated},
  ]
  {Information about the content}

\setlayer
  [graph]
  {\externalfigure[dummy][width=0.7\paperwidth, height=0.1\paperheight]}


\def\GRAPH
    {\externalfigure[dummy]
                    [
                      width=\the\dimexpr0.1\paperwidth-0.4mm,
                      height=\the\dimexpr0.2\paperheight-0.5mm,
                    ]}
\setlayerframed
  [grid]
  [
    width=0.7\paperwidth,
    height=0.5\paperheight,
    %frame=off,
  ]
  {
    \startTABLE[offset=1mm]
      \NC \GRAPH \NC \GRAPH \NC \GRAPH \NC \GRAPH \NC \GRAPH \NC \NR
      \NC \GRAPH \NC \GRAPH \NC \GRAPH \NC \GRAPH \NC \GRAPH \NC \NR
    \stopTABLE
  }

\starttext

% Insert an empty page, with only the background layers.
\null

\stoptext

lo que da

ingrese la descripción de la imagen aquí

Respuesta4

Debo decir que es mejor ensamblar gráficos en un panel obvio con wrapfig. Alinear el logotipo en la parte superior fue difícil, sin embargo, descubrí que el paquete fancyhdrfuncionó tremendamente bien y solo se requirió la siguiente línea:

\fancyheader[R]{\includegraphics{logo.jpg}}

información relacionada