创建彩色文本框的最佳方法

创建彩色文本框的最佳方法

我正在将一些旧考试重新输入到 LaTeX 中,然后我看到了下面的页面

旧考试

现在,通过一些巧妙的命令和其他东西,我能够创建几乎相同的东西。虽然间距有点不对,而且我的方程式有点小。我还不得不使用一些技巧和丑陋的代码来产生结果

有谁有更好更清洁的方法来做到这一点?

这几乎就是我用来排版这些考试的代码。唯一的区别是标题中的所有“垃圾”都放在了 sty. 文件中。因此,标题仅包含 3-5 个输入文件。在这里,我包含了运行代码所需的一切。对下面的代码进行一些改进会很棒。

\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3cm,vmargin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage[dvipsnames*,svgnames]{xcolor}
\usepackage{mathtools}
\usepackage{xstring}
\usepackage{xparse}

\newcounter{tittel}
\setcounter{tittel}{0}
\newcounter{problem}
\setcounter{problem}{0}
\newcounter{alternative}
\setcounter{alternative}{0}

\newcounter{navn}[problem]
\renewcommand{\thenavn}{\alph{navn}}
\newcommand{\navn}{\stepcounter{navn}\paragraph*{\thenavn)}}
\setcounter{navn}{0}

\newcommand{\NR}[1]
{ \vspace{5mm} \begin{minipage}[t]{0.051 \textwidth}
 \navn \hspace{0pt}
\end{minipage}
\begin{minipage}[t]{0.949\textwidth}
#1 
\end{minipage}
\vspace{-0.3cm}
}

\newif\iffirstalt

\NewDocumentCommand{\Oppgave}{m o}{%
  \IfNoValueTF{#2}{\setcounter{alternative}{0}\stepcounter{problem}    \firstaltfalse}%
              {\stepcounter{alternative}\iffirstalt\else\stepcounter{problem}    \firstalttrue\fi}
  \section*{Oppgave \arabic{problem}%
             {\normalfont\IfNoValueTF{#2}{}{~Alternative     \Roman{alternative}\ }
                \normalsize (#1 poeng)}%
   \addcontentsline{toc}{section}{Oppgave \arabic{problem} }} 
\vspace{3mm} }

\begin{document}

\Oppgave{5}

En gruppe på $8$ elever besår av like mange gutter som jenter. Vi trekker     tilfeldig ut 8 elever.

\NR{ Hva er sannsynligheten for å trekke ut $2$ gutter og $1$ jente? }

\NR{ Hva er sannsynligheten for å trekke ut minst $1$ jente? }

\begin{center}

  \noindent\fcolorbox{black}{LightSteelBlue}{%
    \parbox[t][3cm][c]{11cm}{ \hspace*{0.25cm} Hypergeometrisk     sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$ \\ 
    \hspace*{0.25cm} $m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
   \hspace*{0.25cm} $r$ elementer trekkes tilfeldig. \\
   \hspace*{0.25cm} $X$ er antall elementer som trekkes fra $D$  }%
  }%
   \end{center}

    \end{document}

下面是一个最小的例子,勉强足以生成上面的页面。

\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3cm,vmargin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage[dvipsnames*,svgnames]{xcolor}
\usepackage{mathtools}

\begin{document}

\section*{Oppgave 2 \normalsize \normalfont (5 poeng)}

En gruppe på $8$ elever besår av like mange gutter som jenter. Vi trekker     tilfeldig ut 8 elever.

\paragraph*{a)} Hva er sannsynligheten for å trekke ut $2$ gutter og $1$ jente? 

\paragraph*{b)} Hva er sannsynligheten for å trekke ut minst $1$ jente? 

\begin{center}

  \noindent\fcolorbox{black}{LightSteelBlue}{%
    \parbox[t][3cm][c]{11cm}{ \hspace*{0.25cm} Hypergeometrisk     sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$ \\ 
    \hspace*{0.25cm} $m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
   \hspace*{0.25cm} $r$ elementer trekkes tilfeldig. \\
   \hspace*{0.25cm} $X$ er antall elementer som trekkes fra $D$  }%
  }%
  \end{center}

\end{document}

这是我的输出

我的输出

问题)

  • 有没有更简单、看起来也更好的创建蓝色框的方法?
  • 有没有什么办法可以对我的“长”代码进行改进?

答案1

这里介绍一种使用 来定义此类框的方法adjustbox。请参阅手册以了解更多选项。

\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3cm,vmargin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage[dvipsnames*,svgnames]{xcolor}
\usepackage{mathtools}
\usepackage{xstring}
\usepackage{xparse}
\usepackage{adjustbox}
\usepackage{varwidth}

\newcounter{tittel}
\setcounter{tittel}{0}
\newcounter{problem}
\setcounter{problem}{0}
\newcounter{alternative}
\setcounter{alternative}{0}

\newcounter{navn}[problem]
\renewcommand{\thenavn}{\alph{navn}}
\newcommand{\navn}{\stepcounter{navn}\paragraph*{\thenavn)}}
\setcounter{navn}{0}

\newcommand{\NR}[1]
{ \vspace{5mm} \begin{minipage}[t]{0.051 \textwidth}
 \navn \hspace{0pt}
\end{minipage}
\begin{minipage}[t]{0.949\textwidth}
#1 
\end{minipage}
\vspace{-0.3cm}
}

\newif\iffirstalt

