En PHP no están accesibles las variables externas desde dentro de una función, para utilizarla deberías declararla como global al inicio de la función:
Código PHP:
function listar($array,$contador,$tope){
global $Nombre_art;
$width=100/$tope;
for ($i = 0; $i < $contador; $i++)
{
echo '<td width='.$width.'%><a href="busca.php?Nombre_foto='.$array[$i]['Nombre_foto'].'&Nombre_art='.$Nombre_art.'"><img src ="imagenes/'.$array[$i]['Nombre_foto'].'" width="100" height="100" border="0"></a></td>';
}