Saltar al contenido

¿Cómo puedo verificar si el valor de una variable es el mismo que el de otra variable?

Después de de una larga compilación de información solucionamos esta impedimento que presentan ciertos lectores. Te compartimos la respuesta y deseamos que sea de gran apoyo.

Solución:

Bueno, tu pregunta no es simple. Al principio no explicó lo que quiere decir con "lo mismo para usted", por lo que las reglas para su comparación "confusa" no están claras. Y en segundo lugar no explicaste qué contenido pueden tener tus variables. Las cosas pueden ponerse muy difíciles si se permiten comandos TeX arbitrarios. Para su ejemplo, lo siguiente funciona:

documentclassarticle
usepackagexparse
begindocument
newcommandtestFive
newcommandunknownFIVE
newcommandunknownbFour

ExplSyntaxOn
NewDocumentCommandaresame  m m 

 tl_set_rescan:Nnx l_tmpa_tl 
  
   char_set_catcode_ignore:N                                
   char_set_catcode_ignore:N 
   
  #1
 tl_set_rescan:Nnx l_tmpb_tl
  
   char_set_catcode_ignore:N 
   char_set_catcode_ignore:N 
  
  #2 
  tl_set:Nxl_tmpa_tl str_fold_case:V l_tmpa_tl
  tl_set:Nxl_tmpb_tl str_fold_case:V l_tmpb_tl
  tl_if_eq:NNTF l_tmpa_tll_tmpb_tl yes no
  

ExplSyntaxOff


aresametestunknown

aresametestunknownb
enddocument

Una versión (más débil) del código de Ulrike que también funciona en TeX Live 2013; la suposición es que < y > no aparecen en las cadenas que desea comparar.

documentclassarticle

makeatletter
newcommandaresame[2]%
  [email protected][email protected]#1%
  [email protected][email protected]#2%
  ifx[email protected][email protected]
    [email protected]
  else
    [email protected]
  fi


def[email protected]#1#2%
  [email protected]@nxnoexpand
  everyeof%
  catcode`=9 catcode`=9
  catcode`<=1 catcode`>=2
  begingroupedefx%
    [email protected]@nx1<#2>@nxempty%
  x
  [email protected]@[email protected]@xp#[email protected]%

makeatother

begindocument

deftestFive
defunknownFIVE
defunknownbFour
defunknowncunknownb

--aresameunknowntestTRUEFALSE--par
--aresametestunknownTRUEFALSE--par
--aresameunknownbtestTRUEFALSE--par
--aresameunknownbFourTRUEFALSE--par
--aresameunknownbunknowncTRUEFALSE--par

enddocument

Recuerda que tienes la capacidad de decir si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.