我正在将一些旧考试重新输入到 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
和,定义一个特殊的宏:tcolorbox
bluebox
这声明了\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}}