2010-08-22 4 views
3

각주 배치를위한 기본 페이지 레이아웃 알고리즘을 구현했습니다. 기본적으로 :각주를 사용한 각주 레이아웃 알고리즘

  1. 본문 텍스트 줄을 배치하십시오.
  2. 각주 참조가 포함 된 경우 줄 단위로 각주를 배치하십시오. 모든 단계에서 1

-

  • 이동, I는 전체 높이 (본문 텍스트 주석 + + 갭)가 페이지 높이를 초과하는지 확인한다. 그럴 경우 가장 최근에 배치 된 선을 제거하고 페이지가 완성됩니다.

    내 질문 : 본문 텍스트가 두 열에있는 상황을 어떻게 처리합니까?

    필자는 기본적으로 열을 올바르게 배치하기 위해 허용 된 본문 텍스트 높이를 미리 알고 있어야하지만 각주 텍스트의 높이를 알기 전까지는 알 수 없습니다.

    는 또한 단지 인해 변하는 라인 높이, 라인 간격, 단락 간격 등

  • 답변

    1

    3 개의 블록이 있습니다. 두 개의 열과 각주가 있습니다. 분명히 (열 높이 + 각주 높이 + 간격) 페이지 높이보다 낮아야합니다.

    첫 번째 열에는 이전 알고리즘을 사용할 수 있습니다. 두 번째 열의 경우 각주를 추가하면 첫 번째 열이 너무 길어 지므로 첫 번째 열의 끝에서 두 번째 열의 시작 부분으로 줄을 이동하십시오. 이렇게하면 두 번째 열이 너무 길어 지므로 줄을 첫 번째 열로 이동하고 마지막 각주 선을 제거하십시오.

    +0

    감사합니다. 단락 사이의 간격과 같이 행이 열의 맨 위에 있는지 여부에 따라 달라질 수있는 변수를 추적하는 메커니즘을 구현해야하므로 쉽지는 않지만 훌륭한 시작입니다. – yclevine

    1

    흥미 문제, (2)에 의해 본문 라인과 분할의 누적 높이를 취할 수 없다. (읽기 : 당신 에게서는 더 upvotes을 얻을 수 있습니다.)

    어떻게 본문은 두 개의 열이있는 상황에 대처합니까?

    나는 그것에 대한 직접적인 대답은 없다고 생각합니다. 대답은 실제로 문서에 대해 설정 한 미적 이상에 달려 있습니다.

    나는 그래서 약간 알고리즘을 수정합니다 :

    • 주요 내용 영역은
    • 각주와 친구가 기본 컨텐츠 영역에 표시하지 않을 특정 페이지에 대한 고정됩니다.

    그런 경우 다중 열 레이아웃에 들어갈 수있는 텍스트의 양을 선택하십시오. 그런 다음 텍스트의 해당 섹션에서 모든 각주를 식별하십시오. 각주의 번호를 다시 매 깁니다 (예 : 두 페이지를 하나로 짠 경우). 이제 각주를 지정된 영역의 단일 열에 레이아웃하십시오.

    문제/질문 :

    • 각주의 전체 텍스트를 각주 섹션에 적합 할 수없는 경우 : 내가 본 것을 당신은 아마 다음 페이지에 각주 텍스트를 통해 수행해야합니다에서 .

    • 각주가 다중 열이어야합니까? 각주가 어디에 있는지는 문서를 보지 못했습니다.

    • 모든 각주 텍스트가 해당 내용과 동일한 페이지 내에 있어야한다는 엄격한 요구 사항이있는 경우 : 알고리즘에 따라 (동적 프로그래밍이 마음에 듭니다) 알아낼 필요가 있습니다. 주어진 페이지 제약 조건, 나머지 부분을 잡아 당기기, 가능한 한 많이 레이아웃하고 텍스트를 가지고 바이올린을하면 독자를 괴롭히는 많은 공백이 없게됩니다.

    +0

    간단한 솔루션과 비슷하지만 학술 콘텐츠 용 전문 리더 앱용입니다. 일부 기사 (및 기사 내의 일부 페이지)는 거대한 각주를 가지며 일부는 거의 없거나 거의 없을 것입니다. – yclevine

    관련 문제