有什么理由不使用 LaTeX3 编程层 (expl3)

有什么理由不使用 LaTeX3 编程层 (expl3)

我刚刚发现 LaTeX3 编程层 ( expl3),并对其提供的非常优雅的解决方案感到满意。考虑到它已经存在了很长一段时间,但仍在开发中(是否计划发布最终的“稳定”版本,或者这只是一些平稳过渡?),有什么理由不是现在可以使用 LaTeX3 来做所有事情吗(可能)?

例如,我编写了一些较小的包供自己使用,而 LaTeX3 大大简化了这一过程,但我不确定是否要完全致力于此。

答案1

请注意,以前分发的代码expl3现在是 LaTeX 格式的一部分(名称为 L3 编程层)。尽管如此(并且将继续如此),\usepackage{expl3}但从 2020 年开始,除非您想传递某些调试选项,否则就没有必要了。

非常好的理由使用 L3 编程层。该层完全受支持,LaTeX 项目团队将逐步将代码从旧版 2e 移至使用 L3 编程层。所有新代码(例如 Hook 管理系统(于 2020 年推出))都已完全构建在 L3 编程层上。

另一篇文章中提出的问题需要说明:列表看起来很长,但如果你看一下删除日期(即函数弃用后一年或两年),它们基本上都是从 L3 编程层仍与 LaTeX 格式分离的时代开始的,并且(当时基本上是稳定的)作为单独的“实验”包分发,名为expl3。我们甚至可能在将来弃用某个函数,因为事实证明界面需要改进或名称选择不当,但正如 Joseph 在回复中所说,我们已决定将来不会从内核中删除此类弃用的接口。

答案2

有一个原因不是使用 LaTeX3 内核:几乎每年,都会从 LaTeX3 中删除一些函数和/或变量。这意味着如果您不跟上 LaTeX3,您的 LaTeX3 软件包将来可能会崩溃。

对于 LaTeX2 软件包,您的用户仍然可以使用 LaTeX2 内核的回滚版本,只需使用latexreleasepackage 即可。但对于 LaTeX3 软件包,这是不可能的,这就是我打开这个的原因问题几个月前。

以下 LaTeX3 内核删除的函数和变量列表来自 l3过时.txt并且我已按日期排序。

