如何在表格中放置背景字母?

如何在表格中放置背景字母?

我有一张表格,里面有一些数字,例如

\documentclass{article}

\begin{document}

\begin{tabular}{llll}
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4
\end{tabular}

\end{document}

我想要为表格设置一个“背景”(我实际上希望能够为表格中的特定块指定它)——背景应该是浅灰色的字母(例如 A),不会隐藏黑色的数字。

这怎么可能呢?

答案1

无需绝对定位即可使用tikzmark库进行tikz封装。

\documentclass{article}
\usepackage{tikz, lmodern}
\usetikzlibrary{calc,tikzmark}
\begin{document}

\begin{tikzpicture}[overlay,remember picture]
  \node [yshift=.6ex] at ( $(pic cs:A) !.5! (pic cs:B)$ ){ \fontsize{60}{60}\selectfont\textbf{\color{gray!20}A} };
\end{tikzpicture}

\begin{tabular}{llll}
\tikzmark{A}%
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4\tikzmark{B}%
\end{tabular}

\end{document}

在此处输入图片描述

请注意,tikzpicture在表格文本排版和定义其坐标之前,此处绘制了 。此处的目的是让文本位于图片之上。这在大多数情况下都有效,因为坐标是在第一次运行时计算的,并且图片在后续运行时定位正确。

如果由于某种原因,这不起作用,那么您可以添加\usepackage{everypage}序言并将其放在tikzpicture表格下方,\AddThispageHook{...}如下所示:

\AddThispageHook{%
\begin{tikzpicture}[overlay,remember picture]
    \node [yshift=.6ex] at ( $(pic cs:A) !.5! (pic cs:B)$ ){ \fontsize{60}{60}\selectfont\textbf{\color{gray!20}A} };
\end{tikzpicture}
}

答案2

在此处输入图片描述

\documentclass{article}
\usepackage{color}
\usepackage{lmodern}
\begin{document}


\begin{picture}(0,0)
\put(7,-20){\fontsize{70pt}{70pt}\bfseries\color[gray]{.9}{A}}
\end{picture}%
\begin{tabular}{llll}
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4
\end{tabular}

\end{document}

通过减小字体大小和改变坐标,您当然可以将字母(或字母)放在任何子矩阵块后面。

答案3

这是一个 TikZ 解决方案,它使用matrix of nodes而不是 来表示表格tabular,因此会自动从 TikZ 代码中获取字母的位置。它使用matrix库来实现这一点,并使用backgrounds库将字母放在背景中绘制的图层上,即矩阵中的数字后面。

\documentclass[border=5pt, multi, tikz]{standalone}
\usepackage[rm={lining},sf={lining},tt={lining,tabular,monowidth}]{cfr-lm}
\usetikzlibrary{backgrounds,matrix}
\begin{document}
\begin{tikzpicture}
  [
    font=\tstyle,
    big alph/.style={text opacity=.2, text=gray, font=\Huge}
  ]
  \matrix (m) [matrix of nodes]
  {
    1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\
    1 & 2 & 3 & 4 \\
  };
  \begin{scope}[on background layer, big alph]
    \node at (m-1-1.south east) {A};
    \node at (m-1-3.south east) {B};
    \node at (m-3-1.south east) {C};
    \node at (m-3-3.south east) {D};
  \end{scope}
\end{tikzpicture}
\end{document}

数字后面的字母块

如果您的表包含更复杂的数学,请使用matrix of math nodes节点自动切换到数学模式。

(m)矩阵指定其名称,然后通过引用矩阵的名称、行和列(例如m-1-1等)来定位字母。节点的锚点south east是矩阵内单个节点边框上的相关位置,即左下角south east。因此(m-3-3.north west)将引用名为的矩阵第三列和第三行中节点的右上角m

答案4

偷懒方法:tcolorbox

姆韦

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\newtcbox{\mytable}[1][X]{enhanced, blanker, on line, watermark text=#1}
\begin{document}
My tables 
\mytable[A]{
\begin{tabular}{llll}
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4 \\
1 & 2 & 3 & 4
\end{tabular}} 
with watermarks
\mytable{\begin{tabular}{lll}  1 & 2 \\3 & 4 \end{tabular}}
\end{document}

相关内容