
Ingreso muchas tablas en un archivo tex y quiero reemplazar "Errores estándar entre paréntesis" en cada tabla con "Cualquier cosa que quiera".
ejemplo
\documentclass[12pt,a4paper]{article}
\usepackage[UTF8]{ctex}
\begin{document}
\input{table.tex}
\input{table.tex}
\end{document}
tabla.tex
\begin{table}[htbp]\centering
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\caption{table \label{tab3}}
\begin{tabular}{l*{3}{c}}
\hline\hline
&\multicolumn{1}{c}{(1)E}&\multicolumn{1}{c}{(2)W}&\multicolumn{1}{c}{(3)M}\\
\hline
ln$\chi$ & 3.163\sym{***}& 4.133\sym{***}& 2.017\sym{***}\\
& (0.696) & (0.451) & (0.442) \\
\hline
FE & Y & Y & Y \\
N & 1005 & 980 & 825 \\
R2 & 0.660 & 0.583 & 0.624 \\
\hline\hline
\multicolumn{4}{l}{\footnotesize Standard errors in parentheses}\\
\multicolumn{4}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
\end{tabular}
\end{table}
IDE: Texpad 1.731
Motor: Xelatex, BibTex
Respuesta1
Si usar LuaLaTeX es una opción para usted, seguir el enfoque que se muestra en el siguiente ejemplo puede funcionar para usted. dosub
Se configura una función Lua, denominada , para realizar las operaciones de sustitución de cadenas, y se proporciona código LaTeX para limitar la operación de esta función a table
los entornos. Por lo tanto, las instancias de la cadena "Errores estándar entre paréntesis" que puedan ocurrir fuera de table
entornos internos no se modifican.
% !TeX program = lualatex
\RequirePackage{filecontents}
%% create the files 'table1.tex' and 'table2.tex'
\begin{filecontents}{table1.tex}
\begin{table}[htbp]
\centering
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\caption{A first table \label{tab1}}
\begin{tabular}{l*{3}{c}}
\hline\hline
&\multicolumn{1}{c}{(1)E}&\multicolumn{1}{c}{(2)W}&\multicolumn{1}{c}{(3)M}\\
\hline
$\ln\chi$ & 3.163\sym{***}& 4.133\sym{***}& 2.017\sym{***}\\
& (0.696) & (0.451) & (0.442) \\
\hline
FE & Y & Y & Y \\
N & 1005 & 980 & 825 \\
R\sym{2} & 0.660 & 0.583 & 0.624 \\
\hline\hline
\multicolumn{4}{l}{\footnotesize Standard errors in parentheses}\\
\multicolumn{4}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
\end{tabular}
\end{table}
\end{filecontents}
\begin{filecontents}{table2.tex}
\begin{table}[htbp]
\centering
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\caption{A second table \label{tab2}}
\begin{tabular}{l*{3}{c}}
\hline\hline
&\multicolumn{1}{c}{(1)A}&\multicolumn{1}{c}{(2)B}&\multicolumn{1}{c}{(3)C}\\
\hline
$\ln\chi$ & 3.163\sym{***}& 4.133\sym{***}& 2.017\sym{***}\\
& (0.696) & (0.451) & (0.442) \\
\hline
FE & Y & Y & Y \\
N & 1005 & 980 & 825 \\
R\sym{2} & 0.660 & 0.583 & 0.624 \\
\hline\hline
\multicolumn{4}{l}{\footnotesize Standard errors in parentheses}\\
\multicolumn{4}{l}{\footnotesize \sym{*} \(p<0.05\), \sym{**} \(p<0.01\), \sym{***} \(p<0.001\)}\\
\end{tabular}
\end{table}
\end{filecontents}
\documentclass[12pt,a4paper]{article}
%%\usepackage[UTF8]{ctex}
%>>>> --- new code starts here ---
\usepackage{luacode,etoolbox}
\begin{luacode}
function dosub ( s )
return ( string.gsub ( s , "Standard errors in parentheses",
"Anything I want" ) )
end
\end{luacode}
\AtBeginEnvironment{table}{\directlua{
luatexbase.add_to_callback("process_input_buffer", dosub, "dosub" ) }}
\AtEndEnvironment{table}{\directlua{
luatexbase.remove_from_callback("process_input_buffer", "dosub" ) }}
%<<<< --- new code ends here ---
\begin{document}
\input table1
This instance of ``Standard errors in parentheses'' is not modified.
\input table2
\end{document}
Respuesta2
Usaría GNU grep
y GNU perl
para esto si estás usando un sistema basado en Unix.Necesitará conocer la terminal de línea de comandos si planea reemplazar texto arbitrario en una cantidad arbitraria de archivos.
Si utiliza un sistema basado en DOS, puede instalar algo como Babun para obtener una máquina virtual Linux mínima y rápida y un emulador de terminal.
Configurar simulación en carpeta vacía
1. Cree 10 tablas con la cadena deseada
for i in $(echo table{01..10}.tex); do touch $i && echo "Standard errors in parentheses & col2 & col3 \\\\" > $i;done
2. Utilice expresiones regulares (dialecto Perl) de forma recursiva para enumerar coincidencias (con fines de inspección)
grep -Prn 'Standard errors in parentheses'
3. Reemplazar texto de forma recursiva usando Perl y salida de Grep
perl -i -pe 's/Standard errors in parentheses/whatever/g' $(grep -Prl 'Standard errors in parentheses')
Notas
Si desea asegurarse de que el reemplazo funcione correctamente antes de escribir en archivos, puede escribir en la terminal.
perl -pe 's/Standard errors in parentheses/whatever/g' $(grep -Prl 'Standard errors in parentheses')
o guardar copia de seguridad con extensión .bak
perl -i.bak -pe 's/Standard errors in parentheses/whatever/g' $(grep -Prl 'Standard errors in parentheses')
Llevo varios años trabajando profesionalmente con textos extensos y he experimentado con diferentes dialectos de lenguajes de expresión regular. Según mi experiencia, Perl es el dialecto más útil y aceptado.
- mirar hacia adelante y hacia atrás, que son extremadamente útiles
- operador no codicioso (dominando los marcadores de posición como, por ejemplo,
*
con?)
Desea encontrar el contenido de todos\paragraph{...}
los s, pero es posible que haya otros\macro{}
en la misma línea. Simplemente escribagrep -Prn '\\paragraph\{.*?\}'
para detenerse en el primero)}
.