Saltar al contenido

¿Cómo puedo hacer una cuadrícula de página perfecta que se ajuste a mi página para fines de medición en TikZ?

Después de de nuestra prolongada selección de datos hemos podido solucionar esta contratiempo que suelen tener ciertos usuarios. Te regalamos la respuesta y nuestro deseo es resultarte de gran apoyo.

Solución:

Tenga en cuenta que es posible que los anchos de línea no se vean ni siquiera en los PNGS publicados. Este es un artefacto de una combinación de visor de PDF / pantalla pequeña y no tiene nada que ver con el PDF real. Solo afecta a mis recortes de PNG.

Creo que esta solución satisface los diversos desiderata:

  • Puede adaptarse a otros tamaños de papel ajustando las definiciones de steps.
  • La esquina noroeste del papel está en el origen y las líneas de la cuadrícula se alinean con las dimensiones físicas de la página en el sentido de que las esquinas noroeste de un cuadrado pequeño y un cuadrado grande de la cuadrícula están alineadas con el norte. -esquina oeste de la página.
    página con cuadrícula
    origen noroeste
  • La cuadrícula se superpone a otros contenidos de la página, incluidos tikzpictures, incluso si estos usan overlay, remember picture ellos mismos.
    imagen de superposiciones de cuadrícula
  • showgrid se puede especificar en cualquier lugar de la página donde se requiera la cuadrícula, incluso antes de cualquier tikzpictures, incluso si ellos mismos usan overlay, remember picture.
  • La cuadrícula se muestra solo en la (s) página (s) que se solicita. No se utilizará ninguna cuadrícula para la página siguiente. (Pero sería fácil adaptar esto para que se muestre en cada página o lo que sea. Consulte la documentación de atbegshi.)

Dibujé la cuadrícula a mano, dibujando las líneas horizontales y verticales por separado. Yo uso el backgrounds biblioteca para asegurarse de que las líneas más claras no se dibujen sobre las líneas más oscuras (lo que parece bastante extraño).

yo suelo atbegshi para asegurarse de que la cuadrícula se coloque encima de todo el contenido de la página.

documentclass[a4paper]article
usepackagetikz
usetikzlibrarycalc
usetikzlibrarybackgrounds
usepackageanyfontsize
newcommandshowgrid%
  AtBeginShipoutNextAtBeginShipoutAddToBoxForeground%
      begintikzpicture
        [
          overlay,
          remember picture,
          inner sep=0pt,
          outer sep=0pt,
          minor line/.style=help lines, draw=gray!25, on background layer,
          major line/.style=help lines, draw=gray,
        ]
        foreach step in 0,...,210 
          pgfmathsetmacrogridlineconfigifthenelse(equal(int(mod(step,10)),0),"major line","minor line")%
          draw [gridlineconfig] ($(current page.north west) + (step mm,0)$) -- ($(current page.south west) + (step mm,0)$);
        
        foreach step in 0,...,297 
          pgfmathsetmacrogridlineconfigifthenelse(equal(int(mod(step,10)),0),"major line","minor line")%
          draw [gridlineconfig] ($(current page.north west) - (0,step mm)$) -- ($(current page.north east) - (0,step mm)$);
          node [anchor=north] at ($ (current page.north west) + (step mm,0) $) fontsize12selectfont step;
          node [anchor=west] at ($ (current page.north west) - (0,step mm) $) fontsize12selectfont step;
        
      endtikzpicture
    %
  %

usepackageatbegshi

begindocument
  thispagestyleempty
  showgrid
  begintikzpicture[overlay,remember picture,every node/.style=fill=red,inner sep=0pt,outer sep=0pt]%
    node [minimum width=2cm,minimum height=2cm] at (current page.center) ;
  endtikzpicture
enddocument

El comando AddToShipoutPictureFG* definido por el paquete eso-pic establece su contenido en la parte superior de la página actual. Además, es posible calcular el número necesario de etiquetas en las direcciones xey según el tamaño del papel.

documentclass[a5paper]article
%usepackagefontspec % commented to speed up compilation
usepackageblindtext% dummy text
usepackagetikz
usepackageanyfontsize
usepackageeso-pic

