The 3rd element of a tick specification is the pair {plen, mlen}, where plen is the length in the positive direction (i.e., inside for frame ticks), and mlen is the length in the negative direction (i.e., outside for frame ticks). So, create ones own ticks and use FrameTicks:
xticks = Table[{i, If[Mod[i, 20] == 0, i, ""], {0, 0.01}}, {i, -40, 40, 5}]
Show[Histogram[data, {2}, "ProbabilityDensity"], normdist, Frame -> True, FrameLabel -> {"x", "y"}, FrameTicks -> {xticks, Automatic, Automatic, Automatic}]
![](/c/portal/getImageAttachment?filename=qwe34tergtrh657tuyhrgefw.png&userId=11733)
Lengths of major and minor ticks can be set this way also.
Better tick support is needed so that licks on different scales (e.g., log, inverse, etc.) can be easily created by the user. An option to a function that creates the ticks could easily specify whether they were in the inside or outside of the frame.
Bob