抱歉,标题太长了。
我正在写一篇“填写缺失单词”文档。我制作了一个 makro \fjern{}
(挪威语中意为“删除”),它强调了论点并将其放置在环境中phantom
。
问题:
- 在提供的 MWE 中,我得到了令人讨厌的 overfull
hbox
。有没有办法可以避免这种情况,而不必查看raggedright
整个文档? - 我想以随机顺序打印所有我删除的单词,最好有一个选项,可以打印或不打印多次出现的单词(为学生区分)。我该怎么做?我完全不知道……(如果有选项
solution
可以将删除的单词打印在正确的位置并以某种方式突出显示,那就太棒了)
梅威瑟:
\documentclass[12pt, a4paper, norsk]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{fouriernc}
\usepackage[margin=1in]{geometry}
\usepackage{parskip}
\newcommand\fjern[1]{\underline{\phantom{#1}}}
\begin{document}
\section*{Vokabular} % (fold)
\label{sec:vokabular}
\LARGE Et \fjern{atom} består av \fjern{protoner} og \fjern{nøytroner} i kjernen, med \fjern{elektroner} som kretser rundt. \fjern{Protoner} har en positiv ladning, \fjern{nøytroner} er nøytralt ladet og \fjern{elektroner} har en negativ ladning.
% Print the removed words
\vspace{4em}
\textbf{Sett inn ordene:} atom, protoner, nøytroner, elektroner
% section vokabular (end)
\end{document}
生产
答案1
我会给“填充”规则一些灵活性:
\documentclass[12pt, a4paper, norsk]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{fouriernc}
\usepackage[margin=1in]{geometry}
\usepackage{parskip}
%\newcommand\fjern[1]{\linebreak[2]\underline{\phantom{#1}}}
\newcommand\fjern[1]{%
\sbox0{#1}%
\hspace*{0pt}\leaders\hrule height 0pt depth 1pt\hskip\wd0 plus 2em\relax\mbox{}}
\begin{document}
\section*{Vokabular} % (fold)
\label{sec:vokabular}
{\LARGE Et \fjern{atom} består av \fjern{protoner} og \fjern{nøytroner}
i kjernen, med \fjern{elektroner} som kretser rundt.
\fjern{Protoner} har en positiv ladning, \fjern{nøytroner}
er nøytralt ladet og \fjern{elektroner} har en negativ ladning.\par}
% Print the removed words
\vspace{4em}
\textbf{Sett inn ordene:} atom, protoner, nøytroner, elektroner
% section vokabular (end)
\end{document}
下列\hspace*{0pt}
前导符不会在行首消失,因为它们会跟随粘连。最后一项\mbox{}
可避免它们在行尾消失。
这是自动打乱单词顺序的版本。唯一的限制是:单词必须全部小写;可以想出一种不太具侵略性的语法来允许大小写变化。
\documentclass[12pt, a4paper, norsk]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{fouriernc}
\usepackage[margin=1in]{geometry}
\usepackage{parskip}
\usepackage{xparse}
\input{random}
\NewDocumentEnvironment{fillin}{}
{\par\LARGE}
{\par\bigskip\printremoved\par}
\ExplSyntaxOn
\NewDocumentCommand{\fjern}{O{2em}m}
{
\holene_fjern:nn { #1 } { #2 }
}
\NewDocumentCommand{\printremoved}{ }
{
\holene_print_removed:
}
\seq_new:N \l_holene_removed_words_seq
\seq_new:N \l_holene_shuffled_words_seq
\tl_new:N \l_holene_word_tl
\int_new:N \l_holene_random_int
\cs_new_protected:Npn \holene_fjern:nn #1 #2
{
\seq_put_right:Nn \l_holene_removed_words_seq { #2 }
\sbox0{#2}%
\hspace*{0pt}
\leaders\hrule height 0pt depth 1pt\hskip\wd0 plus #1\scan_stop:
\mbox{}
}
\cs_new_protected:Npn \holene_print_removed:
{
\textbf{Sett~inn~ordene:~}
\holene_shuffle:
\seq_use:Nn \l_holene_shuffled_words_seq { ,~ }
}
\cs_new_protected:Npn \holene_shuffle:
{
\int_compare:nF
{ \seq_count:N \l_holene_removed_words_seq = 0 }
{ \holene_get_random: \holene_shuffle: }
}
\cs_new_protected:Npn \holene_get_random:
{
\setrannum { \l_holene_random_int }
{ 1 } { \seq_count:N \l_holene_removed_words_seq }
\tl_set:Nx \l_holene_word_tl
{ \seq_item:Nn \l_holene_removed_words_seq { \l_holene_random_int } }
\seq_remove_all:NV \l_holene_removed_words_seq \l_holene_word_tl
\seq_put_right:NV \l_holene_shuffled_words_seq \l_holene_word_tl
}
\cs_generate_variant:Nn \seq_remove_all:Nn { NV }
\cs_generate_variant:Nn \seq_put_right:Nn { NV }
\ExplSyntaxOff
\begin{document}
\section*{Vokabular} % (fold)
\label{sec:vokabular}
\begin{fillin}
Et \fjern{atom} består av \fjern{protoner} og \fjern{nøytroner}
i kjernen, med \fjern{elektroner} som kretser rundt.
\fjern{protoner} har en positiv ladning, \fjern{nøytroner}
er nøytralt ladet og \fjern{elektroner} har en negativ ladning.
\end{fillin}
% section vokabular (end)
\end{document}
这是一个例子
答案2
这样使用前导符,下划线就可以拉伸或收缩目标宽度的 0.2,并且在之前有额外的拉伸空白:
\documentclass[12pt, a4paper, norsk]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{fouriernc}
\usepackage[margin=1in]{geometry}
\usepackage{parskip}
\newcommand\fjern[1]{\leavevmode\sbox0{#1}%
\hskip0pt plus 1em
\hbox{}%
\nobreak
\leaders
\vbox{\kern.1ex\hrule width 1pt height 1pt\kern-.1ex}%
\hskip\wd0 plus.2\wd0 minus.2\wd0
\penalty0 }
\begin{document}
\section*{Vokabular} % (fold)
\label{sec:vokabular}
\LARGE Et \fjern{atom} består av \fjern{protoner} og \fjern{nøytroner} i kjernen, med \fjern{elektroner} som kretser rundt. \fjern{Protoner} har en positiv ladning, \fjern{nøytroner} er nøytralt ladet og \fjern{elektroner} har en negativ ladning.
% Print the removed words ALWAYS have a blank line before \vspace!
\vspace{4em}
\textbf{Sett inn ordene:} atom, protoner, nøytroner, elektroner
% section vokabular (end)
\end{document}
答案3
这是一个使用我的exsheets
包及其\blank
命令带有扩展名,用于打印要填写的单词列表。不过,要填写的条目不是随机排列的,而是按字母顺序排列的。
exsheets
尚未有挪威语标题翻译,因此我使用了快速网络搜索显示的内容...exsheets
如果您告诉我是哪些,我会添加正确的标题。
\documentclass[12pt, a4paper, norsk]{article}
\usepackage{babel}
\usepackage[utf8]{inputenc}
\usepackage{fouriernc}
\usepackage[showframe,margin=1in]{geometry}
\usepackage{exsheets}
\SetupExSheets{
headings-format = \bfseries
}
% no idea if those translations are correct:
\DeclareTranslation{Norsk}{exsheets-exercise-name}{Utøve}
\DeclareTranslation{Norsk}{exsheets-question-name}{Problemet}
\DeclareTranslation{Norsk}{exsheets-solution-name}{Oppløsning}
\usepackage{parskip}
\usepackage{expl3,l3sort}
\ExplSyntaxOn
\seq_new:N \g_holene_fillin_list_seq
\cs_new_protected:Npn \holene_addto_fillin_list:n #1
{
% \tl_to_lowercase:n ensures that entries are added lowercase only; this
% means however, that you have to use \o instead of ø inside of \fjern,
% probably other special characters need to be treated similarly. (I
% haven't checked the reason for this...)
\tl_to_lowercase:n {
\seq_gput_right:Nn \g_holene_fillin_list_seq {#1}
}
}
\NewDocumentCommand \fjern { m }
{
\IfInsideQuestionT
{ \holene_addto_fillin_list:n {#1} }
\blank {#1}
}
\cs_new_protected:Npn \holene_write_fillins:
{
\textbf{Sett~ inn~ ordene:}~
% remove duplicate entries:
\seq_remove_duplicates:N \g_holene_fillin_list_seq
% and sort alphabetically:
\seq_sort:Nn \g_holene_fillin_list_seq
{
% \tl_to_lowercase:n ensures that uppercase and lowercase variants are
% treated the same when ordered (unnecessary when it is used in
% \holene_addto_fillin_list:n already):
% \tl_to_lowercase:n {
\int_compare:nTF { \pdftex_strcmp:D { ##1 } { ##2 } = -1 }
{ \sort_ordered: }
{ \sort_reversed: }
% }
}
\seq_use:Nnnn \g_holene_fillin_list_seq
{ ,~ }
{ ,~ }
{ ,~ }
\seq_gclear:N \g_holene_fillin_list_seq
}
\NewDocumentCommand \printfillins { }
{ \holene_write_fillins: }
\ExplSyntaxOff
\begin{document}
\LARGE
\section*{Vokabular} % (fold)
\label{sec:vokabular}
\begin{question}
Et \fjern{atom} består av \fjern{protoner} og \fjern{n\o ytroner} i kjernen,
med \fjern{elektroner} som kretser rundt. \fjern{Protoner} har en positiv
ladning, \fjern{n\o ytroner} er nøytralt ladet og \fjern{elektroner} har en
negativ ladning.\par
\printfillins
\end{question}
\begin{solution}[print]
Et \fjern{atom} består av \fjern{protoner} og \fjern{n\o ytroner} i kjernen,
med \fjern{elektroner} som kretser rundt. \fjern{Protoner} har en positiv
ladning, \fjern{n\o ytroner} er nøytralt ladet og \fjern{elekt\-roner} har en
negativ ladning.
\end{solution}
% section vokabular (end)
\end{document}