4

\underset ごとに 2 つの値 (値 1: 標準誤差、値 2: 推定値) を含む LaTeX テーブル (以下はスニペット) があります。2 番目の値を最初の値で割った値が 2 より大きいか -2 より小さい限り、すべての \underset の後に 2 番目の値に \bf{} を追加して編集したいと思います。

たとえば、最初の \underset ('intercept' の後) の後、-9.686/1.742 は < -2 であるため、元の {-9.686} を \bf{-9.686} として読みたいとします。何百もの変数があるため、手動で行うことはお勧めしません。私はメモ帳 ++ でのみ作業していますが、必要に応じて Python を試すことができます。PC の正規表現および/または適切なプラットフォーム (エディター/パーサーなど) に関するヒントをいただければ幸いです。

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}
4

2 に答える 2

1

Python の例:

#!/usr/bin/python

import re

data = r'''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}'''

print re.sub(r'(\\underset{\()(-?[0-9]+(?:\.[0-9]+)?)(\)}\s*{)(-?[0-9]+(?:\.[0-9]+)?)(?=}\$)',
    lambda m: m.group(1)+m.group(2)+m.group(3)+'\\bf{'+m.group(4)+'}'
        if abs(float(m.group(4))/float(m.group(2)))>2 else m.group(0), data)

つまり、商の絶対値を 2 と比較し、変更された文字列または一致全体を返すラムダ関数に渡す 2 つの値を取得するという考え方です。

于 2013-08-03T03:55:47.317 に答える