2
votes

Comment aligner du texte au centre et du texte à droite dans une seule cellule d'un tableau

Comment aligner du texte au centre et du texte à droite sur la même ligne dans une seule cellule d'un tableau En XSL-FO uniquement.


1 commentaires

Pouvez-vous ajouter un rendu graphique ou ASCII Art de ce que vous voulez? J'ai fourni deux réponses, et chaque réponse a suscité de nouveaux détails sur ce que vous voulez. @Ifurini a également suggéré qu'une description plus précise serait utile. Nous essayons d'aider, mais nous n'avons pas suffisamment d'informations.


3 Réponses :


0
votes

Mettez chaque bloc de texte dans un fo: block distinct. Utilisez text-align = "center" sur le premier fo: block , et utilisez text-align = "right" sur le second. Voir https://www.w3.org/TR/xsl11/#text-align .


2 commentaires

Si j'utilise deux fo: block séparés, ce texte apparaîtra dans une nouvelle ligne. Je veux dans la même ligne s'il vous plaît aidez-moi


Désolé, mon erreur. Veuillez voir mon autre réponse. Cela m'aurait peut-être sauvé de moi-même si vous aviez montré un exemple de XML et peut-être une sortie falsifiée, mais cela n'excuse pas ma lecture erronée.



0
votes

Utilisez fo: leader (voir https: // www .w3.org / TR / xsl11 / # fo_leader ).

En utilisant uniquement quand il y a text-align = "justify" code> sur le fo: block peut être suffisant.

Si cela ne donne pas le bon résultat, c'est peut-être parce que la valeur par défaut .optimum pour le leader -length (voir https://www.w3.org/ TR / xsl11 / # leader-length ) est de 12 pt. Dans ce cas, vous voudrez probablement quelque chose comme:

<fo:leader leader-length.optimum="100%" />

Si vous utilisez AH Formatter, vous pouvez utiliser axf: leader-expansion = "force" code > (voir https://www.antennahouse.com /product/ahf66/ahf-ext.html#axf.leader-expansion ) pour forcer le leader à se développer autant que possible.


1 commentaires

Je ne suis pas sûr de comprendre comment cela fonctionnerait: utiliser un seul fo: leader permettrait d'obtenir du texte aligné à gauche et aligné à droite sur la même ligne, mais ce n'est pas le résultat souhaité; avoir fo: leader + text1 + fo: leader + text2 placerait text1 au milieu entre la marge gauche et le début de text2 , pas au centre entre les marges.



0
votes

Si vous avez vraiment besoin d'avoir à la fois le texte centré et le texte aligné à droite dans le même fo: table-cell , vous pouvez utiliser un négatif espace entre deux éléments fo: block pour les mettre apparemment sur la même ligne:

<fo:table-cell>
    <fo:block text-align="center" space-after="-14.4pt">in the center</fo:block>
    <fo:block text-align="right">to the right</fo:block>
</fo:table-cell> 

Cela devrait fonctionner (je l'ai testé avec FOP), mais cela peut être considéré comme un sale tour; la valeur exacte de space-after dépend de la hauteur de ligne du premier bloc, qui est par défaut de 1,2 * font-size (elle-même par défaut à 12pt), vous devrez peut-être calculer la valeur correcte pour votre situation spécifique.

Cependant , je pense que dans de nombreuses situations, vous pouvez simplement

  1. utiliser un tableau à 3 colonnes, la première et la troisième ayant la même largeur
  2. place le texte centré dans la deuxième cellule
  3. place le texte aligné à droite dans la troisième cellule
  4. définissez une bordure uniquement à l'extérieur de la ligne du tableau, de sorte que les trois cellules apparaissent comme une seule dans la sortie.

(comme Tony Graham l'a déjà commenté, une description plus précise de la sortie souhaitée, ou encore mieux une image la montrant, aiderait à suggérer la bonne réponse pour votre situation)


0 commentaires