----------------------------------------------------------
Date removed    Function or variables                                
----------------------------------------------------------
2021-07-07      \vbox_unpack_clear:c                            
2021-07-07      \vbox_unpack_clear:N                            
2021-07-07      \token_get_replacement_spec:N                   
2021-07-07      \token_get_prefix_spec:N                        
2021-07-07      \token_get_arg_spec:N                           
2021-07-07      \tl_set_from_file_x:cnn                         
2021-07-07      \tl_set_from_file_x:Nnn                         
2021-07-07      \tl_set_from_file:cnn                           
2021-07-07      \tl_set_from_file:Nnn                           
2021-07-07      \tl_gset_from_file_x:cnn                        
2021-07-07      \tl_gset_from_file_x:Nnn                        
2021-07-07      \tl_gset_from_file:cnn                          
2021-07-07      \tl_gset_from_file:Nnn                          
2021-07-07      \hbox_unpack_clear:c                            
2021-07-07      \hbox_unpack_clear:N                            
2021-07-07      \c_term_ior                                     
2021-07-07      \box_set_eq_clear:cc                            
2021-07-07      \box_set_eq_clear:cN                            
2021-07-07      \box_set_eq_clear:Nc                            
2021-07-07      \box_set_eq_clear:NN                            
2021-07-07      \box_gset_eq_clear:cc                           
2021-07-07      \box_gset_eq_clear:cN                           
2021-07-07      \box_gset_eq_clear:Nc                           
2021-07-07      \box_gset_eq_clear:NN                           
2020-01-01      \xetex_...:D                                    
2020-01-01      \utex_...:D                                     
2020-01-01      \uptex_...:D                                    
2020-01-01      \tl_show_analysis:n                             
2020-01-01      \tl_show_analysis:N                             
2020-01-01      \str_if_eq_x_p:nn                               
2020-01-01      \str_if_eq_x:nnTF                               
2020-01-01      \str_if_eq_x:nnT                                
2020-01-01      \str_if_eq_x:nnF                                
2020-01-01      \str_case_x:nnTF                                
2020-01-01      \str_case_x:nnT                                 
2020-01-01      \str_case_x:nnF                                 
2020-01-01      \str_case_x:nn                                  
2020-01-01      \ptex_...:D                                     
2020-01-01      \pdftex_...:D                                   
2020-01-01      \msg_term:n                                     
2020-01-01      \msg_log:n                                      
2020-01-01      \msg_interrupt:nn                               
2020-01-01      \luatex_...:D                                   
2020-01-01      \lua_shipout_x:n                                
2020-01-01      \lua_now_x:n                                    
2020-01-01      \lua_escape_x:n                                 
2020-01-01      \etex_....:D                                    
2020-01-01      \c_zero                                         
2020-01-01      \c_two_hundred_fifty_six                        
2020-01-01      \c_two_hundred_fifty_five                       
2020-01-01      \c_two                                          
2020-01-01      \c_twelve                                       
2020-01-01      \c_three                                        
2020-01-01      \c_thirty_two                                   
2020-01-01      \c_thirteen                                     
2020-01-01      \c_ten_thousand                                 
2020-01-01      \c_ten                                          
2020-01-01      \c_sixteen                                      
2020-01-01      \c_six                                          
2020-01-01      \c_seven                                        
2020-01-01      \c_one_thousand                                 
2020-01-01      \c_one_hundred                                  
2020-01-01      \c_one                                          
2020-01-01      \c_nine                                         
2020-01-01      \c_fourteen                                     
2020-01-01      \c_four                                         
2020-01-01      \c_five                                         
2020-01-01      \c_fifteen                                      
2020-01-01      \c_eleven                                       
2020-01-01      \c_eight                                        
2018-12-29      \token_new:Nn                                   
2018-12-27      \sort_reversed:                                 
2018-12-27      \sort_ordered:                                  
2018-12-27      \iow_log_streams:                               
2018-12-27      \iow_list_streams:                              
2018-12-27      \ior_log_streams:                               
2018-12-27      \ior_list_streams:                              
2018-12-27      \g_file_current_name_tl                         
2018-12-27      \file_path_remove:n                             
2018-12-27      \file_path_include:n                            
2018-12-27      \file_list:                                     
2018-12-27      \file_add_path:nN                               
2018-12-27      \c_minus_one                                    
2018-12-27      \box_use_clear:c                                
2018-12-27      \box_use_clear:N                                
2018-12-27      \box_resize:cnn                                 
2018-12-27      \box_resize:Nnn                                 
2018-03-05      \tl_to_uppercase:n                              
2018-03-05      \tl_to_lowercase:n                              
2018-03-05      \ior_get_str:NN                                 
2018-03-05      \file_if_exist_input:nTF                        
2018-03-05      \file_if_exist_input:nT                         
2017-01-01      \xetex_if_engine_p:                             
2017-01-01      \xetex_if_engine:TF                             
2017-01-01      \xetex_if_engine:T                              
2017-01-01      \xetex_if_engine:F                              
2017-01-01      \scan_align_safe_stop:                          
2017-01-01      \pdftex_if_engine_p:                            
2017-01-01      \pdftex_if_engine:TF                            
2017-01-01      \pdftex_if_engine:T                             
2017-01-01      \pdftex_if_engine:F                             
2017-01-01      \luatex_if_engine_p:                            
2017-01-01      \luatex_if_engine:TF                            
2017-01-01      \luatex_if_engine:T                             
2017-01-01      \luatex_if_engine:F                             
2017-01-01      \c_job_name_tl                                  
2016-01-05      \prop_get:cn                                    
2016-01-05      \prop_get:Nn                                    
2016-01-05      \int_to_octal:n                                 
2016-01-05      \int_to_hexadecimal:n                           
2016-01-05      \int_to_binary:n                                
2016-01-05      \int_from_octal:n                               
2016-01-05      \int_from_hexadecimal:n                         
2016-01-05      \int_from_binary:n                              
2015-07-14      \tl_case:cnn                                    
2015-07-14      \tl_case:Nnn                                    
2015-07-14      \str_case_x:nnn                                 
2015-07-14      \str_case:onn                                   
2015-07-14      \str_case:nnn                                   
2015-07-14      \quark_if_recursion_tail_break:n                
2015-07-14      \quark_if_recursion_tail_break:N                
2015-07-14      \int_case:nnn                                   
2015-07-14      \dim_case:nnn                                   
2014-08-09      \vbox_set_inline_end:                           
2014-08-09      \vbox_set_inline_begin:c                        
2014-08-09      \vbox_set_inline_begin:N                        
2014-08-09      \vbox_gset_inline_end:                          
2014-08-09      \vbox_gset_inline_begin:c                       
2014-08-09      \vbox_gset_inline_begin:N                       
2014-08-09      \hbox_set_inline_end:                           
2014-08-09      \hbox_set_inline_begin:c                        
2014-08-09      \hbox_set_inline_begin:N                        
2014-08-09      \hbox_gset_inline_end:                          
2014-08-09      \hbox_gset_inline_begin:c                       
2014-08-09      \hbox_gset_inline_begin:N                       
2014-05-28      \fp_tan:cn                                      
2014-05-28      \fp_tan:Nn                                      
2014-05-28      \fp_sin:cn                                      
2014-05-28      \fp_sin:Nn                                      
2014-05-28      \fp_round_places:cn                             
2014-05-28      \fp_round_places:Nn                             
2014-05-28      \fp_round_figures:cn                            
2014-05-28      \fp_round_figures:Nn                            
2014-05-28      \fp_pow:cn                                      
2014-05-28      \fp_pow:Nn                                      
2014-05-28      \fp_neg:c                                       
2014-05-28      \fp_neg:N                                       
2014-05-28      \fp_mul:cn                                      
2014-05-28      \fp_mul:Nn                                      
2014-05-28      \fp_ln:cn                                       
2014-05-28      \fp_ln:Nn                                       
2014-05-28      \fp_if_zero_p:N                                 
2014-05-28      \fp_if_zero:NTF                                 
2014-05-28      \fp_if_zero:NT                                  
2014-05-28      \fp_if_zero:NF                                  
2014-05-28      \fp_if_undefined_p:N                            
2014-05-28      \fp_if_undefined:NTF                            
2014-05-28      \fp_if_undefined:NT                             
2014-05-28      \fp_if_undefined:NF                             
2014-05-28      \fp_gtan:cn                                     
2014-05-28      \fp_gtan:Nn                                     
2014-05-28      \fp_gsin:cn                                     
2014-05-28      \fp_gsin:Nn                                     
2014-05-28      \fp_ground_places:cn                            
2014-05-28      \fp_ground_places:Nn                            
2014-05-28      \fp_ground_figures:cn                           
2014-05-28      \fp_ground_figures:Nn                           
2014-05-28      \fp_gpow:cn                                     
2014-05-28      \fp_gpow:Nn                                     
2014-05-28      \fp_gneg:c                                      
2014-05-28      \fp_gneg:N                                      
2014-05-28      \fp_gmul:cn                                     
2014-05-28      \fp_gmul:Nn                                     
2014-05-28      \fp_gln:cn                                      
2014-05-28      \fp_gln:Nn                                      
2014-05-28      \fp_gexp:cn                                     
2014-05-28      \fp_gexp:Nn                                     
2014-05-28      \fp_gdiv:cn                                     
2014-05-28      \fp_gdiv:Nn                                     
2014-05-28      \fp_gcos:cn                                     
2014-05-28      \fp_gcos:Nn                                     
2014-05-28      \fp_gabs:c                                      
2014-05-28      \fp_gabs:N                                      
2014-05-28      \fp_exp:cn                                      
2014-05-28      \fp_exp:Nn                                      
2014-05-28      \fp_div:cn                                      
2014-05-28      \fp_div:Nn                                      
2014-05-28      \fp_cos:cn                                      
2014-05-28      \fp_cos:Nn                                      
2014-05-28      \fp_compare:NNNTF                               
2014-05-28      \fp_compare:NNNT                                
2014-05-28      \fp_compare:NNNF                                
2014-05-28      \fp_abs:c                                       
2014-05-28      \fp_abs:N                                       
2014-05-28      \c_undefined_fp                                 
----------------------------------------------------------

相关内容