latex book类:每章页眉页脚和标题格式 以及 去除章与章之间空白页的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了latex book类:每章页眉页脚和标题格式 以及 去除章与章之间空白页的问题相关的知识,希望对你有一定的参考价值。

在编写毕业论文,因为要求奇数页和偶数页的页眉不同,所以只能用book类编写。
但是出现了一些问题,不知如何解决

我对章、节、条的格式进行了定义
\titleformat\chapter\centering\sanhao\hei第\,\thechapter\,章1em
\titleformat\section\sihao\hei\thesection1em
\titleformat\subsection\xiaosi\hei\thesubsection1em

但是,编译出来确实这样的效果~~~

如何能让每章的题目的行距缩小到正常值范围,格式要求1.3倍行距

我用fancyhdr宏包定义页眉和页码
但是每章的第一页的页眉消失了,而且页码的格式也变成 1 ,而不是我定义的 -1- 的格式了
请问如何解决

参考文献的标题也存在如上问题

请教大家~~~
空白页和章节标题格式的问题已解决!
现在就剩页眉和页码的问题没解决了!!!

第一个问题:

\\titleformat 命令附带了一个可选参数,用以在结束之后的插入命令

 

你的

\\titleformat\\chapter\\centering\\sanhao\\hei第\\,\\thechapter\\,章1em

可以修改为

\\titleformat\\chapter\\centering\\sanhao\\hei第\\,\\thechapter\\,章1em[\\vspace-1cm]

来解决多余空白


第二个问题:

我猜你大概是这样用 fancyhdr 宏包的

\\pagestylefancy

\\fancyhf

\\fancyhead[LO,RE]\\leftmark

上面的意思是,对于以后全部页面,使用 fancy 样式,然后设置一些格式。

但是对于 \\chapter 这样的命令,如果你有兴趣看一看源代码,

它其实显式地调用了 \\thispagestyleplain,

也就是说,含有 \\chapter 命令的章节题目页面不受 fancy 样式的影响,它使用了官方的 \\plain 命令。

 

原则是禁止修改 \\chapter 命令,所以我们不能删除 \\plain,

只能修改 \\plain 的内容来绕过原则,而达到修改章节题目页的目的,

下面是一个完整可编译的例子

 

\\documentclass[openany]book

\\usepackagelipsum

\\usepackage[colorlinks]hyperref

\\renewcommand\\contentsname\\centerlinezd


\\usepackagefancyhdr

\\pagestylefancy

\\fancyhf

\\fancyhead[LO,RE]\\leftmark

\\fancyhead[LE,RO]cumtb.iis.ddb

\\fancyfoot[LO,RE]

\\fancyfoot[LE,RO]-\\,\\thepage\\,-

\\renewcommand\\headrulewidth0pt


\\fancypagestyleplain

     \\fancyhf

     \\fancyfoot[LO,RE]

     \\fancyfoot[LE,RO]-\\,\\thepage\\,-

     \\renewcommand\\headrulewidth0pt

\\begindocument

\\tableofcontents


\\chapterFirst

\\sectionone \\lipsum[1]

\\sectiontwo \\lipsum[2]

%

\\chapterSecond

\\sectionthr \\lipsum[3]

\\sectionfur \\lipsum[4]

%

\\sectionfiv \\lipsum[5-8]

\\enddocument


 

上面

\\fancypagestyleplain ... 

修改了 \\plain 所以就把 章节题目 页面给改了。

 

最后是我的建议:

按照通用美学,一般书籍的章节题目页是不能够有页眉的,页脚也尽量不要出现,右中线页码倒是可以保留,对于book类这样“错误”是很合理的,它是一种科学的设计。

如果仍然希望写出页码,可以在你的代码里加上

\\fancypagestyleplain

     \\fancyfoot[LE,RO]-\\,\\thepage\\,-

参考技术A 在页眉页脚设置里面 然后从当前页开始设置 然后设置的时候记住开始页码

如何正确链接 CSS 文件与 PHP 页脚和页眉

【中文标题】如何正确链接 CSS 文件与 PHP 页脚和页眉【英文标题】:How to properly link CSS files with PHP footer and header 【发布时间】:2016-11-04 10:04:58 【问题描述】:

所以我最近发现了如何使用 php 包含在我的每个文件中包含页脚和页眉,以避免将所有页眉/页脚代码复制粘贴到每个文件中。但是假设我有一个footer.php、header.php、home.php和about.php

