Dans un code, je cherche à savoir si l'argument contient le caractère tube | en première position. Si oui, je veux le supprimer \StrGobbleLeft{#1}{1} ; mon problème est que je ne peux pas stocker le résultat de \StrGobbleLeft{#1}{1} dans une macro, je veux récupérer #1 (sans le tube) pour le remettre plus bas dans la macro. Est-il possible de faire ceci avec xstring ?

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{xstring}
\newenvironment{mytabular}[1]{%
\IfBeginWith{#1}{|}
{\StrGobbleLeft{#1}{1} %si vrai
\begin{tabular}{#1}}
{\begin{tabular}{||#1||}}} %si faux
{\end{tabular}}
\begin{document}
\begin{mytabular}{c|c}
\hline
1 & 2 \\
\hline
3 & 4 \\
\end{mytabular}
\bigskip
\begin{mytabular}{|cc}
\hline
4 & 5\\
\hline
6 & 7 \\
\end{mytabular}
\end{document}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Posée 15 Aoû '17, 19:16

Nikopol's gravatar image

Nikopol
1.0k1614
Taux d'acceptation : 42%

Modifiée 29 Aoû '17, 18:15

Pathe's gravatar image

Pathe ♦♦
7.6k49208252


Je propose une solution utilisant LuaLaTeX :

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\usepackage{luacode}
\begin{luacode}
function if_begin_tube(String)
local x = string.sub(String,1,1) -- on stocke le premier caractère dans une variable
if x=="|" then -- si ce premier caractère est un tube...
String = string.gsub(String,"|","",1) -- on le supprime de la chaîne
tex.sprint("\\begin{tabular}{"..String.."}") -- on ouvre le tableau avec la chaîne modifiée
else -- sinon...
tex.sprint("\\begin{tabular}{||"..String.."||}") -- on ouvre le tableau avec la chaîne non modifiée encadrée par un double tube
end
end
\end{luacode}
\newcommand\BeginMyTabular[1]{\directlua{if_begin_tube(\luastring{#1})}}
\newenvironment{mytabular}[1]{\BeginMyTabular{#1}}{\end{tabular}}
\begin{document}
\begin{mytabular}{c|c}
\hline
1 & 2 \\
\hline
3 & 4 \\
\end{mytabular}
\bigskip
\begin{mytabular}{|cc}
\hline
4 & 5\\
\hline
6 & 7 \\
\end{mytabular}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Lien permanent

Publiée 29 Aoû '17, 02:22

Namrod's gravatar image

Namrod
2831814
Taux d'acceptation : 20%

Modifiée 29 Aoû '17, 18:16

Pathe's gravatar image

Pathe ♦♦
7.6k49208252

Je pensais que xstring pouvait le faire, vu la quantité de choses que peut faire cette extension.

Ayant compris (@touhami l'a confirmé) que cela n’était pas possible avec xstring, je suis passé par \@ifnextchar

Ouvrir dans l'éditeur Overleaf
\documentclass{article}
\makeatletter
\def\sitube#1{\@sitube#1\@nil}
\def\@sitube{%
\@ifnextchar|{\tube}{\notube}}
\def\tube#1#2\@nil{\textbf{#2}}
\def\notube#1\@nil{\emph{#1}}
\makeatother
\begin{document}
\sitube{|toto}
\sitube{toto}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

J'ai pu ainsi résoudre mon problème.

Lien permanent

Publiée 29 Aoû '17, 00:13

Nikopol's gravatar image

Nikopol
1.0k1614
Taux d'acceptation : 42%

Modifiée 29 Aoû '17, 18:16

Pathe's gravatar image

Pathe ♦♦
7.6k49208252

Votre réponse
[Masquer l'aperçu]

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Mots-clés de la question :

×11
×5
×2
×1

Question posée : 15 Aoû '17, 19:16

Question vue : 9,434 fois

Dernière mise à jour : 29 Aoû '17, 15:50

C'est votre première visite ici ? Consultez la FAQ !

×