我遇到了一个小问题。我使用 parbox 和 textblock 将文本放置在或多或少复杂的背景图像前面。
现在我想突出显示我的 parboxes,看看所有边距是否都设置正确。但是,我仍然希望看到背景,周围只有一个红色(可能是虚线)框架,最重要的是,我希望能够使用序言中的命令关闭此框架,而不会移动我的内容。
我尝试了 fbox 和 fcolorbox,但两种情况下都无法实现不移动的内容——更不用说我想要实现的其他目标了。
对于如何实现这样的事情有什么想法吗?
提前谢谢您!
编辑:
抱歉。以下是一些示例代码
\documentclass[fontsize=10pt]{scrartcl}
\usepackage{lipsum}
\usepackage[overlay]{textpos}
\usepackage{color}
%% BACKGROUND <<------ activate for actual background
%
%\usepackage{bophook}
%\usepackage{xcolor}
%\usepackage{tikz}
%
%\definecolor{dark}{RGB}{25,49,83}
%\colorlet{light}{dark!10}
%
%\newcommand{\topbar}{\draw[fill=dark, draw=none] (0,0) rectangle (216mm,-83mm);}
%\newcommand{\sidepanel}{\draw[fill=light, draw=none] (13mm,-23mm) rectangle (83mm,-280mm);}
%\newcommand{\footer}{%
% \draw[fill=light, draw=none] (0mm,-303mm) rectangle (216mm,-290mm);%
% \filldraw [fill=dark, draw=none] (184mm,-292.5mm) coordinate (GeneralStart) -- ++(0,0) -- ++(+3.2,0) -- ++(0,-1.05) -- ++(-4.0,0) -- cycle;}
%
%\newcommand{\setbg}[1]{%
% \AtBeginPage{%
% \begin{tikzpicture}[remember picture,overlay]
% \node[xshift=-108mm, yshift=151.5mm] at (current page.center)
% {%
% \begin{tikzpicture}[remember picture, overlay]%
% #1
% \end{tikzpicture}
% };
% \end{tikzpicture}
%}}
% HIGHLIGHTING
\newcommand{\lbox}[1]{\color{red}\fbox{ \normalcolor{#1}}}
%\renewcommand{\lbox}[1]{#1} <<------- TOGGLE THIS
\begin{document}
%\setbg{\topbar\sidepanel\footer} <<------ activate for actual background
\begin{textblock*}{187mm}(-30mm,45mm)
\lbox{%
\parbox[c][187mm][c]{62mm}{%
\lipsum[1-2]%
}}
\end{textblock*}
\end{document}
切换标记的内容。如您所见,不幸的是,文本发生了变化。我真正想要的只是在纸上看到我的 parbox 在哪里。文本不应对该框做出反应。
答案1
您可以使用包在内容周围添加框架adjustbox
。您需要做的就是通过匹配负边距来删除多余的空间。因此您需要使用\adjustbox{cfbox=red, margin=-\fboxrule-\fboxsep}{...}
。adjustbox
如果您想了解更多信息,请查看手册以了解详细信息。
\documentclass[fontsize=10pt]{scrartcl}
\usepackage{adjustbox}
\usepackage{lipsum}
\usepackage[overlay]{textpos}
\usepackage{color}
%% BACKGROUND <<------ activate for actual background
\newif\ifbackground
\backgroundtrue
\ifbackground
\usepackage{bophook}
\usepackage{xcolor}
\usepackage{tikz}
\definecolor{dark}{RGB}{25,49,83}
\colorlet{light}{dark!10}
\newcommand{\topbar}{\draw[fill=dark, draw=none] (0,0) rectangle (216mm,-83mm);}
\newcommand{\sidepanel}{\draw[fill=light, draw=none] (13mm,-23mm) rectangle (83mm,-280mm);}
\newcommand{\footer}{%
\draw[fill=light, draw=none] (0mm,-303mm) rectangle (216mm,-290mm);%
\filldraw [fill=dark, draw=none] (184mm,-292.5mm) coordinate (GeneralStart) -- ++(0,0) -- ++(+3.2,0) -- ++(0,-1.05) -- ++(-4.0,0) -- cycle;}
\newcommand{\setbg}[1]{%
\AtBeginPage{%
\begin{tikzpicture}[remember picture,overlay]
\node[xshift=-108mm, yshift=151.5mm] at (current page.center)
{%
\begin{tikzpicture}[remember picture, overlay]%
#1
\end{tikzpicture}
};
\end{tikzpicture}
}}
\fi
% HIGHLIGHTING
\newcommand{\lbox}{\adjustbox{cfbox=red, margin=-\fboxrule-\fboxsep}}
%\renewcommand{\lbox}{\fbox}
%\renewcommand{\lbox}[1]{#1} % <<------- TOGGLE THIS
\begin{document}
\ifbackground
\setbg{\topbar\sidepanel\footer} %<<------ activate for actual background
\fi
\begin{textblock*}{187mm}(-30mm,45mm)
\lbox{%
\parbox[c][187mm][c]{62mm}{%
\lipsum[1-2]%
}}
\end{textblock*}
\end{document}
PS:还请注意自定义开关的使用\if...
。您不应该使用它%
来停用大部分代码。
答案2
如果将来有人想做类似的事情,这就是我最终想到的办法。
\newcommandtwoopt{\cbox}[7][t][]{%
\begin{textblock*}{#5}(#3,#4)%
\adjustbox{#2, minipage=[#1][#6][#1]{#5}, cfbox=red 0pt 0.5pt}{#7}%
\end{textblock*}%
}
%\cbox[minipagealignment][adjustboxoptions]{xpos}{ypos}{width}{height}{content}
通过切换 0.5pt 和 0pt(可以作为包选项或使用 if 子句来实现),人们可以在不移动内容的情况下打开或关闭这些框。