使用四开版制作双面漂亮的 PDF

2023-12-25

(免责声明:我借用了最多的代码使用四开本制作漂亮的 PDF https://nrennie.rbind.io/blog/making-pretty-pdf-quarto/.)

我的代码可以正常工作classoption: [oneside]但有问题classoption: [twoside].

我怎样才能正确渲染它?

---
book:
  title: "Title"
  author: "MYaseen208"
format:
  pdf:
    documentclass: scrreprt
    classoption: [twoside]
  # classoption: [oneside]
    toc: true
    toc-depth: 3
    lot: true
    lof: true
    include-in-header:
      - text: |
          %% load packages
          \usepackage{lipsum}
          \usepackage{geometry}
          \usepackage{xcolor}
          \usepackage{eso-pic}
          \usepackage{fancyhdr}
          \usepackage{sectsty}
          \usepackage{fontspec}
          \usepackage{titlesec}
          
          %% Set page size with a wider right margin
          \geometry{a4paper, total={170mm,257mm}, left=20mm, top=20mm, bottom=20mm, right=50mm}
          
          %% Let's define some colours
          \definecolor{light}{HTML}{E6E6FA}
          \definecolor{highlight}{HTML}{800080}
          \definecolor{dark}{HTML}{330033}
          
          %% Let's add the border on the right hand side
          \AddToShipoutPicture{% 
              \AtPageLowerLeft{% 
                  \put(\LenToUnit{\dimexpr\paperwidth-3cm},0){% 
                      \color{light}\rule{3cm}{\LenToUnit\paperheight}%
                    }%
               }%
          }
    include-before-body:
      - text: |
          %% Style the page number
          \fancypagestyle{mystyle}{
          \fancyhf{}
          \renewcommand\headrulewidth{0pt}
          \fancyfoot[R]{\thepage}
          \fancyfootoffset{3.5cm}
          }
          \setlength{\footskip}{20pt}
          
          %% style the chapter/section fonts
          \chapterfont{\color{dark}\fontsize{20}{16.8}\selectfont}
          \sectionfont{\color{dark}\fontsize{18}{16.8}\selectfont}
          \subsectionfont{\color{dark}\fontsize{14}{16.8}\selectfont}
          
          %% left align title
          \makeatletter
          \renewcommand{\maketitle}{\bgroup\setlength{\parindent}{0pt}
          \begin{flushleft}
            {\sffamily\huge\textbf{\MakeUppercase{\@title}}} \vspace{0.3cm} \newline
            {\Large {\@subtitle}} \newline
            \@author
          \end{flushleft}\egroup
          }
          \makeatother
---

# Introduction

\lipsum[1-50] 

# Material and Methods

\lipsum[1-20] 

您可以测试页面是偶数还是奇数,并相应地放置蓝色条:

\makeatletter
\AddToShipoutPicture{%
\if@twoside
\ifodd\c@page
    \AtPageLowerLeft{%
        \put(\LenToUnit{\dimexpr\paperwidth-3cm},0){%
            \color{light}\rule{3cm}{\LenToUnit\paperheight}%
          }%
     }%
\else
    \AtPageLowerLeft{%
        \put(\LenToUnit{0cm},0){%
            \color{light}\rule{3cm}{\LenToUnit\paperheight}%
          }%
     }%
\fi
\else
    \AtPageLowerLeft{%
        \put(\LenToUnit{\dimexpr\paperwidth-3cm},0){%
            \color{light}\rule{3cm}{\LenToUnit\paperheight}%
          }%
     }%
\fi
}
\makeatother

完整文件:

% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames,x11names}{xcolor}
%
\documentclass[
  letterpaper,
  DIV=11,
  numbers=noendperiod,
  twoside
  ]{scrreprt}

\usepackage{amsmath,amssymb}
\usepackage{iftex}
\ifPDFTeX
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math}
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
\usepackage{lmodern}
\ifPDFTeX\else  
    % xetex/luatex font selection
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
% Make \paragraph and \subparagraph free-standing
\ifx\paragraph\undefined\else
  \let\oldparagraph\paragraph
  \renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