\NewDocumentCommand{\Oppgave}{m o}{%
  \IfNoValueTF{#2}{\setcounter{alternative}{0}\stepcounter{problem}    \firstaltfalse}%
              {\stepcounter{alternative}\iffirstalt\else\stepcounter{problem}    \firstalttrue\fi}
  \section*{Oppgave \arabic{problem}%
             {\normalfont\IfNoValueTF{#2}{}{~Alternative     \Roman{alternative}\ }
                \normalsize (#1 poeng)}%
   \addcontentsline{toc}{section}{Oppgave \arabic{problem} }} 
\vspace{3mm} }

\newenvironment{bluebox}{%
    \noindent
    \adjustbox{innerenv={varwidth}[c]{0.9\linewidth},margin=\fboxsep+.25cm \fboxsep+.2cm,bgcolor=LightSteelBlue,frame,center}\bgroup
}{%
    \egroup
}

\begin{document}

\Oppgave{5}

En gruppe på $8$ elever besår av like mange gutter som jenter. Vi trekker     tilfeldig ut 8 elever.

\NR{ Hva er sannsynligheten for å trekke ut $2$ gutter og $1$ jente? }

\NR{ Hva er sannsynligheten for å trekke ut minst $1$ jente? }


\begin{bluebox}
   Hypergeometrisk     sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$ \\
   $m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
   $r$ elementer trekkes tilfeldig. \\
   $X$ er antall elementer som trekkes fra $D$
\end{bluebox}

\end{document}

结果

答案2

这里有一个解决方案mdframed。其他可能性是包adjustbox或您简单使用tikz(没有可用的分页符)。

新版本已上传至 CTAN。如果您想测试当前示例,可以下载该包这里(也包括新的文档)

根据您的段落编号,我将创建一个新命令来为您完成此操作。

\documentclass{article}
\usepackage[hmargin=3cm,vmargin=2cm]{geometry}
\usepackage{amsmath}
\usepackage[dvipsnames*,svgnames]{xcolor}

\usepackage[framemethod=default]{mdframed}

\mdfdefinestyle{NR}{skipabove=\topskip,skipbelow=\topskip,%
                    ,align=center,%
                    innerleftmargin=.25cm,linecolor=black,%
                    linewidth=2pt,backgroundcolor=LightSteelBlue}
\newmdenv[style=NR]{NR}

\newcounter{myparagraph}
\setcounter{myparagraph}{0}
\newcommand\myparagraph[1]{\stepcounter{myparagraph}\paragraph*{\alph{myparagraph})\quad#1}}
\usepackage{showframe}
\begin{document}
\myparagraph{Hva er sannsynligheten for å trekke ut $2$ gutter og $1$ jente?}

\myparagraph{Hva er sannsynligheten for å trekke ut minst $1$ jente?}
\begin{NR}[userdefinedwidth=11cm]
Hypergeometrisk     sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$ \\ 
$m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
$r$ elementer trekkes tilfeldig. \\
$X$ er antall elementer som trekkes fra $D$
\end{NR}
\end{document}

在此处输入图片描述

答案3

一个几乎开箱即用的解决方案是varwidth和,定义一个特殊的宏:tcolorboxbluebox

这声明了\bluebox宏有一个可选参数和一个强制参数,具有蓝色背景,相对于页面居中对齐,最多使用0.8\linewidth宽度并且没有框架。

可以使用可选参数给出其他选项,请参阅yellow背景信息bluebox;-)

\newtcbox{bluebox}[1][]{enhanced jigsaw, 
      sharp corners,
      colback=LightSteelBlue,
      center,
      varwidth upper=0.8\linewidth,
      frame hidden,
      #1}

完整代码

\documentclass[10pt,a4paper]{article}
\usepackage[hmargin=3cm,vmargin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage[dvipsnames*,svgnames]{xcolor}
\usepackage{mathtools}
\usepackage{varwidth}
\usepackage[most]{tcolorbox}


\newtcbox{bluebox}[1][]{enhanced jigsaw, 
  sharp corners,
  colback=LightSteelBlue,
  center,
  varwidth upper=0.8\linewidth,
  frame hidden,
  #1}

\begin{document}

\section*{Oppgave 2 \normalsize \normalfont (5 poeng)}

En gruppe på $8$ elever besår av like mange gutter som jenter. Vi trekker     tilfeldig ut 8 elever.

\paragraph*{a)} Hva er sannsynligheten for å trekke ut $2$ gutter og $1$ jente? 

\paragraph*{b)} Hva er sannsynligheten for å trekke ut minst $1$ jente? 


\bluebox{%
  Hypergeometrisk sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$

 $m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
 $r$ elementer trekkes tilfeldig. \\
 $X$ er antall elementer som trekkes fra $D$  %
}

\bluebox[colback=yellow!60!white]{%
  Hypergeometrisk sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$

 $m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
 $r$ elementer trekkes tilfeldig. \\
 $X$ er antall elementer som trekkes fra $D$  %
}



\begin{center}

  \noindent\fcolorbox{black}{LightSteelBlue}{%
    \parbox[t][3cm][c]{11cm}{ \hspace*{0.25cm} Hypergeometrisk     sannsynlighetsfordeling: $\displaystyle P(X=x)=\dfrac{\binom{m}{k}\binom{n-m}{r-k}}{\binom{n}{r}}$ \\ 
    \hspace*{0.25cm} $m$ elementer i $D$. $n-m$ elementer i $\bar{D}$ \\
   \hspace*{0.25cm} $r$ elementer trekkes tilfeldig. \\
   \hspace*{0.25cm} $X$ er antall elementer som trekkes fra $D$  }%
  }%
  \end{center}

\end{document}

在此处输入图片描述

答案4

\newenvironment{bluebox}
  {\begin{lrbox}{0}\begin{tabular}{@{}l@{}}}
  {\end{tabular}\end{lrbox}%
   \setlength{\fboxsep}{12pt}% adjust at will
  {\centering\fcolorbox{black}{LightSteelBlue}{\usebox{0}}\par}}

相关内容