我想在左、右页脚之间放置一个阴影矩形,填充中间的空间。左页脚的宽度可以变化,因此我希望矩形能够自动填充剩余的空间。
以下代码演示了我想要做的事情(中心页脚构成左页脚的一部分),但矩形的宽度是固定的。我想更改矩形的宽度以自动填充剩余空间。
\documentclass{article}
\usepackage{tikz}
\usepackage[includeheadfoot,margin=0.8cm]{geometry}
\usepackage{fancyhdr}
\fancyhf{}
\pagestyle{fancy}
\rfoot{1 of 10}
\definecolor{shadeleft}{RGB}{222,63,94}
\definecolor{shaderight}{RGB}{112,67,96}
\lfoot{
This text can be of variable width
\hspace{5pt}
% The value below of 2in should change to fill the remaining space
\tikz\shade[left color=shadeleft,right color=shaderight] (0,0) rectangle (2in,2pt);
}
\usepackage{lipsum}
\begin{document}
\lipsum
\end{document}
供参考,我实际上是在一个类中使用了这个代码,这就是左页脚文本可以改变的原因(在不同的文档之间)。
我正在使用 xelatex,尽管我认为这没有什么区别。
答案1
如果您不介意将可变宽度的文本放入节点,那么这相对容易。您可以进一步根据自己的喜好调整间距。
\documentclass{article}
\usepackage{tikz,fancyhdr,lipsum}
\usetikzlibrary{calc}
\usepackage[includeheadfoot,margin=0.8cm]{geometry}
\fancyhf{}
\pagestyle{fancy}
\rfoot{1 of 10}
\definecolor{shadeleft}{RGB}{222,63,94}
\definecolor{shaderight}{RGB}{112,67,96}
\lfoot{%
\tikz[baseline=(a.text)]{
\shade[left color=shadeleft,right color=shaderight]
node[outer xsep=0,inner xsep=0,
append after command={
let \p1=($(a.east)-(a.west)$),
\n1={veclen(\x1,\y1)},
\n2={width(" 1 of 10 ")}
in
([xshift=5pt]a.south east|-a.text)
rectangle
++({(\textwidth-(\n1+\n2+5)*1pt)},2pt)
}
] (a)
{This text can be of variable width};
}%
}
\begin{document}
\lipsum[1-15]
\end{document}