\fi
\ifx\subparagraph\undefined\else
  \let\oldsubparagraph\subparagraph
  \renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
\fi


\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}\usepackage{longtable,booktabs,array}
\usepackage{calc} % for calculating minipage widths
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother

%% load packages
\usepackage{lipsum}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{eso-pic}
\usepackage{fancyhdr}
\usepackage{sectsty}
%\usepackage{fontspec}
\usepackage{titlesec}

%% Set page size with a wider right margin
\geometry{a4paper, total={170mm,257mm}, left=20mm, top=20mm, bottom=20mm, right=50mm}

%% Let's define some colours
\definecolor{light}{HTML}{E6E6FA}
\definecolor{highlight}{HTML}{800080}
\definecolor{dark}{HTML}{330033}

%% Let's add the border on the right hand side
\makeatletter
\AddToShipoutPicture{%
\if@twoside
\ifodd\c@page
    \AtPageLowerLeft{%
        \put(\LenToUnit{\dimexpr\paperwidth-3cm},0){%
            \color{light}\rule{3cm}{\LenToUnit\paperheight}%
          }%
     }%
\else
    \AtPageLowerLeft{%
        \put(\LenToUnit{0cm},0){%
            \color{light}\rule{3cm}{\LenToUnit\paperheight}%
          }%
     }%
\fi
\else
    \AtPageLowerLeft{%
        \put(\LenToUnit{\dimexpr\paperwidth-3cm},0){%
            \color{light}\rule{3cm}{\LenToUnit\paperheight}%
          }%
     }%
\fi
}
\makeatother
\KOMAoption{captions}{tableheading}
\makeatletter
\makeatother
\makeatletter
\makeatother
\makeatletter
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\AtBeginDocument{%
\ifdefined\contentsname
  \renewcommand*\contentsname{Table of contents}
\else
  \newcommand\contentsname{Table of contents}
\fi
\ifdefined\listfigurename
  \renewcommand*\listfigurename{List of Figures}
\else
  \newcommand\listfigurename{List of Figures}
\fi
\ifdefined\listtablename
  \renewcommand*\listtablename{List of Tables}
\else
  \newcommand\listtablename{List of Tables}
\fi
\ifdefined\figurename
  \renewcommand*\figurename{Figure}
\else
  \newcommand\figurename{Figure}
\fi
\ifdefined\tablename
  \renewcommand*\tablename{Table}
\else
  \newcommand\tablename{Table}
\fi
}
\@ifpackageloaded{float}{}{\usepackage{float}}
\floatstyle{ruled}
\@ifundefined{c@chapter}{\newfloat{codelisting}{h}{lop}}{\newfloat{codelisting}{h}{lop}[chapter]}
\floatname{codelisting}{Listing}
\newcommand*\listoflistings{\listof{codelisting}{List of Listings}}
\makeatother
\makeatletter
\@ifpackageloaded{caption}{}{\usepackage{caption}}
\@ifpackageloaded{subcaption}{}{\usepackage{subcaption}}
\makeatother
\makeatletter
\@ifpackageloaded{tcolorbox}{}{\usepackage[skins,breakable]{tcolorbox}}
\makeatother
\makeatletter
\@ifundefined{shadecolor}{\definecolor{shadecolor}{rgb}{.97, .97, .97}}
\makeatother
\makeatletter
\makeatother
\makeatletter
\makeatother
\ifLuaTeX
  \usepackage{selnolig}  % disable illegal ligatures
\fi
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same} % disable monospaced font for URLs
\hypersetup{
  colorlinks=true,
  linkcolor={blue},
  filecolor={Maroon},
  citecolor={Blue},
  urlcolor={Blue},
  pdfcreator={LaTeX via pandoc}}

\author{}
\date{}

