我想要在 DINA4 (210 × 297 [mm]) 纸张上创建以下内容:
- 我需要约 2cm 边距向左和向右;在示例中,垂直边距变为 2.5 厘米。
- 我需要一个带有总高6cm。
- 我想要一个网格2×2(厘米)和宽度尽可能为正方形。
所以我选择
\usepackage[ width=16cm, height=26cm, ]{geometry}
这应该允许我在宽度上有 8 个网格方块。
但为什么我的网格
% Grid:
\begin{tikzpicture}[every path/.style=red,
remember picture,overlay,]
\draw[step=2, shift={(Textbox)}] (0,0) grid +(\linewidth-0.0*\pgflinewidth,-8);
\end{tikzpicture}
变成角落看起来不好 和与 tcolorbox 不匹配(即使我选择line cap=rect
)?我该怎么办?
顺便说一句:将网格也创建为 tcolorbox 会更好吗?
\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
width=16cm,
height=26cm,
]{geometry}
\pagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcolorbox}[
height=6cm,
sharp corners,
enhanced, remember, finish={%
\draw[blue,ultra thick,latex-] (frame.south west) coordinate[label=135:X](Textbox)-- +(3,3) node[right]{Here to put on the grid.}; }
]
A text.
\end{tcolorbox}
% Grid:
\begin{tikzpicture}[every path/.style=red,
remember picture,overlay,]
\draw[step=2, shift={(Textbox)}] (0,0) coordinate(X) grid +(\linewidth-0.0*\pgflinewidth,-8);
\end{tikzpicture}
\end{document}
答案1
tcolorbox
环境的宽度和的\draw grid
确定方式有所不同。
- 在一个
tcolorbox
环境中,它的总自然宽度正好是\linewidth
。这里整个左规则和右规则都绘制在该宽度内。 - 在 a 中
\draw (0, 0) grid (1, 1);
,它的总宽度为“1cm + 线宽”,因为 tikz 沿着路径以其中心绘制一条线。
就你的情况来说,
- 因为需要绘制完整的网格,所以没有更改的余地
\draw[..., line cap=rect] (0, 0) grid +(\linewidth, -8)
。 - 然后,
tcolorbox
环境比网格窄了一半的网格线宽,无论是在左侧还是右侧。这就是你在问题评论。
这是一个尝试,虽然不够优雅:
- 将网格的线宽放大
tcolorbox
一半,左右两侧均如此。现在tcolorbox
总宽度为“\linewidth
+ 网格线宽”,与以下网格相同。 - 将网格水平移动网格线宽度的一半。
\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
width=16cm,
height=26cm,
]{geometry}
\pagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage[most]{tcolorbox}
\begin{document}
\newlength{\gridlinewidth}
\setlength{\gridlinewidth}{.4pt} % default tikz line width
\begin{tcolorbox}[
height=6cm,
sharp corners,
boxrule=10pt,
grow sidewards by=.5\gridlinewidth,
enhanced,
remember,
finish={%
\draw[blue,ultra thick,latex-]
(frame.south west) coordinate[label=135:X] (Textbox) -- +(3,3)
node[right] {Here to put on the grid.};
}
]
A text.
\end{tcolorbox}
% Grid:
\begin{tikzpicture}[
every path/.style=red,
remember picture, overlay
]
\draw[step=2, shift={($(Textbox) + (.5\gridlinewidth, 0)$)}, line cap=rect]
(0, 0) grid +(\linewidth, -8);
\end{tikzpicture}
\end{document}
答案2
根据答案木子木志Z,我建议使用一个集成绘制网格的单个框的变体:
\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
width=16cm,
height=26cm,
]{geometry}
\pagestyle{empty}
\usepackage{tikz}
\usepackage[most]{tcolorbox}
\begin{document}
\newlength{\gridlinewidth}
\setlength{\gridlinewidth}{.4pt} % default tikz line width
\begin{tcolorbox}[
enhanced,
height=6cm,
sharp corners,
boxrule=10pt,
grow sidewards by=.5\gridlinewidth,
enlarge bottom finally by=8cm+\gridlinewidth,
finish={%
\begin{scope}[shift={([xshift=0.5\gridlinewidth, yshift=-0.5\gridlinewidth]frame.south west)}]
\draw[step=2, line cap=rect, red, line width=\gridlinewidth]
grid +(\linewidth, -8);
\end{scope}
}
]
A text.
\end{tcolorbox}
Text after box and grid.
\end{document}
如果网格的高度不是 8 厘米(4 个方格),则必须进行相应enlarge bottom finally by=8cm+\gridlinewidth,
调整grid +(\linewidth, -8);
。
如果您的页面在框和网格之后不包含任何内容,则可以enlarge bottom finally by=8cm+\gridlinewidth,
完全省略。
答案3
在新的 tcolorbox 中使用网格:
\documentclass[a4paper]{article} % DINA4 (210 × 297 [mm])
\usepackage[%showframe=true,
width=16cm,
height=26cm,
]{geometry}
\pagestyle{empty}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage[most]{tcolorbox}
\begin{document}
\begin{tcolorbox}[
height=6cm,
sharp corners,
after skip=0pt,
enhanced, remember, finish={%
\draw[blue,ultra thick,latex-] (frame.south west) coordinate[label=135:X](Textbox)-- +(3,3) node[right]{Here to put on the grid.}; },
]
A text.
\end{tcolorbox}
% Grid - old
%\begin{tikzpicture}[every path/.style=red,
%remember picture,overlay, %line cap=rect
%]
%\draw[step=2, shift={($(Textbox)+(0.5*\pgflinewidth,0)$)}] (0,0) coordinate(X) grid +(16cm-0.5*\pgflinewidth,-8);
%\end{tikzpicture}
% Grid - new
\begin{tcolorbox}[
height=8cm,
boxrule=0pt, %frame empty,
sharp corners,
colback=white,
before skip=0pt, after skip=0pt,
%
enhanced,
underlay={\begin{tcbclipinterior}
\draw[step=2, red, shift={(interior.north west)}
] (interior.south west) grid (interior.north east);
\end{tcbclipinterior}},
]
\end{tcolorbox}
\end{document}