在单元格中添加文本而不移动其他任何内容

在单元格中添加文本而不移动其他任何内容

pgfplotstable我目前有一张如下所示的 表格。在此处输入图片描述

我想向其中一个单元格添加文本,这样它就不会移动页面中表格的位置,也不会改变列中文本的对齐方式。我制作了一个我想要的小模型。我认为这就像在列中添加标签一样。 在此处输入图片描述

这是我目前为止生成的表格。我还有数据文件,通过使用 包含在代码中filecontents

\documentclass{article}

\usepackage{amssymb, amsmath, amsthm}
\usepackage[margin=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{appendix}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.15}
\usepackage{booktabs}
\usepackage{multicol}
\usepackage{filecontents}
\begin{filecontents}{lmax.dat}
wavelength      T       abs
400     70.4    0.152
410     63.9    0.194
420     57.8    0.238
430     52.9    0.277
440     49.5    0.305
450     47.4    0.324
460     46.9    0.329
470     47.8    0.321
480     49.9    0.302
490     53.1    0.275
500     57.3    0.242
510     62.2    0.206
520     67.2    0.173
530     72.3    0.141
540     78.3    0.106
550     82.8    0.082

\end{filecontents}

\pagestyle{fancy}


\begin{document}
\begin{table}[!htbp]
        \centering
        \caption{Absorbance and transmittance for solution E at various wavelengths}
        \label{tab:lmax}
        \vspace{1em}
        \pgfplotstabletypeset[
            every head row/.style={before row=\toprule, after row=\midrule},
            every last row/.style={after row=\bottomrule},
            columns/wavelength/.style={column name={$\lambda$ (nm)}},
            columns/T/.style={fixed, fixed zerofill, precision=1, column name={$\%T$}},
            columns/abs/.style={fixed, fixed zerofill, precision=3, column name={$A=-\log(T)$}}
        ]{lmax.dat}
    \end{table}
\end{document}

答案1

对我来说,这看起来像是 的工作tikzmark。在此解决方案中,您只需指定要标记的条目,即行和列。我所做的就是告诉 pgfplotstable 将 tikzmark 附加到相应的条目,然后让 tikzmark 发挥其魔力。