在 header.php 或 home.php 和 about.php 中是否有我的标题、打开的 html/body 标记等。

//header.php
<html>
   <head>
      links to header.css
      links to home.css
      links to about.css
   </head>
   <body>

//home.php
<?php include("header.php"); ?>  //PROBLEM: the header.php also includes other .css such as "about.css", etc. that could result in problems later.
   </body>
</html>

我应该怎么做才能解决这个问题?我想到的一种方法是删除 header.php 文件的开头部分(html,head,title)并将其移至 home.css 和 about.css,以便它们每个都有自己的 css 链接。

【问题讨论】:

这是 HTML 101 的东西。标头相关代码属于&lt;head&gt;&lt;/head&gt;。标记标签属于&lt;body&gt;&lt;/body&gt; 在页眉开始您的 html 文档和正文(如果需要)在显示内容的正文和在页脚关闭 html、正文标签 你能把我链接到它说与标题相关的代码应该在 中的地方吗?通过标题相关,我说的是徽标和导航。我敢肯定这会进入身体。 @Fred-ii- @MancharyManchaary 我知道该怎么做,但我的问题是关于我使用包含时的问题。在我的头文件中,我启动了我的 html 文档和正文。然后我将这个头文件包含在我的主文件中。但是,这意味着我必须在 header 中链接 home.css,因为头文件启动 html 和 body。通过这样做,每个包含头文件的文件都会固有地应用 home.css 文件 @Justin 在您的header.php 中您可以使用$_SERVER['REQUEST_URI'] 之类的内容来了解​​header.php 在哪个页面上,这将使您能够使用if/else 来包含不同类型的*.css 文件,正是该页面所需要的。例如,$_SERVER['REQUEST_URI'] == '/' 是主页,$_SERVER['REQUEST_URI'] == '/about'about 页面等。您可以根据header.php 的页面为echo 的css 链接创建一个php 函数:function getStyles() 并使用@987654335 @ 包含不同类型的 css 文件。 【参考方案1】:

你在正确的轨道上。将样式表和 javascript 分解为其他 php 文件和 include 它们。所以所有页面都具有以下结构。

home.php

<?php $this_page = "home.php"; 
      include "template.php";

对于其他页面,只需替换 $this_page 变量即可。所有页面共有的结构其实就是模板。

template.php

<!DOCTYPE html>
<html>
    <head>
        <title>My Website</title>
        <!-- CSS-->
        <?php include "stylesheets.php" ?>
    </head>
    <body>
        <!-- common header -->
        <?php include "header.php" ?>

        <section>
            <!-- PAGE CONTENT HERE determined by $this_page value -->
            <!-- 'content_home.php', 'content_about.php'... have the content-->
            <?php include "content_$this_page" ?>
        </section>

        <!-- common footer -->
        <?php include "footer.php" ?>

        <!-- link javascript files -->
        <?php include "scripts.php" ?>
    </body>
</html>

从一页到下一页的唯一变化是$this_page 的值。它决定了在上面的模板中加载了哪些内容,也决定了要包含哪些 CSS 和 JS 文件。

stylesheets.php

<?php
$cssDir = "path/to/styles/"; //folder where all CSS files live

//Link each page to its CSS file
$styles = [
    'home.php' => 'home.css',
    'about.php' => 'about.css',
    'contact.php' => 'contact.css',
];

?>
<!-- CSS common to all pages -->
<link rel="stylesheet" type="text/css" href="<?="$cssDir/common.css"?>>
<!-- CSS, specific to the current page -->
<link rel="stylesheet" type="text/css" href="<?="$cssDir/$styles[$this_page]"?>>

您在scripts.php 中链接到的javascript 可以使用相同的方法。既然您的 HTML 已包含在离散模块中,那么您可以轻松地编辑网站的一部分,而不必担心另一部分会损坏。特别是我建议永远不要在一个 php 文件中打开标签并在另一个文件中关闭它,因为随着您的网站变得越来越大,这将是调试、维护和修改的噩梦。

关于路径: 请记住,当浏览器看到页面时,代替include "stylesheets.php"include "scripts.php",它将完全按照原样看到该文件的回显内容。因此,在这些文件中,您希望路径为:

    来自域根的绝对路径(最简单) ***php文件位置的相对路径(例如home.php) 只是文件名,如果它位于PHP's include PATH(默认情况下PHP在抛出错误之前查找内容的地方)