\begin{document}
%% Style the page number
\fancypagestyle{mystyle}{
\fancyhf{}
\renewcommand\headrulewidth{0pt}
\fancyfoot[R]{\thepage}
\fancyfootoffset{3.5cm}
}
\setlength{\footskip}{20pt}

%% style the chapter/section fonts
\chapterfont{\color{dark}\fontsize{20}{16.8}\selectfont}
\sectionfont{\color{dark}\fontsize{18}{16.8}\selectfont}
\subsectionfont{\color{dark}\fontsize{14}{16.8}\selectfont}

%% left align title
\makeatletter
\renewcommand{\maketitle}{\bgroup\setlength{\parindent}{0pt}
\begin{flushleft}
  {\sffamily\huge\textbf{\MakeUppercase{\@title}}} \vspace{0.3cm} \newline
  {\Large {\@subtitle}} \newline
  \@author
\end{flushleft}\egroup
}
\makeatother

\ifdefined\Shaded\renewenvironment{Shaded}{\begin{tcolorbox}[boxrule=0pt, sharp corners, interior hidden, borderline west={3pt}{0pt}{shadecolor}, frame hidden, enhanced, breakable]}{\end{tcolorbox}}\fi

\renewcommand*\contentsname{Table of contents}
{
\hypersetup{linkcolor=}
\setcounter{tocdepth}{2}
\tableofcontents
}
\listoffigures
\listoftables
\hypertarget{introduction}{%
\chapter{Introduction}\label{introduction}}

\lipsum[1-50]

\hypertarget{material-and-methods}{%
\chapter{Material and Methods}\label{material-and-methods}}

\lipsum[1-20]

\end{document}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用四开版制作双面漂亮的 PDF 的相关文章

  • 将绘图调用拆分为多个块

    我正在编写一个图的解释 其中我基本上将在第一个块中创建图 然后描述该输出 并在第二个块中添加一个轴 然而 似乎每个块都会强制一个新的绘图环境 因此当我们尝试使用以下命令运行块时会出现错误axis独自的 观察 output html docu
  • kernlab 中 SVM 训练之外的核矩阵计算

    我正在开发一种新算法 该算法可以生成修改后的核矩阵以用于 SVM 训练 但遇到了一个奇怪的问题 出于测试目的 我比较了使用 kernelMatrix 接口和普通内核接口学习的 SVM 模型 例如 Model with kernelMatri
  • pyomo + 网状错误 6 句柄无效

    我正在尝试运行pyomo优化 我收到错误消息 Error 6 The handle is invalid 不知道如何解释它 环顾四周似乎与特权有关 但我不太明白 在下面找到完整的错误跟踪以及重现它的玩具示例 完整的错误跟踪 py run f
  • API 请求和curl::curl_fetch_memory(url, handle = handle) 中的错误:SSL 证书问题:证书已过期

    几天前 我运行了代码几个月 没有任何问题 GET url myurl query 今天我遇到一个错误 Error in curl curl fetch memory url handle handle SSL certificate pro
  • r 中训练和测试数据的最小最大缩放/归一化

    我正在创建一个函数 它将训练集和测试集作为其参数 最小 最大缩放 标准化并返回训练集并使用这些same最小值和最小 最大范围的值 标准化并返回测试集 到目前为止 这是我想出的功能 min max scaling lt function tr
  • 适用于 iPhone / iPad / iOS 的快速、精益 PDF 查看器 - 提示和提示?

    最近有很多关于绘制 PDF 的问题 是的 您可以使用UIWebView但这无法提供您所期望的优秀 PDF 查看器的性能和功能 您可以绘制PDF页面到 CALayer http www cocoabuilder com archive coc
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 朴素贝叶斯分类器仅基于先验概率做出决策

    我试图根据推文的情绪将推文分为三类 买入 持有 卖出 我正在使用 R 和包 e1071 我有两个数据框 一个训练集和一组需要预测情绪的新推文 训练集数据框 text sentiment this stock is a good buy Bu
  • 将数据框中重叠的范围合并到唯一的组中

    我有一个 n 行 3 的数据框 df lt data frame start c 178 400 983 1932 33653 end c 5025 5025 5535 6918 38197 group c 1 1 2 2 3 df sta
  • 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

    遵循电子书第 4 3 3 节 PDF 文档的数字签名 https jira nuxeo com secure attachment 49931 digitalsignatures20130304 pdf 我正在尝试创建一个工作示例 其中 客
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • ggplot2:如何标记事件发生的日期

    我想从第二个情节中获取第一个情节的信息 第二张图表示事件发生的天数 它看起来更宽 因为它没有图例 但它是相同的时间尺度 我选择在第一个图中手动分配颜色 I would like to overlay the second plot dots
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • SPSS 中的标准化残差与 R rstandard(lm()) 不匹配

    在寻找 R 相关解决方案时 我发现 R 和 SPSS 版本 24 在计算简单线性模型中的标准化残差方面存在一些不一致 看来SPSS所谓的标准化残差匹配 R学生化残差 我完全不认为某处存在软件错误 但显然这两个程序之间存在差异 看看这个例子
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输
  • 如何将plot中的单变量列表图表转换为ggplot2格式?

    我正在搜索 但仍然找不到一个非常简单的问题的答案 我们如何使用 R 中的 ggplot2 生成一个变量的简单线图 我正在分析时间序列数据 并且想要对图表进行更复杂的操作 我认为如果我使用 ggplot2 代替会更好plot It works

