扩展 Tikz 矩形以填充剩余文本宽度

扩展 Tikz 矩形以填充剩余文本宽度

我想在左、右页脚之间放置一个阴影矩形,填充中间的空间。左页脚的宽度可以变化,因此我希望矩形能够自动填充剩余的空间。

以下代码演示了我想要做的事情(中心页脚构成左页脚的一部分),但矩形的宽度是固定的。我想更改矩形的宽度以自动填充剩余空间。

\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}

在此处输入图片描述

相关内容