我有一个 LaTeX 表(下面是代码段),它在每个\underset 之后包含两个值(值 1:标准误差;值 2:估计)。我想通过在每个\underset 之后将\bf{} 添加到第二个值来进行编辑,只要第二个值除以第一个值大于 2 或小于 -2。例如,在第一个\underset 之后(在“拦截”之后),-9.686/1.742 documentclass[letter]{article}\usepackage{amsmath, amsthm, amssymb} % Additional math packages\begin{document}\begin{table}[hptb]\begin{center}\begin{tabular}{|l||c|c|c|c|c|c|c|} \hline(Intercept)&$\underset{(1.742)}{-9.686}$&$\underset{(0.907)}{-9.085}$&$\underset{(0.663)}{-9.724}$&$\underset{(0.565)}{-9.077}$&$\underset{(0.619)}{-7.601}$&$\underset{(0.838)}{-5.273}$&$\underset{(1.120)}{-3.417}$\\\end{tabular}\end{center}\end{table}\end{document}我希望输出表像这样读取。输出表:\begin{document}\begin{table}[hptb]\begin{center}\begin{tabular}{|l||c|c|c|c|c|c|c|} \hline(Intercept)&$\underset{(1.742)}{\bf{-9.686}}$&$\underset{(0.907)}{\bf{-9.085}}$&$\underset{(0.663)}{-9.724}$&$\underset{(0.565)}{\bf{--9.077}}$&$\underset{(0.619)}{\bf{-7.601}}$&$\underset{(0.838)}{-5.273}$&$\underset{(1.120)}{-1.417}$\\\end{tabular}\end{center}\end{table}\end{document} (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 这完全可以在 LaTeX 中完成...\documentclass{article}\usepackage{amsmath,collcell,array}% http://ctan.org/pkg/{amsmathm,collcell,array}\makeatletter\def\insertbf@$\underset#1#2${$\underset{#1}{\mathbf{#2}}$}\newcommand{\insertbf}[1]{\expandafter\insertbf@#1}\newcolumntype{C}{>{\collectcell\insertbf}c<{\endcollectcell}}\makeatother\begin{document}\begin{table}[hptb] \centering \begin{tabular}{|l||*{7}{c|}} \hline (Intercept) & $\underset{(1.742)}{-9.686}$ & $\underset{(0.907)}{-9.085}$ & $\underset{(0.663)}{-9.724}$ & $\underset{(0.565)}{-9.077}$ & $\underset{(0.619)}{-7.601}$ & $\underset{(0.838)}{-5.273}$ & $\underset{(1.120)}{-3.417}$ \end{tabular} \bigskip \begin{tabular}{|l||*{7}{C|}} \hline (Intercept) & $\underset{(1.742)}{-9.686}$ & $\underset{(0.907)}{-9.085}$ & $\underset{(0.663)}{-9.724}$ & $\underset{(0.565)}{-9.077}$ & $\underset{(0.619)}{-7.601}$ & $\underset{(0.838)}{-5.273}$ & $\underset{(1.120)}{-3.417}$ \end{tabular}\end{table}\end{document}在上面的示例中,两个表与使用常规 c -column 规范的顶部的表相同,而底部的表使用新定义的 C -column 规范。后者截取\underset的设置修改第二个参数的字体。 collcell package 用于捕获第 2-8 列中每个单元格的内容。它们必须与 $\underset{#1}{#2}$ 形式完全匹配,以便将其转换为 $\underset{#1}{\mathbf{#2}}$ 。 array package 通过新定义的列(简化代码)简化了单元格集合。一些注意事项: 我使用了一个复制列说明符 *{<num>}{<col spec>},它重复列说明 <col spec> 总共 <num> 次。它使代码更具可读性。 使用 \mathbf 而不是与文本相关的 \bf 。见 Does it matter if I use \textit or \it , \bfseries or \bf , etc. 和 Will two-letter font style commands ( \bf , \it , …) ever be resurrected in LaTeX? 与其一遍又一遍地复制相同的原始概念,不如定义一个您可以使用的宏(请参阅 Consistent typography )。通过这种方式,它可以让您了解内容,如果您改变主意,您可以轻松操纵这些内容。例如,\newcommand{\stderrest}[2]{$\underset{(#1)}{#2}$}% \stderrest{<stderr>}{<est>}然后在需要此类设置的任何地方使用 \stderrest{<stderr>}{<est>}。这样,格式的更新就像\renewcommand{\stderrest}[2]{$\underset{(#1)}{\mathbf{#2}}$}% \stderrest{<stderr>}{<est>}你就完成了。 不要在你的 float 中使用 center 环境;而是使用 \centering 。作为引用,请参见 Should I use \center or \centering for figures and tables? 使用 \makeatletter ... \makeatother 对只是因为我定义了一个特定的“内部”命令,它与您的规范输入相匹配。这不是真正必要的,可以更改。但有关这方面的更多信息,请参阅 What do \makeatletter and \makeatother do? 如果你在新定义的 C -column 中有一个没有 $\underset{#1}{#2}$ 形式的单元格,你需要使用 \multicolumn{1}{c|}{..} 来避免它被收集。 ... is there anyway to add a conditional statement that only inserts the \mathbf prior to {#2} if and only if the absolute value of {#2} divided by {#1} is greater than 2? As of now, it adds the \mathbf to every value in {#2}.对于变量的条件格式,这里有一个选项:\documentclass{article}\usepackage{amsmath,collcell,array}% http://ctan.org/pkg/{amsmathm,collcell,array}\usepackage[nomessages]{fp}% http://ctan.org/pkg/fp\makeatletter\let\stderr@format\relax\def\stripparen@(#1){#1}% Remove parentheses\def\insertbf@$\underset#1#2${% \FPabs\resultA{#2}% Absolute value of #2 \edef\resultB{\stripparen@#1}% Extract std err \FPeval\result{\resultA / \resultB}% Divide est / std err \FPifgt\result{2}\let\stderr@format\mathbf\fi% $\underset{#1}{\stderr@format{#2}}$}%\newcommand{\insertbf}[1]{\expandafter\insertbf@#1}\newcolumntype{C}{>{\collectcell\insertbf}c<{\endcollectcell}}\makeatother\begin{document}\begin{table}[hptb] \centering \begin{tabular}{|l||*{7}{c|}} \hline (Intercept) & $\underset{(1.742)}{-9.686}$ & $\underset{(0.907)}{-9.085}$ & $\underset{(0.663)}{-9.724}$ & $\underset{(0.565)}{-9.077}$ & $\underset{(0.619)}{-7.601}$ & $\underset{(0.838)}{-5.273}$ & $\underset{(1.120)}{-3.417}$ \end{tabular} \bigskip \begin{tabular}{|l||*{7}{C|}} \hline (Intercept) & $\underset{(1.742)}{-9.686}$ & $\underset{(0.907)}{-9.085}$ & $\underset{(0.663)}{-9.724}$ & $\underset{(0.565)}{-9.077}$ & $\underset{(0.619)}{-7.601}$ & $\underset{(0.838)}{-5.273}$ & $\underset{(1.120)}{-3.417}$ \end{tabular} \bigskip \begin{tabular}{|l||*{7}{C|}} \hline (Intercept) & $\underset{(1.742)}{-2.686}$ & $\underset{(0.907)}{-9.085}$ & $\underset{(0.663)}{-9.724}$ & $\underset{(0.565)}{-9.077}$ & $\underset{(0.619)}{-7.601}$ & $\underset{(0.838)}{-1.273}$ & $\underset{(1.120)}{-3.417}$ \end{tabular}\end{table}\end{document} fp 提供定点算法来确定某些变量的值。我确信更新后的代码是不言自明的。关于正则表达式编辑 latex 表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18028888/ (adsbygoogle = window.adsbygoogle || []).push({});
10-10 05:22