latex IF 循环可以采用 perl 变量吗?

latex IF 循环可以采用 perl 变量吗?

我有一个用 perl 编写的脚本,它从 sql 数据库收集数据,然后在 latex 中生成打印报告。

我希望在脚本的乳胶部分放置一个 IF 循环,如果数据存在于 SQL 数据库中,则打印一组文本,如果不存在,则打印另一组文本。

看起来 etoolbox 在这里很有前途,但是它可以接受变量吗(我可以将其设置为任何值 - 1,0,T,F 等)?

我在网站上找到了这个例子,它展示了如何设置循环但没有变量(LaTeX 条件表达式)。

\newtoggle{paper}

设置为

\toggletrue{paper}
\togglefalse{paper}

如何使用它:

\iftoggle{paper}{%
  % using paper
}{%
  % electronic
}

编辑:我想知道我是否可以在 eftoolbox 切换中使用我脚本中先前的变量(例如 $myo_text)。

例如

\newtoggle{$myo_text}

或者还有其他方法吗? 是否有可能将变量带入脚本的 latex 部分来自 SQL 查询并在条件循环中使用它?

编辑 2:这是我的脚本中修剪过的乳胶块。刚才它可以很好地打印出这些 perl 变量($myo_test、$myo_reporter1 等)。

print FH <<END;

\\textbf{EXERCISE TOLERANCE TEST} \\newline
\\begin{small}
\\textbf{Stress Test:} $myo_test \\newline
\\textbf{Rest ECG:} $myx_rest_ecg \\newline
\\textbf{Stress ECG:} $myx_stress_ecg \\newline  
\\textbf{Performed by:} $myx_performed1 \\newline
\\end{small}

\\textbf{Reported By:} $myo_reporter1 \\hspace{2em} \\textbf{Signature:}

\\end{document}


END

我想在这个乳胶块中放置一个循环,如果 $myo_text 为空白/空,则不会打印报告的这一部分。

答案1

LaTeX 不了解 perl 变量,你只需要编写正确的 latex。一般来说,最好在 perl 中测试,然后编写适当的 latex

就像是

if($myo_test !="") {

print FH <<END;

\\textbf{EXERCISE TOLERANCE TEST} \\newline
\\begin{small}
\\textbf{Stress Test:} $myo_test \\newline
\\textbf{Rest ECG:} $myx_rest_ecg \\newline
\\textbf{Stress ECG:} $myx_stress_ecg \\newline  
\\textbf{Performed by:} $myx_performed1 \\newline
\\end{small}

\\textbf{Reported By:} $myo_reporter1 \\hspace{2em} \\textbf{Signature:}

END

}

但你可以使用任何乳胶测试为空例如\ifx\relax..\relax并在乳胶中进行简单的测试

print FH <<END;
\\ifx\\relax$myo_test\\relax
\\else
\\textbf{EXERCISE TOLERANCE TEST} \\newline
\\begin{small}
\\textbf{Stress Test:} $myo_test \\newline
\\textbf{Rest ECG:} $myx_rest_ecg \\newline
\\textbf{Stress ECG:} $myx_stress_ecg \\newline  
\\textbf{Performed by:} $myx_performed1 \\newline
\\end{small}
\\fi

\\textbf{Reported By:} $myo_reporter1 \\hspace{2em} \\textbf{Signature:}


\\end{document}


END

但无论哪种风格,LaTeX 访问 Perl 变量都是没有意义的,Perl 只是写出一个静态文件,以便稍后由 LaTeX 进行处理。

相关内容