Fonts & Character Setsexpl3: changing the catcode such that _ is understood as subscript

Information and discussion about fonts and character sets (e.g. how to use language specific characters)
Post Reply
erwann
Posts: 75
Joined: Thu Aug 25, 2016 2:24 am

expl3: changing the catcode such that _ is understood as subscript

Post by erwann »

The example that follows says it all.

Code: Select all

\documentclass{minimal}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{amssymb}

\ExplSyntaxOn

\tl_set_rescan:Nnn 	
	\tl_matrix_elem
	{\char_set_catcode_math_subscriptn \_} %Wrong guess, apparently
 	{\ensuremath{A_{ij}}}

\NewDocumentCommand\matrixelem{}{\tl_matrix_elem}

\begin{document}

\ExplSyntaxOff

\matrixelem % Expect $A_{ij}$ 

\end{document}
Console output:

Code: Select all

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./tmpl_expr.tex
LaTeX2e <2017-04-15>
Babel <3.18> and hyphenation patterns for 84 language(s) loaded.
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/minimal.cls
Document Class: minimal 2001/05/25 Standard LaTeX minimal class
) (/usr/local/texlive/2017/texmf-dist/tex/latex/l3kernel/expl3.sty
(/usr/local/texlive/2017/texmf-dist/tex/latex/l3kernel/expl3-code.tex)
(/usr/local/texlive/2017/texmf-dist/tex/latex/l3kernel/l3pdfmode.def))
(/usr/local/texlive/2017/texmf-dist/tex/latex/l3packages/xparse/xparse.sty)
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amssymb.sty
(/usr/local/texlive/2017/texmf-dist/tex/latex/amsfonts/amsfonts.sty))
! Missing number, treated as zero.
<to be read again> 
                   \protect 
l.12  	{\ensuremath{A_{ij}}}
                             
?


*.log:

