编辑:

编辑:

我遇到了一个小问题。我使用 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 子句来实现),人们可以在不移动内容的情况下打开或关闭这些框。

相关内容