独立:更改文档中间的边框

独立:更改文档中间的边框

我有一个一页的独立文档:

\documentclass[border=1pt]{standalone}
\begin{document}
Lorem ipsum
\end{document}

我想创建一个命令\removeborder,当将它放置在\begin{document}\end{document}命令之间时,可以删除此单页文档的边框。

\documentclass[border=1pt]{standalone}
\newcommand{\removeborder}{???}
\begin{document}
\removeborder
Lorem Ipsum
\end{document}

虽然\standaloneconfig{border=0pt}(记录这里) 与我想要的类似,当将其放在 的位置时???,它不会从页面中删除边框。不幸的是,我对可以修改此代码的哪些部分相当受限,因此我没有修改该\documentclass语句。该命令\removeborder将始终从它应该影响的页面内调用;我不能简单地定义\standaloneenv并放置\removeborder在进入环境之前。

我的问题:我可以在???第二个代码块中放置什么来删除该文档的边框?

答案1

边框值(每边一个)在内部存储为\sa@border@leftstandalone。然后在框处理完毕但排版之前将它们应用到内容框(\marginbox由我的另一个包使用adjustbox)。因此,您可以更改内容中的值,但是由于它是分组的,如果更改不是全局的,则更改将在最后丢失。

请注意,标准边框是 0.50001 bp(大点,72bp = 72.27pt),而不是 0,因为这会在视觉上稍微剪切文本。

所以解决方案是:

\documentclass[border=1pt]{standalone}

\makeatletter
\newcommand{\removeborder}{%
    \global\def\sa@border@left{0.50001bp}%
    \global\let\sa@border@right\sa@border@left
    \global\let\sa@border@top\sa@border@left
    \global\let\sa@border@bottom\sa@border@left
}
\makeatother

\begin{document}
\removeborder
Lorem Ipsum
\end{document}

答案2

以下是一次尝试。

通过standalone类,每个页面的开始和结束都是清晰的(环境),并且我认为没有自动分页符,因此可以在页面之前添加更改边框的命令。

\documentclass[tikz,border=1cm]{standalone}
\makeatletter %save current values of border
\edef\mysaborders{\sa@border@left\space\sa@border@right\space\sa@border@top\space\sa@border@bottom}
\makeatother
\newcommand{\removeborder}{%
\standaloneconfig{border=0pt}}

\newcommand{\resetborder}{%
\standaloneconfig{border={\mysaborders}}}



\begin{document}
\begin{tikzpicture}
\fill[red!20](0,0) rectangle (3,3);
\end{tikzpicture}
\removeborder
\begin{tikzpicture}
\fill[red!60](0,0) rectangle (3,3);
\end{tikzpicture}

\begin{tikzpicture}
\fill[blue!60](0,0) rectangle (3,3);
\end{tikzpicture}

\resetborder
\begin{tikzpicture}
\fill[red!20](0,0) rectangle (3,3);
\end{tikzpicture}
\end{document}

相关内容