我想在非考试文档中制作填空类型的文本。这是我想要的结果:
Let A be a subset of R, A called measurable set if m*(...) = ........, for all .... in R
我知道可以使用 examdesign 类来完成此任务。但我不想只为这个任务使用另一个类。
这是我尝试创建上述示例。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
Let $A$ be a subset of $\mathbf{R}$, $A$ called measurable set
if $m^*(\ldots) = \ldots \ldots \ldots,
\text{ for all } \ldots \ldots \text{ in } \mathbf{R}$.
\end{document}
但我想要的解决方案是使用类似的东西\blank{some text}
来代替点。
额外:点必须比替换的文本长。
因此,我可以写:
if $m^*(\blank{B}) = \blank{m^*(A \cap B) + m^*(A \cap B^c)}
\text{ for all } \blank{B} \text{ in } \mathbf{R}$.
我如何实现这个目标?
答案1
\documentclass{article}
\usepackage{amsmath}
\def\blank#1{\setbox0\hbox{$#1$}\hbox to \wd0{\dotfill}}
\begin{document}
if $m^*(\blank{B}) = \blank{m^*(A \cap B) + m^*(A \cap B^c)}
\text{ for all } \blank{B} \text{ in } \mathbf{R}$.
\end{document}
答案2
该命令\mdotfill
绘制一些虚线,其宽度等于其参数的宽度加上1em
(正如问题所要求的那样);使用可选参数,您可以将额外的长度增加所需的量:
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\mes}{m}
\newlength\mylen
\newcommand\mdotfill[2][1em]{%
\settowidth\mylen{$#2$}
\addtolength\mylen{#1}
\leavevmode\hbox to \mylen{\xleaders\hbox{.}\hfill}}
\begin{document}
$\mes^*(A \cap B) + \mes^*(A \cap B^c)$
\mdotfill{\mes^*(A \cap B) + \mes^*(A \cap B^c)}
\mdotfill[2em]{\mes^*(A \cap B) + \mes^*(A \cap B^c)}
\end{document}
答案3
我偏爱可读性;)
\documentclass{article}
\usepackage{amsmath}
\newlength{\blankwidth}
\newcommand{\blank}[1]{%
\ifmmode\settowidth{\blankwidth}{\ensuremath{{#1}{#1}{#1}}}%
\else\settowidth{\blankwidth}{{#1}{#1}{#1}}%
\fi
\makebox[\blankwidth]{\dotfill}}
\begin{document}
if $m^*(\blank{B}) = \blank{m^*(A \cap B)} + m^*(A \cap B^c)
\text{ for all } \blank{B} \text{ in } \mathbf{R}$.
\end{document}
答案4
这应该足够了:\def\blank{\makebox[2cm]{\dotfill}}
。用法:$A$ \blank $B$
。我认为需要比原来更多的空间,所以建议不同。另一个版本:\def\blank#1{\makebox[#1]{\dotfill}}
。