我有一個LaTeX表的字符串。我試圖找到第n個(比方說第三個)列,並將所有內容都包裹起來,比如說\emph{}
,而不是與分隔的美元符號相匹配。使用正則表達式在LaTeX表中找到(並替換)第n列
我正在尋找第二列的第一個&...&
。然後找到下一個&...&
這是第二個分組,並非巧合表中的第三列。
我虛擬的例子工作,但有點不同,因爲它有兩個&...&
之間的文本。稍後我會解決一些小問題 - 我需要在\emph{}
呼叫之外使用後退和前轉參考&
。
xy <- "This is &more or less& a match and here is &another one&.\nSecond line with &occurrance 1& and &occurrance 2&"
gsub("(&.*?&)|(.*?&)(.*)(&.*?&)", "\\1\\2\\3\\\\emph{\\4}", xy, perl = TRUE)
[1] "This is &more or less& a match and here is \\emph{&another one&}.\nSecond line with &occurrance 1& and \\emph{&occurrance 2&}"
當我用LaTeX表格(bam!)將它踢出一個缺口時,它有點不同。兩個&...&
之間沒有字符,這意味着一個&
與兩列相鄰。考慮到這一點,我刪除了(.*)
。無論我嘗試什麼,我都無法讓這個工作。有小費嗎?
library(xtable)
data(tli)
tli.table <- xtable(tli[1:5,])
x <- print.xtable(tli.table, print.results = FALSE, include.rownames = FALSE)
cat(x)
% latex table generated in R 2.15.1 by xtable 1.7-0 package
% Thu Jul 26 14:13:39 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rlllr}
\hline
grade & sex & disadvg & ethnicty & tlimth \\
\hline
6 & M & YES & HISPANIC & 43 \\
7 & M & NO & BLACK & 88 \\
5 & F & YES & HISPANIC & 34 \\
3 & M & YES & HISPANIC & 65 \\
8 & M & YES & WHITE & 75 \\
\hline
\end{tabular}
\end{center}
\end{table}
gsub("(&.*?&)(&.*?&)", "\\1\\\\emph{\\2}", x, perl = TRUE)
在LaTeX中是否有相同的美元符號字符'$'列結尾,也是下一列的開始位置?換句話說:'0 $ 123 $ 456 $ 789 $ 0'意味着'456'是第二列? – 2012-07-26 12:41:08
@ΩmegaLaTeX'表格行的結構是'col1 $ col2 $ col3 \\\',所以\\是行尾。沒有明確的「起始行」字符。 – 2012-07-26 12:42:46
所以第一列不以'$'開頭 - 正確嗎?最後一個也不會以'$'結尾......? – 2012-07-26 12:43:54