배경
너비가 다른 열이 있는 사용자 정의 다중 열 레이아웃 만들기.
문제
이 질문의 문제는 언급되었지만 이전에서는 해결되지 않았습니다.답변:
설정으로
page=yes
인해 불행한 부작용이 발생합니다. 책의 장 사이에 빈 페이지가 뒤섞여 있습니다. 사후 처리를 위해 Ghostscript를 사용하여 이러한 문제를 제거할 수 있습니다.
즉, page=yes
옵션이 없으면 ConTeXt는 원하는 대로 텍스트 형식을 지정할 수 없습니다. 이 옵션을 사용하면 page=yes
ConTeXt는 예상대로 형식을 지정하지만 주요 섹션 사이에 원하지 않는 빈 페이지를 내보냅니다.
암호
문제를 설명하는 최소 작업 예:
\definepapersize[BookPaperSize][width=24in, height=12in,]
\setuppapersize[BookPaperSize]
\definelayout[BookTextLayout][
topspace=.5in,
backspace=.5in,
header=\zeropoint,
footer=\zeropoint,
grid=yes,
]
\setuplayout[BookTextLayout]
\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setuphead[section][
page=yes,
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\setuphead[subsection][
after={\column},
]
\setuphead[subsubsection][
after={\blank[small]},
]
\starttext
\startsection[title={Section Title}]
\startsubsection[title={Subtitle}]
\dorecurse{2}{\input knuth}
\dorecurse{2}{%
\startsubsubsection[title={Subsubtitle}]
\dorecurse{1}{\input ward}
\dorecurse{2}{\input lorem}
\dorecurse{1}{\input bryson}
\stopsubsubsection
}
\stopsubsection
\stopsection
\stoptext
실제 출력
각 섹션 앞의 페이지는 비어 있습니다.
페이지 없이 출력
옵션이 제거 되면 page=yes
출력에 문제가 발생합니다.
명령 \column
이 더 이상 열 너비를 고려하지 않고 텍스트가 첫 번째 열의 아래쪽에 묶입니다.
예상 출력
원하는 출력에는 주요 섹션 사이에 빈 페이지가 없습니다.
해결 방법
그만큼결과 PDF여러 페이지가 포함되어 있습니다. 사용고스트스크립트gs -sPageList=even
원하는 결과를 생성하는 다른 모든 페이지를 삭제합니다(예: 사용 ).
그러나 추가 빈 페이지는 추가 이미지 처리 단계, PDF 페이지 재정렬 필요, 두 번의 패스 필요로 인한 컴파일 시간 증가 등 연쇄 문제를 일으킵니다.
질문
문서에서 빈 페이지를 없애려면 무엇을 변경해야 합니까?
아이디어
page=yes
에 추가하거나 에서 \definecolumnset
제거하면 빈 페이지 문제가 해결됩니다. 그러나 첫 번째 페이지 열 집합은 왼쪽으로 정리됩니다. 다음을 사용하여 문제를 해결하려고 시도했습니다.page=yes
setuphead
\definecounter[BookPageNumber][
way=bychapter,
prefix=no,
]
\definecolumnset[BookColumns][n=4,distance=.25in,page={\doifelse{\rawcountervalue[BookPageNumber]}{1}{}{yes}}]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setuphead[section][
before={%
\doif{\rawcountervalue[BookPageNumber]}{1}{\page}
\incrementcounter[BookPageNumber]
},
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
그러나 이렇게 하면 원하는 출력이 생성되지 않습니다.
답변1
열 세트는 스프레드 기반입니다. 즉, n=4
실제로 8개의 열이 있는 경우(왼쪽 페이지에 4개, 오른쪽 페이지에 4개)입니다. 문서는 항상 설정하지 않은 오른쪽 페이지에서 열리므로 추가하면 \page[yes]
설정된 왼쪽 페이지에 콘텐츠가 푸시되므로 도움이 됩니다.
따라서 올바른 페이지에 5~8열을 추가하면 문제가 해결됩니다.
\definepapersize[BookPaperSize][width=24in, height=12in,]
\setuppapersize[BookPaperSize]
\definelayout[BookTextLayout][
topspace=.5in,
backspace=.5in,
header=\zeropoint,
footer=\zeropoint,
grid=yes,
]
\setuplayout[BookTextLayout]
\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setupcolumnset[BookColumns:5][width=11.75in]
\setupcolumnset[BookColumns:6][width=3.46in]
\setupcolumnset[BookColumns:7][width=3.46in]
\setupcolumnset[BookColumns:8][width=3.46in]
\setuphead[section][
%page=yes,
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\setuphead[subsection][
after={\column},
]
\setuphead[subsubsection][
after={\blank[small]},
]
\starttext
\startsection[title={Section Title}]
\startsubsection[title={Subtitle}]
\dorecurse{2}{\input knuth}
\dorecurse{2}{%
\startsubsubsection[title={Subsubtitle}]
\dorecurse{1}{\input ward}
\dorecurse{2}{\input lorem}
\dorecurse{1}{\input bryson}
\stopsubsubsection
}
\stopsubsection
\stopsection
\stoptext