我怎样才能使虚线一直延伸到边缘?

我怎样才能使虚线一直延伸到边缘?

在考试包中,我尝试以虚线的形式插入书写空间。为此,我创建了命令“\lines{X}”,以在页面上以设定的间距插入 X 条虚线,如下所示:

\newcommand{\lines}[1]{

    \foreach \n in {1,...,#1}{
        \parbox[b][2em][b]{\linewidth}{\dotfill}
    }

但是,使用时会出现以下情况:

    \newgeometry{
    margin=2.35146cm,         
    bottom=2.5cm,      
    headheight=14.5pt,  
    marginparsep=0mm    
}
\begin{sectionheader}{Section I}
    \textbf{20 marks\\
    Attempt Question 1\\
    Allow about 45 minutes for this section}
    
    Read the texts on pages 2–7 of the Stimulus Booklet carefully and then answer the question
in the spaces provided. These spaces provide guidance for the expected length of response.
\end{sectionheader}

\begin{shortanswer}

\begin{bookletquestion}{3}


\textbf{Text 1 — Poem}

Analyse how Langston Hughes uses visual imagery to express his emotions.

\lines{6}

在此处输入图片描述

为什么点填充没有完全到达边距并与节标题的长度相匹配?我该如何修改它以使其与节标题的长度相匹配?

作为参考,这是我的文档的“幕后”,其中我在“bookletquestion”环境中设置了失败的示例

\ProvidesPackage{exam}

\usepackage{amsmath}    
\usepackage{amssymb}    
\usepackage{anyfontsize}
\usepackage{asymptote}  
\usepackage{changepage} 
\usepackage{color}      
\usepackage{enumitem}   
\usepackage{fancyhdr}  
\usepackage{framed}     
\usepackage{geometry}  
\usepackage{graphicx}   
\usepackage{helvet}     
\usepackage{marginnote} 
\usepackage{mathptmx}   
\usepackage{multicol}   
\usepackage{multirow}   
\usepackage{pgffor}    
\usepackage{setspace}   
\usepackage{tikz}       
\usepackage{totalcount} 
\usepackage{accents}    
\usepackage{pifont} 
    
    
\newcounter{QuestionCounter}
\setcounter{QuestionCounter}{1}


\geometry{
    a4paper,            
    margin=2cm,         
    bottom=2.5cm,       
    headheight=14.5pt,  
    marginparsep=0mm    
}


\pagestyle{fancy}


\renewcommand{\headrulewidth}{0pt}


\setlength{\parindent}{0em}
\setlength{\parskip}{1em}


\renewcommand\labelitemi{$\vcenter{\hbox{\tiny$\bullet$}}$}


\setlist[itemize]{
    itemsep=-0.2em,
    align=parleft,
    leftmargin=1em,
    labelwidth=0.5em
}



\newcommand{\mrks}[1]{\marginnote{\textbf{#1}}[0em]\ignorespaces}


\newenvironment{shortanswer}{
    
    \begin{adjustwidth}{}{10mm}

    \renewcommand{\labelenumi}{(\roman{enumi})}
   
    
    \setlist[enumerate]{
        align=parleft,
        labelindent=0em,
        parsep=0.5em
    }    
    
    
    \setlist[enumerate,1]{
        itemsep=2em
    }
    
    
    \setlist[enumerate,2]{
        align=right,
        itemsep=1em,
        topsep=1em,
        labelsep=1em
    }
}{
    \end{adjustwidth}
}


\newenvironment{shortquestion}[1]{
    \textbf{Question \theQuestionCounter} (#1 marks)
    
}{
    \stepcounter{QuestionCounter}    
}


\newenvironment{bookletquestion}[1]{
    \textbf{Question \theQuestionCounter} (#1 marks) 
    
}{
    \stepcounter{QuestionCounter}    
}






\newcommand{\nextpage}{\the\numexpr\thepage+1}


\newcommand{\questionbreak}{
    \end{enumerate}
    \begin{center}
    \textbf{Question \theQuestionCounter\ continues on page \nextpage}
    \end{center}
    \pagebreak
    Question \theQuestionCounter\ (continued)
    \begin{enumerate}[resume]
}


\newcommand{\centerbold}[1]{
    \begin{center}\textbf{#1}\end{center}
}


\newcommand{\questionend}{
    \vspace{1em}
    \centerbold{End of Question \theQuestionCounter}
}




\newcommand{\lines}[1]{

    \foreach \n in {1,...,#1}{
        \parbox[b][2em][b]{\linewidth}{\dotfill}
    }
}




\newenvironment{sectionheader}[1]{
    \large{\textbf{#1}}         
    
    \normalsize                 
}{
    \\ \rule{\textwidth}{1pt}}  

答案1

您在环境中看到了这些虚线shortanswer。该exam.sty文件定义了此环境,因此它将其内容放在\begin{adjustwidth}{}{10mm}... \end{adjustwidth}(由包定义的环境)changepage内。这会导致该环境内右侧的边距增加 10 毫米,这就是为什么线条不会一直延伸到通常的边距。

一个选择是将 adjustwidth 环境从定义中取出,然后改用这个:

\newenvironment{shortanswer}{

    \renewcommand{\labelenumi}{(\roman{enumi})}

    \setlist[enumerate]{
        align=parleft,
        labelindent=0em,
        parsep=0.5em
    }

    \setlist[enumerate,1]{
        itemsep=2em
    }

    \setlist[enumerate,2]{
        align=right,
        itemsep=1em,
        topsep=1em,
        labelsep=1em
    }
}{}

无调整宽度

\renewenvironment(如果您不想更改文件,您可以在文档的序言中使用相同的定义.sty。)

然而,如果这是您的套餐,如果您不想增加利润,那么一开始就不清楚它在那里的原因。

如果出于某种原因,你确实希望在那种环境下提高所有产品的利润率除了虚线,您可以将 的定义更改\lines为使用\textwidth而不是linewidth,因为 adjustwidth 环境只会改变后者。

\newcommand{\lines}[1]{

    \foreach \n in {1,...,#1}{
        \parbox[b][2em][b]{\textwidth}{\dotfill}
    }
}

然后,线条将比该环境中的任何文本(如果您在其中放置任何足够宽的文本以换行)更宽。

使用 textwidth 代替 linewidth

但请注意,这将在日志文件中产生许多“overfull \hbox”警告,因为虚线对于该部分的边距来说太大。我想如果你确定这就是你想要的,你可以忽略它们。

我觉得这有点奇怪。我要么使用第一个解决方案,要么一开始就将线条移到环境之外(如果它们不属于那里的话)。

相关内容