배경

배경

배경

너비가 다른 열이 있는 사용자 정의 다중 열 레이아웃 만들기.

문제

이 질문의 문제는 언급되었지만 이전에서는 해결되지 않았습니다.답변:

설정으로 page=yes인해 불행한 부작용이 발생합니다. 책의 장 사이에 빈 페이지가 뒤섞여 있습니다. 사후 처리를 위해 Ghostscript를 사용하여 이러한 문제를 제거할 수 있습니다.

즉, page=yes옵션이 없으면 ConTeXt는 원하는 대로 텍스트 형식을 지정할 수 없습니다. 이 옵션을 사용하면 page=yesConTeXt는 예상대로 형식을 지정하지만 주요 섹션 사이에 원하지 않는 빈 페이지를 내보냅니다.

암호

문제를 설명하는 최소 작업 예:

\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=yessetuphead

\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

여기에 이미지 설명을 입력하세요

관련 정보