newcommandshowgrid%
  AddToShipoutPictureFG*%
    begintikzpicture[overlay,remember picture,
        thin,nodes=font=fontsize12selectfont,
        yshift=paperheight% origin is in the upper left corner
        ]
      draw[gray!25,step=1mm](current page.south west)grid(current page.north east);
      draw[blue!30!gray,step=10mm](current page.south west) grid(current page.north east);
      pgfmathtruncatemacroxmaxsteppaperwidth/1mm% calculate needed steps in x direction
      pgfmathtruncatemacroymaxsteppaperheight/1mm% calculate needed steps in y direction
      foreach step in 0,1,...,xmaxstep
        node [anchor=north] at ([xshift=step mm]current page.north west) step;
      foreach step in 0,1,...,ymaxstep
        node [anchor=west] at ([yshift=-step mm]current page.north west) step;
%        node[fill=red]at(0,0);% to show the origin
    endtikzpicture%
  %


begindocument
blindtext[2]
showgrid
tikz[overlay,remember picture]node[minimum size=2cm,fill=red] at (current page.center) ;
blinddocument
showgrid
blinddocument
enddocument

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


Con paquete scrlayer puede definir la cuadrícula como un nuevo estilo de página.

documentclass[a5paper]article
%usepackagefontspec % commented to speed up compilation
usepackageblindtext% dummy text
usepackagetikz
usepackageanyfontsize

usepackagescrlayer
DeclareNewLayer[foreground,page,
  contents=%
  begintikzpicture[thin,nodes=font=fontsize12selectfont]
    useasboundingbox(0,0)rectangle(layerwidth,-layerheight);
    draw[gray!25,step=1mm](0,0)grid(layerwidth,-layerheight);
    draw[orange!30!gray,step=10mm](0,0)grid(layerwidth,-layerheight);
    pgfmathtruncatemacroxmaxsteplayerwidth/1mm% calculate needed steps in x direction
    pgfmathtruncatemacroymaxsteplayerheight/1mm% calculate needed steps in y direction
    foreach step in 0,1,...,xmaxstep
      node [anchor=north] at (step mm,0) step;
    foreach step in 0,1,...,ymaxstep
      node [anchor=west] at (0,-step mm)step;
  endtikzpicture%
  
]grid.fg
DeclareNewPageStyleByLayersgridgrid.fg

pagestyleheadings

begindocument
blindtext[2]
thispagestylegrid
tikz[overlay,remember picture]node[minimum size=2cm,fill=red] at (current page.center) ;
blinddocument
thispagestylegrid
blinddocument
enddocument

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Solución parcial

El siguiente código tiene algunos problemas menores.

  1. el origen de la cuadrícula está en la esquina inferior izquierda de la página (el OP quiere el superior izquierdo)

  2. el uso de AddToShipoutPicture hace el origen como 1. pero también hace la cuadrícula debajo del contenido de la página. Quitándolo, la rejilla se hunde pero el origen se vuelve loco.

Con AddToShipoutPicture

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Sin AddToShipoutPicture

ingrese la descripción de la imagen aquí

MW (?) E

documentclass[a5paper]article % a5 just to example
%usepackagefontspec % commented to speed up compilation
usepackagetikz
usetikzlibraryshapes.misc
usetikzlibrarycalc
usepackageanyfontsize
usepackageeso-pic

  newcommandshowgrid%
%    AddToShipoutPicture%
      begintikzpicture[overlay,remember picture]
        draw[blue!30!white]
          (current page.south west) grid[step=1mm]
          (current page.north east);
        draw[blue!80!white]
          (current page.south west) grid[step=10mm]
          (current page.north east);
        foreach step in 0,1,...,297 
                      node [anchor=north] at ($ (current page.north west) + (step mm,0cm) $) fontsize12selectfont step;
                      node [anchor=west] at ($ (current page.north west) + (0cm,-step mm) $) fontsize12selectfont step;
                  
      endtikzpicture
%    %
  


begindocument
thispagestyleempty
begintikzpicture[overlay,remember picture,every node/.style=fill=red,inner sep=0pt,outer sep=0pt]%
   node [minimum width=2cm,minimum height=2cm] at (current page.center) ;
endtikzpicture%
showgrid
enddocument

valoraciones y reseñas

Al final de todo puedes encontrar las explicaciones de otros sys admins, tú todavía tienes la habilidad dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *