RMarkdown 到 PDF 和 Fancyhdr - 控制标题后的间距

问题描述

我正在 RMarkdown 循环中创建一系列 PDF,但不知道如何控制使用 \headrule 创建的行与 r 块内文本开头之间的间距.

我的尝试是徒劳的,但包括在不同位置使用 \vspace{#pt}添加 cat("\\vspace{#pt}")、在指定 \usepackage{geometry} 时尝试使用 headsep。我不知所措,感谢任何和所有建议/解决方案。

我想将文本移近下图中的蓝线和红线。理想情况下,调整可以是动态的,因为大纲将用作类似但外观略有不同的报告的模板。

这是 .rmdpdf 的表示:

---
title: 
output: 
  pdf_document:
      latex_engine: lualatex 
geometry: "top=.5in,right=.75in,left=.75in,bottom = .5in"
header-includes:
- \usepackage{fancyhdr}
- \pagestyle{fancy}
tables: yes
---

\setlength{\headheight}{144pt}
\renewcommand{\headrulewidth}{0pt}

\fancyhead[L]{%
\textbf{Here is my title}
  }

\renewcommand\headrule{%
  \begingroup
  \vspace{2pt}
  \color{blue}\hrule height 4.32pt width\headwidth
  \vspace{2.16pt}
  \color{red}\hrule height 4.32pt width\headwidth
  \endgroup
}


```{r echo=FALSE,results = 'asis'}

cat("\\textbf{Name}")
cat("\\linebreak")
cat("\\textbf{ID}")

```

这是 .tex 文件

% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
]{article}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \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
% 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}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
  hidelinks,pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage[top=.5in,bottom = .5in]{geometry}
\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
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\usepackage{fancyhdr}
\pagestyle{fancy}
\ifluatex
  \usepackage{selnolig}  % disable illegal ligatures
\fi

\author{}
\date{\vspace{-2.5em}}

\begin{document}

\setlength{\headheight}{144pt}
\renewcommand{\headrulewidth}{0pt}

\fancyhead[L]{%
\textbf{Here is my title}
  }

\renewcommand\headrule{%
  \begingroup
  \vspace{2pt}
  \color{blue}\hrule height 4.32pt width\headwidth
  \vspace{2.16pt}
  \color{red}\hrule height 4.32pt width\headwidth
  \endgroup
}

\textbf{Name}\linebreak\textbf{ID}

\end{document}

解决方法

由于 Markdown 会自动加载除厨房水槽之外的几乎所有包,因此它还会加载 geometry 包。因此,您可以使用 \setlength{\headsep}{0cm} 更改标题规则和文本之间的空间:

% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
%
\documentclass[
]{article}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \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
% 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}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
  hidelinks,pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage[top=.5in,right=.75in,left=.75in,bottom = .5in]{geometry}
\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
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\usepackage{fancyhdr}
\pagestyle{fancy}
\ifluatex
  \usepackage{selnolig}  % disable illegal ligatures
\fi

\author{}
\date{\vspace{-2.5em}}

\setlength{\headsep}{0cm}

\begin{document}

\setlength{\headheight}{144pt}
\renewcommand{\headrulewidth}{0pt}

\fancyhead[L]{%
\textbf{Here is my title}
  }

\renewcommand\headrule{%
  \begingroup
  \vspace{2pt}
  \color{blue}\hrule height 4.32pt width\headwidth
  \vspace{2.16pt}
  \color{red}\hrule height 4.32pt width\headwidth
  \endgroup
}

\textbf{Name}\linebreak\textbf{ID}

\end{document}