我想定义一个命令,从占据页面区域的矩形边缘向对边画线。
为了画线,我做了一些手动调整,用矩形连接两边
这里是 MWE
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{tikz}
\def\margin{2cm}
\def\Sep{2mm}
\def\Line{\par\medskip\noindent\hspace{-2.7mm}\tikz\draw[double,double distance=1mm](0,0)--(\textwidth+4.1mm,0);\par\medskip}
\begin{document}
\newgeometry{margin=\margin}
\pagestyle{empty}
\begin{tikzpicture}[remember picture,overlay]
\draw([shift={(\margin-\Sep-1mm,\margin-\Sep-1mm)}]current page.south west)rectangle([shift={(-\margin+\Sep+1mm,-\margin+\Sep+1mm)}]current page.north east);
\draw([shift={(\margin-\Sep,\margin-\Sep)}]current page.south west)rectangle([shift={(-\margin+\Sep,-\margin+\Sep)}]current page.north east);
\end{tikzpicture}
\lipsum[1]
\Line
\lipsum[1]
\Line
\lipsum[1]
\Line
\end{document}
生产
我的问题是,当我修改和时,如何定义\Line
命令以获得长度的自动调整。\Sep
\margin
答案1
虽然我认为这样的盒子很容易制作tcolorbox
,但下面的代码显示了解决此问题的可能方法。
因为 OP 想要在页面上一个未知的垂直位置画一条线,并由两个角定义的矩形水平划定一条线。
首先,我们需要知道线条要画在哪里,这个问题可以通过一个计数器来解决,计数器随着每条线条而增加,其值固定一个TiKZ
坐标名称。
由于矩形尺寸取决于\Sep
和\margin
变量,因此声明了两个辅助坐标。这些坐标将有助于绘制长度与边距相适应的线。
完整代码如下
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage{lipsum}
\usepackage{tikz}
\def\margin{5cm}
\def\Sep{8mm}
\newcounter{myline}
\setcounter{myline}{0}
\newcommand{\LineB}{
\stepcounter{myline}
\tikz[remember picture, overlay]{
\coordinate (aux-\themyline);
\draw[red, double, double distance=1mm] (aux-\themyline-|myaux1) -- (aux-\themyline-|myaux2);}
}
\begin{document}
\newgeometry{margin=\margin}
\pagestyle{empty}
\begin{tikzpicture}[remember picture,overlay]
\draw([shift={(\margin-\Sep-1mm,\margin-\Sep-1mm)}]current page.south west) rectangle([shift={(-\margin+\Sep+1mm,-\margin+\Sep+1mm)}]current page.north east);
\draw([shift={(\margin-\Sep,\margin-\Sep)}]current page.south west)coordinate (myaux1)rectangle([shift={(-\margin+\Sep,-\margin+\Sep)}]current page.north east)coordinate (myaux2);
\end{tikzpicture}
\lipsum[1]
\LineB
\lipsum[1]
\LineB
\lipsum[1]
\LineB
\end{document}
和与\Sep=2mm
和\margin=2cm