Yo creo que te falta ejecutar la consulta para obtener el código (porque no creo que lo que quieras meter en la base sea la primera consulta literalmente)...
Código PHP:
$sqt="SELECT codigo FROM usuario WHERE login = '" . $_SESSION['login'] ."' AND pass = '" . $_SESSION['pass']. "'";
if ($res=mysql_query($sqt)){
if ($valor=mysql_fetch_row($res)){
$num=$valor[0];
$query = "INSERT INTO publicaciones(codigo,titulo,autor,editorial, año_edicion,zona, tipo,otros_datos) VALUES('$num','{$_POST['titulo']}','{$_POST['nombre']}','{$_POST['editores']}','{$_POST['ano']}','{$_POST['zona']}','{$_POST['tipo']}','{$_POST['datos']}')";
$resultado = mysql_query($query) or die(mysql_error());
}else{
die("Mal rollo");
}else{
die("Otro mal rollo");
}