\documentclass{article}
\usepackage{amssymb, amsmath, amsthm}
\usepackage[margin=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{appendix}
\usepackage{pgfplots, pgfplotstable}
\usetikzlibrary{tikzmark}
\pgfplotsset{compat=1.15}
\usepackage{booktabs}
\usepackage{multicol}
\usepackage{filecontents}
\begin{filecontents}{lmax.dat}
wavelength      T       abs
400     70.4    0.152
410     63.9    0.194
420     57.8    0.238
430     52.9    0.277
440     49.5    0.305
450     47.4    0.324
460     46.9    0.329
470     47.8    0.321
480     49.9    0.302
490     53.1    0.275
500     57.3    0.242
510     62.2    0.206
520     67.2    0.173
530     72.3    0.141
540     78.3    0.106
550     82.8    0.082

\end{filecontents}

\pagestyle{fancy}


\begin{document}
\begin{table}[!htbp]
        \centering
        \caption{Absorbance and transmittance for solution E at various wavelengths}
        \label{tab:lmax}
        \vspace{1em}
        \pgfplotstabletypeset[
            every row 6 column 2/.style={postproc cell content/.style={@cell
            content=##1\tikzmark{x}}},
            every head row/.style={before row=\toprule, after row=\midrule},
            every last row/.style={after row=\bottomrule},
            columns/wavelength/.style={column name={$\lambda$ (nm)}},
            columns/T/.style={fixed, fixed zerofill, precision=1, column name={$\%T$}},
            columns/abs/.style={fixed, fixed zerofill, precision=3, column name={$A=-\log(T)$}}
        ]{lmax.dat}
    \end{table}
\begin{tikzpicture}[overlay,remember picture]
\node[anchor=west] at ([yshift=3pt]pic cs:x) {$(\lambda_\mathrm{max})$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

全新版本的 tikzmark 库,可在这里,使这项事业更加简单。与positioning图书馆一起真的只需输入给定条目即可轻松添加内容1mm right of。无需手动调整。;-)

\documentclass{article}
\usepackage{amssymb, amsmath, amsthm}
\usepackage[margin=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{appendix}
\usepackage{pgfplots, pgfplotstable}
\usetikzlibrary{tikzmark,positioning}
\pgfplotsset{compat=1.15}
\usepackage{booktabs}
\usepackage{multicol}
\usepackage{filecontents}
\begin{filecontents}{lmax.dat}
wavelength      T       abs
400     70.4    0.152
410     63.9    0.194
420     57.8    0.238
430     52.9    0.277
440     49.5    0.305
450     47.4    0.324
460     46.9    0.329
470     47.8    0.321
480     49.9    0.302
490     53.1    0.275
500     57.3    0.242
510     62.2    0.206
520     67.2    0.173
530     72.3    0.141
540     78.3    0.106
550     82.8    0.082

\end{filecontents}

\pagestyle{fancy}


\begin{document}
\begin{table}[!htbp]
        \centering
        \caption{Absorbance and transmittance for solution E at various wavelengths}
        \label{tab:lmax}
        \vspace{1em}
        \pgfplotstabletypeset[
            every row 6 column 2/.style={postproc cell content/.style={@cell
            content=\tikzmarknode{x}{##1}}},
            every head row/.style={before row=\toprule, after row=\midrule},
            every last row/.style={after row=\bottomrule},
            columns/wavelength/.style={column name={$\lambda$ (nm)}},
            columns/T/.style={fixed, fixed zerofill, precision=1, column name={$\%T$}},
            columns/abs/.style={fixed, fixed zerofill, precision=3, column name={$A=-\log(T)$}}
        ]{lmax.dat}
    \end{table}
\begin{tikzpicture}[overlay,remember picture]
\node[right=1mm of x] {$(\lambda_\mathrm{max})$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

一个简单但硬编码的解决方案是tikz overlay根据current page尺寸使用手动定位:

\documentclass{article}

\usepackage{amssymb, amsmath, amsthm}
\usepackage[margin=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{appendix}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.15}
\usepackage{booktabs}
\usepackage{multicol}
\usepackage{tikz}
\usepackage{filecontents}
\begin{filecontents}{lmax.dat}
wavelength      T       abs
400     70.4    0.152
410     63.9    0.194
420     57.8    0.238
430     52.9    0.277
440     49.5    0.305
450     47.4    0.324
460     46.9    0.329
470     47.8    0.321
480     49.9    0.302
490     53.1    0.275
500     57.3    0.242
510     62.2    0.206
520     67.2    0.173
530     72.3    0.141
540     78.3    0.106
550     82.8    0.082

\end{filecontents}

\newcommand{\tikzmark}[1]{\begin{tikzpicture}[overlay, remember picture]\coordinate (#1);\end{tikzpicture}}
\pagestyle{fancy}


\begin{document}
\begin{table}[!htbp]
        \centering
        \caption{Absorbance and transmittance for solution E at various wavelengths}
        \label{tab:lmax}
        \vspace{1em}
        \pgfplotstabletypeset[
            every head row/.style={before row=\toprule, after row=\midrule},
            every last row/.style={after row=\bottomrule},
            columns/wavelength/.style={column name={$\lambda$ (nm)}},
            columns/T/.style={fixed, fixed zerofill, precision=1, column name={$\%T$}},
            columns/abs/.style={fixed, fixed zerofill, precision=3, column name={$A=-\log(T)$}}
        ]{lmax.dat}
    \end{table}

    \begin{tikzpicture}[overlay, remember picture]
    \node at ([shift={(2.5,6.9)}]current page.center){$(\lambda_{max})$};
    \end{tikzpicture}
\end{document}

当然这必须在页面具有最终形式之后完成,并且shift命令里面的数字将是其他数字。

输出:

在此处输入图片描述

答案3

该解决方案不需要页面坐标,但它仍然需要计算相对于 pgfplotstable(节点)边缘的偏移量。

虽然额外的文本对 pgfplotstable 没有影响,但它确实会影响居中(略微)。

\documentclass{article}

\usepackage{amssymb, amsmath, amsthm}
\usepackage[margin=1in]{geometry}
\usepackage{fancyhdr}
\usepackage{appendix}
\usepackage{pgfplots, pgfplotstable}
\pgfplotsset{compat=1.15}
\usepackage{booktabs}
\usepackage{multicol}
%\usepackage{tikz}% already laoded
\usepackage{filecontents}
\begin{filecontents}{lmax.dat}
wavelength      T       abs
400     70.4    0.152
410     63.9    0.194
420     57.8    0.238
430     52.9    0.277
440     49.5    0.305
450     47.4    0.324
460     46.9    0.329
470     47.8    0.321
480     49.9    0.302
490     53.1    0.275
500     57.3    0.242
510     62.2    0.206
520     67.2    0.173
530     72.3    0.141
540     78.3    0.106
550     82.8    0.082

\end{filecontents}

\pagestyle{fancy}


\begin{document}
\begin{table}[!htbp]
        \centering
        \caption{Absorbance and transmittance for solution E at various wavelengths}
        \label{tab:lmax}
        \vspace{1em}
        \begin{tikzpicture}
        \node[inner sep=0pt] (A) {\pgfplotstabletypeset[
            every head row/.style={before row=\toprule, after row=\midrule},
            every last row/.style={after row=\bottomrule},
            columns/wavelength/.style={column name={$\lambda$ (nm)}},
            columns/T/.style={fixed, fixed zerofill, precision=1, column name={$\%T$}},
            columns/abs/.style={fixed, fixed zerofill, precision=3, column name={$A=-\log(T)$}}
        ]{lmax.dat}};
        \node[right, yshift={\dimexpr -9.4mm-5\baselineskip}, xshift=-8mm] at (A.north east) {$(\lambda_\text{max})$};
        \end{tikzpicture}
    \end{table}
\end{document}

相关内容