summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-12-26 03:02:09 +0000
committerNorbert Preining <norbert@preining.info>2020-12-26 03:02:09 +0000
commit7ae913a662e817e559620e1114b63e0f412ff2e3 (patch)
tree96a6fab8955d0a1a5632599d839a1006290a2930 /macros
parent41eb4dfa0badd165fc762b85c3ba592b4e57d38a (diff)
CTAN sync 202012260302
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/acro/README2
-rw-r--r--macros/latex/contrib/acro/acro-manual.pdfbin882709 -> 884055 bytes
-rw-r--r--macros/latex/contrib/acro/acro-manual.tex34
-rw-r--r--macros/latex/contrib/acro/acro.sty122
-rw-r--r--macros/luatex/generic/chinese-jfm/README.md59
-rw-r--r--macros/luatex/generic/chinese-jfm/doc.pdfbin0 -> 105785 bytes
-rw-r--r--macros/luatex/generic/chinese-jfm/doc.tex85
-rw-r--r--macros/luatex/generic/chinese-jfm/jfm-ja_JP.lua2
-rw-r--r--macros/luatex/generic/chinese-jfm/jfm-zh_CN.lua2
-rw-r--r--macros/luatex/generic/chinese-jfm/jfm-zh_TW.lua2
10 files changed, 218 insertions, 90 deletions
diff --git a/macros/latex/contrib/acro/README b/macros/latex/contrib/acro/README
index 3e20b3aa53..8f09cc322b 100644
--- a/macros/latex/contrib/acro/README
+++ b/macros/latex/contrib/acro/README
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------
-the ACRO package v3.3 2020/11/21
+the ACRO package v3.4 2020/12/25
Typeset Acronyms
diff --git a/macros/latex/contrib/acro/acro-manual.pdf b/macros/latex/contrib/acro/acro-manual.pdf
index 1e92609269..24026d28a3 100644
--- a/macros/latex/contrib/acro/acro-manual.pdf
+++ b/macros/latex/contrib/acro/acro-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/acro/acro-manual.tex b/macros/latex/contrib/acro/acro-manual.tex
index 357d3b2d94..4f2a5d2442 100644
--- a/macros/latex/contrib/acro/acro-manual.tex
+++ b/macros/latex/contrib/acro/acro-manual.tex
@@ -328,11 +328,11 @@ section~\ref{sec:load-time-options} have to be set up either with this command
All of the above is probably clear from an example (using real options):
\begin{sourcecode}
\acsetup{
- make-links = true , % boolean
- index , % boolean
- format = \emph , % standard
- list / local , % boolean option of the list module
- list/display = all % choice option of the list module
+ make-links = true , % boolean
+ index , % boolean
+ format = \emph , % standard
+ list / local , % boolean option of the list module
+ list / display = all % choice option of the list module
}
\end{sourcecode}
@@ -511,6 +511,10 @@ the same. In that case you can use
\propchoice{first-style}{long-short,short-long,short,long,footnote}\Default
The style of the first appearance of the acronym, see also
section~\vref{sec:first-or-full}.
+ %% first-style
+ \propchoice{subsequent-style}{long-short,short-long,short,long,footnote}\Default
+ \sinceversion{3.4}The style of the appearance of the acronym after the
+ first time.
%% single-style
\propchoice{single-style}{long-short,short-long,short,long,footnote}\Default
The style of a single appearance of the acronym, see also
@@ -701,6 +705,12 @@ The first or full appearance of an acronym is determined by this option:
appearance for all acronyms. Available options in reality are the names
of all defined templates of the type \code{acronym}. All pre-defined
templates can be found in section~\vref{sec:pre-defin-templ}.
+ \keychoice{subsequent-style}{long-short,short-long,short,long,footnote}\Default{short}
+ \sinceversion{3.4}The style of the appearance of the acronym after the
+ first time. This options sets the appearance for all acronyms. Available
+ options in reality are the names of all defined templates of the type
+ \code{acronym}. All pre-defined templates can be found in
+ section~\vref{sec:pre-defin-templ}.
\end{options}
It might be desirable to set the first appearance of an acronym
individually. This is possible by setting the corresponding property:
@@ -816,8 +826,11 @@ The options controlling the list are these:
Set a list of tags to exclude from the list. Only acronyms not
belonging to one of these tags will be included.
\keyval{include}{csv list of tags}\Module{list}\Default
- Set a list of tags to include in the list. Only acronyms belonging to
+ Set a list of tags to include in the list. Only acronyms belonging to
one of these tags will be included.
+ \keybool{add}\Module{list}\Default
+ \sinceversion{3.4}Set a list of tags to include in the list. These
+ acronyms will be included in any case.
\keychoice{heading}{none,section,section*,chapter,chapter*}\Module{list}
Choose the heading template for the list of acronyms.
@@ -1472,7 +1485,7 @@ This works because the template \code{long-short}\footnote{The template that
is used by default for the first appearance.} uses \cs{acspace} at the
appropriate place and the manual setup does
\begin{sourcecode}
- \acsetup{activate-trailing-tokens = dash}
+ \acsetup{trailing/activate = dash}
\end{sourcecode}
\cs{acspace} looks ahead for a trailing dash and adds a space it it doesn't
find it.
@@ -1922,7 +1935,7 @@ examples for their usage.
\subsection{Commands to be used in template definitions}
\acro\ provides and uses a large number of commands that are meant to be used
-in temmplate definitions and that often are useless or will raise errors if
+in template definitions and that often are useless or will raise errors if
used outside. Depending on their purpose the commands can be used in
different types of templates or only in certain types of templates.
@@ -2011,6 +2024,9 @@ and \cs*{acroifF} each have an argument less than \cs*{acroifTF}.
\command{acronopagerange}
This disables page ranges. Used in the \template{toc} and \template{lof}
templates.
+ \command{acroneedpages}
+ \sinceversion{3.4}This enables the page number displayed. Used in the
+ \template{toc} and \template{lof} templates.
\command{acropagefill}
If \cs{acroifpages\TF} would be \meta{false} this would do
nothing. Otherwise it prints whatever is set by
@@ -2100,7 +2116,7 @@ First the \template{description} template:
}
\end{sourcecode}
-The following shows how to define templates using tome kind of table
+The following shows how to define templates using some kind of table
environment. Special care is necessary due to the way \LaTeX\ tables work:
first the table body is built and only then the table itself is printed:
\begin{sourcecode}
diff --git a/macros/latex/contrib/acro/acro.sty b/macros/latex/contrib/acro/acro.sty
index d3ab51cf9b..8efd343d1d 100644
--- a/macros/latex/contrib/acro/acro.sty
+++ b/macros/latex/contrib/acro/acro.sty
@@ -22,14 +22,14 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\RequirePackage{expl3,xparse,l3keys2e}
+\RequirePackage{l3keys2e}
\ExplSyntaxOn
% setup package:
\tl_const:Nn \c_acro_package_name_tl {acro}
-\tl_const:Nn \c_acro_date_tl {2020/11/21}
+\tl_const:Nn \c_acro_date_tl {2020/12/25}
\tl_const:Nn \c_acro_version_major_number_tl {3}
-\tl_const:Nn \c_acro_version_minor_number_tl {3}
+\tl_const:Nn \c_acro_version_minor_number_tl {4}
\tl_const:Nn \c_acro_version_subrelease_tl {}
\tl_const:Nx \c_acro_version_number_tl
{
@@ -54,8 +54,8 @@
\tl_new:N \g_acro_end_document_hook_tl
\tl_new:N \g_acro_begin_document_hook_tl
-\AtBeginDocument { \tl_use:N \g_acro_begin_document_hook_tl }
-\AtEndDocument { \tl_use:N \g_acro_end_document_hook_tl }
+\hook_gput_code:nnn {begindocument} {acro} { \tl_use:N \g_acro_begin_document_hook_tl }
+\hook_gput_code:nnn {enddocument} {acro} { \tl_use:N \g_acro_end_document_hook_tl }
\cs_new_protected:Npn \acro_at_begin_document:n #1
{ \tl_gput_right:Nn \g_acro_begin_document_hook_tl {#1} }
@@ -923,6 +923,9 @@
\NewDocumentCommand \acronopagerange {}
{ \acro_no_page_ranges:e { \AcroTemplateName } }
+\NewDocumentCommand \acroneedpages {}
+ { \acro_need_pages: }
+
\NewDocumentCommand \acropagefill {}
{ \acro_if_pages:eT { \AcronymID } { \tl_use:N \l__acro_pages_fill_tl } }
@@ -1725,6 +1728,7 @@
\DeclareAcroProperty {post}
\DeclareAcroProperty {long-post}
\DeclareAcroProperty {first-style}
+\DeclareAcroProperty {subsequent-style}
\DeclareAcroProperty {single-style}
% formatting:
@@ -1775,8 +1779,10 @@
\keys_define:nn {acro}
{
- first-style .tl_set:N = \l__acro_first_style_tl ,
- first-style .initial:n = long-short
+ first-style .tl_set:N = \l__acro_first_style_tl ,
+ first-style .initial:n = long-short ,
+ subsequent-style .tl_set:N = \l__acro_subsequent_tl ,
+ subsequent-style .initial:n = short
}
\cs_new_protected:Npn \acro_declare_acronym:nn #1#2
@@ -1852,6 +1858,7 @@
{
\acro_property_set:nnn {#1} {used} {true}
\acro_step:n {#1}
+ \acro_record_barrier:n {#1}
}
}
@@ -2146,6 +2153,15 @@
}
}
+\cs_new_protected:Npn \acro_disable_endings:
+ {
+ \tl_map_tokens:Nn \l__acro_endings_tl
+ { \__acro_disable_ending:n }
+ }
+
+\cs_new_protected:Npn \__acro_disable_ending:n #1
+ { \bool_set_false:c {l__acro_ending_#1_bool} }
+
% #1: id
% #2: short|long
\cs_new_protected:Npn \__acro_set_endings:nn #1#2
@@ -2229,7 +2245,13 @@
{
\int_compare:nNnTF
{
- \bool_if:NTF \l__acro_usage_local_bool
+ \bool_lazy_or:nnTF
+ { \l__acro_usage_local_bool }
+ {
+ \bool_lazy_and_p:nn
+ { \l__acro_list_bool }
+ { \l__acro_list_local_bool }
+ }
{ \acro_barrier_usage:n {#1} }
{ \acro_property_get:nn {#1} {usage} }
}
@@ -2578,9 +2600,24 @@
}
}
+\int_new:N \l__acro_nest_int
+\bool_new:N \g__acro_nested_bool
+
+\prg_new_conditional:Npnn \acro_if_nested: {p,T,F,TF}
+ {
+ \bool_lazy_and:nnTF
+ { \int_compare_p:n { \l__acro_nest_int = 1 } }
+ { \g__acro_nested_bool }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+
\cs_new_protected:Npn \acro_begin:
{
\group_begin:
+ \int_compare:nNnT \l__acro_nest_int > 0
+ { \bool_gset_true:N \g__acro_nested_bool }
+ \int_incr:N \l__acro_nest_int
\__acro_check_after_end:w
}
@@ -2599,6 +2636,7 @@
\cs_new_protected:Npn \acro_end:
{
+ \acro_if_nested:T { \bool_gset_false:N \g__acro_nested_bool }
\bool_if:NT \g__acro_gobble_trail_bool
{
\bool_gset_false:N \g__acro_gobble_trail_bool
@@ -2990,7 +3028,9 @@
\acro_locale:nnn {#1} {#2}
{
\__acro_write:nn {#1} {#2}
- \bool_if:NT \l__acro_include_endings_bool
+ \bool_lazy_and:nnT
+ { !\acro_if_nested_p: }
+ { \l__acro_include_endings_bool }
{
\acro_if_ending_form:nnF {#1} {#2}
{ \__acro_ending:nn {#1} {#2} }
@@ -2998,9 +3038,11 @@
}
}
\group_end:
- \acro_if_ending_form:nnF {#1} {#2}
+ \bool_lazy_or:nnF
+ { \acro_if_nested_p: }
+ { \l__acro_include_endings_bool }
{
- \bool_if:NF \l__acro_include_endings_bool
+ \acro_if_ending_form:nnF {#1} {#2}
{ \__acro_ending:nn {#1} {#2} }
}
\acro_property_if_eq:nnT {#2} {long}
@@ -3050,7 +3092,7 @@
{
\acro_use:n {#2}
\acro_record_page:n {#2}
- \acro_record_barrier:n {#2}
+ % \acro_record_barrier:n {#2}
\acro_index:n {#2}
}
}
@@ -3268,7 +3310,7 @@
\cs_new_protected:Npn \__acro_template_stop:nn #1#2
{ \group_end: \__acro_clear_template_setup:nn {#1} {#2} }
-% typesetting the first appearance of acronym: pseude template `first'
+% typesetting the first appearance of acronym: pseudo template `first'
% #1: parameter number
% #2: template type
@@ -3314,7 +3356,14 @@
}
{ \tl_set_eq:NN \l__acro_tmpa_tl \l__acro_first_style_tl }
}
- { \tl_set:Nn \l__acro_tmpa_tl {short} }
+ {
+ \acro_property_if_set:VnTF \l_acro_id_tl {subsequent-style}
+ {
+ \tl_set:Ne \l__acro_tmpa_tl
+ { \acro_property_get:Vn \l_acro_id_tl {subsequent-style} }
+ }
+ { \tl_set_eq:NN \l__acro_tmpa_tl \l__acro_subsequent_tl }
+ }
}
}
{single} {
@@ -3457,6 +3506,7 @@
\clist_new:N \l__acro_tag_include_clist
\clist_new:N \l__acro_tag_exclude_clist
+\clist_new:N \l__acro_tag_add_clist
\cs_new_protected:Npn \acro_list_choose_set:
{
@@ -3466,7 +3516,19 @@
\seq_gclear:N \g__acro_list_seq
\seq_map_inline:Nn \g__acro_acronyms_seq
{
- \acro_if_single:nF {##1}
+ \acro_if_single:nTF {##1}
+ {
+ \clist_set:Ne \l__acro_tmpa_clist
+ { \acro_property_get:nn {##1} {tag} }
+ \clist_map_inline:Nn \l__acro_tmpa_clist
+ {
+ \clist_if_in:NnT \l__acro_tag_add_clist {####1}
+ {% acronym is included
+ \seq_gput_right:Nn \g__acro_list_seq {##1}
+ \clist_map_break:
+ }
+ }
+ }
{ \seq_gput_right:Nn \g__acro_list_seq {##1} }
}
}
@@ -3488,7 +3550,7 @@
{ \l__acro_list_local_bool }
{
\int_compare_p:nNn
- { \intarray_count:c {g__acro_##1_barriers_intarray} } > 0
+ { \intarray_count:c {g__acro_##1_barriers_intarray} } > 0
}
{
\bool_set_false:N \l__acro_tmpb_bool
@@ -3596,6 +3658,7 @@
display .initial:n = used ,
include .clist_set:N = \l__acro_tag_include_clist ,
exclude .clist_set:N = \l__acro_tag_exclude_clist ,
+ add .clist_set:N = \l__acro_tag_add_clist ,
local .bool_set:N = \l__acro_list_local_bool ,
heading .tl_set:N = \l__acro_heading_tl ,
preamble .tl_set:N = \l__acro_preamble_tl ,
@@ -3626,8 +3689,10 @@
% record page numbers:
\RequirePackage {zref-abspage}
-\msg_new:nnn {acro} {label}
- { The~ list~ template~ `#1'~ needs~ the~ option~ `labels'~ activated. }
+\msg_new:nnn {acro} {no-page-range}
+ {
+ The~ list~ template~ `#1'~ cannot~ display~ a~ page~ range.
+ }
\msg_new:nnn {acro} {threshold}
{ The~ sequentes~ threshold~ needs~ to~ be~ at~ least~ 3. }
@@ -3863,23 +3928,18 @@
}
\prg_generate_conditional_variant:Nnn \acro_if_pages:n {e} {p,T,F,TF}
-% \acro_at_begin_document:n
-% {
-% \bool_lazy_and:nnT
-% { \l__acro_pages_display_bool }
-% { !\l__acro_pages_all_bool }
-% { \bool_set_true:N \l__acro_label_bool }
-% }
-
% #1: style name
\cs_new_protected:Npn \acro_no_page_ranges:n #1
{
- \bool_if:NF \l__acro_label_bool
- { \msg_warning:nnn {acro} {label} {#1} }
+ \bool_if:NT \l__acro_pages_all_bool
+ { \msg_warning:nnn {acro} {no-page-range} {#1} }
\bool_set_false:N \l__acro_pages_all_bool
}
\cs_generate_variant:Nn \acro_no_page_ranges:n {e}
+\cs_new_protected:Npn \acro_need_pages:
+ { \bool_set_true:N \l__acro_pages_display_bool }
+
\tl_new:N \l__acro_pages_fill_tl
\tl_new:N \l__acro_pages_sep_tl
\tl_new:N \l__acro_pages_seq_pre_tl
@@ -5179,13 +5239,15 @@
\AcronymTable
\end {supertabular}
}
+
+\let\l@acro\l@figure
\NewAcroTemplate [list] {lof}
{
\acroheading
\acropreamble
\acronopagerange
- \let\l@acro\l@figure
+ \acroneedpages
\acronymsmapF
{
\contentsline {acro}
@@ -5212,6 +5274,7 @@
\acroheading
\acropreamble
\acronopagerange
+ \acroneedpages
\acronymsmapF
{
\contentsline { \acroifchapterTF {chapter} {section} }
@@ -5596,6 +5659,7 @@
first-long-format .code:n =
\acro_deprecate_option:nn {format/first-long} {#1} ,
list-short-format .code:n = \acro_remove_option: ,
+ list-short-width .code:n = \acro_remove_option: ,
list-long-format .code:n =
\acro_deprecate_option:nn {format/list} {#1} ,
list-foreign-format .code:n = \acro_remove_option: ,
diff --git a/macros/luatex/generic/chinese-jfm/README.md b/macros/luatex/generic/chinese-jfm/README.md
index e105609705..02ded93f7c 100644
--- a/macros/luatex/generic/chinese-jfm/README.md
+++ b/macros/luatex/generic/chinese-jfm/README.md
@@ -1,57 +1,20 @@
-# 中文使用的 luatexja JFM 文件
+# Chinese JFM files
-为中文编写的 luatexja JFM 文件,提供全角、半角、开明三种风格,适用于简繁中文及日文字体的横直排。
+## Introduction
-## 使用方法
+Chinese JFM is a series of luatexja-jfm files for better Chinese typesetting, providing *quanjiao*, *banjiao*, and *kaiming* three styles and other fancy features. It can be used for both horizontal and vertical writing mode in Simplified/Traditional Chinese or Japanese fonts.
-luatexja 可以使用 `/` 来调用 JFM 特性,语法为 `JFM=<JFM name>/{<JFM features>}` 。受北川宏典先生的 [fork 版本](https://github.com/h-kitagawa/ChineseJFM/tree/combine)的影响,所有风格的 JFM 被整合进一个文件内,使用 JFM 特性调用。
+For detailed useages, please read the [documentation](doc.pdf) (in Chinese).
-### 特性一览
+## Update info
-* `quanjiao`、`banjiao`、`kaiming`
-
- 最基础的三种特性,即「全角」「半角」与「开明」。此三特性**必须**选择其中一种。
-
-* `vert`
-
- 直排特性,在直排时必须使用。
-
-* `hwcl`
-
- 半宽冒号特性,仅 zh_CN 拥有,必须在直排下使用。适用于部分竖排时冒号只占半宽的字体。
-
-* `prop`
-
- 比例宽度特性,仅 ja_JP 拥有。适用于日文的比例假名字体。
-
-## 挤压顺序
-
-JFM 文件中同时增加了 `priority` 的设置,配合 luatexja-adjust 包,可以进行有优先顺序的标点挤压。挤压顺序如下:
-
-* 最优先挤压引号、括号前后与间隔号两边的空格;
-
-* 其次挤压顿号、逗号、冒号、分号后的空格;
-
-* 最后挤压句号、问号、叹号后的空格。
-
-* 如果进行上述挤压后,仍无法达到行长要求,最后才会进行字间字距调整。
-
-\**注:以上对标点空白的描述是针对于简体中文的。对于标点置中的繁体中文,以上调整顺序仍然适用。但此时除括号外,可调整的空白变为标点两边的空白。全宽标点无空白可调整的,不作调整。*
-
-以上挤压规则是针对于全角风格的标点调整。对于半角与开明这种标点风格,若以「挤压」理解,顺序仍相同,但直观性就有所欠缺。事实上,JFM 文件中的标点是沿袭铅字与 InDesign 的习惯,认为标点只占半宽,全宽标点是半宽标点加上半宽空格的结果。因此上述规则在半宽标点的前提下应描述为:
-
-* 最先给句号、问号、叹号插空;
-
-* 其次添加顿号、逗号、冒号、分号后空格;
-
-* 最后调整引号、括号前后与间隔号两边的空格;
-
-* 如果进行上述调整后,仍无法达到行长要求,最后才会进行字间字距调整。
+* v1.0.0
-「加法式」的标点调整,更加直观,也更容易理解。
+First published to CTAN.
-## 修改说明
+* v1.0.1
-* v1.0.0
+Update documentation.
- 初次发布至 CTAN。
+---
+Copyright (C) 2020 ListLee.
diff --git a/macros/luatex/generic/chinese-jfm/doc.pdf b/macros/luatex/generic/chinese-jfm/doc.pdf
new file mode 100644
index 0000000000..76f797b9dd
--- /dev/null
+++ b/macros/luatex/generic/chinese-jfm/doc.pdf
Binary files differ
diff --git a/macros/luatex/generic/chinese-jfm/doc.tex b/macros/luatex/generic/chinese-jfm/doc.tex
new file mode 100644
index 0000000000..033a3dc8eb
--- /dev/null
+++ b/macros/luatex/generic/chinese-jfm/doc.tex
@@ -0,0 +1,85 @@
+\documentclass[a4paper, fontset=adobe , punct=zh_CN/kaiming]{ctexart}
+\usepackage{luatexja-adjust}
+
+\def\+{\insertxkanjiskip}
+
+\usepackage[textwidth=36em , centering]{geometry}
+
+\usepackage{hyperref}
+\hypersetup{colorlinks=true}
+
+\title{\textbf{\textsf{ChineseJFM}文件}\hbox{}\thanks{\url{https://github.com/tanukihee/ChineseJFM}}}
+\author{ListLee}
+\date{\zhtoday \qquad v1.0.1}
+
+\begin{document}
+\maketitle
+
+\section{概述}
+\textsf{ChineseJFM}文件是为中文排版编写的luatexja-jfm文件,提供全角、半角、开明三种风格,适用于简繁中文及日文字体的横直排。
+
+虽然\textsf{luatexja}自带了一套全角、半角、开明的JFM文件,但在调整上缺少灵活性,同时也没有使用\+\verb|priority|特性。\textsf{ChineseJFM}文件中同时增加了\+\verb|priority|的设置,配合\textsf{luatexja-adjust}包,可以进行有优先顺序的标点挤压。\label{sec:pr}
+
+\section{使用方法}
+\textsf{luatexja}在20200919版本后更新了JFM features特性,基本语法为
+\begin{verbatim}
+ jfm = <JFM name>[/{<JFM features>}]
+\end{verbatim}
+
+\textsf{ChineseJFM}提供了\textsf{zh\_CN}、\textsf{zh\_TW}与\textsf{ja\_JP}三个文件,分别适用于简中字体(标点偏靠)、繁中字体(标点中置)与日文字体(冒号、分号中置,其他偏靠);在3个JFM文件下,提供了\+\verb|quanjiao|、\verb|banjiao|与\+\verb|kaiming|三个基本特性。
+
+在使用\CTeX{}宏集或文档类时,只需要使用
+\begin{verbatim}
+ \documentclass[punct = zh_CN/quanjiao]{ctexart}
+\end{verbatim}
+或
+\begin{verbatim}
+ \usepackage[punct = zh_CN/kaiming]{ctex}
+\end{verbatim}
+即可。
+
+在使用\textsf{luatexja}或\textsf{ltj}文档类时,需要在调用\textsf{luatexja-fontspec}宏包后,以\begin{verbatim}
+ YokoFeatures = {JFM = {<JFM name>}}
+\end{verbatim}
+或
+\begin{verbatim}
+ TateFeatures = {JFM = {<JFM name>}}
+\end{verbatim}
+的形式调用。
+
+横排时,使用
+\begin{verbatim}
+ YokoFeatures = {JFM = {zh_CN/quanjiao}}
+\end{verbatim}
+直排时,使用
+\begin{verbatim}
+ TateFeatures = {JFM = {zh_CN/{quanjiao , vert}}}
+\end{verbatim}
+{\color{red}注意:在直排时,\emph{必须}同时使用\+\verb|vert|特性。}
+
+\section{特性一览}
+除上文介绍的\+\verb|quanjiao|、\verb|banjiao|、\verb|kaiming|与\+\verb|vert|特性外,\textsf{ChineseJFM}还提供了以下特性。
+
+\begin{description}
+ \item[\texttt{hwcl}] “half-width colon”,“半宽冒号”特性,适用于简中直排时,冒号分号只占半宽的字体(如华文宋体等),仅\textsf{zh\_CN}拥有。
+ \item[\texttt{prop}] “proportional”,“比例宽度”特性,使用于比例宽度的日文字体,比之于\textsf{luatexja}自带的\textsf{jfm-prop.lua}与\textsf{jfm-propv.lua},\verb|prop|特性将此两者整合的同时,也提供了对标点间距的调整功能,仅\textsf{ja\_JP}拥有。
+\end{description}
+
+\section{挤压顺序}
+如第\ref{sec:pr}节所述,\textsf{ChineseJFM}文件中配有\+\verb|priority|的设置,配合\textsf{luatexja-adjust}包,可以进行有优先顺序的标点挤压。\textsf{ChineseJFM}沿袭传统铅字排版与现代DTP软件(如InDesign等)的习惯,认为标点只占半宽,全宽标点是半宽标点加上半宽铅空的结果。所谓的“标点挤压”更应说成是“标点间距调整”,调整顺序如下。
+\begin{itemize}
+ \item 最先给句号、问号、叹号插空;
+ \item 其次给顿号、逗号、冒号、分号插空;
+ \item 最后调整引号、括号前后与间隔号两边的空格;
+ \item 如果进行上述调整后,仍无法达到行长要求,最后才会进行字间字距调整。
+\end{itemize}
+
+根据标点位置,可以将标点分为偏靠标点、中置标点与全宽标点。对于偏靠标点,插空指在半宽标点后插入一个半宽铅空,对于中置标点,插空指在半宽标点前后各插入一个1/4宽铅空。全宽标点无空白可调整的,不作调整。
+
+\nocite{*}
+\begin{thebibliography}{9}
+\bibitem{孔雀计划} 刘庆(Eric Q L).\textit{孔雀计划:中文字体排印的思路} [EB/OL].\\
+\raggedleft{\url{https://thetype.com/kongque/}}
+\end{thebibliography}
+
+\end{document} \ No newline at end of file
diff --git a/macros/luatex/generic/chinese-jfm/jfm-ja_JP.lua b/macros/luatex/generic/chinese-jfm/jfm-ja_JP.lua
index 5be752863c..863c89a79b 100644
--- a/macros/luatex/generic/chinese-jfm/jfm-ja_JP.lua
+++ b/macros/luatex/generic/chinese-jfm/jfm-ja_JP.lua
@@ -1,5 +1,5 @@
-- Chinese JFM for Japanese fonts (ja_JP)
--- v1.0.0
+-- v1.0.1
local is_vt, is_qj, is_bj, is_km, is_prop
diff --git a/macros/luatex/generic/chinese-jfm/jfm-zh_CN.lua b/macros/luatex/generic/chinese-jfm/jfm-zh_CN.lua
index fc707eaab6..ed161a10a1 100644
--- a/macros/luatex/generic/chinese-jfm/jfm-zh_CN.lua
+++ b/macros/luatex/generic/chinese-jfm/jfm-zh_CN.lua
@@ -1,5 +1,5 @@
-- Chinese JFM for Simplified Chinese fonts (zh_CN)
--- v1.0.0
+-- v1.0.1
local is_vt, is_qj, is_bj, is_km, is_hwcl
diff --git a/macros/luatex/generic/chinese-jfm/jfm-zh_TW.lua b/macros/luatex/generic/chinese-jfm/jfm-zh_TW.lua
index 90db78939e..9000cf0d74 100644
--- a/macros/luatex/generic/chinese-jfm/jfm-zh_TW.lua
+++ b/macros/luatex/generic/chinese-jfm/jfm-zh_TW.lua
@@ -1,5 +1,5 @@
-- Chinese JFM for Traditional Chinese fonts (zh_TW)
--- v1.0.0
+-- v1.0.1
local is_vt, is_qj, is_bj, is_km