Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Latex 本章最后一页的页眉宽度_Latex - Fatal编程技术网

Latex 本章最后一页的页眉宽度

Latex 本章最后一页的页眉宽度,latex,Latex,在使用此新环境启动新的multicls环境时,我尝试关闭marginpar,该环境使用multicls和chngpage包: \newenvironment{multi}[1]{% \newlength{\newtextwidth}% \setlength{\newtextwidth}{\marginparwidth}% \addtolength{\newtextwidth}{-1cm}% \addtolength{\headheight}{.5cm}% \let\oldheadrule\hea

在使用此新环境启动新的multicls环境时,我尝试关闭marginpar,该环境使用multicls和chngpage包:

\newenvironment{multi}[1]{%
\newlength{\newtextwidth}%
\setlength{\newtextwidth}{\marginparwidth}%
\addtolength{\newtextwidth}{-1cm}%
\addtolength{\headheight}{.5cm}%
\let\oldheadrule\headrule%
\addtolength{\headwidth}{\newtextwidth}%
\begin{adjustwidth}{}{-\newtextwidth}\begin{multicols}{#1}}%
{\end{multicols}\end{adjustwidth}}
这很有效:

嗯,差不多了,因为在当前章节“Lorem ipsum”的最后一页,它的行为就像我没有指示它:\addtolength{\headwidth}{\newtextwidth}:

我怎样才能解决这个问题

编辑

我也在用fancyhdr

第二次编辑

PoC:

\documentclass[12pt,a4paper,oneside]{report}
\usepackage[utf8]{inputenc}
\usepackage[top=2cm,left=2cm,right=4.5cm]{geometry}
\usepackage{chngpage}
\usepackage{color}
\usepackage{amsmath}
\usepackage[pdftex,bookmarks,pdfpagemode=UseOutlines,bookmarksopen,backref
,colorlinks,urlcolor=blue,linktocpage]{hyperref}
\usepackage{url}
\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage{indentfirst}
\usepackage{listings}
\usepackage{boxedminipage}
\pagestyle{fancy}

\setlength{\columnseprule}{1pt}

\setlength{\marginparwidth}{4cm}

\rhead{\large\leftmark}
\renewcommand{\chaptermark}[1]{%
  \markboth{#1}{}}

\makeatletter
\renewcommand*\@makechapterhead[1]{%
  {\parindent \z@ \raggedright \normalfont
    \huge\bfseries
    #1\par\nobreak
    \vskip 20\p@
  }}
\makeatother

\let\oldmarginpar\marginpar
\renewcommand\marginpar[1]{\-\oldmarginpar[\sffamily\raggedleft\footnotesize #1]%
{\sffamily\raggedright\footnotesize
\begin{boxedminipage}{\marginparwidth}#1\end{boxedminipage}
}}




\newenvironment{multi}[1]{%
\newlength{\newtextwidth}%
\setlength{\newtextwidth}{\marginparwidth}%
\addtolength{\newtextwidth}{-1cm}%
\addtolength{\headheight}{.5cm}%
\let\oldheadrule\headrule%
\addtolength{\headwidth}{\newtextwidth}%
\begin{adjustwidth}{}{-\newtextwidth}\begin{multicols}{#1}}%
{\end{multicols}\end{adjustwidth}}


\begin{document}
\tableofcontents

\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}

\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}

\chapter{Lorem ipsum}
\begin{multi}{2}
\lipsum[1-20]
\end{multi}


\end{document}
在“multi”之后,应该可以在同一页面上继续单列,但标题必须保持与在“multi”环境中启动页面时相同


为什么我需要一个marginpar在同一页上的单列和多列之后?想象一下,展示本文的源代码时,在页边空白处有一些小提示。(这就是列表包的用途)

我怀疑您的最后一个标题框是在您的文本制作完多字母框后构建的,因此您不在更改范围之内。它返回到旧的值

您最好添加这个包并使用它。我相信它在多列中表现良好

好的,这几乎肯定是范围的问题。您正在新的
multi
环境中进行宽度调整。当您的文本在多个环境中用完时,您尚未填写最后一页;在填充页面之前,不会设置标题。因此,您的MULTI环境完成了框,您离开了作用域,然后页面完成并发出。使用旧的宽度


在环境之外设置标题宽度和参数。

我运行了您的测试文档。它似乎有一个bug,
\newlength{\newtextwidth}
具有全局效应,因此会导致错误。不知道为什么会这样,但我从
\newenvironment{multi}
中取出了它,没有任何不良影响

查理的诊断绝对正确。另一种解决方案是在multicols之后但在adjustwidth之前结束页面,因此:

\newenvironment{multi}[1]{%
   ...}
{\end{multicols}\vfill\break\end{adjustwidth}}

我已经测试了这个解决方案,在您的示例文档中,它产生了良好的输出。

它可能有助于展示一个完整的LaTeX示例,包括您使用的所有软件包-例如。\headwidth是在FancyHeads中定义的,而不是在base LaTeX中定义的。这肯定是正确的解释。如果您不想使用fancyhdr,可以在文本末尾尝试\clearpage。这可能是假的。我所展示的例子已经使用了fancyhdr。很抱歉没能指出这一点。查理,你有19k代表,你必须问一下开车经过的选民吗?我支持这一点;从环境内部更改标题的宽度不应起作用;当一个页面上有两个环境的宽度不一致时,TeX应该怎么做?此外,当重新排序内容以完美填充页面时,环境可能会出现在不同的页面上,并且当标题出现时。