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
step
s. - 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.
- La cuadrícula se superpone a otros contenidos de la página, incluidos
tikzpicture
s, incluso si estos usanoverlay, remember picture
ellos mismos.
showgrid
se puede especificar en cualquier lugar de la página donde se requiera la cuadrícula, incluso antes de cualquiertikzpicture
s, incluso si ellos mismos usanoverlay, 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
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
Solución parcial
El siguiente código tiene algunos problemas menores.
-
el origen de la cuadrícula está en la esquina inferior izquierda de la página (el OP quiere el superior izquierdo)
-
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
Sin AddToShipoutPicture
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.