Advertisement
Guest User

Untitled

a guest
Feb 13th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. \documentclass{article}
  2.  
  3. \usepackage{xparse}
  4.  
  5. \newlength{\boldAcrwidth}
  6. \setlength{\boldAcrwidth}{2cm}
  7.  
  8. \ExplSyntaxOn
  9. \cs_new_eq:NN \sctale_str_if_eq:nn \__str_if_eq:nn
  10. \cs_generate_variant:Nn \sctale_str_if_eq:nn { oo }
  11. \cs_new:Npn \__sctale_acro:w #1 \q_mark #2 \q_stop {#1}
  12. \seq_new:N \l__sctale_acro_seq
  13. \NewDocumentEnvironment { acroenv } { }
  14. { \seq_clear:N \l__sctale_acro_seq }
  15. {
  16. \seq_sort:Nn \l__sctale_acro_seq
  17. {
  18. \int_compare:nNnTF
  19. {
  20. \sctale_str_if_eq:oo
  21. { \__sctale_acro:w ##1 \q_stop }
  22. { \__sctale_acro:w ##2 \q_stop }
  23. }
  24. < 0
  25. { \sort_return_same: }
  26. { \sort_return_swapped: }
  27. }
  28. \seq_map_function:NN \l__sctale_acro_seq \__sctale_put_acro:n
  29. }
  30. \cs_new:Npn \__sctale_put_acro:n #1 { \__sctale_put_acro:w #1 \q_stop }
  31. \cs_new:Npn \__sctale_put_acro:w #1 \q_mark #2 \q_stop
  32. { \boldAcroPut{#1}{#2} }
  33. \cs_new_eq:NN \dont \prg_do_nothing:
  34. \NewDocumentCommand { \boldAcr }{ >{\SplitList{~}} m }
  35. {
  36. \tl_set:Nx \l__sctale_tmpa_tl { \tl_map_function:nN {#1} \__sctale_make_acro:n }
  37. \seq_put_right:No \l__sctale_acro_seq { \l__sctale_tmpa_tl \q_mark {#1} }
  38. }
  39. \cs_new:Npn \__sctale_make_acro:n #1 { \__sctale_make_acro:w #1 \q_nil }
  40. \cs_new:Npn \__sctale_make_acro:w #1 #2 \q_nil
  41. {
  42. \token_if_eq_meaning:NNTF #1 \dont
  43. { } { #1 }
  44. }
  45. \ExplSyntaxOff
  46.  
  47. \NewDocumentCommand{\boldAcroPut}{mm}{%
  48. \noindent
  49. \makebox[\boldAcrwidth][l]{\bfseries\textit{\MakeUppercase{#1}}}%
  50. \ProcessList{#2}{\boldAcrFirst}%
  51. \unskip\par%
  52. }
  53. \NewDocumentCommand{\boldAcrFirst}{m}{%
  54. \boldAcrFirstAux#1 % we want a space
  55. }
  56. \NewDocumentCommand{\boldAcrFirstAux}{m}{%
  57. \textbf{\MakeUppercase{#1}}%
  58. }
  59.  
  60. \begin{document}
  61.  
  62. \begin{acroenv}
  63. \boldAcr{open web application security project}
  64. \boldAcr{open web application security project}
  65. \end{acroenv}
  66.  
  67. \end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement