自定义形状的水平线横跨整个文档

自定义形状的水平线横跨整个文档

通过阅读以下问题,我学会了如何创建一个简单的水平线:LaTeX 中横跨整个文档的水平线

我想创建一个叽叽喳喳形水平线横跨整个文档。我已设法使用 PGF/TikZ 绘制了 chirp,借助这个答案

我现在面临的问题是适应文档内部的 chirp 规则,以便它完全划分页面,即跨越整个文档。

啁啾规则

我如何拉伸/移动tikzpicture以适合整个页面?


这是我的 MWE:

\documentclass[12pt,english]{article}

\usepackage[a4paper,hmargin=2cm,bmargin=3cm,tmargin=2.8cm,centering]{geometry}
\usepackage{tikz}
\usepackage{lipsum}

\definecolor{mygray}{gray}{0.5}
\tikzset{declare function={f(\t)=0.2*sin(100*\t^(0.06*\t));}}

\newcommand\chirprule{%
    \begin{tikzpicture}[remember picture, overlay]
    \draw[domain=0:18,variable=\t,samples=1000,draw=mygray,line width=4pt]
    plot ({\t},{f(\t)});
    \end{tikzpicture}
}

\begin{document}

    \lipsum[1]

    % Simple horizontal rule.
    \noindent\makebox[\linewidth]{\textcolor{mygray}{\rule{\paperwidth}{4pt}}}

    \lipsum[2]

    \chirprule % Chirp rule.

    \lipsum[3]

\end{document}

答案1

需要改变的有三件事:

  • \noindent在前面使用tikzpicture
  • 用于xshift将图像移动左边距
  • 增加domain
  • 可选:在规则后添加一点空格

\documentclass[12pt]{article}

\usepackage[a4paper,hmargin=2cm,bmargin=3cm,tmargin=2.8cm,centering]{geometry}
\usepackage{tikz}
\usepackage{lipsum}

\definecolor{mygray}{gray}{0.5}
\tikzset{declare function={f(\t)=0.2*sin(100*\t^(0.06*\t));}}

\newcommand\chirprule{%
        \noindent
    \begin{tikzpicture}[remember picture, overlay]
    \draw[domain=0:21,variable=\t,samples=1000,draw=mygray,line width=4pt,xshift=-2cm]
    plot ({\t},{f(\t)});
    \end{tikzpicture}
    \vspace*{0.5em}
}

\begin{document}

    \lipsum[1]

    % Simple horizontal rule.
    \noindent\makebox[\linewidth]{\textcolor{mygray}{\rule{\paperwidth}{4pt}}}

    \lipsum[2]

    \chirprule % Chirp rule.

    \lipsum[3]

\end{document}

在此处输入图片描述

答案2

@samcarter 的精彩答案的替代方案:

\documentclass[12pt,english]{article}

\usepackage[a4paper,hmargin=2cm,bmargin=3cm,tmargin=2.8cm,centering]{geometry}
\usepackage{tikz}
\usepackage{lipsum}

\definecolor{mygray}{gray}{0.5}
\tikzset{declare function={f(\t)=0.2*sin(100*\t^(0.06*\t));}}

\newcommand\chirprule{%
    \begin{tikzpicture}[remember picture, overlay]
    \coordinate(here);
    \draw[domain=0:18,variable=\t,samples=1000,draw=mygray,line width=4pt]
     (current page.west|-here) --plot ({\t},{f(\t)})--(current page.east|-here);
    \end{tikzpicture}
}

\begin{document}

    \lipsum[1]

    % Simple horizontal rule.
    \noindent\makebox[\linewidth]{\textcolor{mygray}{\rule{\paperwidth}{4pt}}}

    \lipsum[2]

    \chirprule % Chirp rule.

    \lipsum[3]

\end{document}

在此处输入图片描述

不同之处在于绘图范围不是硬编码的。

相关内容