表格的 newif 不起作用

表格的 newif 不起作用

我创建了两个不同的表格内容,想用 newif 进行切换,但\AAAfalse没有效果。我该怎么办?

在此处输入图片描述

\documentclass[a4paper, landscape]{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\pgfplotstableset{string type, col sep=comma, header=false}

\newif\ifAAA
\AAAtrue

\ifAAA%================================
\pgfplotstableread[header=false]{
A, A
A, A
A, A
}\mytable
\def\mycolor{red}
\else%==================================
\pgfplotstableread[header=false]{
B, B
B, B
B, B
}\mytable
\def\mycolor{blue}
\fi%=====================================

\begin{document}
\section{\color{\mycolor} AAA true :)}
\pgfplotstabletypeset[]{\mytable}

\AAAfalse
\section{\color{\mycolor} AAA false :(}
\pgfplotstabletypeset[]{\mytable}
\end{document}

答案1

当您切换时,\ifAAA您已经读取了表格;宏\mytable已经定义,不会改变。一种可能性是使表格的加载动态化(我必须更改终止符,因为当进入宏时,换行符会更改为空格标记,这会使内联表格不可读):


\documentclass[a4paper, landscape]{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\pgfplotstableset{string type, col sep=comma, header=false}

\newif\ifAAA
\AAAtrue

\def\loadtable{%
\ifAAA
\pgfplotstableread[header=false, row sep=crcr]{%
A, A \\
A, A \\
A, A \\
}\mytable
\def\mycolor{red}%
\else
\pgfplotstableread[header=false, row sep=crcr]{%
B, B \\
B, B \\
B, B \\
}\mytable
\def\mycolor{blue}%
\fi}

\begin{document}
\loadtable
\section{\color{\mycolor} AAA true :)}
\pgfplotstabletypeset[]{\mytable}

\AAAfalse
\loadtable
\section{\color{\mycolor} AAA false :(}
\pgfplotstabletypeset[]{\mytable}
\end{document}

在此处输入图片描述

当然还有更优雅的解决方案,比如定义两个表并打开加载开关,但我对\expandafters 感到迷失了(我应该认真学习更多 LaTeX3)。

相关内容