Em um texto que vem com um separador, preciso criar vários parágrafos para um documento escrito em LaTeX. O objetivo deste código é substituir qualquer conteúdo entre aspas por\textquote{the text}
Vamos supor o seguinte texto:
$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob».|Él nos enseñará sus caminos y caminaremos por sus sendas.|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";
Preciso criar o seguinte conteúdo:
\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob}.}
{%
Él nos enseñará sus caminos y caminaremos por sus sendas.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
Él nos enseñará sus caminos y caminaremos por sus sendas.%
}
Posso fazer isso com o seguinte código sem nenhum problema:
$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob».|Él nos enseñará sus caminos y caminaremos por sus sendas.|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";
$html="";
$break=PHP_EOL."\t";
$quotes=["/'(.*?)'/",'/"(.*?)"/',"/«(.*?)»/","/“(.*?)”/"];
$textquote="\\textquote{\$1}";
$fourArgs="
\\fourargs
{%s}
{%%
%s%%
}{%%
%s%%
}{%%
%s%%
}";
$tmp=explode('|',preg_replace($quotes,$textquote,$str));
$html.=sprintf($fourArgs,
$tmp[0],
$tmp[1],
$tmp[2],
$tmp[1]
);
echo $html;
Meu problema surge quando as aspas de abertura e fechamento são colocadas em grupos diferentes ao fazer o explode
. Nesse caso, a substituição por textquote{...}
não funciona como esperado.
Suponha o seguinte código:
O conteúdo $str
é o seguinte:
$str="Irán pueblos numerosos diciendo: «Vamos a subir al monte del Señor, al templo del Dios de Jacob.|Él nos enseñará sus caminos y caminaremos por sus sendas».|Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.";
O resultado final é o seguinte:
\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob.}
{%
Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}
Mas o resultado esperado é:
\fourargs
{Irán pueblos numerosos diciendo: \textquote{Vamos a subir al monte del Señor, al templo del Dios de Jacob}.}
{%
\textquote{Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}{%
Viene el Mesías, el Cristo; cuando venga, nos hará saber todas las cosas.%
}{%
\textquote{Él nos enseñará sus caminos y caminaremos por sus sendas}.%
}
Como eu poderia alcançar o resultado esperado em todos os casos?
Pré-processe sua string antes da substituição desta forma:
Sobre sua string formatada, você também pode escrevê-la assim:
Com base no exemplo que você forneceu, tenho uma solução simples. Presumo que o
|
símbolo seja precedido por.
here.Você pode substituir
.|
por}.|\textquote{
no texto correspondente para inserir um\textquote
bloco adicional.