根据内容比例增加小页面的大小

根据内容比例增加小页面的大小

我正在尝试创建一个简单的环境。该环境包含一个被虚线框包围的迷你页面。

\NewEnviron{Notes}{
  \par
  \begin{tikzpicture}
    \node[rectangle,minimum width=0.95\textwidth] (m) {
      \begin{minipage} {0.75\textwidth}     
        \color{red}\BODY
      \end{minipage}
    };
    \draw[dashed] (m.south west) rectangle (m.north east);
  \end{tikzpicture}\\
}

本质上,我想根据盒子的内容按比例增加盒子的大小。因此,类似这样的操作:\vspace{0.2*\BODYHeight}

做到这一点的最好方法是什么?

答案1

您可以做的是将\BODY用必要的间距括起来。这是 MWE。

在此处输入图片描述

\documentclass{article}
\usepackage{environ}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\NewEnviron{Notes}{
  \par
  \begin{tikzpicture}
    \node[rectangle,minimum width=0.95\textwidth] (m) {
      \begin{minipage} {0.75\textwidth}     
        \vspace*{0.1\textwidth}
        \color{red}\BODY
        \vspace{0.1\textwidth}
      \end{minipage}
    };
    \draw[dashed] (m.south west) rectangle (m.north east);
  \end{tikzpicture}\\
}

\begin{Notes}
\lipsum[1]
\end{Notes}
\end{document}

更好的方法是使用固定量的填充:

\documentclass{article}
\usepackage{environ}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document}
\NewEnviron{Notes}{
  \par
  \begin{tikzpicture}
    \node[rectangle,minimum width=0.5\textwidth] (m) {
      \fbox{\begin{minipage} {0.5\textwidth}     
           \color{red}\BODY
       \end{minipage}}
    };
    \draw[dashed] (m.south west) rectangle (m.north east);
  \end{tikzpicture}\\
}

\begin{Notes}
\lipsum[1]
\end{Notes}
\end{document}

如果添加\fboxsep0pt,则不会显示内部规则。可以使用 的合适值来增加填充\fboxsep。我认为这在排版方面是一个更好的解决方案,并且可以很好地缩放。垂直间距的非线性缩放也是可能的,可以采用我在 中首次遇到的技术amsgenlatex amsgen.dtx并查找 的定义\compute@ex@。困难在于找到一个可接受的公式来描述这种间距的美感。公式应包括文本宽度、高度、字体大小和与其余文本的关系等变量。

在此处输入图片描述

答案2

不完全成比例,因为 eI 添加了 2pt 以避免值太小。可以进行更改.05\htbox.1\htbox 但现在问题出在大值上。

\documentclass{article}
\usepackage{environ}
\usepackage{tikz}
\usepackage{lipsum}
\begin{document} 

\newbox\mybox 
\newdimen\htbox
\newdimen\innersep   
\NewEnviron{Notes}{%
 \setbox\mybox=\vbox{%
 \begin{minipage} {0.75\textwidth}     
   \color{red}\BODY
 \end{minipage}}% 
 \htbox\ht\mybox
 \advance\htbox by \dp\mybox
 \innersep=.05\htbox
 \advance\innersep by 2pt  
\par
\begin{tikzpicture}
\node[draw,inner sep=\innersep,rectangle,
      text width=0.95\textwidth-2\innersep] (m) {\unvcopy\mybox}; 
\end{tikzpicture}\\
}

\begin{Notes}
Texte
\end{Notes}

\begin{Notes}
\lipsum[1]
\end{Notes}  

\end{document} 

在此处输入图片描述

相关内容