我有一个一页的独立文档:
\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@left
等standalone
。然后在框处理完毕但排版之前将它们应用到内容框(\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}