【讨论】:

对不起,我是 PHP 新手,我一直在重读你的解释,但我无法理解的部分是:“请注意,因为这个文件是在 template.php 中设置 $this_page 之后包含的,您可以根据 $this_page 的值更改包含的样式表。”我不确定我们为什么要包含我们所在的当前页面()以及我们将如何更改样式表。 非常感谢您的编辑。除了一部分之外,我能够完全理解所有内容。您的 home.php 包含 template.php,其中包含 home.php 导致无限循环,那么您将在哪里获得每个网站的特定代码? @Justin 你说得对,我在多个编辑周期中引入了一个错误。实际内容托管在content_home.php 中,这就是template.php 的正文标签之间包含的内容。更新了我的答案,它应该是固定的。 还要确保,在您的 stylesheets.php 下,您是否应该为 header.css 和 footer.css 添加另外 2 个链接?我看不出我们如何包含页眉和页脚的 .css 我会将我想要的 CSS 规则放在 common.css 的所有页面上。您可以在更多的 CSS 文件中分解这些规则,但我看不出有什么好处,因为您希望这些规则无处不在。【参考方案2】:

底线是您的代码可访问且易于维护,我将有一个 head.php、header.php 和 footer.php 文件。在 head.php 中,如果您要连接到数据库,您可能希望包含您的 config.php 并且还包含所有 &lt;html&gt;&lt;head&gt;&lt;title&gt;&lt;link&gt;&lt;script&gt; 标签,您将在每个页面中包含您的 index.php 或 home.php

include('head.php');
include('header.php');

等等等等

【讨论】:

所以如果我有另一个页面,例如 about.php 并且它需要 about.css,我会在 head.php 中链接 about.css 吗?我认为这会导致某些元素意外地从不同的 .css 文件中设置样式的问题。或者我应该密切关注我的课程名称来解决这个问题吗? 我会密切关注类和 id,拥有一个或尽可能少的 css 文件,如果速度或 SEO 很重要,我会再次回到易于维护和尽量减少 http 请求。跨度> 您需要记住是否在 head.php 中打开 html 标签以在 footer.php 中关闭它们 嗯,我会小心在一个文件中打开标签并在另一个文件中关闭它。这使得调试代码非常困难,并且修改会很复杂。我宁愿在标签之间嵌套include 调用。这就是我构建自己页面的方式(有关详细信息,请参阅我的解决方案)。 解决方案总是有不止一种方法,我的逻辑是头总是在前,页脚总是在每一页的最后。【参考方案3】:

对于headernav,您必须创建一个单独的文件,例如nav.php,其中仅包含nav 和您的site header 而不是&lt;head&gt;&lt;/head&gt;,并在后面包含它你的header.php。喜欢

//Home.php
<?php 
 include("header.php"); this will contain your head part mostly your .css and .js files
 include("nav.php"); This will only contain header and nav
 // home.php code goes here
?>

在下面使用code 将自动获取到您的根目录的路径。

<?php
$PATH = "http://localhost/Folder/"; // change this when needed
$PAGE = basename($_SERVER['PHP_SELF']);
?>

然后像这样添加您的文件

 <link rel="stylesheet" href="<?php echo $PATH; ?>assets/plugins/font-awesome/css/font-awesome.css">

【讨论】:

对不起,但我不确定您示例中的 header.php 的用途。如果我的 home.php 想要包含 home.css,header.php 是怎么做的呢?谢谢 如果你在header.php 中包含你的home.css,在你使用include('header.php') 之后,它会自动添加到你的home.phphome.php 顶部。 但是其他所有的 php 文件、xyz.php、abc.php 也可以访问 header.php 并且可能会被意外设置样式 所以不要在你不想要这个东西的其他 .php 文件的顶部包含include('header.php') 您必须访问此站点以了解结构。 apaddedcell.com/…

以上是关于latex book类:每章页眉页脚和标题格式 以及 去除章与章之间空白页的问题的主要内容,如果未能解决你的问题,请参考以下文章

reportlab 中的多行(段落)页脚和页眉

带有 % extends 的每页上的 Django 页脚和页眉

在单个单元格中显示页眉页脚和单元格?

R:读取 csv 文件时删除页眉、页脚和零星的列标题

滚动 tableView 部分的页脚和页眉

实现固定页眉和滚动,页脚和移动问题