From 7c14abb2a942b2f8af4a23040dab953da7cba20e Mon Sep 17 00:00:00 2001 From: Takuji Tanaka Date: Sun, 22 May 2022 12:54:30 +0000 Subject: upmendex: Improve heuristic detection of page number types git-svn-id: svn://tug.org/texlive/trunk@63363 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/upmendex/fread.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'Build/source/texk/upmendex/fread.c') diff --git a/Build/source/texk/upmendex/fread.c b/Build/source/texk/upmendex/fread.c index 66d3e0b1449..ab3dd4c0770 100644 --- a/Build/source/texk/upmendex/fread.c +++ b/Build/source/texk/upmendex/fread.c @@ -268,7 +268,7 @@ LOOP: nest++; else if (buff[j]==arg_close) { if (nest==0) { - table[k]='\0'; + table[k]='\0'; ind[0].p[0].page=xstrdup(table); break; } @@ -495,6 +495,7 @@ static void chkpageattr(struct page *p) { int i,j,cc=0,cnt,pplen,pclen; char buff[16],*pcpos,*page0; + static char pattr_prev[PAGE_COMPOSIT_DEPTH] = {0}; pplen=strlen(page_precedence); pclen=strlen(page_compositor); @@ -538,23 +539,25 @@ ATTRLOOP: switch(page_precedence[pattr[cc]]) { case 'r': if (strchr("ivxlcdm",*page0)==NULL || - (strchr("lcdm",*page0) && strchr(page_precedence,'a') && strlen(buff)==1 && pcpos)) { + (strchr("lcdm",*page0) && strchr(page_precedence,'a') && strlen(buff)==1 && + pattr_prev[cc]!='r')) { /* heuristic detection as alphabet since L=50, C=100, D=100, M=1000 are quite large */ if (pattr[cc]'z' || strlen(buff)>1 || - (strchr("ivx",*page0) && strchr(page_precedence,'r') && !pcpos)) { + (strchr("ivx",*page0) && strchr(page_precedence,'r') && + pattr_prev[cc]!='a')) { /* heuristic detection as roman number since I=1, V=5, X=10 are quite small */ if (pattr[cc]'Z' || strlen(buff)>1 || - (strchr("IVX",*page0) && strchr(page_precedence,'R') && !pcpos)) { + (strchr("IVX",*page0) && strchr(page_precedence,'R') && + pattr_prev[cc]!='A')) { /* heuristic detection as roman number since I=1, V=5, X=10 are quite small */ if (pattr[cc]attr[cc]=pattr[cc]; -- cgit v1.2.3