随机推荐

  • D3 - 重置 SVG 对象动画

    我正在用交互式标记制作一个图表 每个标记都沿着侧轴开始 单击时会移动到沿线的位置并增大尺寸 我让图标移动和增长 但在重置图表时遇到问题 我可以通过第二次单击使图标返回到其原始位置 但是第二次单击后图标将不再响应单击 我怀疑这很简单 但我没有
  • 防止 git checkout 覆盖文件

    另一位开发人员将他的 rvmrc 检查到了 git 存储库中 我已经删除了它并将其添加到 gitignore 但每次需要返回时它都会覆盖我的 rvmrc 我使用的是 OSX 所以我发现我可以使用 OSX 文件锁定机制 获取信息中的 锁定 复
  • 如何在数据库中保存标签(关键字)?

    我想使用 php 和 mysql 创建一个简单的标签系统 以便用户可以通过表单添加一些标签 我的问题是我应该将标签保存为单个数据库列中的数组吗 例如 tag1 tag2 tag3 或者我应该在数据库表中有单独的列 我应该在每列中保存每个标签
  • PowerShell 按嵌套字段选择和分组

    我有以下对象结构 resources Array resource PSCustomObject 名称 字符串 Tags PSCustomObject 所有者 字符串 more 所以我可以做 resources 0 Tags Owner并获
  • 在 iOS 中使用 AVCapture 捕获视频时进行缩放

    我正在使用 AVCapture 捕获视频并保存它 但我需要提供缩放选项 例如捏合缩放或通过缩放按钮 此外 视频的保存方式应与显示的方式完全相同 我的意思是当放大时 应以缩放的方式保存 如有任何帮助 链接将不胜感激 我设置 AVCapture
  • perl 正则表达式中的 OR 条件

    我正在尝试编写一个脚本 通过 Perl 中的正则表达式执行 OR 函数 我编写了一段代码 其中如果字符串包含 D 或 E 后跟 P 则应该打印 D或E后跟P 否则 D或E后不跟P 假设如果我给出 s ABCDEABCDEPABCDEAB 它
  • SameSite Cookie 标头和 Websocket 不起作用

    在我们设置 SameSite None 之前 我们的游戏无法在任何第 3 方网站上运行 正如这段视频中所示 https youtu be AYCvCrZyDk https youtu be AYCvCrZyDk 网站已加载 但网络套接字无法
  • OCaml 中的惰性“n 选择 k”

    作为枚举集合的更大问题的一部分 我需要编写一个 OCaml 函数 choose 它接受一个列表并输出为由该列表的元素组成的所有可能的大小为 k 的序列的列表 不重复序列 这可以可以通过排列相互获得 它们在最终列表中的顺序无关 例如 choo
  • 如何在reactjs中使用formData添加多个图像

    我是 Reactjs 新手 我正在使用环回存储连接器来存储图像 文件 现在我的问题是使用上传多个文件formData my code constructor props super props this state car photo Ca
  • 按项目分组时,测试显示在测试资源管理器的“外部”类别下

    Whenever I try to run tests on Test Explorer from Visual Studio 2012 SOME test are being categorized as External even th
  • 在两个数字和一个稀有数字之间生成随机数

    我可以使用这个在c中生成两个数字之间的随机数 arc4random high low 1 low 那么现在我的要求是 我想让一个数字变得稀有 这意味着如果 高 5 低 1 稀有 3 比 3 出现的次数比 1 2 4 和 5 少得多 Than
  • #1062 - 密钥 1 的重复条目“1” - 未找到重复条目

    因此 当尝试向字段添加自动增量时 会出现 1062 Duplicate entry 1 for key 1 我尝试删除主键并重新添加它 效果很好 我认为如果有重复项就不会 但是当我尝试向该字段添加自动增量时 它会抛出错误 它为我提供了一个运
  • 在bash脚本中使用Linux命令的正确方法

    就其路径而言 在 bash 脚本中使用 Linux 命令的最佳和最正确的方法是什么 仅使用正确吗ip addr show 依赖于 shell 路径 PATH https pubs opengroup org onlinepubs 96999
  • glMultiDrawIndirect 和 DrawElementsIndirectCommands 不渲染所有对象

    我似乎正在使用glMultiDraw间接 MDI 和 或绘制元素间接命令 DEIC 不正确 因为我无法正确渲染所有对象 该方法尝试对相似的对象和纹理重用绘制命令 实例化 ish 在所有位置绘制所有对象 调试 方法仅对每个对象 两个三角形 使
  • Javascript提示并提醒输入一个数字,它会循环,你将输入数字以获得它的平均值

    我有下面带有循环的 javascript 代码 但我无法得到它的平均值 我不确定我的代码有什么问题 就像第一个提示你输入一个数字 它会循环 你输入数字 比如你输入了多少 你会得到所有数字的总和 完成后得到它的平均值 这是我的代码 函数 sh
  • 使用 nginx、letsencrypt 和 uwsgi 配置时无法获得安全连接

    我正在努力解决无法通过安全连接获取 Flask 应用程序的问题 每当我打开网站时 都会看到一个黄色感叹号 表示我的连接不安全 我看过所有教程 但似乎不明白为什么会发生这种情况 有人可以帮助我吗 下面是配置 UWSGI命令 screen uw
  • 如何处理使用Android MediaRecorder录制的文件

    我正在使用 Android 网站上的以下示例进行音频录制 http developer android com guide topics media audio capture html http developer android com
  • 如何在标准 Web 表单 .Net 中返回 JSON 对象

    目标是调用一个执行该操作的方法 然后返回一个 JSON 对象 我是 JSON 新手 我有一个default aspx 其中包含以下代码 现在我想要 Default aspx cs 中的普通方法在此处的单击事件上运行 day click fu
  • OpenCV houghLinesP 参数

    我很难在 Python 中使用 HoughLinesP 和 OpenCV 找到该图像中棋盘上的线 为了理解 HoughLinesP 的参数 我提出了以下代码 import numpy as np import cv2 from matplo
  • 使用四开版制作双面漂亮的 PDF

    免责声明 我借用了最多的代码使用四开本制作漂亮的 PDF https nrennie rbind io blog making pretty pdf quarto 我的代码可以正常工作classoption oneside 但有问题clas