Code: Select all

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) (preloaded format=pdflatex 2018.4.25)  1 MAY 2018 17:24
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**tmpl_expr.tex
(./tmpl_expr.tex
LaTeX2e <2017-04-15>
Babel <3.18> and hyphenation patterns for 84 language(s) loaded.
(/usr/local/texlive/2017/texmf-dist/tex/latex/base/minimal.cls
Document Class: minimal 2001/05/25 Standard LaTeX minimal class
) (/usr/local/texlive/2017/texmf-dist/tex/latex/l3kernel/expl3.sty
Package: expl3 2018/02/21 L3 programming layer (loader) 

(/usr/local/texlive/2017/texmf-dist/tex/latex/l3kernel/expl3-code.tex
Package: expl3 2018/02/21 L3 programming layer (code)
\c_max_int=\count79
\l_tmpa_int=\count80
\l_tmpb_int=\count81
\g_tmpa_int=\count82
\g_tmpb_int=\count83
\g__intarray_font_int=\count84
\g__prg_map_int=\count85
\c_log_iow=\count86
\l_iow_line_count_int=\count87
\l__iow_line_target_int=\count88
\l__iow_one_indent_int=\count89
\l__iow_indent_int=\count90
\c_zero_dim=\dimen102
\c_max_dim=\dimen103
\l_tmpa_dim=\dimen104
\l_tmpb_dim=\dimen105
\g_tmpa_dim=\dimen106
\g_tmpb_dim=\dimen107
\c_zero_skip=\skip41
\c_max_skip=\skip42
\l_tmpa_skip=\skip43
\l_tmpb_skip=\skip44
\g_tmpa_skip=\skip45
\g_tmpb_skip=\skip46
\c_zero_muskip=\muskip10
\c_max_muskip=\muskip11
\l_tmpa_muskip=\muskip12
\l_tmpb_muskip=\muskip13
\g_tmpa_muskip=\muskip14
\g_tmpb_muskip=\muskip15
\l_keys_choice_int=\count91
\c__fp_leading_shift_int=\count92
\c__fp_middle_shift_int=\count93
\c__fp_trailing_shift_int=\count94
\c__fp_big_leading_shift_int=\count95
\c__fp_big_middle_shift_int=\count96
\c__fp_big_trailing_shift_int=\count97
\c__fp_Bigg_leading_shift_int=\count98
\c__fp_Bigg_middle_shift_int=\count99
\c__fp_Bigg_trailing_shift_int=\count100
\c__fp_rand_size_int=\count101
\c__fp_rand_four_int=\count102
\c__fp_rand_eight_int=\count103
\l__sort_length_int=\count104
\l__sort_min_int=\count105
\l__sort_top_int=\count106
\l__sort_max_int=\count107
\l__sort_true_max_int=\count108
\l__sort_block_int=\count109
\l__sort_begin_int=\count110
\l__sort_end_int=\count111
\l__sort_A_int=\count112
\l__sort_B_int=\count113
\l__sort_C_int=\count114
\l__tl_build_start_index_int=\count115
\l__tl_build_index_int=\count116
\l__tl_analysis_normal_int=\count117
\l__tl_analysis_index_int=\count118
\l__tl_analysis_nesting_int=\count119
\l__tl_analysis_type_int=\count120
\l__regex_internal_a_int=\count121
\l__regex_internal_b_int=\count122
\l__regex_internal_c_int=\count123
\l__regex_balance_int=\count124
\l__regex_group_level_int=\count125
\l__regex_mode_int=\count126
\c__regex_cs_in_class_mode_int=\count127
\c__regex_cs_mode_int=\count128
\l__regex_catcodes_int=\count129
\l__regex_default_catcodes_int=\count130
\c__regex_catcode_D_int=\count131
\c__regex_catcode_S_int=\count132
\c__regex_catcode_L_int=\count133
\c__regex_catcode_O_int=\count134
\c__regex_catcode_A_int=\count135
\c__regex_all_catcodes_int=\count136
\l__regex_show_lines_int=\count137
\l__regex_min_state_int=\count138
\l__regex_max_state_int=\count139
\l__regex_left_state_int=\count140
\l__regex_right_state_int=\count141
\l__regex_capturing_group_int=\count142
\l__regex_min_pos_int=\count143
\l__regex_max_pos_int=\count144
\l__regex_curr_pos_int=\count145
\l__regex_start_pos_int=\count146
\l__regex_success_pos_int=\count147
\l__regex_curr_char_int=\count148
\l__regex_curr_catcode_int=\count149
\l__regex_last_char_int=\count150
\l__regex_case_changed_char_int=\count151
\l__regex_curr_state_int=\count152
\l__regex_step_int=\count153
\l__regex_min_active_int=\count154
\l__regex_max_active_int=\count155
\l__regex_replacement_csnames_int=\count156
\l__regex_match_count_int=\count157
\l__regex_min_submatch_int=\count158
\l__regex_submatch_int=\count159
\l__regex_zeroth_submatch_int=\count160
\g__regex_trace_regex_int=\count161
\c_empty_box=\box26
\l_tmpa_box=\box27
\l_tmpb_box=\box28
\g_tmpa_box=\box29
\g_tmpb_box=\box30
\l__box_top_dim=\dimen108
\l__box_bottom_dim=\dimen109
\l__box_left_dim=\dimen110
\l__box_right_dim=\dimen111
\l__box_top_new_dim=\dimen112
\l__box_bottom_new_dim=\dimen113
\l__
References: http://mirror.utexas.edu/ctan/macros/la ... /l3kernel/
x_86 / Linux Mint 18.3 / texlive 2015.20160320-1ubuntu0.1 / TeXworks 0.5r1361 (Debian)

Recommended reading 2024:

LaTeXguide.org • LaTeX-Cookbook.net • TikZ.org
LaTeX Beginner's Guide LaTeX Cookbook LaTeX TikZ graphics TikZによるLaTeXグラフィックス
User avatar
cgnieder
Site Moderator
Posts: 2000
Joined: Sat Apr 16, 2011 7:27 pm

expl3: changing the catcode such that _ is understood as subscript

Post by cgnieder »

Why don't you just use LaTeX's \sb or expl3's \c_math_subscript_token?

Code: Select all

\documentclass{article}
\usepackage{expl3}
\usepackage{xparse}
\usepackage{amssymb}
 
\ExplSyntaxOn
\tl_new:N  \tl_matrix_elem_tl 
\tl_set:Nn \tl_matrix_elem_tl { \ensuremath { A \sb {ij} } }
% or:
% \tl_set:Nn \tl_matrix_elem_tl { \ensuremath { A \c_math_subscript_token {ij} } }

\NewDocumentCommand \matrixelem {} { \tl_use:N \tl_matrix_elem_tl }
 
\begin{document}
 
\ExplSyntaxOff
 
\matrixelem % Expect $A_{ij}$ 
 
\end{document}
site moderator & package author
erwann
Posts: 75
Joined: Thu Aug 25, 2016 2:24 am

expl3: changing the catcode such that _ is understood as subscript

Post by erwann »

cgnieder wrote:Why don't you just use LaTeX's \sb or expl3's \c_math_subscript_token?
Too obvious for me to see it. Thanks!
x_86 / Linux Mint 18.3 / texlive 2015.20160320-1ubuntu0.1 / TeXworks 0.5r1361 (Debian)
Post Reply